ALSA: ca0106 - Don't override the values at resume
Don't override some values in ca0106_init_chip() at resume. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
44411e07c2
commit
86effd7e12
|
@ -1303,9 +1303,10 @@ static unsigned int i2c_adc_init[][2] = {
|
||||||
{ 0x15, ADC_MUX_LINEIN }, /* ADC Mixer control */
|
{ 0x15, ADC_MUX_LINEIN }, /* ADC Mixer control */
|
||||||
};
|
};
|
||||||
|
|
||||||
static void ca0106_init_chip(struct snd_ca0106 *chip)
|
static void ca0106_init_chip(struct snd_ca0106 *chip, int resume)
|
||||||
{
|
{
|
||||||
int ch;
|
int ch;
|
||||||
|
unsigned int def_bits;
|
||||||
|
|
||||||
outl(0, chip->port + INTE);
|
outl(0, chip->port + INTE);
|
||||||
|
|
||||||
|
@ -1323,30 +1324,21 @@ static void ca0106_init_chip(struct snd_ca0106 *chip)
|
||||||
* AN = 0 (Audio data)
|
* AN = 0 (Audio data)
|
||||||
* P = 0 (Consumer)
|
* P = 0 (Consumer)
|
||||||
*/
|
*/
|
||||||
chip->spdif_bits[0] =
|
def_bits =
|
||||||
SPCS_CLKACCY_1000PPM | SPCS_SAMPLERATE_48 |
|
SPCS_CLKACCY_1000PPM | SPCS_SAMPLERATE_48 |
|
||||||
SPCS_CHANNELNUM_LEFT | SPCS_SOURCENUM_UNSPEC |
|
SPCS_CHANNELNUM_LEFT | SPCS_SOURCENUM_UNSPEC |
|
||||||
SPCS_GENERATIONSTATUS | 0x00001200 |
|
SPCS_GENERATIONSTATUS | 0x00001200 |
|
||||||
0x00000000 | SPCS_EMPHASIS_NONE | SPCS_COPYRIGHT;
|
0x00000000 | SPCS_EMPHASIS_NONE | SPCS_COPYRIGHT;
|
||||||
snd_ca0106_ptr_write(chip, SPCS0, 0, chip->spdif_bits[0]);
|
if (!resume) {
|
||||||
|
chip->spdif_bits[0] = def_bits;
|
||||||
|
chip->spdif_bits[1] = def_bits;
|
||||||
|
chip->spdif_bits[2] = def_bits;
|
||||||
|
chip->spdif_bits[3] = def_bits;
|
||||||
|
}
|
||||||
/* Only SPCS1 has been tested */
|
/* Only SPCS1 has been tested */
|
||||||
chip->spdif_bits[1] =
|
|
||||||
SPCS_CLKACCY_1000PPM | SPCS_SAMPLERATE_48 |
|
|
||||||
SPCS_CHANNELNUM_LEFT | SPCS_SOURCENUM_UNSPEC |
|
|
||||||
SPCS_GENERATIONSTATUS | 0x00001200 |
|
|
||||||
0x00000000 | SPCS_EMPHASIS_NONE | SPCS_COPYRIGHT;
|
|
||||||
snd_ca0106_ptr_write(chip, SPCS1, 0, chip->spdif_bits[1]);
|
snd_ca0106_ptr_write(chip, SPCS1, 0, chip->spdif_bits[1]);
|
||||||
chip->spdif_bits[2] =
|
snd_ca0106_ptr_write(chip, SPCS0, 0, chip->spdif_bits[0]);
|
||||||
SPCS_CLKACCY_1000PPM | SPCS_SAMPLERATE_48 |
|
|
||||||
SPCS_CHANNELNUM_LEFT | SPCS_SOURCENUM_UNSPEC |
|
|
||||||
SPCS_GENERATIONSTATUS | 0x00001200 |
|
|
||||||
0x00000000 | SPCS_EMPHASIS_NONE | SPCS_COPYRIGHT;
|
|
||||||
snd_ca0106_ptr_write(chip, SPCS2, 0, chip->spdif_bits[2]);
|
snd_ca0106_ptr_write(chip, SPCS2, 0, chip->spdif_bits[2]);
|
||||||
chip->spdif_bits[3] =
|
|
||||||
SPCS_CLKACCY_1000PPM | SPCS_SAMPLERATE_48 |
|
|
||||||
SPCS_CHANNELNUM_LEFT | SPCS_SOURCENUM_UNSPEC |
|
|
||||||
SPCS_GENERATIONSTATUS | 0x00001200 |
|
|
||||||
0x00000000 | SPCS_EMPHASIS_NONE | SPCS_COPYRIGHT;
|
|
||||||
snd_ca0106_ptr_write(chip, SPCS3, 0, chip->spdif_bits[3]);
|
snd_ca0106_ptr_write(chip, SPCS3, 0, chip->spdif_bits[3]);
|
||||||
|
|
||||||
snd_ca0106_ptr_write(chip, PLAYBACK_MUTE, 0, 0x00fc0000);
|
snd_ca0106_ptr_write(chip, PLAYBACK_MUTE, 0, 0x00fc0000);
|
||||||
|
@ -1407,16 +1399,19 @@ static void ca0106_init_chip(struct snd_ca0106 *chip)
|
||||||
/* Select MIC, Line in, TAD in, AUX in */
|
/* Select MIC, Line in, TAD in, AUX in */
|
||||||
snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x333300e4);
|
snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x333300e4);
|
||||||
/* Default to CAPTURE_SOURCE to i2s in */
|
/* Default to CAPTURE_SOURCE to i2s in */
|
||||||
|
if (!resume)
|
||||||
chip->capture_source = 3;
|
chip->capture_source = 3;
|
||||||
} else if (chip->details->ac97 == 1) {
|
} else if (chip->details->ac97 == 1) {
|
||||||
/* Default to AC97 in */
|
/* Default to AC97 in */
|
||||||
snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x444400e4);
|
snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x444400e4);
|
||||||
/* Default to CAPTURE_SOURCE to AC97 in */
|
/* Default to CAPTURE_SOURCE to AC97 in */
|
||||||
|
if (!resume)
|
||||||
chip->capture_source = 4;
|
chip->capture_source = 4;
|
||||||
} else {
|
} else {
|
||||||
/* Select MIC, Line in, TAD in, AUX in */
|
/* Select MIC, Line in, TAD in, AUX in */
|
||||||
snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x333300e4);
|
snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x333300e4);
|
||||||
/* Default to Set CAPTURE_SOURCE to i2s in */
|
/* Default to Set CAPTURE_SOURCE to i2s in */
|
||||||
|
if (!resume)
|
||||||
chip->capture_source = 3;
|
chip->capture_source = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1583,7 +1578,7 @@ static int __devinit snd_ca0106_create(int dev, struct snd_card *card,
|
||||||
sprintf(card->longname, "%s at 0x%lx irq %i",
|
sprintf(card->longname, "%s at 0x%lx irq %i",
|
||||||
c->name, chip->port, chip->irq);
|
c->name, chip->port, chip->irq);
|
||||||
|
|
||||||
ca0106_init_chip(chip);
|
ca0106_init_chip(chip, 0);
|
||||||
|
|
||||||
err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
|
err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
@ -1784,7 +1779,7 @@ static int snd_ca0106_resume(struct pci_dev *pci)
|
||||||
|
|
||||||
pci_set_master(pci);
|
pci_set_master(pci);
|
||||||
|
|
||||||
ca0106_init_chip(chip);
|
ca0106_init_chip(chip, 1);
|
||||||
|
|
||||||
snd_ac97_resume(chip->ac97);
|
snd_ac97_resume(chip->ac97);
|
||||||
snd_ca0106_mixer_resume(chip);
|
snd_ca0106_mixer_resume(chip);
|
||||||
|
|
Loading…
Reference in New Issue