diff options
Diffstat (limited to 'sound/pci/ac97')
-rw-r--r-- | sound/pci/ac97/ac97_codec.c | 6 | ||||
-rw-r--r-- | sound/pci/ac97/ac97_patch.c | 18 | ||||
-rw-r--r-- | sound/pci/ac97/ac97_patch.h | 1 |
3 files changed, 19 insertions, 6 deletions
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index 33dba10f03e8..600e053dfd35 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c | |||
@@ -157,6 +157,7 @@ static const ac97_codec_id_t snd_ac97_codec_ids[] = { | |||
157 | { 0x54524123, 0xffffffff, "TR28602", NULL, NULL }, // only guess --jk [TR28023 = eMicro EM28023 (new CT1297)] | 157 | { 0x54524123, 0xffffffff, "TR28602", NULL, NULL }, // only guess --jk [TR28023 = eMicro EM28023 (new CT1297)] |
158 | { 0x54584e20, 0xffffffff, "TLC320AD9xC", NULL, NULL }, | 158 | { 0x54584e20, 0xffffffff, "TLC320AD9xC", NULL, NULL }, |
159 | { 0x56494161, 0xffffffff, "VIA1612A", NULL, NULL }, // modified ICE1232 with S/PDIF | 159 | { 0x56494161, 0xffffffff, "VIA1612A", NULL, NULL }, // modified ICE1232 with S/PDIF |
160 | { 0x56494170, 0xffffffff, "VIA1617A", patch_vt1617a, NULL }, // modified VT1616 with S/PDIF | ||
160 | { 0x57454301, 0xffffffff, "W83971D", NULL, NULL }, | 161 | { 0x57454301, 0xffffffff, "W83971D", NULL, NULL }, |
161 | { 0x574d4c00, 0xffffffff, "WM9701A", NULL, NULL }, | 162 | { 0x574d4c00, 0xffffffff, "WM9701A", NULL, NULL }, |
162 | { 0x574d4C03, 0xffffffff, "WM9703,WM9707,WM9708,WM9717", patch_wolfson03, NULL}, | 163 | { 0x574d4C03, 0xffffffff, "WM9703,WM9707,WM9708,WM9717", patch_wolfson03, NULL}, |
@@ -2580,8 +2581,6 @@ int snd_ac97_tune_hardware(ac97_t *ac97, struct ac97_quirk *quirk, const char *o | |||
2580 | { | 2581 | { |
2581 | int result; | 2582 | int result; |
2582 | 2583 | ||
2583 | snd_assert(quirk, return -EINVAL); | ||
2584 | |||
2585 | /* quirk overriden? */ | 2584 | /* quirk overriden? */ |
2586 | if (override && strcmp(override, "-1") && strcmp(override, "default")) { | 2585 | if (override && strcmp(override, "-1") && strcmp(override, "default")) { |
2587 | result = apply_quirk_str(ac97, override); | 2586 | result = apply_quirk_str(ac97, override); |
@@ -2590,6 +2589,9 @@ int snd_ac97_tune_hardware(ac97_t *ac97, struct ac97_quirk *quirk, const char *o | |||
2590 | return result; | 2589 | return result; |
2591 | } | 2590 | } |
2592 | 2591 | ||
2592 | if (! quirk) | ||
2593 | return -EINVAL; | ||
2594 | |||
2593 | for (; quirk->subvendor; quirk++) { | 2595 | for (; quirk->subvendor; quirk++) { |
2594 | if (quirk->subvendor != ac97->subsystem_vendor) | 2596 | if (quirk->subvendor != ac97->subsystem_vendor) |
2595 | continue; | 2597 | continue; |
diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c index b0b31f4015aa..a0d515536177 100644 --- a/sound/pci/ac97/ac97_patch.c +++ b/sound/pci/ac97/ac97_patch.c | |||
@@ -375,7 +375,7 @@ AC97_DOUBLE("Front Playback Volume", AC97_WM97XX_FMIXER_VOL, 8, 0, 31, 1), | |||
375 | AC97_SINGLE("Front Playback Switch", AC97_WM97XX_FMIXER_VOL, 15, 1, 1), | 375 | AC97_SINGLE("Front Playback Switch", AC97_WM97XX_FMIXER_VOL, 15, 1, 1), |
376 | }; | 376 | }; |
377 | 377 | ||
378 | static int patch_wolfson_wm9703_specific(ac97_t * ac97) | 378 | int patch_wolfson_wm9703_specific(ac97_t * ac97) |
379 | { | 379 | { |
380 | /* This is known to work for the ViewSonic ViewPad 1000 | 380 | /* This is known to work for the ViewSonic ViewPad 1000 |
381 | * Randolph Bentson <bentson@holmsjoen.com> | 381 | * Randolph Bentson <bentson@holmsjoen.com> |
@@ -410,7 +410,7 @@ AC97_DOUBLE("Rear DAC Volume", AC97_WM9704_RPCM_VOL, 8, 0, 31, 1), | |||
410 | AC97_DOUBLE("Surround Volume", AC97_SURROUND_MASTER, 8, 0, 31, 1), | 410 | AC97_DOUBLE("Surround Volume", AC97_SURROUND_MASTER, 8, 0, 31, 1), |
411 | }; | 411 | }; |
412 | 412 | ||
413 | static int patch_wolfson_wm9704_specific(ac97_t * ac97) | 413 | int patch_wolfson_wm9704_specific(ac97_t * ac97) |
414 | { | 414 | { |
415 | int err, i; | 415 | int err, i; |
416 | for (i = 0; i < ARRAY_SIZE(wm9704_snd_ac97_controls); i++) { | 416 | for (i = 0; i < ARRAY_SIZE(wm9704_snd_ac97_controls); i++) { |
@@ -433,7 +433,7 @@ int patch_wolfson04(ac97_t * ac97) | |||
433 | return 0; | 433 | return 0; |
434 | } | 434 | } |
435 | 435 | ||
436 | static int patch_wolfson_wm9705_specific(ac97_t * ac97) | 436 | int patch_wolfson_wm9705_specific(ac97_t * ac97) |
437 | { | 437 | { |
438 | int err, i; | 438 | int err, i; |
439 | for (i = 0; i < ARRAY_SIZE(wm97xx_snd_ac97_controls); i++) { | 439 | for (i = 0; i < ARRAY_SIZE(wm97xx_snd_ac97_controls); i++) { |
@@ -558,7 +558,7 @@ AC97_SINGLE("Headphone ZC Switch", AC97_HEADPHONE, 7, 1, 0), | |||
558 | AC97_SINGLE("Mono ZC Switch", AC97_MASTER_MONO, 7, 1, 0), | 558 | AC97_SINGLE("Mono ZC Switch", AC97_MASTER_MONO, 7, 1, 0), |
559 | }; | 559 | }; |
560 | 560 | ||
561 | static int patch_wolfson_wm9711_specific(ac97_t * ac97) | 561 | int patch_wolfson_wm9711_specific(ac97_t * ac97) |
562 | { | 562 | { |
563 | int err, i; | 563 | int err, i; |
564 | 564 | ||
@@ -2666,6 +2666,16 @@ int patch_vt1616(ac97_t * ac97) | |||
2666 | } | 2666 | } |
2667 | 2667 | ||
2668 | /* | 2668 | /* |
2669 | * VT1617A codec | ||
2670 | */ | ||
2671 | int patch_vt1617a(ac97_t * ac97) | ||
2672 | { | ||
2673 | ac97->ext_id |= AC97_EI_SPDIF; /* force the detection of spdif */ | ||
2674 | ac97->rates[AC97_RATES_SPDIF] = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000; | ||
2675 | return 0; | ||
2676 | } | ||
2677 | |||
2678 | /* | ||
2669 | */ | 2679 | */ |
2670 | static void it2646_update_jacks(ac97_t *ac97) | 2680 | static void it2646_update_jacks(ac97_t *ac97) |
2671 | { | 2681 | { |
diff --git a/sound/pci/ac97/ac97_patch.h b/sound/pci/ac97/ac97_patch.h index 7b7377d0f2ae..ec1811320106 100644 --- a/sound/pci/ac97/ac97_patch.h +++ b/sound/pci/ac97/ac97_patch.h | |||
@@ -56,5 +56,6 @@ int patch_cm9739(ac97_t * ac97); | |||
56 | int patch_cm9761(ac97_t * ac97); | 56 | int patch_cm9761(ac97_t * ac97); |
57 | int patch_cm9780(ac97_t * ac97); | 57 | int patch_cm9780(ac97_t * ac97); |
58 | int patch_vt1616(ac97_t * ac97); | 58 | int patch_vt1616(ac97_t * ac97); |
59 | int patch_vt1617a(ac97_t * ac97); | ||
59 | int patch_it2646(ac97_t * ac97); | 60 | int patch_it2646(ac97_t * ac97); |
60 | int mpatch_si3036(ac97_t * ac97); | 61 | int mpatch_si3036(ac97_t * ac97); |