diff options
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/ac97/ac97_codec.c | 2 | ||||
-rw-r--r-- | sound/pci/ac97/ac97_patch.c | 31 | ||||
-rw-r--r-- | sound/pci/ac97/ac97_patch.h | 1 |
3 files changed, 33 insertions, 1 deletions
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index 124c1bc4cb92..38b6c65d40c3 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c | |||
@@ -150,7 +150,7 @@ static const struct ac97_codec_id snd_ac97_codec_ids[] = { | |||
150 | { 0x49544561, 0xffffffff, "IT2646E", patch_it2646, NULL }, | 150 | { 0x49544561, 0xffffffff, "IT2646E", patch_it2646, NULL }, |
151 | { 0x4e534300, 0xffffffff, "LM4540,43,45,46,48", NULL, NULL }, // only guess --jk | 151 | { 0x4e534300, 0xffffffff, "LM4540,43,45,46,48", NULL, NULL }, // only guess --jk |
152 | { 0x4e534331, 0xffffffff, "LM4549", NULL, NULL }, | 152 | { 0x4e534331, 0xffffffff, "LM4549", NULL, NULL }, |
153 | { 0x4e534350, 0xffffffff, "LM4550", NULL, NULL }, | 153 | { 0x4e534350, 0xffffffff, "LM4550", patch_lm4550, NULL }, // volume wrap fix |
154 | { 0x50534304, 0xffffffff, "UCB1400", NULL, NULL }, | 154 | { 0x50534304, 0xffffffff, "UCB1400", NULL, NULL }, |
155 | { 0x53494c20, 0xffffffe0, "Si3036,8", mpatch_si3036, mpatch_si3036, AC97_MODEM_PATCH }, | 155 | { 0x53494c20, 0xffffffe0, "Si3036,8", mpatch_si3036, mpatch_si3036, AC97_MODEM_PATCH }, |
156 | { 0x54524102, 0xffffffff, "TR28022", NULL, NULL }, | 156 | { 0x54524102, 0xffffffff, "TR28022", NULL, NULL }, |
diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c index 8bc79cbe3215..5c03b4b6f5c1 100644 --- a/sound/pci/ac97/ac97_patch.c +++ b/sound/pci/ac97/ac97_patch.c | |||
@@ -2825,3 +2825,34 @@ int mpatch_si3036(struct snd_ac97 * ac97) | |||
2825 | snd_ac97_write_cache(ac97, 0x68, 0); | 2825 | snd_ac97_write_cache(ac97, 0x68, 0); |
2826 | return 0; | 2826 | return 0; |
2827 | } | 2827 | } |
2828 | |||
2829 | /* | ||
2830 | * LM 4550 Codec | ||
2831 | * | ||
2832 | * We use a static resolution table since LM4550 codec cannot be | ||
2833 | * properly autoprobed to determine the resolution via | ||
2834 | * check_volume_resolution(). | ||
2835 | */ | ||
2836 | |||
2837 | static struct snd_ac97_res_table lm4550_restbl[] = { | ||
2838 | { AC97_MASTER, 0x1f1f }, | ||
2839 | { AC97_HEADPHONE, 0x1f1f }, | ||
2840 | { AC97_MASTER_MONO, 0x001f }, | ||
2841 | { AC97_PC_BEEP, 0x001f }, /* LSB is ignored */ | ||
2842 | { AC97_PHONE, 0x001f }, | ||
2843 | { AC97_PHONE, 0x001f }, | ||
2844 | { AC97_MIC, 0x001f }, | ||
2845 | { AC97_LINE, 0x1f1f }, | ||
2846 | { AC97_CD, 0x1f1f }, | ||
2847 | { AC97_VIDEO, 0x1f1f }, | ||
2848 | { AC97_AUX, 0x1f1f }, | ||
2849 | { AC97_PCM, 0x1f1f }, | ||
2850 | { AC97_REC_GAIN, 0x0f0f }, | ||
2851 | { } /* terminator */ | ||
2852 | }; | ||
2853 | |||
2854 | int patch_lm4550(struct snd_ac97 *ac97) | ||
2855 | { | ||
2856 | ac97->res_table = lm4550_restbl; | ||
2857 | return 0; | ||
2858 | } | ||
diff --git a/sound/pci/ac97/ac97_patch.h b/sound/pci/ac97/ac97_patch.h index 5060cb6f2ec3..adcaa04586cb 100644 --- a/sound/pci/ac97/ac97_patch.h +++ b/sound/pci/ac97/ac97_patch.h | |||
@@ -59,3 +59,4 @@ int patch_vt1616(struct snd_ac97 * ac97); | |||
59 | int patch_vt1617a(struct snd_ac97 * ac97); | 59 | int patch_vt1617a(struct snd_ac97 * ac97); |
60 | int patch_it2646(struct snd_ac97 * ac97); | 60 | int patch_it2646(struct snd_ac97 * ac97); |
61 | int mpatch_si3036(struct snd_ac97 * ac97); | 61 | int mpatch_si3036(struct snd_ac97 * ac97); |
62 | int patch_lm4550(struct snd_ac97 * ac97); | ||