Changeset 520


Ignore:
Timestamp:
Jul 21, 2010, 5:13:17 PM (15 years ago)
Author:
David Azarewicz
Message:

pci dereg fix

Location:
GPL/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • GPL/trunk/alsa-kernel/pci/hda/hda_intel.c

    r464 r520  
    3232 *
    3333 *  2004.12.01  Major rewrite by tiwai, merged the work of pshou
    34  * 
     34 *
    3535 */
    3636
     
    346346#ifdef TARGET_OS2
    347347        volatile void __iomem *sd_addr;         /* stream descriptor pointer */
    348 #else 
     348#else
    349349        void __iomem *sd_addr;  /* stream descriptor pointer */
    350350#endif
     
    480480        [AZX_DRIVER_ULI] = "HDA ULI M5461",
    481481        [AZX_DRIVER_NVIDIA] = "HDA NVidia",
    482         [AZX_DRIVER_TERA] = "HDA Teradici", 
     482        [AZX_DRIVER_TERA] = "HDA Teradici",
    483483        [AZX_DRIVER_GENERIC] = "HD-Audio Generic",
    484484};
     
    915915/*
    916916 * Lowlevel interface
    917  */ 
     917 */
    918918
    919919/* enable interrupts */
     
    10551055                /* For ATI SB450 azalia HD audio, we need to enable snoop */
    10561056                update_pci_byte(chip->pci,
    1057                                 ATI_SB450_HDAUDIO_MISC_CNTR2_ADDR, 
     1057                                ATI_SB450_HDAUDIO_MISC_CNTR2_ADDR,
    10581058                                0x07, ATI_SB450_HDAUDIO_ENABLE_SNOOP);
    10591059                break;
     
    27122712        { PCI_DEVICE(0x10b9, 0x5461), .driver_data = AZX_DRIVER_ULI },
    27132713        /* NVIDIA MCP */
    2714         { PCI_DEVICE(0x10de, 0x026c), .driver_data = AZX_DRIVER_NVIDIA },
    2715         { PCI_DEVICE(0x10de, 0x0371), .driver_data = AZX_DRIVER_NVIDIA },
    2716         { PCI_DEVICE(0x10de, 0x03e4), .driver_data = AZX_DRIVER_NVIDIA },
    2717         { PCI_DEVICE(0x10de, 0x03f0), .driver_data = AZX_DRIVER_NVIDIA },
    2718         { PCI_DEVICE(0x10de, 0x044a), .driver_data = AZX_DRIVER_NVIDIA },
    2719         { PCI_DEVICE(0x10de, 0x044b), .driver_data = AZX_DRIVER_NVIDIA },
    2720         { PCI_DEVICE(0x10de, 0x055c), .driver_data = AZX_DRIVER_NVIDIA },
    2721         { PCI_DEVICE(0x10de, 0x055d), .driver_data = AZX_DRIVER_NVIDIA },
    2722         { PCI_DEVICE(0x10de, 0x0774), .driver_data = AZX_DRIVER_NVIDIA },
    2723         { PCI_DEVICE(0x10de, 0x0775), .driver_data = AZX_DRIVER_NVIDIA },
    2724         { PCI_DEVICE(0x10de, 0x0776), .driver_data = AZX_DRIVER_NVIDIA },
    2725         { PCI_DEVICE(0x10de, 0x0777), .driver_data = AZX_DRIVER_NVIDIA },
    2726         { PCI_DEVICE(0x10de, 0x07fc), .driver_data = AZX_DRIVER_NVIDIA },
    2727         { PCI_DEVICE(0x10de, 0x07fd), .driver_data = AZX_DRIVER_NVIDIA },
    2728         { PCI_DEVICE(0x10de, 0x0ac0), .driver_data = AZX_DRIVER_NVIDIA },
    2729         { PCI_DEVICE(0x10de, 0x0ac1), .driver_data = AZX_DRIVER_NVIDIA },
    2730         { PCI_DEVICE(0x10de, 0x0ac2), .driver_data = AZX_DRIVER_NVIDIA },
    2731         { PCI_DEVICE(0x10de, 0x0ac3), .driver_data = AZX_DRIVER_NVIDIA },
    2732         { PCI_DEVICE(0x10de, 0x0d94), .driver_data = AZX_DRIVER_NVIDIA },
    2733         { PCI_DEVICE(0x10de, 0x0d95), .driver_data = AZX_DRIVER_NVIDIA },
    2734         { PCI_DEVICE(0x10de, 0x0d96), .driver_data = AZX_DRIVER_NVIDIA },
    2735         { PCI_DEVICE(0x10de, 0x0d97), .driver_data = AZX_DRIVER_NVIDIA },
     2714        { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID),
     2715          .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8,
     2716          .class_mask = 0xffffff,
     2717          .driver_data = AZX_DRIVER_NVIDIA },
    27362718        /* Teradici */
    27372719        { PCI_DEVICE(0x6549, 0x1200), .driver_data = AZX_DRIVER_TERA },
  • GPL/trunk/lib32/pci.c

    r518 r520  
    547547{
    548548        struct pci_dev *pcidev;
    549         int i = 0, j;
    550 
    551         while(driver->id_table[i].vendor)
    552         {
    553                 for(j=0;j<MAX_PCI_DEVICES;j++)
    554                 {
    555                         if(pci_devices[j].vendor == driver->id_table[i].vendor &&
    556                            pci_devices[j].device == driver->id_table[i].device)
    557                         {
    558                                 if(driver->remove) {
    559                                         driver->remove(&pci_devices[j]);
    560                                 }
    561                         }
    562                 }
    563                 i++;
     549        int i, j;
     550
     551        for (i=0; driver->id_table[i].vendor; i++) {
     552                for(j=0; j<MAX_PCI_DEVICES; j++) {
     553                        pcidev = &pci_devices[j];
     554                        if (pcidev->devfn == 0) continue;
     555                        if(pcidev->vendor != driver->id_table[i].vendor) continue;
     556                        if ( (driver->id_table[i].device != PCI_ANY_ID) && (pcidev->device != driver->id_table[i].device) ) continue;
     557                        dprintf(("pci unreg match: %x:%x %x:%x", pci_devices[j].vendor, pci_devices[j].device, driver->id_table[i].vendor, driver->id_table[i].device));
     558                        if(!driver->remove) continue;
     559                        driver->remove(pcidev);
     560                }
    564561        }
    565562        return 0;
Note: See TracChangeset for help on using the changeset viewer.