367 |
|
|
368 |
int patch_alc650(ac97_t * ac97) |
int patch_alc650(ac97_t * ac97) |
369 |
{ |
{ |
370 |
unsigned short val, nval; |
unsigned short val; |
371 |
int spdif = 0; |
int spdif = 0; |
372 |
|
|
373 |
val = snd_ac97_read(ac97, AC97_ALC650_MULTICH); |
/* FIXME: set the above 1 if we can detect the chip rev.E correctly. |
374 |
snd_ac97_write(ac97, AC97_ALC650_MULTICH, val ^ 0x80); |
* this is used for switching mic and center/lfe, which needs |
375 |
nval = snd_ac97_read(ac97, AC97_ALC650_MULTICH); |
* resetting GPIO0 level on the older revision. |
376 |
|
*/ |
377 |
ac97->spec.dev_flags = 0; |
ac97->spec.dev_flags = 0; |
|
if (val != nval) { |
|
|
ac97->spec.dev_flags = 1; /* rev.E or later */ |
|
|
snd_ac97_write(ac97, AC97_ALC650_MULTICH, val); /* push back */ |
|
|
} |
|
378 |
|
|
379 |
/* check spdif */ |
/* check spdif */ |
380 |
if (ac97->spec.dev_flags) { |
if (ac97->spec.dev_flags) { |