Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 120372
b: refs/heads/master
c: 86effd7
h: refs/heads/master
v: v3
  • Loading branch information
Takashi Iwai committed Dec 19, 2008
1 parent bea2a82 commit 9b5b3fd
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 24 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 44411e07c2ce1a755a756e10b592cd3ba02f99b3
refs/heads/master: 86effd7e12ca63cecfd218717473d606e138e5e1
41 changes: 18 additions & 23 deletions trunk/sound/pci/ca0106/ca0106_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1303,9 +1303,10 @@ static unsigned int i2c_adc_init[][2] = {
{ 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;
unsigned int def_bits;

outl(0, chip->port + INTE);

Expand All @@ -1323,30 +1324,21 @@ static void ca0106_init_chip(struct snd_ca0106 *chip)
* AN = 0 (Audio data)
* P = 0 (Consumer)
*/
chip->spdif_bits[0] =
def_bits =
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, 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 */
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]);
chip->spdif_bits[2] =
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, SPCS0, 0, chip->spdif_bits[0]);
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, PLAYBACK_MUTE, 0, 0x00fc0000);
Expand Down Expand Up @@ -1407,17 +1399,20 @@ static void ca0106_init_chip(struct snd_ca0106 *chip)
/* Select MIC, Line in, TAD in, AUX in */
snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x333300e4);
/* Default to CAPTURE_SOURCE to i2s in */
chip->capture_source = 3;
if (!resume)
chip->capture_source = 3;
} else if (chip->details->ac97 == 1) {
/* Default to AC97 in */
snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x444400e4);
/* Default to CAPTURE_SOURCE to AC97 in */
chip->capture_source = 4;
if (!resume)
chip->capture_source = 4;
} else {
/* Select MIC, Line in, TAD in, AUX in */
snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x333300e4);
/* Default to Set CAPTURE_SOURCE to i2s in */
chip->capture_source = 3;
if (!resume)
chip->capture_source = 3;
}

if (chip->details->gpio_type == 2) {
Expand Down Expand Up @@ -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",
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);
if (err < 0) {
Expand Down Expand Up @@ -1784,7 +1779,7 @@ static int snd_ca0106_resume(struct pci_dev *pci)

pci_set_master(pci);

ca0106_init_chip(chip);
ca0106_init_chip(chip, 1);

snd_ac97_resume(chip->ac97);
snd_ca0106_mixer_resume(chip);
Expand Down

0 comments on commit 9b5b3fd

Please sign in to comment.