|
@@ -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,
|
|
|
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,
|
|
|
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,
|
|
|
* 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,
|
|
|
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)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if(status & SERBST_WBSY) {
|
|
if(status & SERBST_WBSY) {
|
|
|
- snd_printk(KERN_ERR "cs46xx: failure waiting for "
|
|
|
|
|
- "FIFO command to complete\n");
|
|
|
|
|
|
|
+ dev_err(chip->card->dev,
|
|
|
|
|
+ "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)
|
|
|
* 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)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
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
|
|
|
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,
|
|
|
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
|
|
|
|
|
|
|
|
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)
|
|
|
{
|
|
{
|
|
|
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)
|
|
|
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)
|
|
|
|
|
|
|
|
/* 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)
|
|
|
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)
|
|
|
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)
|
|
|
}
|
|
}
|
|
|
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)
|
|
|
|
|
|
|
|
/* 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)
|
|
|
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)
|
|
|
}
|
|
}
|
|
|
/* 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)
|
|
|
|
|
|
|
|
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)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
- snd_printk(KERN_ERR "create - never read codec ready from AC'97\n");
|
|
|
|
|
- snd_printk(KERN_ERR "it is not probably bug, try to use CS4236 driver\n");
|
|
|
|
|
|
|
+ dev_err(chip->card->dev,
|
|
|
|
|
+ "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)
|
|
|
* 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)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#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");
|
|
|
|
|
- snd_printk(KERN_ERR " Try reloading the ALSA driver, if you find something\n");
|
|
|
|
|
- snd_printk(KERN_ERR " broken or not working on your soundcard upon\n");
|
|
|
|
|
- snd_printk(KERN_ERR " this message please report to alsa-devel@alsa-project.org\n");
|
|
|
|
|
|
|
+ dev_err(chip->card->dev, "never read ISV3 & ISV4 from AC'97\n");
|
|
|
|
|
+ dev_err(chip->card->dev,
|
|
|
|
|
+ "Try reloading the ALSA driver, if you find something\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)
|
|
|
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)
|
|
|
/* 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)
|
|
|
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)
|
|
|
* 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)
|
|
|
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)
|
|
|
* 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)
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
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)
|
|
|
/* 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)
|
|
|
|
|
|
|
|
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)
|
|
|
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, "
|
|
|
|
|
- "disabling device\n");
|
|
|
|
|
|
|
+ dev_err(dev, "pci_enable_device failed, 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,
|
|
|
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,
|
|
|
|
|
|
|
|
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,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
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,
|
|
|
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,
|
|
|
|
|
|
|
|
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;
|
|
|
}
|
|
}
|