Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[ALSA] Removing obsolete AC97_SHARED_TYPES

This patch cleans last ac97 audio/modem codec interception in
initialization procedures (ac97_mixer_new()) and removes obsolete
SHARED_TYPE 'locking' which prevents from AMC codecs to function
correctly.

Signed-off-by: Sasha Khapyorsky <sashak@smlink.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

Sasha Khapyorsky and committed by
Jaroslav Kysela
2ba71978 6632d198

+3 -52
-10
include/sound/ac97_codec.h
··· 387 387 #define AC97_RATES_MIC_ADC 4 388 388 #define AC97_RATES_SPDIF 5 389 389 390 - /* shared controllers */ 391 - enum { 392 - AC97_SHARED_TYPE_NONE, 393 - AC97_SHARED_TYPE_ICH, 394 - AC97_SHARED_TYPE_ATIIXP, 395 - AC97_SHARED_TYPE_VIA, 396 - AC97_SHARED_TYPES 397 - }; 398 - 399 390 /* 400 391 * 401 392 */ ··· 459 468 unsigned short used_slots[2][4]; /* actually used PCM slots */ 460 469 unsigned short pcms_count; /* count of PCMs */ 461 470 struct ac97_pcm *pcms; 462 - unsigned int shared_type; /* type of shared controller betwen audio and modem */ 463 471 ac97_t *codec[4]; 464 472 snd_info_entry_t *proc; 465 473 };
+2 -36
sound/pci/ac97/ac97_codec.c
··· 220 220 /* 31 */ "Reserved 31" 221 221 }; 222 222 223 - /* 224 - * Shared AC97 controllers (ICH, ATIIXP...) 225 - */ 226 - static DECLARE_MUTEX(shared_codec_mutex); 227 - static ac97_t *shared_codec[AC97_SHARED_TYPES][4]; 228 - 229 223 230 224 /* 231 225 * I/O routines ··· 990 996 { 991 997 if (ac97) { 992 998 snd_ac97_proc_done(ac97); 993 - if (ac97->bus) { 999 + if (ac97->bus) 994 1000 ac97->bus->codec[ac97->num] = NULL; 995 - if (ac97->bus->shared_type) { 996 - down(&shared_codec_mutex); 997 - shared_codec[ac97->bus->shared_type-1][ac97->num] = NULL; 998 - up(&shared_codec_mutex); 999 - } 1000 - } 1001 1001 if (ac97->private_free) 1002 1002 ac97->private_free(ac97); 1003 1003 kfree(ac97); ··· 1877 1889 snd_assert(bus != NULL && template != NULL, return -EINVAL); 1878 1890 snd_assert(template->num < 4 && bus->codec[template->num] == NULL, return -EINVAL); 1879 1891 1880 - snd_assert(bus->shared_type <= AC97_SHARED_TYPES, return -EINVAL); 1881 - if (bus->shared_type) { 1882 - /* already shared? */ 1883 - down(&shared_codec_mutex); 1884 - ac97 = shared_codec[bus->shared_type-1][template->num]; 1885 - if (ac97) { 1886 - if ((ac97_is_audio(ac97) && (template->scaps & AC97_SCAP_SKIP_AUDIO)) || 1887 - (ac97_is_modem(ac97) && (template->scaps & AC97_SCAP_SKIP_MODEM))) { 1888 - up(&shared_codec_mutex); 1889 - return -EACCES; /* skip this */ 1890 - } 1891 - } 1892 - up(&shared_codec_mutex); 1893 - } 1894 - 1895 1892 card = bus->card; 1896 1893 ac97 = kzalloc(sizeof(*ac97), GFP_KERNEL); 1897 1894 if (ac97 == NULL) ··· 2126 2153 } 2127 2154 } 2128 2155 /* make sure the proper powerdown bits are cleared */ 2129 - if (ac97->scaps) { 2156 + if (ac97->scaps && ac97_is_audio(ac97)) { 2130 2157 reg = snd_ac97_read(ac97, AC97_EXTENDED_STATUS); 2131 2158 if (ac97->scaps & AC97_SCAP_SURROUND_DAC) 2132 2159 reg &= ~AC97_EA_PRJ; ··· 2140 2167 return err; 2141 2168 } 2142 2169 *rac97 = ac97; 2143 - 2144 - if (bus->shared_type) { 2145 - down(&shared_codec_mutex); 2146 - shared_codec[bus->shared_type-1][ac97->num] = ac97; 2147 - up(&shared_codec_mutex); 2148 - } 2149 - 2150 2170 return 0; 2151 2171 } 2152 2172
-1
sound/pci/atiixp.c
··· 1372 1372 if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &pbus)) < 0) 1373 1373 return err; 1374 1374 pbus->clock = clock; 1375 - pbus->shared_type = AC97_SHARED_TYPE_ATIIXP; /* shared with modem driver */ 1376 1375 chip->ac97_bus = pbus; 1377 1376 1378 1377 codec_count = 0;
-1
sound/pci/atiixp_modem.c
··· 1068 1068 if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &pbus)) < 0) 1069 1069 return err; 1070 1070 pbus->clock = clock; 1071 - pbus->shared_type = AC97_SHARED_TYPE_ATIIXP; /* shared with audio driver */ 1072 1071 chip->ac97_bus = pbus; 1073 1072 1074 1073 codec_count = 0;
-1
sound/pci/intel8x0.c
··· 2022 2022 if ((err = snd_ac97_bus(chip->card, 0, ops, chip, &pbus)) < 0) 2023 2023 goto __err; 2024 2024 pbus->private_free = snd_intel8x0_mixer_free_ac97_bus; 2025 - pbus->shared_type = AC97_SHARED_TYPE_ICH; /* shared with modem driver */ 2026 2025 if (ac97_clock >= 8000 && ac97_clock <= 48000) 2027 2026 pbus->clock = ac97_clock; 2028 2027 /* FIXME: my test board doesn't work well with VRA... */
-1
sound/pci/intel8x0m.c
··· 855 855 if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &pbus)) < 0) 856 856 goto __err; 857 857 pbus->private_free = snd_intel8x0_mixer_free_ac97_bus; 858 - pbus->shared_type = AC97_SHARED_TYPE_ICH; /* shared with audio driver */ 859 858 if (ac97_clock >= 8000 && ac97_clock <= 48000) 860 859 pbus->clock = ac97_clock; 861 860 chip->ac97_bus = pbus;
+1 -1
sound/pci/via82xx.c
··· 1616 1616 return err; 1617 1617 chip->ac97_bus->private_free = snd_via82xx_mixer_free_ac97_bus; 1618 1618 chip->ac97_bus->clock = chip->ac97_clock; 1619 - chip->ac97_bus->shared_type = AC97_SHARED_TYPE_VIA; 1620 1619 1621 1620 memset(&ac97, 0, sizeof(ac97)); 1622 1621 ac97.private_data = chip; 1623 1622 ac97.private_free = snd_via82xx_mixer_free_ac97; 1624 1623 ac97.pci = chip->pci; 1624 + ac97.scaps = AC97_SCAP_SKIP_MODEM; 1625 1625 if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, &chip->ac97)) < 0) 1626 1626 return err; 1627 1627
-1
sound/pci/via82xx_modem.c
··· 879 879 return err; 880 880 chip->ac97_bus->private_free = snd_via82xx_mixer_free_ac97_bus; 881 881 chip->ac97_bus->clock = chip->ac97_clock; 882 - chip->ac97_bus->shared_type = AC97_SHARED_TYPE_VIA; 883 882 884 883 memset(&ac97, 0, sizeof(ac97)); 885 884 ac97.private_data = chip;