Commit 2b96a7f1 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: cs46xx: Use standard printk helpers

Convert with dev_err() and co from snd_printk(), etc.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 00980aa9
...@@ -116,7 +116,7 @@ static unsigned short snd_cs46xx_codec_read(struct snd_cs46xx *chip, ...@@ -116,7 +116,7 @@ static unsigned short snd_cs46xx_codec_read(struct snd_cs46xx *chip,
tmp = snd_cs46xx_peekBA0(chip, BA0_ACCTL); tmp = snd_cs46xx_peekBA0(chip, BA0_ACCTL);
if ((tmp & ACCTL_VFRM) == 0) { if ((tmp & ACCTL_VFRM) == 0) {
snd_printk(KERN_WARNING "cs46xx: ACCTL_VFRM not set 0x%x\n",tmp); dev_warn(chip->card->dev, "ACCTL_VFRM not set 0x%x\n", tmp);
snd_cs46xx_pokeBA0(chip, BA0_ACCTL, (tmp & (~ACCTL_ESYN)) | ACCTL_VFRM ); snd_cs46xx_pokeBA0(chip, BA0_ACCTL, (tmp & (~ACCTL_ESYN)) | ACCTL_VFRM );
msleep(50); msleep(50);
tmp = snd_cs46xx_peekBA0(chip, BA0_ACCTL + offset); tmp = snd_cs46xx_peekBA0(chip, BA0_ACCTL + offset);
...@@ -168,7 +168,8 @@ static unsigned short snd_cs46xx_codec_read(struct snd_cs46xx *chip, ...@@ -168,7 +168,8 @@ static unsigned short snd_cs46xx_codec_read(struct snd_cs46xx *chip,
goto ok1; goto ok1;
} }
snd_printk(KERN_ERR "AC'97 read problem (ACCTL_DCV), reg = 0x%x\n", reg); dev_err(chip->card->dev,
"AC'97 read problem (ACCTL_DCV), reg = 0x%x\n", reg);
result = 0xffff; result = 0xffff;
goto end; goto end;
...@@ -187,7 +188,9 @@ static unsigned short snd_cs46xx_codec_read(struct snd_cs46xx *chip, ...@@ -187,7 +188,9 @@ static unsigned short snd_cs46xx_codec_read(struct snd_cs46xx *chip,
udelay(10); udelay(10);
} }
snd_printk(KERN_ERR "AC'97 read problem (ACSTS_VSTS), codec_index %d, reg = 0x%x\n", codec_index, reg); dev_err(chip->card->dev,
"AC'97 read problem (ACSTS_VSTS), codec_index %d, reg = 0x%x\n",
codec_index, reg);
result = 0xffff; result = 0xffff;
goto end; goto end;
...@@ -197,7 +200,8 @@ static unsigned short snd_cs46xx_codec_read(struct snd_cs46xx *chip, ...@@ -197,7 +200,8 @@ static unsigned short snd_cs46xx_codec_read(struct snd_cs46xx *chip,
* ACSDA = Status Data Register = 474h * ACSDA = Status Data Register = 474h
*/ */
#if 0 #if 0
printk(KERN_DEBUG "e) reg = 0x%x, val = 0x%x, BA0_ACCAD = 0x%x\n", reg, dev_dbg(chip->card->dev,
"e) reg = 0x%x, val = 0x%x, BA0_ACCAD = 0x%x\n", reg,
snd_cs46xx_peekBA0(chip, BA0_ACSDA), snd_cs46xx_peekBA0(chip, BA0_ACSDA),
snd_cs46xx_peekBA0(chip, BA0_ACCAD)); snd_cs46xx_peekBA0(chip, BA0_ACCAD));
#endif #endif
...@@ -286,7 +290,9 @@ static void snd_cs46xx_codec_write(struct snd_cs46xx *chip, ...@@ -286,7 +290,9 @@ static void snd_cs46xx_codec_write(struct snd_cs46xx *chip,
goto end; goto end;
} }
} }
snd_printk(KERN_ERR "AC'97 write problem, codec_index = %d, reg = 0x%x, val = 0x%x\n", codec_index, reg, val); dev_err(chip->card->dev,
"AC'97 write problem, codec_index = %d, reg = 0x%x, val = 0x%x\n",
codec_index, reg, val);
end: end:
chip->active_ctrl(chip, -1); chip->active_ctrl(chip, -1);
} }
...@@ -608,8 +614,8 @@ static int cs46xx_wait_for_fifo(struct snd_cs46xx * chip,int retry_timeout) ...@@ -608,8 +614,8 @@ static int cs46xx_wait_for_fifo(struct snd_cs46xx * chip,int retry_timeout)
} }
if(status & SERBST_WBSY) { if(status & SERBST_WBSY) {
snd_printk(KERN_ERR "cs46xx: failure waiting for " dev_err(chip->card->dev,
"FIFO command to complete\n"); "failure waiting for FIFO command to complete\n");
return -EINVAL; return -EINVAL;
} }
...@@ -646,7 +652,9 @@ static void snd_cs46xx_clear_serial_FIFOs(struct snd_cs46xx *chip) ...@@ -646,7 +652,9 @@ static void snd_cs46xx_clear_serial_FIFOs(struct snd_cs46xx *chip)
* Make sure the previous FIFO write operation has completed. * Make sure the previous FIFO write operation has completed.
*/ */
if (cs46xx_wait_for_fifo(chip,1)) { if (cs46xx_wait_for_fifo(chip,1)) {
snd_printdd ("failed waiting for FIFO at addr (%02X)\n",idx); dev_dbg(chip->card->dev,
"failed waiting for FIFO at addr (%02X)\n",
idx);
if (powerdown) if (powerdown)
snd_cs46xx_pokeBA0(chip, BA0_CLKCR1, tmp); snd_cs46xx_pokeBA0(chip, BA0_CLKCR1, tmp);
...@@ -694,7 +702,7 @@ static void snd_cs46xx_proc_start(struct snd_cs46xx *chip) ...@@ -694,7 +702,7 @@ static void snd_cs46xx_proc_start(struct snd_cs46xx *chip)
} }
if (snd_cs46xx_peek(chip, BA1_SPCR) & SPCR_RUNFR) if (snd_cs46xx_peek(chip, BA1_SPCR) & SPCR_RUNFR)
snd_printk(KERN_ERR "SPCR_RUNFR never reset\n"); dev_err(chip->card->dev, "SPCR_RUNFR never reset\n");
} }
static void snd_cs46xx_proc_stop(struct snd_cs46xx *chip) static void snd_cs46xx_proc_stop(struct snd_cs46xx *chip)
...@@ -1054,7 +1062,8 @@ static int _cs46xx_adjust_sample_rate (struct snd_cs46xx *chip, struct snd_cs46x ...@@ -1054,7 +1062,8 @@ static int _cs46xx_adjust_sample_rate (struct snd_cs46xx *chip, struct snd_cs46x
cpcm->pcm_channel = cs46xx_dsp_create_pcm_channel (chip, sample_rate, cpcm->pcm_channel = cs46xx_dsp_create_pcm_channel (chip, sample_rate,
cpcm, cpcm->hw_buf.addr,cpcm->pcm_channel_id); cpcm, cpcm->hw_buf.addr,cpcm->pcm_channel_id);
if (cpcm->pcm_channel == NULL) { if (cpcm->pcm_channel == NULL) {
snd_printk(KERN_ERR "cs46xx: failed to create virtual PCM channel\n"); dev_err(chip->card->dev,
"failed to create virtual PCM channel\n");
return -ENOMEM; return -ENOMEM;
} }
cpcm->pcm_channel->sample_rate = sample_rate; cpcm->pcm_channel->sample_rate = sample_rate;
...@@ -1067,7 +1076,8 @@ static int _cs46xx_adjust_sample_rate (struct snd_cs46xx *chip, struct snd_cs46x ...@@ -1067,7 +1076,8 @@ static int _cs46xx_adjust_sample_rate (struct snd_cs46xx *chip, struct snd_cs46x
if ( (cpcm->pcm_channel = cs46xx_dsp_create_pcm_channel (chip, sample_rate, cpcm, if ( (cpcm->pcm_channel = cs46xx_dsp_create_pcm_channel (chip, sample_rate, cpcm,
cpcm->hw_buf.addr, cpcm->hw_buf.addr,
cpcm->pcm_channel_id)) == NULL) { cpcm->pcm_channel_id)) == NULL) {
snd_printk(KERN_ERR "cs46xx: failed to re-create virtual PCM channel\n"); dev_err(chip->card->dev,
"failed to re-create virtual PCM channel\n");
return -ENOMEM; return -ENOMEM;
} }
...@@ -1116,7 +1126,8 @@ static int snd_cs46xx_playback_hw_params(struct snd_pcm_substream *substream, ...@@ -1116,7 +1126,8 @@ static int snd_cs46xx_playback_hw_params(struct snd_pcm_substream *substream,
return -EINVAL; return -EINVAL;
} }
snd_printdd ("period_size (%d), periods (%d) buffer_size(%d)\n", dev_dbg(chip->card->dev,
"period_size (%d), periods (%d) buffer_size(%d)\n",
period_size, params_periods(hw_params), period_size, params_periods(hw_params),
params_buffer_bytes(hw_params)); params_buffer_bytes(hw_params));
#endif #endif
...@@ -1531,22 +1542,20 @@ static int _cs46xx_playback_open_channel (struct snd_pcm_substream *substream,in ...@@ -1531,22 +1542,20 @@ static int _cs46xx_playback_open_channel (struct snd_pcm_substream *substream,in
static int snd_cs46xx_playback_open(struct snd_pcm_substream *substream) static int snd_cs46xx_playback_open(struct snd_pcm_substream *substream)
{ {
snd_printdd("open front channel\n"); dev_dbg(substream->pcm->card->dev, "open front channel\n");
return _cs46xx_playback_open_channel(substream,DSP_PCM_MAIN_CHANNEL); return _cs46xx_playback_open_channel(substream,DSP_PCM_MAIN_CHANNEL);
} }
#ifdef CONFIG_SND_CS46XX_NEW_DSP #ifdef CONFIG_SND_CS46XX_NEW_DSP
static int snd_cs46xx_playback_open_rear(struct snd_pcm_substream *substream) static int snd_cs46xx_playback_open_rear(struct snd_pcm_substream *substream)
{ {
snd_printdd("open rear channel\n"); dev_dbg(substream->pcm->card->dev, "open rear channel\n");
return _cs46xx_playback_open_channel(substream,DSP_PCM_REAR_CHANNEL); return _cs46xx_playback_open_channel(substream,DSP_PCM_REAR_CHANNEL);
} }
static int snd_cs46xx_playback_open_clfe(struct snd_pcm_substream *substream) static int snd_cs46xx_playback_open_clfe(struct snd_pcm_substream *substream)
{ {
snd_printdd("open center - LFE channel\n"); dev_dbg(substream->pcm->card->dev, "open center - LFE channel\n");
return _cs46xx_playback_open_channel(substream,DSP_PCM_CENTER_LFE_CHANNEL); return _cs46xx_playback_open_channel(substream,DSP_PCM_CENTER_LFE_CHANNEL);
} }
...@@ -1554,7 +1563,7 @@ static int snd_cs46xx_playback_open_iec958(struct snd_pcm_substream *substream) ...@@ -1554,7 +1563,7 @@ static int snd_cs46xx_playback_open_iec958(struct snd_pcm_substream *substream)
{ {
struct snd_cs46xx *chip = snd_pcm_substream_chip(substream); struct snd_cs46xx *chip = snd_pcm_substream_chip(substream);
snd_printdd("open raw iec958 channel\n"); dev_dbg(chip->card->dev, "open raw iec958 channel\n");
mutex_lock(&chip->spos_mutex); mutex_lock(&chip->spos_mutex);
cs46xx_iec958_pre_open (chip); cs46xx_iec958_pre_open (chip);
...@@ -1570,7 +1579,7 @@ static int snd_cs46xx_playback_close_iec958(struct snd_pcm_substream *substream) ...@@ -1570,7 +1579,7 @@ static int snd_cs46xx_playback_close_iec958(struct snd_pcm_substream *substream)
int err; int err;
struct snd_cs46xx *chip = snd_pcm_substream_chip(substream); struct snd_cs46xx *chip = snd_pcm_substream_chip(substream);
snd_printdd("close raw iec958 channel\n"); dev_dbg(chip->card->dev, "close raw iec958 channel\n");
err = snd_cs46xx_playback_close(substream); err = snd_cs46xx_playback_close(substream);
...@@ -2421,10 +2430,10 @@ static void snd_cs46xx_codec_reset (struct snd_ac97 * ac97) ...@@ -2421,10 +2430,10 @@ static void snd_cs46xx_codec_reset (struct snd_ac97 * ac97)
/* set the desired CODEC mode */ /* set the desired CODEC mode */
if (ac97->num == CS46XX_PRIMARY_CODEC_INDEX) { if (ac97->num == CS46XX_PRIMARY_CODEC_INDEX) {
snd_printdd("cs46xx: CODEC1 mode %04x\n", 0x0); dev_dbg(ac97->bus->card->dev, "CODEC1 mode %04x\n", 0x0);
snd_cs46xx_ac97_write(ac97, AC97_CSR_ACMODE, 0x0); snd_cs46xx_ac97_write(ac97, AC97_CSR_ACMODE, 0x0);
} else if (ac97->num == CS46XX_SECONDARY_CODEC_INDEX) { } else if (ac97->num == CS46XX_SECONDARY_CODEC_INDEX) {
snd_printdd("cs46xx: CODEC2 mode %04x\n", 0x3); dev_dbg(ac97->bus->card->dev, "CODEC2 mode %04x\n", 0x3);
snd_cs46xx_ac97_write(ac97, AC97_CSR_ACMODE, 0x3); snd_cs46xx_ac97_write(ac97, AC97_CSR_ACMODE, 0x3);
} else { } else {
snd_BUG(); /* should never happen ... */ snd_BUG(); /* should never happen ... */
...@@ -2456,7 +2465,8 @@ static void snd_cs46xx_codec_reset (struct snd_ac97 * ac97) ...@@ -2456,7 +2465,8 @@ static void snd_cs46xx_codec_reset (struct snd_ac97 * ac97)
msleep(10); msleep(10);
} while (time_after_eq(end_time, jiffies)); } while (time_after_eq(end_time, jiffies));
snd_printk(KERN_ERR "CS46xx secondary codec doesn't respond!\n"); dev_err(ac97->bus->card->dev,
"CS46xx secondary codec doesn't respond!\n");
} }
#endif #endif
...@@ -2476,7 +2486,8 @@ static int cs46xx_detect_codec(struct snd_cs46xx *chip, int codec) ...@@ -2476,7 +2486,8 @@ static int cs46xx_detect_codec(struct snd_cs46xx *chip, int codec)
snd_cs46xx_codec_write(chip, AC97_RESET, 0, codec); snd_cs46xx_codec_write(chip, AC97_RESET, 0, codec);
udelay(10); udelay(10);
if (snd_cs46xx_codec_read(chip, AC97_RESET, codec) & 0x8000) { if (snd_cs46xx_codec_read(chip, AC97_RESET, codec) & 0x8000) {
snd_printdd("snd_cs46xx: seconadry codec not present\n"); dev_dbg(chip->card->dev,
"seconadry codec not present\n");
return -ENXIO; return -ENXIO;
} }
} }
...@@ -2489,7 +2500,7 @@ static int cs46xx_detect_codec(struct snd_cs46xx *chip, int codec) ...@@ -2489,7 +2500,7 @@ static int cs46xx_detect_codec(struct snd_cs46xx *chip, int codec)
} }
msleep(10); msleep(10);
} }
snd_printdd("snd_cs46xx: codec %d detection timeout\n", codec); dev_dbg(chip->card->dev, "codec %d detection timeout\n", codec);
return -ENXIO; return -ENXIO;
} }
...@@ -2509,7 +2520,7 @@ int snd_cs46xx_mixer(struct snd_cs46xx *chip, int spdif_device) ...@@ -2509,7 +2520,7 @@ int snd_cs46xx_mixer(struct snd_cs46xx *chip, int spdif_device)
/* detect primary codec */ /* detect primary codec */
chip->nr_ac97_codecs = 0; chip->nr_ac97_codecs = 0;
snd_printdd("snd_cs46xx: detecting primary codec\n"); dev_dbg(chip->card->dev, "detecting primary codec\n");
if ((err = snd_ac97_bus(card, 0, &ops, chip, &chip->ac97_bus)) < 0) if ((err = snd_ac97_bus(card, 0, &ops, chip, &chip->ac97_bus)) < 0)
return err; return err;
chip->ac97_bus->private_free = snd_cs46xx_mixer_free_ac97_bus; chip->ac97_bus->private_free = snd_cs46xx_mixer_free_ac97_bus;
...@@ -2519,7 +2530,7 @@ int snd_cs46xx_mixer(struct snd_cs46xx *chip, int spdif_device) ...@@ -2519,7 +2530,7 @@ int snd_cs46xx_mixer(struct snd_cs46xx *chip, int spdif_device)
chip->nr_ac97_codecs = 1; chip->nr_ac97_codecs = 1;
#ifdef CONFIG_SND_CS46XX_NEW_DSP #ifdef CONFIG_SND_CS46XX_NEW_DSP
snd_printdd("snd_cs46xx: detecting seconadry codec\n"); dev_dbg(chip->card->dev, "detecting seconadry codec\n");
/* try detect a secondary codec */ /* try detect a secondary codec */
if (! cs46xx_detect_codec(chip, CS46XX_SECONDARY_CODEC_INDEX)) if (! cs46xx_detect_codec(chip, CS46XX_SECONDARY_CODEC_INDEX))
chip->nr_ac97_codecs = 2; chip->nr_ac97_codecs = 2;
...@@ -2554,7 +2565,7 @@ int snd_cs46xx_mixer(struct snd_cs46xx *chip, int spdif_device) ...@@ -2554,7 +2565,7 @@ int snd_cs46xx_mixer(struct snd_cs46xx *chip, int spdif_device)
} }
/* do soundcard specific mixer setup */ /* do soundcard specific mixer setup */
if (chip->mixer_init) { if (chip->mixer_init) {
snd_printdd ("calling chip->mixer_init(chip);\n"); dev_dbg(chip->card->dev, "calling chip->mixer_init(chip);\n");
chip->mixer_init(chip); chip->mixer_init(chip);
} }
#endif #endif
...@@ -2801,7 +2812,8 @@ int snd_cs46xx_gameport(struct snd_cs46xx *chip) ...@@ -2801,7 +2812,8 @@ int snd_cs46xx_gameport(struct snd_cs46xx *chip)
chip->gameport = gp = gameport_allocate_port(); chip->gameport = gp = gameport_allocate_port();
if (!gp) { if (!gp) {
printk(KERN_ERR "cs46xx: cannot allocate memory for gameport\n"); dev_err(chip->card->dev,
"cannot allocate memory for gameport\n");
return -ENOMEM; return -ENOMEM;
} }
...@@ -3138,8 +3150,10 @@ static int snd_cs46xx_chip_init(struct snd_cs46xx *chip) ...@@ -3138,8 +3150,10 @@ static int snd_cs46xx_chip_init(struct snd_cs46xx *chip)
} }
snd_printk(KERN_ERR "create - never read codec ready from AC'97\n"); dev_err(chip->card->dev,
snd_printk(KERN_ERR "it is not probably bug, try to use CS4236 driver\n"); "create - never read codec ready from AC'97\n");
dev_err(chip->card->dev,
"it is not probably bug, try to use CS4236 driver\n");
return -EIO; return -EIO;
ok1: ok1:
#ifdef CONFIG_SND_CS46XX_NEW_DSP #ifdef CONFIG_SND_CS46XX_NEW_DSP
...@@ -3157,7 +3171,8 @@ static int snd_cs46xx_chip_init(struct snd_cs46xx *chip) ...@@ -3157,7 +3171,8 @@ static int snd_cs46xx_chip_init(struct snd_cs46xx *chip)
* Make sure CODEC is READY. * Make sure CODEC is READY.
*/ */
if (!(snd_cs46xx_peekBA0(chip, BA0_ACSTS2) & ACSTS_CRDY)) if (!(snd_cs46xx_peekBA0(chip, BA0_ACSTS2) & ACSTS_CRDY))
snd_printdd("cs46xx: never read card ready from secondary AC'97\n"); dev_dbg(chip->card->dev,
"never read card ready from secondary AC'97\n");
} }
#endif #endif
...@@ -3187,17 +3202,21 @@ static int snd_cs46xx_chip_init(struct snd_cs46xx *chip) ...@@ -3187,17 +3202,21 @@ static int snd_cs46xx_chip_init(struct snd_cs46xx *chip)
} }
#ifndef CONFIG_SND_CS46XX_NEW_DSP #ifndef CONFIG_SND_CS46XX_NEW_DSP
snd_printk(KERN_ERR "create - never read ISV3 & ISV4 from AC'97\n"); dev_err(chip->card->dev,
"create - never read ISV3 & ISV4 from AC'97\n");
return -EIO; return -EIO;
#else #else
/* This may happen on a cold boot with a Terratec SiXPack 5.1. /* This may happen on a cold boot with a Terratec SiXPack 5.1.
Reloading the driver may help, if there's other soundcards Reloading the driver may help, if there's other soundcards
with the same problem I would like to know. (Benny) */ with the same problem I would like to know. (Benny) */
snd_printk(KERN_ERR "ERROR: snd-cs46xx: never read ISV3 & ISV4 from AC'97\n"); dev_err(chip->card->dev, "never read ISV3 & ISV4 from AC'97\n");
snd_printk(KERN_ERR " Try reloading the ALSA driver, if you find something\n"); dev_err(chip->card->dev,
snd_printk(KERN_ERR " broken or not working on your soundcard upon\n"); "Try reloading the ALSA driver, if you find something\n");
snd_printk(KERN_ERR " this message please report to alsa-devel@alsa-project.org\n"); dev_err(chip->card->dev,
"broken or not working on your soundcard upon\n");
dev_err(chip->card->dev,
"this message please report to alsa-devel@alsa-project.org\n");
return -EIO; return -EIO;
#endif #endif
...@@ -3266,13 +3285,13 @@ int snd_cs46xx_start_dsp(struct snd_cs46xx *chip) ...@@ -3266,13 +3285,13 @@ int snd_cs46xx_start_dsp(struct snd_cs46xx *chip)
for (i = 0; i < CS46XX_DSP_MODULES; i++) { for (i = 0; i < CS46XX_DSP_MODULES; i++) {
err = load_firmware(chip, &chip->modules[i], module_names[i]); err = load_firmware(chip, &chip->modules[i], module_names[i]);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "firmware load error [%s]\n", dev_err(chip->card->dev, "firmware load error [%s]\n",
module_names[i]); module_names[i]);
return err; return err;
} }
err = cs46xx_dsp_load_module(chip, chip->modules[i]); err = cs46xx_dsp_load_module(chip, chip->modules[i]);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "image download error [%s]\n", dev_err(chip->card->dev, "image download error [%s]\n",
module_names[i]); module_names[i]);
return err; return err;
} }
...@@ -3288,7 +3307,7 @@ int snd_cs46xx_start_dsp(struct snd_cs46xx *chip) ...@@ -3288,7 +3307,7 @@ int snd_cs46xx_start_dsp(struct snd_cs46xx *chip)
/* old image */ /* old image */
err = snd_cs46xx_download_image(chip); err = snd_cs46xx_download_image(chip);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "image download error\n"); dev_err(chip->card->dev, "image download error\n");
return err; return err;
} }
...@@ -3341,7 +3360,7 @@ static int voyetra_setup_eapd_slot(struct snd_cs46xx *chip) ...@@ -3341,7 +3360,7 @@ static int voyetra_setup_eapd_slot(struct snd_cs46xx *chip)
u32 idx, valid_slots,tmp,powerdown = 0; u32 idx, valid_slots,tmp,powerdown = 0;
u16 modem_power,pin_config,logic_type; u16 modem_power,pin_config,logic_type;
snd_printdd ("cs46xx: cs46xx_setup_eapd_slot()+\n"); dev_dbg(chip->card->dev, "cs46xx_setup_eapd_slot()+\n");
/* /*
* See if the devices are powered down. If so, we must power them up first * See if the devices are powered down. If so, we must power them up first
...@@ -3359,7 +3378,8 @@ static int voyetra_setup_eapd_slot(struct snd_cs46xx *chip) ...@@ -3359,7 +3378,8 @@ static int voyetra_setup_eapd_slot(struct snd_cs46xx *chip)
* stuff. * stuff.
*/ */
if(chip->nr_ac97_codecs != 2) { if(chip->nr_ac97_codecs != 2) {
snd_printk (KERN_ERR "cs46xx: cs46xx_setup_eapd_slot() - no secondary codec configured\n"); dev_err(chip->card->dev,
"cs46xx_setup_eapd_slot() - no secondary codec configured\n");
return -EINVAL; return -EINVAL;
} }
...@@ -3400,7 +3420,7 @@ static int voyetra_setup_eapd_slot(struct snd_cs46xx *chip) ...@@ -3400,7 +3420,7 @@ static int voyetra_setup_eapd_slot(struct snd_cs46xx *chip)
snd_cs46xx_pokeBA0(chip, BA0_ACOSV, valid_slots); snd_cs46xx_pokeBA0(chip, BA0_ACOSV, valid_slots);
if ( cs46xx_wait_for_fifo(chip,1) ) { if ( cs46xx_wait_for_fifo(chip,1) ) {
snd_printdd("FIFO is busy\n"); dev_dbg(chip->card->dev, "FIFO is busy\n");
return -EINVAL; return -EINVAL;
} }
...@@ -3421,7 +3441,9 @@ static int voyetra_setup_eapd_slot(struct snd_cs46xx *chip) ...@@ -3421,7 +3441,9 @@ static int voyetra_setup_eapd_slot(struct snd_cs46xx *chip)
* Wait for command to complete * Wait for command to complete
*/ */
if ( cs46xx_wait_for_fifo(chip,200) ) { if ( cs46xx_wait_for_fifo(chip,200) ) {
snd_printdd("failed waiting for FIFO at addr (%02X)\n",idx); dev_dbg(chip->card->dev,
"failed waiting for FIFO at addr (%02X)\n",
idx);
return -EINVAL; return -EINVAL;
} }
...@@ -3510,14 +3532,14 @@ static void amp_hercules(struct snd_cs46xx *chip, int change) ...@@ -3510,14 +3532,14 @@ static void amp_hercules(struct snd_cs46xx *chip, int change)
chip->amplifier += change; chip->amplifier += change;
if (chip->amplifier && !old) { if (chip->amplifier && !old) {
snd_printdd ("Hercules amplifier ON\n"); dev_dbg(chip->card->dev, "Hercules amplifier ON\n");
snd_cs46xx_pokeBA0(chip, BA0_EGPIODR, snd_cs46xx_pokeBA0(chip, BA0_EGPIODR,
EGPIODR_GPOE2 | val1); /* enable EGPIO2 output */ EGPIODR_GPOE2 | val1); /* enable EGPIO2 output */
snd_cs46xx_pokeBA0(chip, BA0_EGPIOPTR, snd_cs46xx_pokeBA0(chip, BA0_EGPIOPTR,
EGPIOPTR_GPPT2 | val2); /* open-drain on output */ EGPIOPTR_GPPT2 | val2); /* open-drain on output */
} else if (old && !chip->amplifier) { } else if (old && !chip->amplifier) {
snd_printdd ("Hercules amplifier OFF\n"); dev_dbg(chip->card->dev, "Hercules amplifier OFF\n");
snd_cs46xx_pokeBA0(chip, BA0_EGPIODR, val1 & ~EGPIODR_GPOE2); /* disable */ snd_cs46xx_pokeBA0(chip, BA0_EGPIODR, val1 & ~EGPIODR_GPOE2); /* disable */
snd_cs46xx_pokeBA0(chip, BA0_EGPIOPTR, val2 & ~EGPIOPTR_GPPT2); /* disable */ snd_cs46xx_pokeBA0(chip, BA0_EGPIOPTR, val2 & ~EGPIOPTR_GPPT2); /* disable */
} }
...@@ -3525,7 +3547,7 @@ static void amp_hercules(struct snd_cs46xx *chip, int change) ...@@ -3525,7 +3547,7 @@ static void amp_hercules(struct snd_cs46xx *chip, int change)
static void voyetra_mixer_init (struct snd_cs46xx *chip) static void voyetra_mixer_init (struct snd_cs46xx *chip)
{ {
snd_printdd ("initializing Voyetra mixer\n"); dev_dbg(chip->card->dev, "initializing Voyetra mixer\n");
/* Enable SPDIF out */ /* Enable SPDIF out */
snd_cs46xx_pokeBA0(chip, BA0_EGPIODR, EGPIODR_GPOE0); snd_cs46xx_pokeBA0(chip, BA0_EGPIODR, EGPIODR_GPOE0);
...@@ -3543,7 +3565,7 @@ static void hercules_mixer_init (struct snd_cs46xx *chip) ...@@ -3543,7 +3565,7 @@ static void hercules_mixer_init (struct snd_cs46xx *chip)
/* set EGPIO to default */ /* set EGPIO to default */
hercules_init(chip); hercules_init(chip);
snd_printdd ("initializing Hercules mixer\n"); dev_dbg(chip->card->dev, "initializing Hercules mixer\n");
#ifdef CONFIG_SND_CS46XX_NEW_DSP #ifdef CONFIG_SND_CS46XX_NEW_DSP
if (chip->in_suspend) if (chip->in_suspend)
...@@ -3554,7 +3576,9 @@ static void hercules_mixer_init (struct snd_cs46xx *chip) ...@@ -3554,7 +3576,9 @@ static void hercules_mixer_init (struct snd_cs46xx *chip)
kctl = snd_ctl_new1(&snd_hercules_controls[idx], chip); kctl = snd_ctl_new1(&snd_hercules_controls[idx], chip);
if ((err = snd_ctl_add(card, kctl)) < 0) { if ((err = snd_ctl_add(card, kctl)) < 0) {
printk (KERN_ERR "cs46xx: failed to initialize Hercules mixer (%d)\n",err); dev_err(card->dev,
"failed to initialize Hercules mixer (%d)\n",
err);
break; break;
} }
} }
...@@ -3826,8 +3850,7 @@ static int snd_cs46xx_resume(struct device *dev) ...@@ -3826,8 +3850,7 @@ static int snd_cs46xx_resume(struct device *dev)
pci_set_power_state(pci, PCI_D0); pci_set_power_state(pci, PCI_D0);
pci_restore_state(pci); pci_restore_state(pci);
if (pci_enable_device(pci) < 0) { if (pci_enable_device(pci) < 0) {
printk(KERN_ERR "cs46xx: pci_enable_device failed, " dev_err(dev, "pci_enable_device failed, disabling device\n");
"disabling device\n");
snd_card_disconnect(card); snd_card_disconnect(card);
return -EIO; return -EIO;
} }
...@@ -3932,7 +3955,8 @@ int snd_cs46xx_create(struct snd_card *card, ...@@ -3932,7 +3955,8 @@ int snd_cs46xx_create(struct snd_card *card,
chip->ba1_addr = pci_resource_start(pci, 1); chip->ba1_addr = pci_resource_start(pci, 1);
if (chip->ba0_addr == 0 || chip->ba0_addr == (unsigned long)~0 || if (chip->ba0_addr == 0 || chip->ba0_addr == (unsigned long)~0 ||
chip->ba1_addr == 0 || chip->ba1_addr == (unsigned long)~0) { chip->ba1_addr == 0 || chip->ba1_addr == (unsigned long)~0) {
snd_printk(KERN_ERR "wrong address(es) - ba0 = 0x%lx, ba1 = 0x%lx\n", dev_err(chip->card->dev,
"wrong address(es) - ba0 = 0x%lx, ba1 = 0x%lx\n",
chip->ba0_addr, chip->ba1_addr); chip->ba0_addr, chip->ba1_addr);
snd_cs46xx_free(chip); snd_cs46xx_free(chip);
return -ENOMEM; return -ENOMEM;
...@@ -3969,7 +3993,8 @@ int snd_cs46xx_create(struct snd_card *card, ...@@ -3969,7 +3993,8 @@ int snd_cs46xx_create(struct snd_card *card,
for (cp = &cards[0]; cp->name; cp++) { for (cp = &cards[0]; cp->name; cp++) {
if (cp->vendor == ss_vendor && cp->id == ss_card) { if (cp->vendor == ss_vendor && cp->id == ss_card) {
snd_printdd ("hack for %s enabled\n", cp->name); dev_dbg(chip->card->dev, "hack for %s enabled\n",
cp->name);
chip->amplifier_ctrl = cp->amp; chip->amplifier_ctrl = cp->amp;
chip->active_ctrl = cp->active; chip->active_ctrl = cp->active;
...@@ -3982,12 +4007,14 @@ int snd_cs46xx_create(struct snd_card *card, ...@@ -3982,12 +4007,14 @@ int snd_cs46xx_create(struct snd_card *card,
} }
if (external_amp) { if (external_amp) {
snd_printk(KERN_INFO "Crystal EAPD support forced on.\n"); dev_info(chip->card->dev,
"Crystal EAPD support forced on.\n");
chip->amplifier_ctrl = amp_voyetra; chip->amplifier_ctrl = amp_voyetra;
} }
if (thinkpad) { if (thinkpad) {
snd_printk(KERN_INFO "Activating CLKRUN hack for Thinkpad.\n"); dev_info(chip->card->dev,
"Activating CLKRUN hack for Thinkpad.\n");
chip->active_ctrl = clkrun_hack; chip->active_ctrl = clkrun_hack;
clkrun_init(chip); clkrun_init(chip);
} }
...@@ -4005,14 +4032,16 @@ int snd_cs46xx_create(struct snd_card *card, ...@@ -4005,14 +4032,16 @@ int snd_cs46xx_create(struct snd_card *card,
region = &chip->region.idx[idx]; region = &chip->region.idx[idx];
if ((region->resource = request_mem_region(region->base, region->size, if ((region->resource = request_mem_region(region->base, region->size,
region->name)) == NULL) { region->name)) == NULL) {
snd_printk(KERN_ERR "unable to request memory region 0x%lx-0x%lx\n", dev_err(chip->card->dev,
"unable to request memory region 0x%lx-0x%lx\n",
region->base, region->base + region->size - 1); region->base, region->base + region->size - 1);
snd_cs46xx_free(chip); snd_cs46xx_free(chip);
return -EBUSY; return -EBUSY;
} }
region->remap_addr = ioremap_nocache(region->base, region->size); region->remap_addr = ioremap_nocache(region->base, region->size);
if (region->remap_addr == NULL) { if (region->remap_addr == NULL) {
snd_printk(KERN_ERR "%s ioremap problem\n", region->name); dev_err(chip->card->dev,
"%s ioremap problem\n", region->name);
snd_cs46xx_free(chip); snd_cs46xx_free(chip);
return -ENOMEM; return -ENOMEM;
} }
...@@ -4020,7 +4049,7 @@ int snd_cs46xx_create(struct snd_card *card, ...@@ -4020,7 +4049,7 @@ int snd_cs46xx_create(struct snd_card *card,
if (request_irq(pci->irq, snd_cs46xx_interrupt, IRQF_SHARED, if (request_irq(pci->irq, snd_cs46xx_interrupt, IRQF_SHARED,
KBUILD_MODNAME, chip)) { KBUILD_MODNAME, chip)) {
snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); dev_err(chip->card->dev, "unable to grab IRQ %d\n", pci->irq);
snd_cs46xx_free(chip); snd_cs46xx_free(chip);
return -EBUSY; return -EBUSY;
} }
......
...@@ -85,12 +85,15 @@ static int shadow_and_reallocate_code (struct snd_cs46xx * chip, u32 * data, u32 ...@@ -85,12 +85,15 @@ static int shadow_and_reallocate_code (struct snd_cs46xx * chip, u32 * data, u32
address = (hival & 0x00FFF) << 5; address = (hival & 0x00FFF) << 5;
address |= loval >> 15; address |= loval >> 15;
snd_printdd("handle_wideop[1]: %05x:%05x addr %04x\n",hival,loval,address); dev_dbg(chip->card->dev,
"handle_wideop[1]: %05x:%05x addr %04x\n",
hival, loval, address);
if ( !(address & 0x8000) ) { if ( !(address & 0x8000) ) {
address += (ins->code.offset / 2) - overlay_begin_address; address += (ins->code.offset / 2) - overlay_begin_address;
} else { } else {
snd_printdd("handle_wideop[1]: ROM symbol not reallocated\n"); dev_dbg(chip->card->dev,
"handle_wideop[1]: ROM symbol not reallocated\n");
} }
hival &= 0xFF000; hival &= 0xFF000;
...@@ -102,8 +105,9 @@ static int shadow_and_reallocate_code (struct snd_cs46xx * chip, u32 * data, u32 ...@@ -102,8 +105,9 @@ static int shadow_and_reallocate_code (struct snd_cs46xx * chip, u32 * data, u32
address = (hival & 0x00FFF) << 5; address = (hival & 0x00FFF) << 5;
address |= loval >> 15; address |= loval >> 15;
snd_printdd("handle_wideop:[2] %05x:%05x addr %04x\n",hival,loval,address); dev_dbg(chip->card->dev,
nreallocated ++; "handle_wideop:[2] %05x:%05x addr %04x\n",
hival, loval, address); nreallocated++;
} /* wide_opcodes[j] == wide_op */ } /* wide_opcodes[j] == wide_op */
} /* for */ } /* for */
} /* mod_type == 0 ... */ } /* mod_type == 0 ... */
...@@ -113,7 +117,8 @@ static int shadow_and_reallocate_code (struct snd_cs46xx * chip, u32 * data, u32 ...@@ -113,7 +117,8 @@ static int shadow_and_reallocate_code (struct snd_cs46xx * chip, u32 * data, u32
ins->code.data[ins->code.size++] = hival; ins->code.data[ins->code.size++] = hival;
} }
snd_printdd("dsp_spos: %d instructions reallocated\n",nreallocated); dev_dbg(chip->card->dev,
"dsp_spos: %d instructions reallocated\n", nreallocated);
return nreallocated; return nreallocated;
} }
...@@ -157,7 +162,8 @@ static int add_symbols (struct snd_cs46xx * chip, struct dsp_module_desc * modul ...@@ -157,7 +162,8 @@ static int add_symbols (struct snd_cs46xx * chip, struct dsp_module_desc * modul
for (i = 0;i < module->symbol_table.nsymbols; ++i) { for (i = 0;i < module->symbol_table.nsymbols; ++i) {
if (ins->symbol_table.nsymbols == (DSP_MAX_SYMBOLS - 1)) { if (ins->symbol_table.nsymbols == (DSP_MAX_SYMBOLS - 1)) {
snd_printk(KERN_ERR "dsp_spos: symbol table is full\n"); dev_err(chip->card->dev,
"dsp_spos: symbol table is full\n");
return -ENOMEM; return -ENOMEM;
} }
...@@ -176,8 +182,11 @@ static int add_symbols (struct snd_cs46xx * chip, struct dsp_module_desc * modul ...@@ -176,8 +182,11 @@ static int add_symbols (struct snd_cs46xx * chip, struct dsp_module_desc * modul
ins->symbol_table.nsymbols++; ins->symbol_table.nsymbols++;
} else { } else {
/* if (0) printk ("dsp_spos: symbol <%s> duplicated, probably nothing wrong with that (Cirrus?)\n", #if 0
dev_dbg(chip->card->dev,
"dsp_spos: symbol <%s> duplicated, probably nothing wrong with that (Cirrus?)\n",
module->symbol_table.symbols[i].symbol_name); */ module->symbol_table.symbols[i].symbol_name); */
#endif
} }
} }
...@@ -192,14 +201,15 @@ add_symbol (struct snd_cs46xx * chip, char * symbol_name, u32 address, int type) ...@@ -192,14 +201,15 @@ add_symbol (struct snd_cs46xx * chip, char * symbol_name, u32 address, int type)
int index; int index;
if (ins->symbol_table.nsymbols == (DSP_MAX_SYMBOLS - 1)) { if (ins->symbol_table.nsymbols == (DSP_MAX_SYMBOLS - 1)) {
snd_printk(KERN_ERR "dsp_spos: symbol table is full\n"); dev_err(chip->card->dev, "dsp_spos: symbol table is full\n");
return NULL; return NULL;
} }
if (cs46xx_dsp_lookup_symbol(chip, if (cs46xx_dsp_lookup_symbol(chip,
symbol_name, symbol_name,
type) != NULL) { type) != NULL) {
snd_printk(KERN_ERR "dsp_spos: symbol <%s> duplicated\n", symbol_name); dev_err(chip->card->dev,
"dsp_spos: symbol <%s> duplicated\n", symbol_name);
return NULL; return NULL;
} }
...@@ -305,19 +315,20 @@ static int dsp_load_parameter(struct snd_cs46xx *chip, ...@@ -305,19 +315,20 @@ static int dsp_load_parameter(struct snd_cs46xx *chip,
u32 doffset, dsize; u32 doffset, dsize;
if (!parameter) { if (!parameter) {
snd_printdd("dsp_spos: module got no parameter segment\n"); dev_dbg(chip->card->dev,
"dsp_spos: module got no parameter segment\n");
return 0; return 0;
} }
doffset = (parameter->offset * 4 + DSP_PARAMETER_BYTE_OFFSET); doffset = (parameter->offset * 4 + DSP_PARAMETER_BYTE_OFFSET);
dsize = parameter->size * 4; dsize = parameter->size * 4;
snd_printdd("dsp_spos: " dev_dbg(chip->card->dev,
"downloading parameter data to chip (%08x-%08x)\n", "dsp_spos: downloading parameter data to chip (%08x-%08x)\n",
doffset,doffset + dsize); doffset,doffset + dsize);
if (snd_cs46xx_download (chip, parameter->data, doffset, dsize)) { if (snd_cs46xx_download (chip, parameter->data, doffset, dsize)) {
snd_printk(KERN_ERR "dsp_spos: " dev_err(chip->card->dev,
"failed to download parameter data to DSP\n"); "dsp_spos: failed to download parameter data to DSP\n");
return -EINVAL; return -EINVAL;
} }
return 0; return 0;
...@@ -329,18 +340,21 @@ static int dsp_load_sample(struct snd_cs46xx *chip, ...@@ -329,18 +340,21 @@ static int dsp_load_sample(struct snd_cs46xx *chip,
u32 doffset, dsize; u32 doffset, dsize;
if (!sample) { if (!sample) {
snd_printdd("dsp_spos: module got no sample segment\n"); dev_dbg(chip->card->dev,
"dsp_spos: module got no sample segment\n");
return 0; return 0;
} }
doffset = (sample->offset * 4 + DSP_SAMPLE_BYTE_OFFSET); doffset = (sample->offset * 4 + DSP_SAMPLE_BYTE_OFFSET);
dsize = sample->size * 4; dsize = sample->size * 4;
snd_printdd("dsp_spos: downloading sample data to chip (%08x-%08x)\n", dev_dbg(chip->card->dev,
"dsp_spos: downloading sample data to chip (%08x-%08x)\n",
doffset,doffset + dsize); doffset,doffset + dsize);
if (snd_cs46xx_download (chip,sample->data,doffset,dsize)) { if (snd_cs46xx_download (chip,sample->data,doffset,dsize)) {
snd_printk(KERN_ERR "dsp_spos: failed to sample data to DSP\n"); dev_err(chip->card->dev,
"dsp_spos: failed to sample data to DSP\n");
return -EINVAL; return -EINVAL;
} }
return 0; return 0;
...@@ -354,14 +368,16 @@ int cs46xx_dsp_load_module (struct snd_cs46xx * chip, struct dsp_module_desc * m ...@@ -354,14 +368,16 @@ int cs46xx_dsp_load_module (struct snd_cs46xx * chip, struct dsp_module_desc * m
int err; int err;
if (ins->nmodules == DSP_MAX_MODULES - 1) { if (ins->nmodules == DSP_MAX_MODULES - 1) {
snd_printk(KERN_ERR "dsp_spos: to many modules loaded into DSP\n"); dev_err(chip->card->dev,
"dsp_spos: to many modules loaded into DSP\n");
return -ENOMEM; return -ENOMEM;
} }
snd_printdd("dsp_spos: loading module %s into DSP\n", module->module_name); dev_dbg(chip->card->dev,
"dsp_spos: loading module %s into DSP\n", module->module_name);
if (ins->nmodules == 0) { if (ins->nmodules == 0) {
snd_printdd("dsp_spos: clearing parameter area\n"); dev_dbg(chip->card->dev, "dsp_spos: clearing parameter area\n");
snd_cs46xx_clear_BA1(chip, DSP_PARAMETER_BYTE_OFFSET, DSP_PARAMETER_BYTE_SIZE); snd_cs46xx_clear_BA1(chip, DSP_PARAMETER_BYTE_OFFSET, DSP_PARAMETER_BYTE_SIZE);
} }
...@@ -371,7 +387,7 @@ int cs46xx_dsp_load_module (struct snd_cs46xx * chip, struct dsp_module_desc * m ...@@ -371,7 +387,7 @@ int cs46xx_dsp_load_module (struct snd_cs46xx * chip, struct dsp_module_desc * m
return err; return err;
if (ins->nmodules == 0) { if (ins->nmodules == 0) {
snd_printdd("dsp_spos: clearing sample area\n"); dev_dbg(chip->card->dev, "dsp_spos: clearing sample area\n");
snd_cs46xx_clear_BA1(chip, DSP_SAMPLE_BYTE_OFFSET, DSP_SAMPLE_BYTE_SIZE); snd_cs46xx_clear_BA1(chip, DSP_SAMPLE_BYTE_OFFSET, DSP_SAMPLE_BYTE_SIZE);
} }
...@@ -381,15 +397,17 @@ int cs46xx_dsp_load_module (struct snd_cs46xx * chip, struct dsp_module_desc * m ...@@ -381,15 +397,17 @@ int cs46xx_dsp_load_module (struct snd_cs46xx * chip, struct dsp_module_desc * m
return err; return err;
if (ins->nmodules == 0) { if (ins->nmodules == 0) {
snd_printdd("dsp_spos: clearing code area\n"); dev_dbg(chip->card->dev, "dsp_spos: clearing code area\n");
snd_cs46xx_clear_BA1(chip, DSP_CODE_BYTE_OFFSET, DSP_CODE_BYTE_SIZE); snd_cs46xx_clear_BA1(chip, DSP_CODE_BYTE_OFFSET, DSP_CODE_BYTE_SIZE);
} }
if (code == NULL) { if (code == NULL) {
snd_printdd("dsp_spos: module got no code segment\n"); dev_dbg(chip->card->dev,
"dsp_spos: module got no code segment\n");
} else { } else {
if (ins->code.offset + code->size > DSP_CODE_BYTE_SIZE) { if (ins->code.offset + code->size > DSP_CODE_BYTE_SIZE) {
snd_printk(KERN_ERR "dsp_spos: no space available in DSP\n"); dev_err(chip->card->dev,
"dsp_spos: no space available in DSP\n");
return -ENOMEM; return -ENOMEM;
} }
...@@ -401,19 +419,22 @@ int cs46xx_dsp_load_module (struct snd_cs46xx * chip, struct dsp_module_desc * m ...@@ -401,19 +419,22 @@ int cs46xx_dsp_load_module (struct snd_cs46xx * chip, struct dsp_module_desc * m
if (snd_BUG_ON(!module->symbol_table.symbols)) if (snd_BUG_ON(!module->symbol_table.symbols))
return -ENOMEM; return -ENOMEM;
if (add_symbols(chip,module)) { if (add_symbols(chip,module)) {
snd_printk(KERN_ERR "dsp_spos: failed to load symbol table\n"); dev_err(chip->card->dev,
"dsp_spos: failed to load symbol table\n");
return -ENOMEM; return -ENOMEM;
} }
doffset = (code->offset * 4 + ins->code.offset * 4 + DSP_CODE_BYTE_OFFSET); doffset = (code->offset * 4 + ins->code.offset * 4 + DSP_CODE_BYTE_OFFSET);
dsize = code->size * 4; dsize = code->size * 4;
snd_printdd("dsp_spos: downloading code to chip (%08x-%08x)\n", dev_dbg(chip->card->dev,
"dsp_spos: downloading code to chip (%08x-%08x)\n",
doffset,doffset + dsize); doffset,doffset + dsize);
module->nfixups = shadow_and_reallocate_code(chip,code->data,code->size,module->overlay_begin_address); module->nfixups = shadow_and_reallocate_code(chip,code->data,code->size,module->overlay_begin_address);
if (snd_cs46xx_download (chip,(ins->code.data + ins->code.offset),doffset,dsize)) { if (snd_cs46xx_download (chip,(ins->code.data + ins->code.offset),doffset,dsize)) {
snd_printk(KERN_ERR "dsp_spos: failed to download code to DSP\n"); dev_err(chip->card->dev,
"dsp_spos: failed to download code to DSP\n");
return -EINVAL; return -EINVAL;
} }
...@@ -447,7 +468,7 @@ cs46xx_dsp_lookup_symbol (struct snd_cs46xx * chip, char * symbol_name, int symb ...@@ -447,7 +468,7 @@ cs46xx_dsp_lookup_symbol (struct snd_cs46xx * chip, char * symbol_name, int symb
} }
#if 0 #if 0
printk ("dsp_spos: symbol <%s> type %02x not found\n", dev_err(chip->card->dev, "dsp_spos: symbol <%s> type %02x not found\n",
symbol_name,symbol_type); symbol_name,symbol_type);
#endif #endif
...@@ -910,7 +931,6 @@ int cs46xx_dsp_proc_done (struct snd_cs46xx *chip) ...@@ -910,7 +931,6 @@ int cs46xx_dsp_proc_done (struct snd_cs46xx *chip)
} }
#endif /* CONFIG_PROC_FS */ #endif /* CONFIG_PROC_FS */
static int debug_tree;
static void _dsp_create_task_tree (struct snd_cs46xx *chip, u32 * task_data, static void _dsp_create_task_tree (struct snd_cs46xx *chip, u32 * task_data,
u32 dest, int size) u32 dest, int size)
{ {
...@@ -919,13 +939,13 @@ static void _dsp_create_task_tree (struct snd_cs46xx *chip, u32 * task_data, ...@@ -919,13 +939,13 @@ static void _dsp_create_task_tree (struct snd_cs46xx *chip, u32 * task_data,
int i; int i;
for (i = 0; i < size; ++i) { for (i = 0; i < size; ++i) {
if (debug_tree) printk ("addr %p, val %08x\n",spdst,task_data[i]); dev_dbg(chip->card->dev, "addr %p, val %08x\n",
spdst, task_data[i]);
writel(task_data[i],spdst); writel(task_data[i],spdst);
spdst += sizeof(u32); spdst += sizeof(u32);
} }
} }
static int debug_scb;
static void _dsp_create_scb (struct snd_cs46xx *chip, u32 * scb_data, u32 dest) static void _dsp_create_scb (struct snd_cs46xx *chip, u32 * scb_data, u32 dest)
{ {
void __iomem *spdst = chip->region.idx[1].remap_addr + void __iomem *spdst = chip->region.idx[1].remap_addr +
...@@ -933,7 +953,8 @@ static void _dsp_create_scb (struct snd_cs46xx *chip, u32 * scb_data, u32 dest) ...@@ -933,7 +953,8 @@ static void _dsp_create_scb (struct snd_cs46xx *chip, u32 * scb_data, u32 dest)
int i; int i;
for (i = 0; i < 0x10; ++i) { for (i = 0; i < 0x10; ++i) {
if (debug_scb) printk ("addr %p, val %08x\n",spdst,scb_data[i]); dev_dbg(chip->card->dev, "addr %p, val %08x\n",
spdst, scb_data[i]);
writel(scb_data[i],spdst); writel(scb_data[i],spdst);
spdst += sizeof(u32); spdst += sizeof(u32);
} }
...@@ -960,7 +981,8 @@ static struct dsp_scb_descriptor * _map_scb (struct snd_cs46xx *chip, char * nam ...@@ -960,7 +981,8 @@ static struct dsp_scb_descriptor * _map_scb (struct snd_cs46xx *chip, char * nam
int index; int index;
if (ins->nscb == DSP_MAX_SCB_DESC - 1) { if (ins->nscb == DSP_MAX_SCB_DESC - 1) {
snd_printk(KERN_ERR "dsp_spos: got no place for other SCB\n"); dev_err(chip->card->dev,
"dsp_spos: got no place for other SCB\n");
return NULL; return NULL;
} }
...@@ -991,7 +1013,8 @@ _map_task_tree (struct snd_cs46xx *chip, char * name, u32 dest, u32 size) ...@@ -991,7 +1013,8 @@ _map_task_tree (struct snd_cs46xx *chip, char * name, u32 dest, u32 size)
struct dsp_task_descriptor * desc = NULL; struct dsp_task_descriptor * desc = NULL;
if (ins->ntask == DSP_MAX_TASK_DESC - 1) { if (ins->ntask == DSP_MAX_TASK_DESC - 1) {
snd_printk(KERN_ERR "dsp_spos: got no place for other TASK\n"); dev_err(chip->card->dev,
"dsp_spos: got no place for other TASK\n");
return NULL; return NULL;
} }
...@@ -1031,7 +1054,7 @@ cs46xx_dsp_create_scb (struct snd_cs46xx *chip, char * name, u32 * scb_data, u32 ...@@ -1031,7 +1054,7 @@ cs46xx_dsp_create_scb (struct snd_cs46xx *chip, char * name, u32 * scb_data, u32
desc->data = scb_data; desc->data = scb_data;
_dsp_create_scb(chip,scb_data,dest); _dsp_create_scb(chip,scb_data,dest);
} else { } else {
snd_printk(KERN_ERR "dsp_spos: failed to map SCB\n"); dev_err(chip->card->dev, "dsp_spos: failed to map SCB\n");
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
kfree(scb_data); kfree(scb_data);
#endif #endif
...@@ -1052,7 +1075,7 @@ cs46xx_dsp_create_task_tree (struct snd_cs46xx *chip, char * name, u32 * task_da ...@@ -1052,7 +1075,7 @@ cs46xx_dsp_create_task_tree (struct snd_cs46xx *chip, char * name, u32 * task_da
desc->data = task_data; desc->data = task_data;
_dsp_create_task_tree(chip,task_data,dest,size); _dsp_create_task_tree(chip,task_data,dest,size);
} else { } else {
snd_printk(KERN_ERR "dsp_spos: failed to map TASK\n"); dev_err(chip->card->dev, "dsp_spos: failed to map TASK\n");
} }
return desc; return desc;
...@@ -1105,31 +1128,36 @@ int cs46xx_dsp_scb_and_task_init (struct snd_cs46xx *chip) ...@@ -1105,31 +1128,36 @@ int cs46xx_dsp_scb_and_task_init (struct snd_cs46xx *chip)
null_algorithm = cs46xx_dsp_lookup_symbol(chip, "NULLALGORITHM", SYMBOL_CODE); null_algorithm = cs46xx_dsp_lookup_symbol(chip, "NULLALGORITHM", SYMBOL_CODE);
if (null_algorithm == NULL) { if (null_algorithm == NULL) {
snd_printk(KERN_ERR "dsp_spos: symbol NULLALGORITHM not found\n"); dev_err(chip->card->dev,
"dsp_spos: symbol NULLALGORITHM not found\n");
return -EIO; return -EIO;
} }
fg_task_tree_header_code = cs46xx_dsp_lookup_symbol(chip, "FGTASKTREEHEADERCODE", SYMBOL_CODE); fg_task_tree_header_code = cs46xx_dsp_lookup_symbol(chip, "FGTASKTREEHEADERCODE", SYMBOL_CODE);
if (fg_task_tree_header_code == NULL) { if (fg_task_tree_header_code == NULL) {
snd_printk(KERN_ERR "dsp_spos: symbol FGTASKTREEHEADERCODE not found\n"); dev_err(chip->card->dev,
"dsp_spos: symbol FGTASKTREEHEADERCODE not found\n");
return -EIO; return -EIO;
} }
task_tree_header_code = cs46xx_dsp_lookup_symbol(chip, "TASKTREEHEADERCODE", SYMBOL_CODE); task_tree_header_code = cs46xx_dsp_lookup_symbol(chip, "TASKTREEHEADERCODE", SYMBOL_CODE);
if (task_tree_header_code == NULL) { if (task_tree_header_code == NULL) {
snd_printk(KERN_ERR "dsp_spos: symbol TASKTREEHEADERCODE not found\n"); dev_err(chip->card->dev,
"dsp_spos: symbol TASKTREEHEADERCODE not found\n");
return -EIO; return -EIO;
} }
task_tree_thread = cs46xx_dsp_lookup_symbol(chip, "TASKTREETHREAD", SYMBOL_CODE); task_tree_thread = cs46xx_dsp_lookup_symbol(chip, "TASKTREETHREAD", SYMBOL_CODE);
if (task_tree_thread == NULL) { if (task_tree_thread == NULL) {
snd_printk(KERN_ERR "dsp_spos: symbol TASKTREETHREAD not found\n"); dev_err(chip->card->dev,
"dsp_spos: symbol TASKTREETHREAD not found\n");
return -EIO; return -EIO;
} }
magic_snoop_task = cs46xx_dsp_lookup_symbol(chip, "MAGICSNOOPTASK", SYMBOL_CODE); magic_snoop_task = cs46xx_dsp_lookup_symbol(chip, "MAGICSNOOPTASK", SYMBOL_CODE);
if (magic_snoop_task == NULL) { if (magic_snoop_task == NULL) {
snd_printk(KERN_ERR "dsp_spos: symbol MAGICSNOOPTASK not found\n"); dev_err(chip->card->dev,
"dsp_spos: symbol MAGICSNOOPTASK not found\n");
return -EIO; return -EIO;
} }
...@@ -1476,7 +1504,7 @@ int cs46xx_dsp_scb_and_task_init (struct snd_cs46xx *chip) ...@@ -1476,7 +1504,7 @@ int cs46xx_dsp_scb_and_task_init (struct snd_cs46xx *chip)
return 0; return 0;
_fail_end: _fail_end:
snd_printk(KERN_ERR "dsp_spos: failed to setup SCB's in DSP\n"); dev_err(chip->card->dev, "dsp_spos: failed to setup SCB's in DSP\n");
return -EINVAL; return -EINVAL;
} }
...@@ -1491,18 +1519,21 @@ static int cs46xx_dsp_async_init (struct snd_cs46xx *chip, ...@@ -1491,18 +1519,21 @@ static int cs46xx_dsp_async_init (struct snd_cs46xx *chip,
s16_async_codec_input_task = cs46xx_dsp_lookup_symbol(chip, "S16_ASYNCCODECINPUTTASK", SYMBOL_CODE); s16_async_codec_input_task = cs46xx_dsp_lookup_symbol(chip, "S16_ASYNCCODECINPUTTASK", SYMBOL_CODE);
if (s16_async_codec_input_task == NULL) { if (s16_async_codec_input_task == NULL) {
snd_printk(KERN_ERR "dsp_spos: symbol S16_ASYNCCODECINPUTTASK not found\n"); dev_err(chip->card->dev,
"dsp_spos: symbol S16_ASYNCCODECINPUTTASK not found\n");
return -EIO; return -EIO;
} }
spdifo_task = cs46xx_dsp_lookup_symbol(chip, "SPDIFOTASK", SYMBOL_CODE); spdifo_task = cs46xx_dsp_lookup_symbol(chip, "SPDIFOTASK", SYMBOL_CODE);
if (spdifo_task == NULL) { if (spdifo_task == NULL) {
snd_printk(KERN_ERR "dsp_spos: symbol SPDIFOTASK not found\n"); dev_err(chip->card->dev,
"dsp_spos: symbol SPDIFOTASK not found\n");
return -EIO; return -EIO;
} }
spdifi_task = cs46xx_dsp_lookup_symbol(chip, "SPDIFITASK", SYMBOL_CODE); spdifi_task = cs46xx_dsp_lookup_symbol(chip, "SPDIFITASK", SYMBOL_CODE);
if (spdifi_task == NULL) { if (spdifi_task == NULL) {
snd_printk(KERN_ERR "dsp_spos: symbol SPDIFITASK not found\n"); dev_err(chip->card->dev,
"dsp_spos: symbol SPDIFITASK not found\n");
return -EIO; return -EIO;
} }
...@@ -1883,7 +1914,8 @@ int cs46xx_poke_via_dsp (struct snd_cs46xx *chip, u32 address, u32 data) ...@@ -1883,7 +1914,8 @@ int cs46xx_poke_via_dsp (struct snd_cs46xx *chip, u32 address, u32 data)
} }
if (i == 25) { if (i == 25) {
snd_printk(KERN_ERR "dsp_spos: SPIOWriteTask not responding\n"); dev_err(chip->card->dev,
"dsp_spos: SPIOWriteTask not responding\n");
return -EBUSY; return -EBUSY;
} }
......
...@@ -233,8 +233,11 @@ void cs46xx_dsp_proc_free_scb_desc (struct dsp_scb_descriptor * scb) ...@@ -233,8 +233,11 @@ void cs46xx_dsp_proc_free_scb_desc (struct dsp_scb_descriptor * scb)
{ {
if (scb->proc_info) { if (scb->proc_info) {
struct proc_scb_info * scb_info = scb->proc_info->private_data; struct proc_scb_info * scb_info = scb->proc_info->private_data;
struct snd_cs46xx *chip = scb_info->chip;
snd_printdd("cs46xx_dsp_proc_free_scb_desc: freeing %s\n",scb->scb_name); dev_dbg(chip->card->dev,
"cs46xx_dsp_proc_free_scb_desc: freeing %s\n",
scb->scb_name);
snd_info_free_entry(scb->proc_info); snd_info_free_entry(scb->proc_info);
scb->proc_info = NULL; scb->proc_info = NULL;
...@@ -305,7 +308,7 @@ _dsp_create_generic_scb (struct snd_cs46xx *chip, char * name, u32 * scb_data, u ...@@ -305,7 +308,7 @@ _dsp_create_generic_scb (struct snd_cs46xx *chip, char * name, u32 * scb_data, u
scb_data[SCBfuncEntryPtr] &= 0xFFFF0000; scb_data[SCBfuncEntryPtr] &= 0xFFFF0000;
scb_data[SCBfuncEntryPtr] |= task_entry->address; scb_data[SCBfuncEntryPtr] |= task_entry->address;
snd_printdd("dsp_spos: creating SCB <%s>\n",name); dev_dbg(chip->card->dev, "dsp_spos: creating SCB <%s>\n", name);
scb = cs46xx_dsp_create_scb(chip,name,scb_data,dest); scb = cs46xx_dsp_create_scb(chip,name,scb_data,dest);
...@@ -320,9 +323,15 @@ _dsp_create_generic_scb (struct snd_cs46xx *chip, char * name, u32 * scb_data, u ...@@ -320,9 +323,15 @@ _dsp_create_generic_scb (struct snd_cs46xx *chip, char * name, u32 * scb_data, u
/* update parent SCB */ /* update parent SCB */
if (scb->parent_scb_ptr) { if (scb->parent_scb_ptr) {
#if 0 #if 0
printk ("scb->parent_scb_ptr = %s\n",scb->parent_scb_ptr->scb_name); dev_dbg(chip->card->dev,
printk ("scb->parent_scb_ptr->next_scb_ptr = %s\n",scb->parent_scb_ptr->next_scb_ptr->scb_name); "scb->parent_scb_ptr = %s\n",
printk ("scb->parent_scb_ptr->sub_list_ptr = %s\n",scb->parent_scb_ptr->sub_list_ptr->scb_name); scb->parent_scb_ptr->scb_name);
dev_dbg(chip->card->dev,
"scb->parent_scb_ptr->next_scb_ptr = %s\n",
scb->parent_scb_ptr->next_scb_ptr->scb_name);
dev_dbg(chip->card->dev,
"scb->parent_scb_ptr->sub_list_ptr = %s\n",
scb->parent_scb_ptr->sub_list_ptr->scb_name);
#endif #endif
/* link to parent SCB */ /* link to parent SCB */
if (scb_child_type == SCB_ON_PARENT_NEXT_SCB) { if (scb_child_type == SCB_ON_PARENT_NEXT_SCB) {
...@@ -368,7 +377,8 @@ cs46xx_dsp_create_generic_scb (struct snd_cs46xx *chip, char * name, u32 * scb_d ...@@ -368,7 +377,8 @@ cs46xx_dsp_create_generic_scb (struct snd_cs46xx *chip, char * name, u32 * scb_d
SYMBOL_CODE); SYMBOL_CODE);
if (task_entry == NULL) { if (task_entry == NULL) {
snd_printk (KERN_ERR "dsp_spos: symbol %s not found\n",task_entry_name); dev_err(chip->card->dev,
"dsp_spos: symbol %s not found\n", task_entry_name);
return NULL; return NULL;
} }
...@@ -582,7 +592,8 @@ cs46xx_dsp_create_pcm_reader_scb(struct snd_cs46xx * chip, char * scb_name, ...@@ -582,7 +592,8 @@ cs46xx_dsp_create_pcm_reader_scb(struct snd_cs46xx * chip, char * scb_name,
SYMBOL_CODE); SYMBOL_CODE);
if (ins->null_algorithm == NULL) { if (ins->null_algorithm == NULL) {
snd_printk (KERN_ERR "dsp_spos: symbol NULLALGORITHM not found\n"); dev_err(chip->card->dev,
"dsp_spos: symbol NULLALGORITHM not found\n");
return NULL; return NULL;
} }
} }
...@@ -612,7 +623,8 @@ cs46xx_dsp_create_src_task_scb(struct snd_cs46xx * chip, char * scb_name, ...@@ -612,7 +623,8 @@ cs46xx_dsp_create_src_task_scb(struct snd_cs46xx * chip, char * scb_name,
unsigned int phiIncr; unsigned int phiIncr;
unsigned int correctionPerGOF, correctionPerSec; unsigned int correctionPerGOF, correctionPerSec;
snd_printdd( "dsp_spos: setting %s rate to %u\n",scb_name,rate); dev_dbg(chip->card->dev, "dsp_spos: setting %s rate to %u\n",
scb_name, rate);
/* /*
* Compute the values used to drive the actual sample rate conversion. * Compute the values used to drive the actual sample rate conversion.
...@@ -670,7 +682,8 @@ cs46xx_dsp_create_src_task_scb(struct snd_cs46xx * chip, char * scb_name, ...@@ -670,7 +682,8 @@ cs46xx_dsp_create_src_task_scb(struct snd_cs46xx * chip, char * scb_name,
SYMBOL_CODE); SYMBOL_CODE);
if (ins->s16_up == NULL) { if (ins->s16_up == NULL) {
snd_printk (KERN_ERR "dsp_spos: symbol S16_UPSRC not found\n"); dev_err(chip->card->dev,
"dsp_spos: symbol S16_UPSRC not found\n");
return NULL; return NULL;
} }
} }
...@@ -1265,7 +1278,7 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip, ...@@ -1265,7 +1278,7 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip,
the Sample Rate Converted (which could the Sample Rate Converted (which could
alter the raw data stream ...) */ alter the raw data stream ...) */
if (sample_rate == 48000) { if (sample_rate == 48000) {
snd_printdd ("IEC958 pass through\n"); dev_dbg(chip->card->dev, "IEC958 pass through\n");
/* Hack to bypass creating a new SRC */ /* Hack to bypass creating a new SRC */
pass_through = 1; pass_through = 1;
} }
...@@ -1299,13 +1312,14 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip, ...@@ -1299,13 +1312,14 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip,
} }
if (pcm_index == -1) { if (pcm_index == -1) {
snd_printk (KERN_ERR "dsp_spos: no free PCM channel\n"); dev_err(chip->card->dev, "dsp_spos: no free PCM channel\n");
return NULL; return NULL;
} }
if (src_scb == NULL) { if (src_scb == NULL) {
if (ins->nsrc_scb >= DSP_MAX_SRC_NR) { if (ins->nsrc_scb >= DSP_MAX_SRC_NR) {
snd_printk(KERN_ERR "dsp_spos: to many SRC instances\n!"); dev_err(chip->card->dev,
"dsp_spos: to many SRC instances\n!");
return NULL; return NULL;
} }
...@@ -1331,7 +1345,8 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip, ...@@ -1331,7 +1345,8 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip,
snprintf (scb_name,DSP_MAX_SCB_NAME,"SrcTask_SCB%d",src_index); snprintf (scb_name,DSP_MAX_SCB_NAME,"SrcTask_SCB%d",src_index);
snd_printdd( "dsp_spos: creating SRC \"%s\"\n",scb_name); dev_dbg(chip->card->dev,
"dsp_spos: creating SRC \"%s\"\n", scb_name);
src_scb = cs46xx_dsp_create_src_task_scb(chip,scb_name, src_scb = cs46xx_dsp_create_src_task_scb(chip,scb_name,
sample_rate, sample_rate,
src_output_buffer_addr[src_index], src_output_buffer_addr[src_index],
...@@ -1343,7 +1358,8 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip, ...@@ -1343,7 +1358,8 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip,
pass_through); pass_through);
if (!src_scb) { if (!src_scb) {
snd_printk (KERN_ERR "dsp_spos: failed to create SRCtaskSCB\n"); dev_err(chip->card->dev,
"dsp_spos: failed to create SRCtaskSCB\n");
return NULL; return NULL;
} }
...@@ -1355,8 +1371,8 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip, ...@@ -1355,8 +1371,8 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip,
snprintf (scb_name,DSP_MAX_SCB_NAME,"PCMReader_SCB%d",pcm_index); snprintf (scb_name,DSP_MAX_SCB_NAME,"PCMReader_SCB%d",pcm_index);
snd_printdd( "dsp_spos: creating PCM \"%s\" (%d)\n",scb_name, dev_dbg(chip->card->dev, "dsp_spos: creating PCM \"%s\" (%d)\n",
pcm_channel_id); scb_name, pcm_channel_id);
pcm_scb = cs46xx_dsp_create_pcm_reader_scb(chip,scb_name, pcm_scb = cs46xx_dsp_create_pcm_reader_scb(chip,scb_name,
pcm_reader_buffer_addr[pcm_index], pcm_reader_buffer_addr[pcm_index],
...@@ -1369,7 +1385,8 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip, ...@@ -1369,7 +1385,8 @@ cs46xx_dsp_create_pcm_channel (struct snd_cs46xx * chip,
); );
if (!pcm_scb) { if (!pcm_scb) {
snd_printk (KERN_ERR "dsp_spos: failed to create PCMreaderSCB\n"); dev_err(chip->card->dev,
"dsp_spos: failed to create PCMreaderSCB\n");
return NULL; return NULL;
} }
...@@ -1419,7 +1436,8 @@ int cs46xx_dsp_pcm_channel_set_period (struct snd_cs46xx * chip, ...@@ -1419,7 +1436,8 @@ int cs46xx_dsp_pcm_channel_set_period (struct snd_cs46xx * chip,
temp |= DMA_RQ_C1_SOURCE_MOD16; temp |= DMA_RQ_C1_SOURCE_MOD16;
break; break;
default: default:
snd_printdd ("period size (%d) not supported by HW\n", period_size); dev_dbg(chip->card->dev,
"period size (%d) not supported by HW\n", period_size);
return -EINVAL; return -EINVAL;
} }
...@@ -1457,7 +1475,8 @@ int cs46xx_dsp_pcm_ostream_set_period (struct snd_cs46xx * chip, ...@@ -1457,7 +1475,8 @@ int cs46xx_dsp_pcm_ostream_set_period (struct snd_cs46xx * chip,
temp |= DMA_RQ_C1_DEST_MOD16; temp |= DMA_RQ_C1_DEST_MOD16;
break; break;
default: default:
snd_printdd ("period size (%d) not supported by HW\n", period_size); dev_dbg(chip->card->dev,
"period size (%d) not supported by HW\n", period_size);
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment