Merge master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa

+115 -53
+2
include/sound/ac97_codec.h
··· 527 struct device dev; 528 }; 529 530 /* conditions */ 531 static inline int ac97_is_audio(ac97_t * ac97) 532 {
··· 527 struct device dev; 528 }; 529 530 + #define to_ac97_t(d) container_of(d, struct _snd_ac97, dev) 531 + 532 /* conditions */ 533 static inline int ac97_is_audio(ac97_t * ac97) 534 {
+1 -1
include/sound/emu10k1.h
··· 1059 unsigned char spk71; /* Has 7.1 speakers */ 1060 unsigned char sblive51; /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */ 1061 unsigned char spdif_bug; /* Has Spdif phasing bug */ 1062 - unsigned char ac97_chip; /* Has an AC97 chip */ 1063 unsigned char ecard; /* APS EEPROM */ 1064 const char *driver; 1065 const char *name;
··· 1059 unsigned char spk71; /* Has 7.1 speakers */ 1060 unsigned char sblive51; /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */ 1061 unsigned char spdif_bug; /* Has Spdif phasing bug */ 1062 + unsigned char ac97_chip; /* Has an AC97 chip: 1 = mandatory, 2 = optional */ 1063 unsigned char ecard; /* APS EEPROM */ 1064 const char *driver; 1065 const char *name;
+1 -1
sound/arm/pxa2xx-ac97.c
··· 245 246 #ifdef CONFIG_PM 247 248 - static int pxa2xx_ac97_do_suspend(snd_card_t *card, unsigned int state) 249 { 250 if (card->power_state != SNDRV_CTL_POWER_D3cold) { 251 pxa2xx_audio_ops_t *platform_ops = card->dev->platform_data;
··· 245 246 #ifdef CONFIG_PM 247 248 + static int pxa2xx_ac97_do_suspend(snd_card_t *card, pm_message_t state) 249 { 250 if (card->power_state != SNDRV_CTL_POWER_D3cold) { 251 pxa2xx_audio_ops_t *platform_ops = card->dev->platform_data;
+2
sound/isa/opl3sa2.c
··· 914 #endif 915 #ifdef CONFIG_PNP 916 pnp_unregister_card_driver(&opl3sa2_pnpc_driver); 917 #endif 918 return -ENODEV; 919 } ··· 928 #ifdef CONFIG_PNP 929 /* PnP cards first */ 930 pnp_unregister_card_driver(&opl3sa2_pnpc_driver); 931 #endif 932 for (idx = 0; idx < SNDRV_CARDS; idx++) 933 snd_card_free(snd_opl3sa2_legacy[idx]);
··· 914 #endif 915 #ifdef CONFIG_PNP 916 pnp_unregister_card_driver(&opl3sa2_pnpc_driver); 917 + pnp_unregister_driver(&opl3sa2_pnp_driver); 918 #endif 919 return -ENODEV; 920 } ··· 927 #ifdef CONFIG_PNP 928 /* PnP cards first */ 929 pnp_unregister_card_driver(&opl3sa2_pnpc_driver); 930 + pnp_unregister_driver(&opl3sa2_pnp_driver); 931 #endif 932 for (idx = 0; idx < SNDRV_CARDS; idx++) 933 snd_card_free(snd_opl3sa2_legacy[idx]);
+7 -16
sound/pci/ac97/ac97_bus.c
··· 17 #include <linux/string.h> 18 19 /* 20 - * Codec families have names seperated by commas, so we search for an 21 - * individual codec name within the family string. 22 */ 23 static int ac97_bus_match(struct device *dev, struct device_driver *drv) 24 { 25 - return (strstr(dev->bus_id, drv->name) != NULL); 26 } 27 28 static int ac97_bus_suspend(struct device *dev, pm_message_t state) 29 { 30 int ret = 0; 31 32 - if (dev->driver && dev->driver->suspend) { 33 - ret = dev->driver->suspend(dev, state, SUSPEND_DISABLE); 34 - if (ret == 0) 35 - ret = dev->driver->suspend(dev, state, SUSPEND_SAVE_STATE); 36 - if (ret == 0) 37 - ret = dev->driver->suspend(dev, state, SUSPEND_POWER_DOWN); 38 - } 39 return ret; 40 } 41 ··· 39 { 40 int ret = 0; 41 42 - if (dev->driver && dev->driver->resume) { 43 ret = dev->driver->resume(dev, RESUME_POWER_ON); 44 - if (ret == 0) 45 - ret = dev->driver->resume(dev, RESUME_RESTORE_STATE); 46 - if (ret == 0) 47 - ret = dev->driver->resume(dev, RESUME_ENABLE); 48 - } 49 return ret; 50 } 51
··· 17 #include <linux/string.h> 18 19 /* 20 + * Let drivers decide whether they want to support given codec from their 21 + * probe method. Drivers have direct access to the ac97_t structure and may 22 + * decide based on the id field amongst other things. 23 */ 24 static int ac97_bus_match(struct device *dev, struct device_driver *drv) 25 { 26 + return 1; 27 } 28 29 static int ac97_bus_suspend(struct device *dev, pm_message_t state) 30 { 31 int ret = 0; 32 33 + if (dev->driver && dev->driver->suspend) 34 + ret = dev->driver->suspend(dev, state, SUSPEND_POWER_DOWN); 35 return ret; 36 } 37 ··· 43 { 44 int ret = 0; 45 46 + if (dev->driver && dev->driver->resume) 47 ret = dev->driver->resume(dev, RESUME_POWER_ON); 48 return ret; 49 } 50
+1 -2
sound/pci/ac97/ac97_codec.c
··· 1557 1558 /* build modem switches */ 1559 for (idx = 0; idx < ARRAY_SIZE(snd_ac97_controls_modem_switches); idx++) 1560 - if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_modem_switches[idx], ac97))) < 0) 1561 return err; 1562 1563 /* build chip specific controls */ ··· 1828 1829 ac97->dev.bus = &ac97_bus_type; 1830 ac97->dev.parent = ac97->bus->card->dev; 1831 - ac97->dev.platform_data = ac97; 1832 ac97->dev.release = ac97_device_release; 1833 snprintf(ac97->dev.bus_id, BUS_ID_SIZE, "card%d-%d", ac97->bus->card->number, ac97->num); 1834 if ((err = device_register(&ac97->dev)) < 0) {
··· 1557 1558 /* build modem switches */ 1559 for (idx = 0; idx < ARRAY_SIZE(snd_ac97_controls_modem_switches); idx++) 1560 + if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_ac97_controls_modem_switches[idx], ac97))) < 0) 1561 return err; 1562 1563 /* build chip specific controls */ ··· 1828 1829 ac97->dev.bus = &ac97_bus_type; 1830 ac97->dev.parent = ac97->bus->card->dev; 1831 ac97->dev.release = ac97_device_release; 1832 snprintf(ac97->dev.bus_id, BUS_ID_SIZE, "card%d-%d", ac97->bus->card->number, ac97->num); 1833 if ((err = device_register(&ac97->dev)) < 0) {
+5 -1
sound/pci/ac97/ac97_patch.c
··· 2752 2753 static int patch_si3036_specific(ac97_t * ac97) 2754 { 2755 - return patch_build_controls(ac97, snd_ac97_controls_si3036, ARRAY_SIZE(snd_ac97_controls_si3036)); 2756 } 2757 2758 static struct snd_ac97_build_ops patch_si3036_ops = {
··· 2752 2753 static int patch_si3036_specific(ac97_t * ac97) 2754 { 2755 + int idx, err; 2756 + for (idx = 0; idx < ARRAY_SIZE(snd_ac97_controls_si3036); idx++) 2757 + if ((err = snd_ctl_add(ac97->bus->card, snd_ctl_new1(&snd_ac97_controls_si3036[idx], ac97))) < 0) 2758 + return err; 2759 + return 0; 2760 } 2761 2762 static struct snd_ac97_build_ops patch_si3036_ops = {
+4 -2
sound/pci/ali5451/ali5451.c
··· 1993 if ((err = snd_ac97_mixer(codec->ac97_bus, &ac97, &codec->ac97[i])) < 0) { 1994 snd_printk("ali mixer %d creating error.\n", i); 1995 if(i == 0) 1996 - return err; 1997 - } 1998 } 1999 2000 if (codec->spdif_support) {
··· 1993 if ((err = snd_ac97_mixer(codec->ac97_bus, &ac97, &codec->ac97[i])) < 0) { 1994 snd_printk("ali mixer %d creating error.\n", i); 1995 if(i == 0) 1996 + return err; 1997 + codec->num_of_codecs = 1; 1998 + break; 1999 + } 2000 } 2001 2002 if (codec->spdif_support) {
+4 -1
sound/pci/emu10k1/emu10k1_main.c
··· 756 .sblive51 = 1} , 757 /* Tested by alsa bugtrack user "hus" bug #1297 12th Aug 2005 */ 758 {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80611102, 759 - .driver = "EMU10K1", .name = "SBLive! Platinum 5.1 [SB0060]", 760 .id = "Live", 761 .emu10k1_chip = 1, 762 .sblive51 = 1} , 763 {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80511102, 764 .driver = "EMU10K1", .name = "SBLive! Value [CT4850]",
··· 756 .sblive51 = 1} , 757 /* Tested by alsa bugtrack user "hus" bug #1297 12th Aug 2005 */ 758 {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80611102, 759 + .driver = "EMU10K1", .name = "SBLive 5.1 [SB0060]", 760 .id = "Live", 761 .emu10k1_chip = 1, 762 + .ac97_chip = 2, /* ac97 is optional; both SBLive 5.1 and platinum 763 + * share the same IDs! 764 + */ 765 .sblive51 = 1} , 766 {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80511102, 767 .driver = "EMU10K1", .name = "SBLive! Value [CT4850]",
+9 -2
sound/pci/emu10k1/emumixer.c
··· 810 ac97.private_data = emu; 811 ac97.private_free = snd_emu10k1_mixer_free_ac97; 812 ac97.scaps = AC97_SCAP_NO_SPDIF; 813 - if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) 814 - return err; 815 if (emu->audigy) { 816 /* set master volume to 0 dB */ 817 snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000); ··· 842 for (; *c; c++) 843 remove_ctl(card, *c); 844 } else { 845 if (emu->card_capabilities->ecard) 846 strcpy(emu->card->mixername, "EMU APS"); 847 else if (emu->audigy)
··· 810 ac97.private_data = emu; 811 ac97.private_free = snd_emu10k1_mixer_free_ac97; 812 ac97.scaps = AC97_SCAP_NO_SPDIF; 813 + if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) { 814 + if (emu->card_capabilities->ac97_chip == 1) 815 + return err; 816 + snd_printd(KERN_INFO "emu10k1: AC97 is optional on this board\n"); 817 + snd_printd(KERN_INFO" Proceeding without ac97 mixers...\n"); 818 + snd_device_free(emu->card, pbus); 819 + goto no_ac97; /* FIXME: get rid of ugly gotos.. */ 820 + } 821 if (emu->audigy) { 822 /* set master volume to 0 dB */ 823 snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000); ··· 836 for (; *c; c++) 837 remove_ctl(card, *c); 838 } else { 839 + no_ac97: 840 if (emu->card_capabilities->ecard) 841 strcpy(emu->card->mixername, "EMU APS"); 842 else if (emu->audigy)
+2 -4
sound/pci/hda/hda_generic.c
··· 881 struct hda_gspec *spec; 882 int err; 883 884 - if(!codec->afg) { 885 - snd_printdd("hda_generic: no generic modem yet\n"); 886 - return -ENODEV; 887 - } 888 889 spec = kzalloc(sizeof(*spec), GFP_KERNEL); 890 if (spec == NULL) {
··· 881 struct hda_gspec *spec; 882 int err; 883 884 + if(!codec->afg) 885 + return 0; 886 887 spec = kzalloc(sizeof(*spec), GFP_KERNEL); 888 if (spec == NULL) {
+5
sound/pci/hda/hda_intel.c
··· 1137 pos = azx_sd_readl(azx_dev, SD_LPIB); 1138 if (chip->position_fix == POS_FIX_FIFO) 1139 pos += azx_dev->fifo_size; 1140 else if (chip->position_fix == POS_FIX_AUTO && azx_dev->period_updating) { 1141 /* check the validity of DMA position */ 1142 unsigned int diff = 0; ··· 1158 } 1159 azx_dev->period_updating = 0; 1160 } 1161 } 1162 if (pos >= azx_dev->bufsize) 1163 pos = 0;
··· 1137 pos = azx_sd_readl(azx_dev, SD_LPIB); 1138 if (chip->position_fix == POS_FIX_FIFO) 1139 pos += azx_dev->fifo_size; 1140 + #if 0 /* disabled temprarily, auto-correction doesn't work well... */ 1141 else if (chip->position_fix == POS_FIX_AUTO && azx_dev->period_updating) { 1142 /* check the validity of DMA position */ 1143 unsigned int diff = 0; ··· 1157 } 1158 azx_dev->period_updating = 0; 1159 } 1160 + #else 1161 + else if (chip->position_fix == POS_FIX_AUTO) 1162 + pos += azx_dev->fifo_size; 1163 + #endif 1164 } 1165 if (pos >= azx_dev->bufsize) 1166 pos = 0;
+5 -17
sound/pci/hda/patch_realtek.c
··· 1385 HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), 1386 ALC_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), 1387 ALC_BIND_MUTE("Surround Playback Switch", 0x0d, 2, HDA_INPUT), 1388 - ALC_BIND_MUTE("CLFE Playback Volume", 0x0e, 2, HDA_INPUT), 1389 - ALC_BIND_MUTE("Side Playback Volume", 0x0f, 2, HDA_INPUT), 1390 PIN_CTL_TEST("Front Pin Mode", 0x14), 1391 PIN_CTL_TEST("Surround Pin Mode", 0x15), 1392 PIN_CTL_TEST("CLFE Pin Mode", 0x16), ··· 1409 HDA_CODEC_MUTE("In-4 Playback Switch", 0x0b, 0x3, HDA_INPUT), 1410 HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x4, HDA_INPUT), 1411 HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x4, HDA_INPUT), 1412 - HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), 1413 - HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), 1414 - HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x09, 0x0, HDA_INPUT), 1415 - HDA_CODEC_MUTE_IDX("Capture Switch", 1, 0x09, 0x0, HDA_INPUT), 1416 - { 1417 - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1418 - .name = "Input Source", 1419 - .count = 2, 1420 - .info = alc_mux_enum_info, 1421 - .get = alc_mux_enum_get, 1422 - .put = alc_mux_enum_put, 1423 - }, 1424 { 1425 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1426 .name = "Channel Mode", ··· 2231 HDA_CODEC_VOLUME("Headphone Playback Volume", 0x09, 0x0, HDA_OUTPUT), 2232 ALC_BIND_MUTE("Headphone Playback Switch", 0x09, 2, HDA_INPUT), 2233 HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), 2234 - ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_OUTPUT), 2235 HDA_CODEC_VOLUME("Capture Volume", 0x04, 0x0, HDA_INPUT), 2236 HDA_CODEC_MUTE("Capture Switch", 0x04, 0x0, HDA_INPUT), 2237 { ··· 2258 HDA_CODEC_VOLUME("Headphone Playback Volume", 0x09, 0x0, HDA_OUTPUT), 2259 ALC_BIND_MUTE("Headphone Playback Switch", 0x09, 2, HDA_INPUT), 2260 HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), 2261 - ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_OUTPUT), 2262 HDA_CODEC_VOLUME("Capture Volume", 0x05, 0x0, HDA_INPUT), 2263 HDA_CODEC_MUTE("Capture Switch", 0x05, 0x0, HDA_INPUT), 2264 { ··· 2489 HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0e, 1, 0x0, HDA_OUTPUT), 2490 HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), 2491 ALC_BIND_MUTE_MONO("Center Playback Switch", 0x0e, 1, 2, HDA_INPUT), 2492 - ALC_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_OUTPUT), 2493 HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), 2494 ALC_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT), 2495 HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
··· 1385 HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), 1386 ALC_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), 1387 ALC_BIND_MUTE("Surround Playback Switch", 0x0d, 2, HDA_INPUT), 1388 + ALC_BIND_MUTE("CLFE Playback Switch", 0x0e, 2, HDA_INPUT), 1389 + ALC_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT), 1390 PIN_CTL_TEST("Front Pin Mode", 0x14), 1391 PIN_CTL_TEST("Surround Pin Mode", 0x15), 1392 PIN_CTL_TEST("CLFE Pin Mode", 0x16), ··· 1409 HDA_CODEC_MUTE("In-4 Playback Switch", 0x0b, 0x3, HDA_INPUT), 1410 HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x4, HDA_INPUT), 1411 HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x4, HDA_INPUT), 1412 { 1413 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1414 .name = "Channel Mode", ··· 2243 HDA_CODEC_VOLUME("Headphone Playback Volume", 0x09, 0x0, HDA_OUTPUT), 2244 ALC_BIND_MUTE("Headphone Playback Switch", 0x09, 2, HDA_INPUT), 2245 HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), 2246 + ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_INPUT), 2247 HDA_CODEC_VOLUME("Capture Volume", 0x04, 0x0, HDA_INPUT), 2248 HDA_CODEC_MUTE("Capture Switch", 0x04, 0x0, HDA_INPUT), 2249 { ··· 2270 HDA_CODEC_VOLUME("Headphone Playback Volume", 0x09, 0x0, HDA_OUTPUT), 2271 ALC_BIND_MUTE("Headphone Playback Switch", 0x09, 2, HDA_INPUT), 2272 HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), 2273 + ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_INPUT), 2274 HDA_CODEC_VOLUME("Capture Volume", 0x05, 0x0, HDA_INPUT), 2275 HDA_CODEC_MUTE("Capture Switch", 0x05, 0x0, HDA_INPUT), 2276 { ··· 2501 HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0e, 1, 0x0, HDA_OUTPUT), 2502 HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), 2503 ALC_BIND_MUTE_MONO("Center Playback Switch", 0x0e, 1, 2, HDA_INPUT), 2504 + ALC_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_INPUT), 2505 HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), 2506 ALC_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT), 2507 HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
+1 -1
sound/pci/korg1212/korg1212.c
··· 442 "Setup for play", 443 "Playing", 444 "Monitor mode on", 445 - "Calibrating" 446 "Invalid" 447 }; 448
··· 442 "Setup for play", 443 "Playing", 444 "Monitor mode on", 445 + "Calibrating", 446 "Invalid" 447 }; 448
+2
sound/pci/via82xx.c
··· 2147 { .subvendor = 0x1019, .subdevice = 0x0996, .action = VIA_DXS_48K }, 2148 { .subvendor = 0x1019, .subdevice = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */ 2149 { .subvendor = 0x1019, .subdevice = 0x0a85, .action = VIA_DXS_NO_VRA }, /* ECS L7VMM2 */ 2150 { .subvendor = 0x1025, .subdevice = 0x0033, .action = VIA_DXS_NO_VRA }, /* Acer Inspire 1353LM */ 2151 { .subvendor = 0x1025, .subdevice = 0x0046, .action = VIA_DXS_SRC }, /* Acer Aspire 1524 WLMi */ 2152 { .subvendor = 0x1043, .subdevice = 0x8095, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8X (FIXME: possibly VIA_DXS_ENABLE?)*/ 2153 { .subvendor = 0x1043, .subdevice = 0x80a1, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8-X */ 2154 { .subvendor = 0x1043, .subdevice = 0x80b0, .action = VIA_DXS_NO_VRA }, /* ASUS A7V600 & K8V*/ 2155 { .subvendor = 0x1043, .subdevice = 0x812a, .action = VIA_DXS_SRC }, /* ASUS A8V Deluxe */ 2156 { .subvendor = 0x1071, .subdevice = 0x8375, .action = VIA_DXS_NO_VRA }, /* Vobis/Yakumo/Mitac notebook */ 2157 { .subvendor = 0x1071, .subdevice = 0x8399, .action = VIA_DXS_NO_VRA }, /* Umax AB 595T (VIA K8N800A - VT8237) */
··· 2147 { .subvendor = 0x1019, .subdevice = 0x0996, .action = VIA_DXS_48K }, 2148 { .subvendor = 0x1019, .subdevice = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */ 2149 { .subvendor = 0x1019, .subdevice = 0x0a85, .action = VIA_DXS_NO_VRA }, /* ECS L7VMM2 */ 2150 + { .subvendor = 0x1019, .subdevice = 0xa101, .action = VIA_DXS_SRC }, 2151 { .subvendor = 0x1025, .subdevice = 0x0033, .action = VIA_DXS_NO_VRA }, /* Acer Inspire 1353LM */ 2152 { .subvendor = 0x1025, .subdevice = 0x0046, .action = VIA_DXS_SRC }, /* Acer Aspire 1524 WLMi */ 2153 { .subvendor = 0x1043, .subdevice = 0x8095, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8X (FIXME: possibly VIA_DXS_ENABLE?)*/ 2154 { .subvendor = 0x1043, .subdevice = 0x80a1, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8-X */ 2155 { .subvendor = 0x1043, .subdevice = 0x80b0, .action = VIA_DXS_NO_VRA }, /* ASUS A7V600 & K8V*/ 2156 + { .subvendor = 0x1043, .subdevice = 0x810d, .action = VIA_DXS_SRC }, /* ASUS */ 2157 { .subvendor = 0x1043, .subdevice = 0x812a, .action = VIA_DXS_SRC }, /* ASUS A8V Deluxe */ 2158 { .subvendor = 0x1071, .subdevice = 0x8375, .action = VIA_DXS_NO_VRA }, /* Vobis/Yakumo/Mitac notebook */ 2159 { .subvendor = 0x1071, .subdevice = 0x8399, .action = VIA_DXS_NO_VRA }, /* Umax AB 595T (VIA K8N800A - VT8237) */
+1
sound/ppc/pmac.c
··· 988 case 0x33: 989 case 0x29: 990 case 0x24: 991 case 0x5c: 992 chip->num_freqs = ARRAY_SIZE(tumbler_freqs); 993 chip->model = PMAC_SNAPPER;
··· 988 case 0x33: 989 case 0x29: 990 case 0x24: 991 + case 0x50: 992 case 0x5c: 993 chip->num_freqs = ARRAY_SIZE(tumbler_freqs); 994 chip->model = PMAC_SNAPPER;
+4 -4
sound/usb/usbaudio.c
··· 1444 SNDRV_PCM_INFO_BATCH | 1445 SNDRV_PCM_INFO_INTERLEAVED | 1446 SNDRV_PCM_INFO_BLOCK_TRANSFER, 1447 - .buffer_bytes_max = (256*1024), 1448 .period_bytes_min = 64, 1449 - .period_bytes_max = (128*1024), 1450 .periods_min = 2, 1451 .periods_max = 1024, 1452 }; ··· 1458 SNDRV_PCM_INFO_BATCH | 1459 SNDRV_PCM_INFO_INTERLEAVED | 1460 SNDRV_PCM_INFO_BLOCK_TRANSFER, 1461 - .buffer_bytes_max = (256*1024), 1462 .period_bytes_min = 64, 1463 - .period_bytes_max = (128*1024), 1464 .periods_min = 2, 1465 .periods_max = 1024, 1466 };
··· 1444 SNDRV_PCM_INFO_BATCH | 1445 SNDRV_PCM_INFO_INTERLEAVED | 1446 SNDRV_PCM_INFO_BLOCK_TRANSFER, 1447 + .buffer_bytes_max = 1024 * 1024, 1448 .period_bytes_min = 64, 1449 + .period_bytes_max = 512 * 1024, 1450 .periods_min = 2, 1451 .periods_max = 1024, 1452 }; ··· 1458 SNDRV_PCM_INFO_BATCH | 1459 SNDRV_PCM_INFO_INTERLEAVED | 1460 SNDRV_PCM_INFO_BLOCK_TRANSFER, 1461 + .buffer_bytes_max = 1024 * 1024, 1462 .period_bytes_min = 64, 1463 + .period_bytes_max = 512 * 1024, 1464 .periods_min = 2, 1465 .periods_max = 1024, 1466 };
+10
sound/usb/usbmixer_maps.c
··· 238 .selector_map = audigy2nx_selectors, 239 }, 240 { 241 .id = USB_ID(0x08bb, 0x2702), 242 .map = linex_map, 243 .ignore_ctl_error = 1,
··· 238 .selector_map = audigy2nx_selectors, 239 }, 240 { 241 + /* Hercules DJ Console (Windows Edition) */ 242 + .id = USB_ID(0x06f8, 0xb000), 243 + .ignore_ctl_error = 1, 244 + }, 245 + { 246 + /* Hercules DJ Console (Macintosh Edition) */ 247 + .id = USB_ID(0x06f8, 0xd002), 248 + .ignore_ctl_error = 1, 249 + }, 250 + { 251 .id = USB_ID(0x08bb, 0x2702), 252 .map = linex_map, 253 .ignore_ctl_error = 1,
+49 -1
sound/usb/usbquirks.h
··· 117 YAMAHA_DEVICE(0x103b, NULL), 118 YAMAHA_DEVICE(0x103c, NULL), 119 YAMAHA_DEVICE(0x103d, NULL), 120 YAMAHA_DEVICE(0x2000, "DGP-7"), 121 YAMAHA_DEVICE(0x2001, "DGP-5"), 122 YAMAHA_DEVICE(0x2002, NULL), ··· 1014 } 1015 } 1016 }, 1017 1018 /* Midiman/M-Audio devices */ 1019 { ··· 1377 } 1378 }, 1379 1380 { 1381 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013), 1382 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 1383 - .vendor_name = "Terratec", 1384 .product_name = "PHASE 26", 1385 .ifnum = 3, 1386 .type = QUIRK_MIDI_STANDARD_INTERFACE
··· 117 YAMAHA_DEVICE(0x103b, NULL), 118 YAMAHA_DEVICE(0x103c, NULL), 119 YAMAHA_DEVICE(0x103d, NULL), 120 + YAMAHA_DEVICE(0x103e, NULL), 121 + YAMAHA_DEVICE(0x103f, NULL), 122 + YAMAHA_DEVICE(0x1040, NULL), 123 + YAMAHA_DEVICE(0x1041, NULL), 124 YAMAHA_DEVICE(0x2000, "DGP-7"), 125 YAMAHA_DEVICE(0x2001, "DGP-5"), 126 YAMAHA_DEVICE(0x2002, NULL), ··· 1010 } 1011 } 1012 }, 1013 + { 1014 + USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a), 1015 + .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 1016 + .vendor_name = "Roland", 1017 + /* RD-700SX, RD-300SX */ 1018 + .ifnum = 0, 1019 + .type = QUIRK_MIDI_FIXED_ENDPOINT, 1020 + .data = & (const snd_usb_midi_endpoint_info_t) { 1021 + .out_cables = 0x0003, 1022 + .in_cables = 0x0003 1023 + } 1024 + } 1025 + }, 1026 + 1027 + /* Guillemot devices */ 1028 + { 1029 + /* 1030 + * This is for the "Windows Edition" where the external MIDI ports are 1031 + * the only MIDI ports; the control data is reported through HID 1032 + * interfaces. The "Macintosh Edition" has ID 0xd002 and uses standard 1033 + * compliant USB MIDI ports for external MIDI and controls. 1034 + */ 1035 + USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000), 1036 + .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 1037 + .vendor_name = "Hercules", 1038 + .product_name = "DJ Console (WE)", 1039 + .ifnum = 4, 1040 + .type = QUIRK_MIDI_FIXED_ENDPOINT, 1041 + .data = & (const snd_usb_midi_endpoint_info_t) { 1042 + .out_cables = 0x0001, 1043 + .in_cables = 0x0001 1044 + } 1045 + } 1046 + }, 1047 1048 /* Midiman/M-Audio devices */ 1049 { ··· 1339 } 1340 }, 1341 1342 + /* TerraTec devices */ 1343 + { 1344 + USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012), 1345 + .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 1346 + .vendor_name = "TerraTec", 1347 + .product_name = "PHASE 26", 1348 + .ifnum = 3, 1349 + .type = QUIRK_MIDI_STANDARD_INTERFACE 1350 + } 1351 + }, 1352 { 1353 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013), 1354 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 1355 + .vendor_name = "TerraTec", 1356 .product_name = "PHASE 26", 1357 .ifnum = 3, 1358 .type = QUIRK_MIDI_STANDARD_INTERFACE