diff options
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r-- | sound/pci/hda/hda_intel.c | 94 |
1 files changed, 51 insertions, 43 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index ec9c348336cc..43b7cfb7cffd 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
@@ -125,6 +125,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6}," | |||
125 | "{Intel, ICH9}," | 125 | "{Intel, ICH9}," |
126 | "{Intel, ICH10}," | 126 | "{Intel, ICH10}," |
127 | "{Intel, PCH}," | 127 | "{Intel, PCH}," |
128 | "{Intel, CPT}," | ||
128 | "{Intel, SCH}," | 129 | "{Intel, SCH}," |
129 | "{ATI, SB450}," | 130 | "{ATI, SB450}," |
130 | "{ATI, SB600}," | 131 | "{ATI, SB600}," |
@@ -259,8 +260,6 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 }; | |||
259 | #define AZX_MAX_FRAG 32 | 260 | #define AZX_MAX_FRAG 32 |
260 | /* max buffer size - no h/w limit, you can increase as you like */ | 261 | /* max buffer size - no h/w limit, you can increase as you like */ |
261 | #define AZX_MAX_BUF_SIZE (1024*1024*1024) | 262 | #define AZX_MAX_BUF_SIZE (1024*1024*1024) |
262 | /* max number of PCM devics per card */ | ||
263 | #define AZX_MAX_PCMS 8 | ||
264 | 263 | ||
265 | /* RIRB int mask: overrun[2], response[0] */ | 264 | /* RIRB int mask: overrun[2], response[0] */ |
266 | #define RIRB_INT_RESPONSE 0x01 | 265 | #define RIRB_INT_RESPONSE 0x01 |
@@ -268,7 +267,8 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 }; | |||
268 | #define RIRB_INT_MASK 0x05 | 267 | #define RIRB_INT_MASK 0x05 |
269 | 268 | ||
270 | /* STATESTS int mask: S3,SD2,SD1,SD0 */ | 269 | /* STATESTS int mask: S3,SD2,SD1,SD0 */ |
271 | #define AZX_MAX_CODECS 4 | 270 | #define AZX_MAX_CODECS 8 |
271 | #define AZX_DEFAULT_CODECS 4 | ||
272 | #define STATESTS_INT_MASK ((1 << AZX_MAX_CODECS) - 1) | 272 | #define STATESTS_INT_MASK ((1 << AZX_MAX_CODECS) - 1) |
273 | 273 | ||
274 | /* SD_CTL bits */ | 274 | /* SD_CTL bits */ |
@@ -408,7 +408,7 @@ struct azx { | |||
408 | struct azx_dev *azx_dev; | 408 | struct azx_dev *azx_dev; |
409 | 409 | ||
410 | /* PCM */ | 410 | /* PCM */ |
411 | struct snd_pcm *pcm[AZX_MAX_PCMS]; | 411 | struct snd_pcm *pcm[HDA_MAX_PCMS]; |
412 | 412 | ||
413 | /* HD codec */ | 413 | /* HD codec */ |
414 | unsigned short codec_mask; | 414 | unsigned short codec_mask; |
@@ -426,6 +426,7 @@ struct azx { | |||
426 | 426 | ||
427 | /* flags */ | 427 | /* flags */ |
428 | int position_fix; | 428 | int position_fix; |
429 | int poll_count; | ||
429 | unsigned int running :1; | 430 | unsigned int running :1; |
430 | unsigned int initialized :1; | 431 | unsigned int initialized :1; |
431 | unsigned int single_cmd :1; | 432 | unsigned int single_cmd :1; |
@@ -448,6 +449,7 @@ struct azx { | |||
448 | /* driver types */ | 449 | /* driver types */ |
449 | enum { | 450 | enum { |
450 | AZX_DRIVER_ICH, | 451 | AZX_DRIVER_ICH, |
452 | AZX_DRIVER_PCH, | ||
451 | AZX_DRIVER_SCH, | 453 | AZX_DRIVER_SCH, |
452 | AZX_DRIVER_ATI, | 454 | AZX_DRIVER_ATI, |
453 | AZX_DRIVER_ATIHDMI, | 455 | AZX_DRIVER_ATIHDMI, |
@@ -462,6 +464,7 @@ enum { | |||
462 | 464 | ||
463 | static char *driver_short_names[] __devinitdata = { | 465 | static char *driver_short_names[] __devinitdata = { |
464 | [AZX_DRIVER_ICH] = "HDA Intel", | 466 | [AZX_DRIVER_ICH] = "HDA Intel", |
467 | [AZX_DRIVER_PCH] = "HDA Intel PCH", | ||
465 | [AZX_DRIVER_SCH] = "HDA Intel MID", | 468 | [AZX_DRIVER_SCH] = "HDA Intel MID", |
466 | [AZX_DRIVER_ATI] = "HDA ATI SB", | 469 | [AZX_DRIVER_ATI] = "HDA ATI SB", |
467 | [AZX_DRIVER_ATIHDMI] = "HDA ATI HDMI", | 470 | [AZX_DRIVER_ATIHDMI] = "HDA ATI HDMI", |
@@ -506,7 +509,7 @@ static char *driver_short_names[] __devinitdata = { | |||
506 | #define get_azx_dev(substream) (substream->runtime->private_data) | 509 | #define get_azx_dev(substream) (substream->runtime->private_data) |
507 | 510 | ||
508 | static int azx_acquire_irq(struct azx *chip, int do_disconnect); | 511 | static int azx_acquire_irq(struct azx *chip, int do_disconnect); |
509 | 512 | static int azx_send_cmd(struct hda_bus *bus, unsigned int val); | |
510 | /* | 513 | /* |
511 | * Interface for HD codec | 514 | * Interface for HD codec |
512 | */ | 515 | */ |
@@ -664,11 +667,12 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus, | |||
664 | { | 667 | { |
665 | struct azx *chip = bus->private_data; | 668 | struct azx *chip = bus->private_data; |
666 | unsigned long timeout; | 669 | unsigned long timeout; |
670 | int do_poll = 0; | ||
667 | 671 | ||
668 | again: | 672 | again: |
669 | timeout = jiffies + msecs_to_jiffies(1000); | 673 | timeout = jiffies + msecs_to_jiffies(1000); |
670 | for (;;) { | 674 | for (;;) { |
671 | if (chip->polling_mode) { | 675 | if (chip->polling_mode || do_poll) { |
672 | spin_lock_irq(&chip->reg_lock); | 676 | spin_lock_irq(&chip->reg_lock); |
673 | azx_update_rirb(chip); | 677 | azx_update_rirb(chip); |
674 | spin_unlock_irq(&chip->reg_lock); | 678 | spin_unlock_irq(&chip->reg_lock); |
@@ -676,6 +680,9 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus, | |||
676 | if (!chip->rirb.cmds[addr]) { | 680 | if (!chip->rirb.cmds[addr]) { |
677 | smp_rmb(); | 681 | smp_rmb(); |
678 | bus->rirb_error = 0; | 682 | bus->rirb_error = 0; |
683 | |||
684 | if (!do_poll) | ||
685 | chip->poll_count = 0; | ||
679 | return chip->rirb.res[addr]; /* the last value */ | 686 | return chip->rirb.res[addr]; /* the last value */ |
680 | } | 687 | } |
681 | if (time_after(jiffies, timeout)) | 688 | if (time_after(jiffies, timeout)) |
@@ -688,6 +695,16 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus, | |||
688 | } | 695 | } |
689 | } | 696 | } |
690 | 697 | ||
698 | if (!chip->polling_mode && chip->poll_count < 2) { | ||
699 | snd_printdd(SFX "azx_get_response timeout, " | ||
700 | "polling the codec once: last cmd=0x%08x\n", | ||
701 | chip->last_cmd[addr]); | ||
702 | do_poll = 1; | ||
703 | chip->poll_count++; | ||
704 | goto again; | ||
705 | } | ||
706 | |||
707 | |||
691 | if (!chip->polling_mode) { | 708 | if (!chip->polling_mode) { |
692 | snd_printk(KERN_WARNING SFX "azx_get_response timeout, " | 709 | snd_printk(KERN_WARNING SFX "azx_get_response timeout, " |
693 | "switching to polling mode: last cmd=0x%08x\n", | 710 | "switching to polling mode: last cmd=0x%08x\n", |
@@ -953,8 +970,8 @@ static void azx_stream_start(struct azx *chip, struct azx_dev *azx_dev) | |||
953 | azx_dev->insufficient = 1; | 970 | azx_dev->insufficient = 1; |
954 | 971 | ||
955 | /* enable SIE */ | 972 | /* enable SIE */ |
956 | azx_writeb(chip, INTCTL, | 973 | azx_writel(chip, INTCTL, |
957 | azx_readb(chip, INTCTL) | (1 << azx_dev->index)); | 974 | azx_readl(chip, INTCTL) | (1 << azx_dev->index)); |
958 | /* set DMA start and interrupt mask */ | 975 | /* set DMA start and interrupt mask */ |
959 | azx_sd_writeb(azx_dev, SD_CTL, azx_sd_readb(azx_dev, SD_CTL) | | 976 | azx_sd_writeb(azx_dev, SD_CTL, azx_sd_readb(azx_dev, SD_CTL) | |
960 | SD_CTL_DMA_START | SD_INT_MASK); | 977 | SD_CTL_DMA_START | SD_INT_MASK); |
@@ -973,8 +990,8 @@ static void azx_stream_stop(struct azx *chip, struct azx_dev *azx_dev) | |||
973 | { | 990 | { |
974 | azx_stream_clear(chip, azx_dev); | 991 | azx_stream_clear(chip, azx_dev); |
975 | /* disable SIE */ | 992 | /* disable SIE */ |
976 | azx_writeb(chip, INTCTL, | 993 | azx_writel(chip, INTCTL, |
977 | azx_readb(chip, INTCTL) & ~(1 << azx_dev->index)); | 994 | azx_readl(chip, INTCTL) & ~(1 << azx_dev->index)); |
978 | } | 995 | } |
979 | 996 | ||
980 | 997 | ||
@@ -1050,6 +1067,7 @@ static void azx_init_pci(struct azx *chip) | |||
1050 | 0x01, NVIDIA_HDA_ENABLE_COHBIT); | 1067 | 0x01, NVIDIA_HDA_ENABLE_COHBIT); |
1051 | break; | 1068 | break; |
1052 | case AZX_DRIVER_SCH: | 1069 | case AZX_DRIVER_SCH: |
1070 | case AZX_DRIVER_PCH: | ||
1053 | pci_read_config_word(chip->pci, INTEL_SCH_HDA_DEVC, &snoop); | 1071 | pci_read_config_word(chip->pci, INTEL_SCH_HDA_DEVC, &snoop); |
1054 | if (snoop & INTEL_SCH_HDA_DEVC_NOSNOOP) { | 1072 | if (snoop & INTEL_SCH_HDA_DEVC_NOSNOOP) { |
1055 | pci_write_config_word(chip->pci, INTEL_SCH_HDA_DEVC, | 1073 | pci_write_config_word(chip->pci, INTEL_SCH_HDA_DEVC, |
@@ -1335,7 +1353,7 @@ static void azx_bus_reset(struct hda_bus *bus) | |||
1335 | if (chip->initialized) { | 1353 | if (chip->initialized) { |
1336 | int i; | 1354 | int i; |
1337 | 1355 | ||
1338 | for (i = 0; i < AZX_MAX_PCMS; i++) | 1356 | for (i = 0; i < HDA_MAX_PCMS; i++) |
1339 | snd_pcm_suspend_all(chip->pcm[i]); | 1357 | snd_pcm_suspend_all(chip->pcm[i]); |
1340 | snd_hda_suspend(chip->bus); | 1358 | snd_hda_suspend(chip->bus); |
1341 | snd_hda_resume(chip->bus); | 1359 | snd_hda_resume(chip->bus); |
@@ -1350,6 +1368,7 @@ static void azx_bus_reset(struct hda_bus *bus) | |||
1350 | 1368 | ||
1351 | /* number of codec slots for each chipset: 0 = default slots (i.e. 4) */ | 1369 | /* number of codec slots for each chipset: 0 = default slots (i.e. 4) */ |
1352 | static unsigned int azx_max_codecs[AZX_NUM_DRIVERS] __devinitdata = { | 1370 | static unsigned int azx_max_codecs[AZX_NUM_DRIVERS] __devinitdata = { |
1371 | [AZX_DRIVER_NVIDIA] = 8, | ||
1353 | [AZX_DRIVER_TERA] = 1, | 1372 | [AZX_DRIVER_TERA] = 1, |
1354 | }; | 1373 | }; |
1355 | 1374 | ||
@@ -1382,7 +1401,7 @@ static int __devinit azx_codec_create(struct azx *chip, const char *model) | |||
1382 | codecs = 0; | 1401 | codecs = 0; |
1383 | max_slots = azx_max_codecs[chip->driver_type]; | 1402 | max_slots = azx_max_codecs[chip->driver_type]; |
1384 | if (!max_slots) | 1403 | if (!max_slots) |
1385 | max_slots = AZX_MAX_CODECS; | 1404 | max_slots = AZX_DEFAULT_CODECS; |
1386 | 1405 | ||
1387 | /* First try to probe all given codec slots */ | 1406 | /* First try to probe all given codec slots */ |
1388 | for (c = 0; c < max_slots; c++) { | 1407 | for (c = 0; c < max_slots; c++) { |
@@ -1397,7 +1416,7 @@ static int __devinit azx_codec_create(struct azx *chip, const char *model) | |||
1397 | chip->codec_mask &= ~(1 << c); | 1416 | chip->codec_mask &= ~(1 << c); |
1398 | /* More badly, accessing to a non-existing | 1417 | /* More badly, accessing to a non-existing |
1399 | * codec often screws up the controller chip, | 1418 | * codec often screws up the controller chip, |
1400 | * and distrubs the further communications. | 1419 | * and disturbs the further communications. |
1401 | * Thus if an error occurs during probing, | 1420 | * Thus if an error occurs during probing, |
1402 | * better to reset the controller chip to | 1421 | * better to reset the controller chip to |
1403 | * get back to the sanity state. | 1422 | * get back to the sanity state. |
@@ -1878,6 +1897,9 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev) | |||
1878 | 1897 | ||
1879 | if (!bdl_pos_adj[chip->dev_index]) | 1898 | if (!bdl_pos_adj[chip->dev_index]) |
1880 | return 1; /* no delayed ack */ | 1899 | return 1; /* no delayed ack */ |
1900 | if (WARN_ONCE(!azx_dev->period_bytes, | ||
1901 | "hda-intel: zero azx_dev->period_bytes")) | ||
1902 | return 0; /* this shouldn't happen! */ | ||
1881 | if (pos % azx_dev->period_bytes > azx_dev->period_bytes / 2) | 1903 | if (pos % azx_dev->period_bytes > azx_dev->period_bytes / 2) |
1882 | return 0; /* NG - it's below the period boundary */ | 1904 | return 0; /* NG - it's below the period boundary */ |
1883 | return 1; /* OK, it's fine */ | 1905 | return 1; /* OK, it's fine */ |
@@ -1965,7 +1987,7 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec, | |||
1965 | int pcm_dev = cpcm->device; | 1987 | int pcm_dev = cpcm->device; |
1966 | int s, err; | 1988 | int s, err; |
1967 | 1989 | ||
1968 | if (pcm_dev >= AZX_MAX_PCMS) { | 1990 | if (pcm_dev >= HDA_MAX_PCMS) { |
1969 | snd_printk(KERN_ERR SFX "Invalid PCM device number %d\n", | 1991 | snd_printk(KERN_ERR SFX "Invalid PCM device number %d\n", |
1970 | pcm_dev); | 1992 | pcm_dev); |
1971 | return -EINVAL; | 1993 | return -EINVAL; |
@@ -2043,7 +2065,7 @@ static int azx_acquire_irq(struct azx *chip, int do_disconnect) | |||
2043 | { | 2065 | { |
2044 | if (request_irq(chip->pci->irq, azx_interrupt, | 2066 | if (request_irq(chip->pci->irq, azx_interrupt, |
2045 | chip->msi ? 0 : IRQF_SHARED, | 2067 | chip->msi ? 0 : IRQF_SHARED, |
2046 | "HDA Intel", chip)) { | 2068 | "hda_intel", chip)) { |
2047 | printk(KERN_ERR "hda-intel: unable to grab IRQ %d, " | 2069 | printk(KERN_ERR "hda-intel: unable to grab IRQ %d, " |
2048 | "disabling device\n", chip->pci->irq); | 2070 | "disabling device\n", chip->pci->irq); |
2049 | if (do_disconnect) | 2071 | if (do_disconnect) |
@@ -2121,7 +2143,7 @@ static int azx_suspend(struct pci_dev *pci, pm_message_t state) | |||
2121 | 2143 | ||
2122 | snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); | 2144 | snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); |
2123 | azx_clear_irq_pending(chip); | 2145 | azx_clear_irq_pending(chip); |
2124 | for (i = 0; i < AZX_MAX_PCMS; i++) | 2146 | for (i = 0; i < HDA_MAX_PCMS; i++) |
2125 | snd_pcm_suspend_all(chip->pcm[i]); | 2147 | snd_pcm_suspend_all(chip->pcm[i]); |
2126 | if (chip->initialized) | 2148 | if (chip->initialized) |
2127 | snd_hda_suspend(chip->bus); | 2149 | snd_hda_suspend(chip->bus); |
@@ -2243,9 +2265,12 @@ static int azx_dev_free(struct snd_device *device) | |||
2243 | static struct snd_pci_quirk position_fix_list[] __devinitdata = { | 2265 | static struct snd_pci_quirk position_fix_list[] __devinitdata = { |
2244 | SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB), | 2266 | SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB), |
2245 | SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB), | 2267 | SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB), |
2268 | SND_PCI_QUIRK(0x1028, 0x01f6, "Dell Latitude 131L", POS_FIX_LPIB), | ||
2246 | SND_PCI_QUIRK(0x103c, 0x306d, "HP dv3", POS_FIX_LPIB), | 2269 | SND_PCI_QUIRK(0x103c, 0x306d, "HP dv3", POS_FIX_LPIB), |
2270 | SND_PCI_QUIRK(0x1106, 0x3288, "ASUS M2V-MX SE", POS_FIX_LPIB), | ||
2247 | SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_LPIB), | 2271 | SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_LPIB), |
2248 | SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB), | 2272 | SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB), |
2273 | SND_PCI_QUIRK(0x1565, 0x820f, "Biostar Microtech", POS_FIX_LPIB), | ||
2249 | {} | 2274 | {} |
2250 | }; | 2275 | }; |
2251 | 2276 | ||
@@ -2332,6 +2357,8 @@ static void __devinit check_probe_mask(struct azx *chip, int dev) | |||
2332 | */ | 2357 | */ |
2333 | static struct snd_pci_quirk msi_black_list[] __devinitdata = { | 2358 | static struct snd_pci_quirk msi_black_list[] __devinitdata = { |
2334 | SND_PCI_QUIRK(0x1043, 0x81f2, "ASUS", 0), /* Athlon64 X2 + nvidia */ | 2359 | SND_PCI_QUIRK(0x1043, 0x81f2, "ASUS", 0), /* Athlon64 X2 + nvidia */ |
2360 | SND_PCI_QUIRK(0x1043, 0x81f6, "ASUS", 0), /* nvidia */ | ||
2361 | SND_PCI_QUIRK(0x1849, 0x0888, "ASRock", 0), /* Athlon64 X2 + nvidia */ | ||
2335 | {} | 2362 | {} |
2336 | }; | 2363 | }; |
2337 | 2364 | ||
@@ -2399,6 +2426,7 @@ static int __devinit azx_create(struct snd_card *card, struct pci_dev *pci, | |||
2399 | if (bdl_pos_adj[dev] < 0) { | 2426 | if (bdl_pos_adj[dev] < 0) { |
2400 | switch (chip->driver_type) { | 2427 | switch (chip->driver_type) { |
2401 | case AZX_DRIVER_ICH: | 2428 | case AZX_DRIVER_ICH: |
2429 | case AZX_DRIVER_PCH: | ||
2402 | bdl_pos_adj[dev] = 1; | 2430 | bdl_pos_adj[dev] = 1; |
2403 | break; | 2431 | break; |
2404 | default: | 2432 | default: |
@@ -2664,7 +2692,7 @@ static void __devexit azx_remove(struct pci_dev *pci) | |||
2664 | } | 2692 | } |
2665 | 2693 | ||
2666 | /* PCI IDs */ | 2694 | /* PCI IDs */ |
2667 | static struct pci_device_id azx_ids[] = { | 2695 | static DEFINE_PCI_DEVICE_TABLE(azx_ids) = { |
2668 | /* ICH 6..10 */ | 2696 | /* ICH 6..10 */ |
2669 | { PCI_DEVICE(0x8086, 0x2668), .driver_data = AZX_DRIVER_ICH }, | 2697 | { PCI_DEVICE(0x8086, 0x2668), .driver_data = AZX_DRIVER_ICH }, |
2670 | { PCI_DEVICE(0x8086, 0x27d8), .driver_data = AZX_DRIVER_ICH }, | 2698 | { PCI_DEVICE(0x8086, 0x27d8), .driver_data = AZX_DRIVER_ICH }, |
@@ -2677,6 +2705,8 @@ static struct pci_device_id azx_ids[] = { | |||
2677 | { PCI_DEVICE(0x8086, 0x3a6e), .driver_data = AZX_DRIVER_ICH }, | 2705 | { PCI_DEVICE(0x8086, 0x3a6e), .driver_data = AZX_DRIVER_ICH }, |
2678 | /* PCH */ | 2706 | /* PCH */ |
2679 | { PCI_DEVICE(0x8086, 0x3b56), .driver_data = AZX_DRIVER_ICH }, | 2707 | { PCI_DEVICE(0x8086, 0x3b56), .driver_data = AZX_DRIVER_ICH }, |
2708 | /* CPT */ | ||
2709 | { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_PCH }, | ||
2680 | /* SCH */ | 2710 | /* SCH */ |
2681 | { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH }, | 2711 | { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH }, |
2682 | /* ATI SB 450/600 */ | 2712 | /* ATI SB 450/600 */ |
@@ -2704,32 +2734,10 @@ static struct pci_device_id azx_ids[] = { | |||
2704 | /* ULI M5461 */ | 2734 | /* ULI M5461 */ |
2705 | { PCI_DEVICE(0x10b9, 0x5461), .driver_data = AZX_DRIVER_ULI }, | 2735 | { PCI_DEVICE(0x10b9, 0x5461), .driver_data = AZX_DRIVER_ULI }, |
2706 | /* NVIDIA MCP */ | 2736 | /* NVIDIA MCP */ |
2707 | { PCI_DEVICE(0x10de, 0x026c), .driver_data = AZX_DRIVER_NVIDIA }, | 2737 | { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID), |
2708 | { PCI_DEVICE(0x10de, 0x0371), .driver_data = AZX_DRIVER_NVIDIA }, | 2738 | .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8, |
2709 | { PCI_DEVICE(0x10de, 0x03e4), .driver_data = AZX_DRIVER_NVIDIA }, | 2739 | .class_mask = 0xffffff, |
2710 | { PCI_DEVICE(0x10de, 0x03f0), .driver_data = AZX_DRIVER_NVIDIA }, | 2740 | .driver_data = AZX_DRIVER_NVIDIA }, |
2711 | { PCI_DEVICE(0x10de, 0x044a), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2712 | { PCI_DEVICE(0x10de, 0x044b), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2713 | { PCI_DEVICE(0x10de, 0x055c), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2714 | { PCI_DEVICE(0x10de, 0x055d), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2715 | { PCI_DEVICE(0x10de, 0x0590), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2716 | { PCI_DEVICE(0x10de, 0x0774), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2717 | { PCI_DEVICE(0x10de, 0x0775), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2718 | { PCI_DEVICE(0x10de, 0x0776), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2719 | { PCI_DEVICE(0x10de, 0x0777), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2720 | { PCI_DEVICE(0x10de, 0x07fc), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2721 | { PCI_DEVICE(0x10de, 0x07fd), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2722 | { PCI_DEVICE(0x10de, 0x0ac0), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2723 | { PCI_DEVICE(0x10de, 0x0ac1), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2724 | { PCI_DEVICE(0x10de, 0x0ac2), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2725 | { PCI_DEVICE(0x10de, 0x0ac3), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2726 | { PCI_DEVICE(0x10de, 0x0be2), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2727 | { PCI_DEVICE(0x10de, 0x0be3), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2728 | { PCI_DEVICE(0x10de, 0x0be4), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2729 | { PCI_DEVICE(0x10de, 0x0d94), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2730 | { PCI_DEVICE(0x10de, 0x0d95), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2731 | { PCI_DEVICE(0x10de, 0x0d96), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2732 | { PCI_DEVICE(0x10de, 0x0d97), .driver_data = AZX_DRIVER_NVIDIA }, | ||
2733 | /* Teradici */ | 2741 | /* Teradici */ |
2734 | { PCI_DEVICE(0x6549, 0x1200), .driver_data = AZX_DRIVER_TERA }, | 2742 | { PCI_DEVICE(0x6549, 0x1200), .driver_data = AZX_DRIVER_TERA }, |
2735 | /* Creative X-Fi (CA0110-IBG) */ | 2743 | /* Creative X-Fi (CA0110-IBG) */ |