Changeset 1011

Show
Ignore:
Timestamp:
02/03/01 21:48:43 (13 years ago)
Author:
mds
Message:

PCI chip detection cleanup.

Location:
lm-sensors/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/CHANGES

    r1010 r1011  
    2222  File doc/chips/via686a: Claim support for 686b. 
    2323  File sensors.conf.eg: Adjust as99127f -12V calculation 
     24  Module i2c-i801: Chip detection cleanup 
    2425  Module lm78: Recognize chipid=0x20 
    2526  Module lm87: Fix in0, in1 (2.5V and Vccp1) calculations 
  • lm-sensors/trunk/kernel/busses/i2c-i801.c

    r990 r1011  
    22    i801.c - Part of lm_sensors, Linux kernel modules for hardware 
    33              monitoring 
    4     Copyright (c) 1998, 1999  Frodo Looijaard <frodol@dds.nl>, 
     4    Copyright (c) 1998 - 2001  Frodo Looijaard <frodol@dds.nl>, 
    55    Philip Edelbrock <phil@netroedge.com>, and Mark D. Studebaker 
    66    <mdsxyz123@yahoo.com> 
     
    5151#define PCI_DEVICE_ID_INTEL_82801BA_3   0x2443 
    5252#endif 
     53 
     54static int supported[] = {PCI_DEVICE_ID_INTEL_82801AA_3, 
     55                          PCI_DEVICE_ID_INTEL_82801AB_3, 
     56                          PCI_DEVICE_ID_INTEL_82801BA_3, 
     57                          0 }; 
    5358 
    5459/* I801 SMBus address offsets */ 
     
    159164{ 
    160165        int error_return = 0; 
     166        int *num = supported; 
    161167        unsigned char temp; 
    162168 
     
    168174        } 
    169175 
    170         /* Look for the I801, function 3 */ 
    171         /* Have to check for both the 82801AA and 82801AB */ 
     176        /* Look for each chip */ 
    172177        /* Note: we keep on searching until we have found 'function 3' */ 
    173178        I801_dev = NULL; 
    174         do 
    175                 I801_dev = pci_find_device(PCI_VENDOR_ID_INTEL, 
    176                                            PCI_DEVICE_ID_INTEL_82801AA_3, 
    177                                            I801_dev); 
    178         while (I801_dev && (PCI_FUNC(I801_dev->devfn) != 3)); 
    179         if (I801_dev == NULL) { 
    180                 do 
    181                         I801_dev = pci_find_device(PCI_VENDOR_ID_INTEL, 
    182                                            PCI_DEVICE_ID_INTEL_82801AB_3, 
    183                                            I801_dev); 
    184                 while (I801_dev && (PCI_FUNC(I801_dev->devfn) != 3)); 
    185         } 
    186         if (I801_dev == NULL) { 
    187                 do 
    188                         I801_dev = pci_find_device(PCI_VENDOR_ID_INTEL, 
    189                                            PCI_DEVICE_ID_INTEL_82801BA_3, 
    190                                            I801_dev); 
    191                 while (I801_dev && (PCI_FUNC(I801_dev->devfn) != 3)); 
    192         } 
     179        do { 
     180                if((I801_dev = pci_find_device(PCI_VENDOR_ID_INTEL, 
     181                                              *num, I801_dev))) { 
     182                        if(PCI_FUNC(I801_dev->devfn) != 3) 
     183                                continue; 
     184                        break; 
     185                } 
     186                num++; 
     187        } while (*num != 0); 
     188 
    193189        if (I801_dev == NULL) { 
    194190                printk