Changeset 1764

Show
Ignore:
Timestamp:
06/06/03 03:51:06 (11 years ago)
Author:
mds
Message:

partial backport from 2.5.69. Populated the pci_device_id table;

left the dmi_scan stuff in there. untested.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/kernel/busses/i2c-piix4.c

    r1708 r1764  
    5252}; 
    5353 
    54 /* Note: We assume all devices are identical 
    55          to the Intel PIIX4; we only mention it during detection.   */ 
    56  
    57 static struct sd supported[] = { 
    58         {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, 3, "PIIX4"}, 
    59         {PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_OSB4, 0, "OSB4"}, 
    60         {PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB5, 0, "CSB5"}, 
    61         {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443MX_3, 3, "440MX"}, 
    62         {PCI_VENDOR_ID_EFAR, PCI_DEVICE_ID_EFAR_SLC90E66_3, 0, "Victory66"}, 
    63         {0, 0, 0, NULL} 
    64 }; 
    65  
    6654/* PIIX4 SMBus address offsets */ 
    6755#define SMBHSTSTS (0 + piix4_smba) 
     
    149137   newer kernels with the real PCI interface. In compat.h some things are 
    150138   defined to make the transition easier. */ 
    151 int piix4_setup(void) 
     139static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id) 
    152140{ 
    153141        int error_return = 0; 
    154142        unsigned char temp; 
    155         struct sd *num = supported; 
    156         struct pci_dev *PIIX4_dev = NULL; 
    157  
    158         if (pci_present() == 0) { 
    159                 error_return = -ENODEV; 
    160                 goto END; 
    161         } 
    162  
    163         /* Look for a supported device/function */ 
    164         do { 
    165                 if((PIIX4_dev = pci_find_device(num->mfr, num->dev, 
    166                                                 PIIX4_dev))) { 
    167                         if(PCI_FUNC(PIIX4_dev->devfn) != num->fn) 
    168                                 continue; 
    169                         break; 
    170                 } 
    171                 PIIX4_dev = NULL; 
    172                 num++; 
    173         } while (num->mfr); 
    174  
    175         if (PIIX4_dev == NULL) { 
    176                 printk 
    177                   (KERN_ERR "i2c-piix4.o: Error: Can't detect PIIX4 or compatible device!\n"); 
    178                  error_return = -ENODEV; 
    179                  goto END; 
    180         } 
    181         printk(KERN_INFO "i2c-piix4.o: Found %s device\n", num->name); 
     143 
     144        /* match up the function */ 
     145        if (PCI_FUNC(PIIX4_dev->devfn) != id->driver_data) 
     146                return -ENODEV; 
     147 
     148        printk(KERN_INFO "Found %s device\n", PIIX4_dev->name); 
    182149 
    183150#ifdef CONFIG_X86 
     
    480447}; 
    481448 
    482  
    483  
    484449static struct pci_device_id piix4_ids[] __devinitdata = { 
     450        { 
     451                .vendor =       PCI_VENDOR_ID_INTEL, 
     452                .device =       PCI_DEVICE_ID_INTEL_82371AB_3, 
     453                .subvendor =    PCI_ANY_ID, 
     454                .subdevice =    PCI_ANY_ID, 
     455                .driver_data =  3 
     456        }, 
     457        { 
     458                .vendor =       PCI_VENDOR_ID_SERVERWORKS, 
     459                .device =       PCI_DEVICE_ID_SERVERWORKS_OSB4, 
     460                .subvendor =    PCI_ANY_ID, 
     461                .subdevice =    PCI_ANY_ID, 
     462                .driver_data =  0, 
     463        }, 
     464        { 
     465                .vendor =       PCI_VENDOR_ID_SERVERWORKS, 
     466                .device =       PCI_DEVICE_ID_SERVERWORKS_CSB5, 
     467                .subvendor =    PCI_ANY_ID, 
     468                .subdevice =    PCI_ANY_ID, 
     469                .driver_data =  0, 
     470        }, 
     471        { 
     472                .vendor =       PCI_VENDOR_ID_INTEL, 
     473                .device =       PCI_DEVICE_ID_INTEL_82443MX_3, 
     474                .subvendor =    PCI_ANY_ID, 
     475                .subdevice =    PCI_ANY_ID, 
     476                .driver_data =  3, 
     477        }, 
     478        { 
     479                .vendor =       PCI_VENDOR_ID_EFAR, 
     480                .device =       PCI_DEVICE_ID_EFAR_SLC90E66_3, 
     481                .subvendor =    PCI_ANY_ID, 
     482                .subdevice =    PCI_ANY_ID, 
     483                .driver_data =  0, 
     484        }, 
    485485        { 0, } 
    486486}; 
     
    488488static int __devinit piix4_probe(struct pci_dev *dev, const struct pci_device_id *id) 
    489489{ 
     490        int retval; 
     491 
     492        retval = piix4_setup(dev, id); 
     493        if (retval) 
     494                return retval; 
    490495 
    491496        sprintf(piix4_adapter.name, "SMBus PIIX4 adapter at %04x", 
    492497                piix4_smba); 
    493498 
    494         i2c_add_adapter(&piix4_adapter); 
     499        retval = i2c_add_adapter(&piix4_adapter); 
     500 
     501        return retval; 
    495502} 
    496503 
     
    521528} 
    522529 
    523  
    524  
    525530MODULE_AUTHOR 
    526531    ("Frodo Looijaard <frodol@dds.nl> and Philip Edelbrock <phil@netroedge.com>");