{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Darla20\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != DARLA20))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw: done\n");
return err;
}
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Darla24\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != DARLA24))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw: done\n");
return err;
}
int err;
local_irq_enable();
- dev_dbg(chip->card->dev, "init_hw() - Echo3G\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != ECHO3G))
return -ENODEV;
ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_OPTICAL |
ECHOCAPS_HAS_DIGITAL_MODE_ADAT;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
dev_dbg(chip->card->dev, "firmware not released (kept in cache)\n");
#else
release_firmware(fw_entry);
- dev_dbg(chip->card->dev, "firmware released\n");
#endif
}
dev_dbg(chip->card->dev, "release_firmware(%d)\n", i);
}
- dev_dbg(chip->card->dev, "firmware_cache released\n");
#endif
}
struct echoaudio *chip = snd_pcm_substream_chip(substream);
int err;
- dev_dbg(chip->card->dev, "pcm_analog_in_open\n");
if ((err = pcm_open(substream, num_analog_busses_in(chip) -
substream->number)) < 0)
return err;
#else
max_channels = num_analog_busses_out(chip);
#endif
- dev_dbg(chip->card->dev, "pcm_analog_out_open\n");
if ((err = pcm_open(substream, max_channels - substream->number)) < 0)
return err;
if ((err = snd_pcm_hw_rule_add(substream->runtime, 0,
struct echoaudio *chip = snd_pcm_substream_chip(substream);
int err, max_channels;
- dev_dbg(chip->card->dev, "pcm_digital_in_open\n");
max_channels = num_digital_busses_in(chip) - substream->number;
mutex_lock(&chip->mode_mutex);
if (chip->digital_mode == DIGITAL_MODE_ADAT)
struct echoaudio *chip = snd_pcm_substream_chip(substream);
int err, max_channels;
- dev_dbg(chip->card->dev, "pcm_digital_out_open\n");
max_channels = num_digital_busses_out(chip) - substream->number;
mutex_lock(&chip->mode_mutex);
if (chip->digital_mode == DIGITAL_MODE_ADAT)
/* Nothing to do here. Audio is already off and pipe will be
* freed by its callback
*/
- dev_dbg(chip->card->dev, "pcm_close\n");
atomic_dec(&chip->opencount);
oc = atomic_read(&chip->opencount);
spin_lock_irq(&chip->lock);
set_sample_rate(chip, hw_params->rate_num / hw_params->rate_den);
spin_unlock_irq(&chip->lock);
- dev_dbg(chip->card->dev, "pcm_hw_params ok\n");
return 0;
}
}
spin_unlock_irq(&chip->lock);
- dev_dbg(chip->card->dev, "pcm_hw_freed\n");
snd_pcm_lib_free_pages(substream);
return 0;
}
spin_lock(&chip->lock);
switch (cmd) {
case SNDRV_PCM_TRIGGER_RESUME:
- dev_dbg(chip->card->dev, "pcm_trigger resume\n");
case SNDRV_PCM_TRIGGER_START:
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
- dev_dbg(chip->card->dev, "pcm_trigger start\n");
for (i = 0; i < DSP_MAXPIPES; i++) {
if (channelmask & (1 << i)) {
pipe = chip->substream[i]->runtime->private_data;
chip->pipe_cyclic_mask);
break;
case SNDRV_PCM_TRIGGER_SUSPEND:
- dev_dbg(chip->card->dev, "pcm_trigger suspend\n");
case SNDRV_PCM_TRIGGER_STOP:
- dev_dbg(chip->card->dev, "pcm_trigger stop\n");
for (i = 0; i < DSP_MAXPIPES; i++) {
if (channelmask & (1 << i)) {
pipe = chip->substream[i]->runtime->private_data;
err = stop_transport(chip, channelmask);
break;
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
- dev_dbg(chip->card->dev, "pcm_trigger pause\n");
for (i = 0; i < DSP_MAXPIPES; i++) {
if (channelmask & (1 << i)) {
pipe = chip->substream[i]->runtime->private_data;
snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &analog_capture_ops);
if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0)
return err;
- dev_dbg(chip->card->dev, "Analog PCM ok\n");
#ifdef ECHOCARD_HAS_DIGITAL_IO
/* PCM#1 Digital inputs, no outputs */
snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &digital_capture_ops);
if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0)
return err;
- dev_dbg(chip->card->dev, "Digital PCM ok\n");
#endif /* ECHOCARD_HAS_DIGITAL_IO */
#else /* ECHOCARD_HAS_VMIXER */
snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &analog_capture_ops);
if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0)
return err;
- dev_dbg(chip->card->dev, "Analog PCM ok\n");
#ifdef ECHOCARD_HAS_DIGITAL_IO
/* PCM#1 Digital i/o */
snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &digital_capture_ops);
if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0)
return err;
- dev_dbg(chip->card->dev, "Digital PCM ok\n");
#endif /* ECHOCARD_HAS_DIGITAL_IO */
#endif /* ECHOCARD_HAS_VMIXER */
static int snd_echo_free(struct echoaudio *chip)
{
- dev_dbg(chip->card->dev, "Stop DSP...\n");
if (chip->comm_page)
rest_in_peace(chip);
- dev_dbg(chip->card->dev, "Stopped.\n");
if (chip->irq >= 0)
free_irq(chip->irq, chip);
if (chip->iores)
release_and_free_resource(chip->iores);
- dev_dbg(chip->card->dev, "MMIO freed.\n");
pci_disable_device(chip->pci);
/* release chip data */
free_firmware_cache(chip);
kfree(chip);
- dev_dbg(chip->card->dev, "Chip freed.\n");
return 0;
}
{
struct echoaudio *chip = device->device_data;
- dev_dbg(chip->card->dev, "snd_echo_dev_free()...\n");
return snd_echo_free(chip);
}
snd_echo_free(chip);
return err;
}
- dev_dbg(card->dev, "Card init OK\n");
if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
snd_echo_free(chip);
return -ENOENT;
}
- dev_dbg(&pci->dev, "Echoaudio driver starting...\n");
i = 0;
err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
0, &card);
struct pci_dev *pci = to_pci_dev(dev);
struct echoaudio *chip = dev_get_drvdata(dev);
- dev_dbg(dev, "suspend start\n");
snd_pcm_suspend_all(chip->analog_pcm);
snd_pcm_suspend_all(chip->digital_pcm);
pci_save_state(pci);
pci_disable_device(pci);
- dev_dbg(dev, "suspend done\n");
return 0;
}
u32 pipe_alloc_mask;
int err;
- dev_dbg(dev, "resume start\n");
pci_restore_state(pci);
commpage_bak = kmalloc(sizeof(struct echoaudio), GFP_KERNEL);
if (commpage_bak == NULL)
snd_echo_free(chip);
return err;
}
- dev_dbg(dev, "resume init OK\n");
/* Temporarily set chip->pipe_alloc_mask=0 otherwise
* restore_dsp_settings() fails.
kfree(commpage_bak);
return err;
}
- dev_dbg(dev, "resume restore OK\n");
memcpy(&commpage->audio_format, &commpage_bak->audio_format,
sizeof(commpage->audio_format));
snd_echo_midi_output_trigger(chip->midi_out, 1);
#endif
- dev_dbg(dev, "resume done\n");
return 0;
}
{
u32 control_reg, clocks_from_dsp;
- dev_dbg(chip->card->dev, "set_input_clock:\n");
/* Mask off the clock select bits */
control_reg = le32_to_cpu(chip->comm_page->control_register) &
switch (clock) {
case ECHO_CLOCK_INTERNAL:
- dev_dbg(chip->card->dev, "Set Echo3G clock to INTERNAL\n");
chip->input_clock = ECHO_CLOCK_INTERNAL;
return set_sample_rate(chip, chip->sample_rate);
case ECHO_CLOCK_SPDIF:
if (chip->digital_mode == DIGITAL_MODE_ADAT)
return -EAGAIN;
- dev_dbg(chip->card->dev, "Set Echo3G clock to SPDIF\n");
control_reg |= E3G_SPDIF_CLOCK;
if (clocks_from_dsp & E3G_CLOCK_DETECT_BIT_SPDIF96)
control_reg |= E3G_DOUBLE_SPEED_MODE;
case ECHO_CLOCK_ADAT:
if (chip->digital_mode != DIGITAL_MODE_ADAT)
return -EAGAIN;
- dev_dbg(chip->card->dev, "Set Echo3G clock to ADAT\n");
control_reg |= E3G_ADAT_CLOCK;
control_reg &= ~E3G_DOUBLE_SPEED_MODE;
break;
case ECHO_CLOCK_WORD:
- dev_dbg(chip->card->dev, "Set Echo3G clock to WORD\n");
control_reg |= E3G_WORD_CLOCK;
if (clocks_from_dsp & E3G_CLOCK_DETECT_BIT_WORD96)
control_reg |= E3G_DOUBLE_SPEED_MODE;
goto la_error;
}
- dev_dbg(chip->card->dev, "ASIC loaded\n");
free_firmware(fw, chip);
return 0;
chip->dsp_code = code; /* Show which DSP code loaded */
chip->bad_board = FALSE; /* DSP OK */
- dev_dbg(chip->card->dev, "load_dsp: OK!\n");
return 0;
}
udelay(100);
static int restore_dsp_rettings(struct echoaudio *chip)
{
int i, o, err;
- dev_dbg(chip->card->dev, "restore_dsp_settings\n");
if ((err = check_asic_status(chip)) < 0)
return err;
if (send_vector(chip, DSP_VC_UPDATE_FLAGS) < 0)
return -EIO;
- dev_dbg(chip->card->dev, "restore_dsp_rettings done\n");
return 0;
}
static int start_transport(struct echoaudio *chip, u32 channel_mask,
u32 cyclic_mask)
{
- dev_dbg(chip->card->dev, "start_transport %x\n", channel_mask);
if (wait_handshake(chip))
return -EIO;
static int pause_transport(struct echoaudio *chip, u32 channel_mask)
{
- dev_dbg(chip->card->dev, "pause_transport %x\n", channel_mask);
if (wait_handshake(chip))
return -EIO;
static int stop_transport(struct echoaudio *chip, u32 channel_mask)
{
- dev_dbg(chip->card->dev, "stop_transport %x\n", channel_mask);
if (wait_handshake(chip))
return -EIO;
stopped and unallocated. */
static int rest_in_peace(struct echoaudio *chip)
{
- dev_dbg(chip->card->dev,
- "rest_in_peace() open=%x\n", chip->pipe_alloc_mask);
/* Stops all active pipes (just to be sure) */
stop_transport(chip, chip->active_mask);
*/
static int init_line_levels(struct echoaudio *chip)
{
- dev_dbg(chip->card->dev, "init_line_levels\n");
memset(chip->output_gain, ECHOGAIN_MUTED, sizeof(chip->output_gain));
memset(chip->input_gain, ECHOGAIN_MUTED, sizeof(chip->input_gain));
memset(chip->monitor_gain, ECHOGAIN_MUTED, sizeof(chip->monitor_gain));
it moves data. The DMA counter is in units of bytes, not samples. */
pipe->dma_counter = &chip->comm_page->position[pipe_index];
*pipe->dma_counter = 0;
- dev_dbg(chip->card->dev, "allocate_pipes: ok\n");
return pipe_index;
}
u32 channel_mask;
int i;
- dev_dbg(chip->card->dev, "free_pipes: Pipe %d\n", pipe->index);
if (snd_BUG_ON(!is_pipe_allocated(chip, pipe->index)))
return -EINVAL;
if (snd_BUG_ON(pipe->state != PIPE_STATE_STOPPED))
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Gina20\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != GINA20))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
static int set_input_clock(struct echoaudio *chip, u16 clock)
{
- dev_dbg(chip->card->dev, "set_input_clock:\n");
switch (clock) {
case ECHO_CLOCK_INTERNAL:
chip->spdif_status = GD_SPDIF_STATUS_UNDEF;
set_sample_rate(chip, chip->sample_rate);
chip->input_clock = clock;
- dev_dbg(chip->card->dev, "Set Gina clock to INTERNAL\n");
break;
case ECHO_CLOCK_SPDIF:
chip->comm_page->gd_clock_state = GD_CLOCK_SPDIFIN;
clear_handshake(chip);
send_vector(chip, DSP_VC_SET_GD_AUDIO_STATE);
chip->clock_state = GD_CLOCK_SPDIFIN;
- dev_dbg(chip->card->dev, "Set Gina20 clock to SPDIF\n");
chip->input_clock = clock;
break;
default:
static int set_professional_spdif(struct echoaudio *chip, char prof)
{
- dev_dbg(chip->card->dev, "set_professional_spdif %d\n", prof);
if (prof)
chip->comm_page->flags |=
cpu_to_le32(DSP_FLAG_PROFESSIONAL_SPDIF);
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Gina24\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != GINA24))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
control_reg = GML_CONVERTER_ENABLE | GML_48KHZ;
err = write_control_reg(chip, control_reg, TRUE);
}
- dev_dbg(chip->card->dev, "load_asic() done\n");
return err;
}
{
u32 control_reg, clocks_from_dsp;
- dev_dbg(chip->card->dev, "set_input_clock:\n");
/* Mask off the clock select bits */
control_reg = le32_to_cpu(chip->comm_page->control_register) &
switch (clock) {
case ECHO_CLOCK_INTERNAL:
- dev_dbg(chip->card->dev, "Set Gina24 clock to INTERNAL\n");
chip->input_clock = ECHO_CLOCK_INTERNAL;
return set_sample_rate(chip, chip->sample_rate);
case ECHO_CLOCK_SPDIF:
if (chip->digital_mode == DIGITAL_MODE_ADAT)
return -EAGAIN;
- dev_dbg(chip->card->dev, "Set Gina24 clock to SPDIF\n");
control_reg |= GML_SPDIF_CLOCK;
if (clocks_from_dsp & GML_CLOCK_DETECT_BIT_SPDIF96)
control_reg |= GML_DOUBLE_SPEED_MODE;
case ECHO_CLOCK_ADAT:
if (chip->digital_mode != DIGITAL_MODE_ADAT)
return -EAGAIN;
- dev_dbg(chip->card->dev, "Set Gina24 clock to ADAT\n");
control_reg |= GML_ADAT_CLOCK;
control_reg &= ~GML_DOUBLE_SPEED_MODE;
break;
case ECHO_CLOCK_ESYNC:
- dev_dbg(chip->card->dev, "Set Gina24 clock to ESYNC\n");
control_reg |= GML_ESYNC_CLOCK;
control_reg &= ~GML_DOUBLE_SPEED_MODE;
break;
case ECHO_CLOCK_ESYNC96:
- dev_dbg(chip->card->dev, "Set Gina24 clock to ESYNC96\n");
control_reg |= GML_ESYNC_CLOCK | GML_DOUBLE_SPEED_MODE;
break;
default:
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Indigo\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != INDIGO))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Indigo DJ\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != INDIGO_DJ))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Indigo DJx\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != INDIGO_DJX))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Indigo IO\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != INDIGO_IO))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Indigo IOx\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != INDIGO_IOX))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Layla20\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != LAYLA20))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
u16 clock;
u32 rate;
- dev_dbg(chip->card->dev, "set_input_clock:\n");
rate = 0;
switch (clock_source) {
case ECHO_CLOCK_INTERNAL:
- dev_dbg(chip->card->dev, "Set Layla20 clock to INTERNAL\n");
rate = chip->sample_rate;
clock = LAYLA20_CLOCK_INTERNAL;
break;
case ECHO_CLOCK_SPDIF:
- dev_dbg(chip->card->dev, "Set Layla20 clock to SPDIF\n");
clock = LAYLA20_CLOCK_SPDIF;
break;
case ECHO_CLOCK_WORD:
- dev_dbg(chip->card->dev, "Set Layla20 clock to WORD\n");
clock = LAYLA20_CLOCK_WORD;
break;
case ECHO_CLOCK_SUPER:
- dev_dbg(chip->card->dev, "Set Layla20 clock to SUPER\n");
clock = LAYLA20_CLOCK_SUPER;
break;
default:
static int set_output_clock(struct echoaudio *chip, u16 clock)
{
- dev_dbg(chip->card->dev, "set_output_clock: %d\n", clock);
switch (clock) {
case ECHO_CLOCK_SUPER:
clock = LAYLA20_OUTPUT_CLOCK_SUPER;
static int set_professional_spdif(struct echoaudio *chip, char prof)
{
- dev_dbg(chip->card->dev, "set_professional_spdif %d\n", prof);
if (prof)
chip->comm_page->flags |=
cpu_to_le32(DSP_FLAG_PROFESSIONAL_SPDIF);
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Layla24\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != LAYLA24))
return -ENODEV;
if ((err = init_line_levels(chip)) < 0)
return err;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
if (chip->asic_loaded)
return 1;
- dev_dbg(chip->card->dev, "load_asic\n");
/* Give the DSP a few milliseconds to settle down */
mdelay(10);
err = write_control_reg(chip, GML_CONVERTER_ENABLE | GML_48KHZ,
TRUE);
- dev_dbg(chip->card->dev, "load_asic() done\n");
return err;
}
/* Pick the new clock */
switch (clock) {
case ECHO_CLOCK_INTERNAL:
- dev_dbg(chip->card->dev, "Set Layla24 clock to INTERNAL\n");
chip->input_clock = ECHO_CLOCK_INTERNAL;
return set_sample_rate(chip, chip->sample_rate);
case ECHO_CLOCK_SPDIF:
control_reg |= GML_SPDIF_CLOCK;
/* Layla24 doesn't support 96KHz S/PDIF */
control_reg &= ~GML_DOUBLE_SPEED_MODE;
- dev_dbg(chip->card->dev, "Set Layla24 clock to SPDIF\n");
break;
case ECHO_CLOCK_WORD:
control_reg |= GML_WORD_CLOCK;
control_reg |= GML_DOUBLE_SPEED_MODE;
else
control_reg &= ~GML_DOUBLE_SPEED_MODE;
- dev_dbg(chip->card->dev, "Set Layla24 clock to WORD\n");
break;
case ECHO_CLOCK_ADAT:
if (chip->digital_mode != DIGITAL_MODE_ADAT)
return -EAGAIN;
control_reg |= GML_ADAT_CLOCK;
control_reg &= ~GML_DOUBLE_SPEED_MODE;
- dev_dbg(chip->card->dev, "Set Layla24 clock to ADAT\n");
break;
default:
dev_err(chip->card->dev,
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Mia\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != MIA))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
struct echoaudio *chip = substream->rmidi->private_data;
chip->midi_in = substream;
- dev_dbg(chip->card->dev, "rawmidi_iopen\n");
return 0;
}
struct echoaudio *chip = substream->rmidi->private_data;
chip->midi_in = NULL;
- dev_dbg(chip->card->dev, "rawmidi_iclose\n");
return 0;
}
chip->tinuse = 0;
chip->midi_full = 0;
chip->midi_out = substream;
- dev_dbg(chip->card->dev, "rawmidi_open\n");
return 0;
}
int bytes, sent, time;
unsigned char buf[MIDI_OUT_BUFFER_SIZE - 1];
- dev_dbg(chip->card->dev, "snd_echo_midi_output_write\n");
/* No interrupts are involved: we have to check at regular intervals
if the card's output buffer has room for new data. */
sent = bytes = 0;
struct echoaudio *chip = substream->rmidi->private_data;
chip->midi_out = NULL;
- dev_dbg(chip->card->dev, "rawmidi_oclose\n");
return 0;
}
chip->rmidi->info_flags |= SNDRV_RAWMIDI_INFO_OUTPUT |
SNDRV_RAWMIDI_INFO_INPUT | SNDRV_RAWMIDI_INFO_DUPLEX;
- dev_dbg(chip->card->dev, "MIDI ok\n");
return 0;
}
{
int err;
- dev_dbg(chip->card->dev, "init_hw() - Mona\n");
if (snd_BUG_ON((subdevice_id & 0xfff0) != MONA))
return -ENODEV;
return err;
chip->bad_board = FALSE;
- dev_dbg(chip->card->dev, "init_hw done\n");
return err;
}
u32 control_reg, clocks_from_dsp;
int err;
- dev_dbg(chip->card->dev, "set_input_clock:\n");
/* Prevent two simultaneous calls to switch_asic() */
if (atomic_read(&chip->opencount))
switch (clock) {
case ECHO_CLOCK_INTERNAL:
- dev_dbg(chip->card->dev, "Set Mona clock to INTERNAL\n");
chip->input_clock = ECHO_CLOCK_INTERNAL;
return set_sample_rate(chip, chip->sample_rate);
case ECHO_CLOCK_SPDIF:
spin_lock_irq(&chip->lock);
if (err < 0)
return err;
- dev_dbg(chip->card->dev, "Set Mona clock to SPDIF\n");
control_reg |= GML_SPDIF_CLOCK;
if (clocks_from_dsp & GML_CLOCK_DETECT_BIT_SPDIF96)
control_reg |= GML_DOUBLE_SPEED_MODE;
control_reg &= ~GML_DOUBLE_SPEED_MODE;
break;
case ECHO_CLOCK_WORD:
- dev_dbg(chip->card->dev, "Set Mona clock to WORD\n");
spin_unlock_irq(&chip->lock);
err = switch_asic(chip, clocks_from_dsp &
GML_CLOCK_DETECT_BIT_WORD96);