ALSA: ac97: add AC97 STMicroelectronics' codecs

Add the STMicroelectronics ST7597 codec and an unknown codec
from the same manufacturer found on the Creative SB 128 card (CT4810).

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>

authored by Krzysztof Helt and committed by Jaroslav Kysela c68db717 af9a75dd

+12
+10
sound/pci/ac97/ac97_codec.c
··· 83 { 0x4e534300, 0xffffff00, "National Semiconductor", NULL, NULL }, 84 { 0x50534300, 0xffffff00, "Philips", NULL, NULL }, 85 { 0x53494c00, 0xffffff00, "Silicon Laboratory", NULL, NULL }, 86 { 0x54524100, 0xffffff00, "TriTech", NULL, NULL }, 87 { 0x54584e00, 0xffffff00, "Texas Instruments", NULL, NULL }, 88 { 0x56494100, 0xffffff00, "VIA Technologies", NULL, NULL }, ··· 162 { 0x4e534350, 0xffffffff, "LM4550", patch_lm4550, NULL }, // volume wrap fix 163 { 0x50534304, 0xffffffff, "UCB1400", patch_ucb1400, NULL }, 164 { 0x53494c20, 0xffffffe0, "Si3036,8", mpatch_si3036, mpatch_si3036, AC97_MODEM_PATCH }, 165 { 0x54524102, 0xffffffff, "TR28022", NULL, NULL }, 166 { 0x54524103, 0xffffffff, "TR28023", NULL, NULL }, 167 { 0x54524106, 0xffffffff, "TR28026", NULL, NULL }, ··· 215 { 216 /* filter some registers for buggy codecs */ 217 switch (ac97->id) { 218 case AC97_ID_AK4540: 219 case AC97_ID_AK4542: 220 if (reg <= 0x1c || reg == 0x20 || reg == 0x26 || reg >= 0x7c)
··· 83 { 0x4e534300, 0xffffff00, "National Semiconductor", NULL, NULL }, 84 { 0x50534300, 0xffffff00, "Philips", NULL, NULL }, 85 { 0x53494c00, 0xffffff00, "Silicon Laboratory", NULL, NULL }, 86 + { 0x53544d00, 0xffffff00, "STMicroelectronics", NULL, NULL }, 87 { 0x54524100, 0xffffff00, "TriTech", NULL, NULL }, 88 { 0x54584e00, 0xffffff00, "Texas Instruments", NULL, NULL }, 89 { 0x56494100, 0xffffff00, "VIA Technologies", NULL, NULL }, ··· 161 { 0x4e534350, 0xffffffff, "LM4550", patch_lm4550, NULL }, // volume wrap fix 162 { 0x50534304, 0xffffffff, "UCB1400", patch_ucb1400, NULL }, 163 { 0x53494c20, 0xffffffe0, "Si3036,8", mpatch_si3036, mpatch_si3036, AC97_MODEM_PATCH }, 164 + { 0x53544d02, 0xffffffff, "ST7597", NULL, NULL }, 165 { 0x54524102, 0xffffffff, "TR28022", NULL, NULL }, 166 { 0x54524103, 0xffffffff, "TR28023", NULL, NULL }, 167 { 0x54524106, 0xffffffff, "TR28026", NULL, NULL }, ··· 213 { 214 /* filter some registers for buggy codecs */ 215 switch (ac97->id) { 216 + case AC97_ID_ST_AC97_ID4: 217 + if (reg == 0x08) 218 + return 0; 219 + /* fall through */ 220 + case AC97_ID_ST7597: 221 + if (reg == 0x22 || reg == 0x7a) 222 + return 1; 223 + /* fall through */ 224 case AC97_ID_AK4540: 225 case AC97_ID_AK4542: 226 if (reg <= 0x1c || reg == 0x20 || reg == 0x26 || reg >= 0x7c)
+2
sound/pci/ac97/ac97_id.h
··· 62 #define AC97_ID_CM9761_78 0x434d4978 63 #define AC97_ID_CM9761_82 0x434d4982 64 #define AC97_ID_CM9761_83 0x434d4983
··· 62 #define AC97_ID_CM9761_78 0x434d4978 63 #define AC97_ID_CM9761_82 0x434d4982 64 #define AC97_ID_CM9761_83 0x434d4983 65 + #define AC97_ID_ST7597 0x53544d02 66 + #define AC97_ID_ST_AC97_ID4 0x53544d04