Changeset 1150

Show
Ignore:
Timestamp:
07/30/01 00:48:15 (13 years ago)
Author:
mds
Message:

Add a "blacklist" to the 5595 drivers so that they refuse to load

when encountering a long list of unsupported chips.
All these chips have the same 1039/0008 ID as the 5595 but are
incompatible.

Location:
lm-sensors/trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/CHANGES

    r1147 r1150  
    2626  Module i2c-ali15x3: Allow force_addr=0xaddr; enable if not enabled. 
    2727  Module i2c-i801: Fix 82801BA detection broken by kernel 2.4.6 
     28  Module i2c-sis5595: Recognize unsupported chips and refuse to load 
    2829  Module adm1025: Fixed temp2 min/max writes 
    2930  Module ds1621: Add 12-bit precision mode 
    3031  Module it87: Enable all alarms, add in8 support, add sensor type selection 
     32  Module sis5595: Recognize unsupported chips and refuse to load 
    3133  Module w83781d: Fix fan speed for as99127f (broken by 2.6.0) 
    3234  Program sensors: it87 updates 
  • lm-sensors/trunk/kernel/busses/i2c-sis5595.c

    r1077 r1150  
    2121 
    2222/* Note: we assume there can only be one SIS5595 with one SMBus interface */ 
     23 
     24/* 
     25   Note: all have mfr. ID 0x1039. 
     26   SUPPORTED            PCI ID           
     27        5595            0008 
     28 
     29   Note: these chips contain a 0008 device which is incompatible with the 
     30         5595. We recognize these by the presence of the listed 
     31         "blacklist" PCI ID and refuse to load. 
     32 
     33   NOT SUPPORTED        PCI ID          BLACKLIST PCI ID         
     34         540            0008            0540 
     35         550            0008            0550 
     36        5513            0008            5511 
     37        5581            0008            5597 
     38        5582            0008            5597 
     39        5597            0008            5597 
     40        5598            0008            5597/5598 
     41         630            0008            0630 
     42         730            0008            0730 
     43*/ 
    2344 
    2445/* TO DO:  
     
    3960 
    4061#include <linux/init.h> 
     62 
     63#ifndef PCI_DEVICE_ID_SI_540 
     64#define PCI_DEVICE_ID_SI_540            0x0540 
     65#endif 
     66#ifndef PCI_DEVICE_ID_SI_550 
     67#define PCI_DEVICE_ID_SI_550            0x0550 
     68#endif 
     69#ifndef PCI_DEVICE_ID_SI_630 
     70#define PCI_DEVICE_ID_SI_630            0x0630 
     71#endif 
     72#ifndef PCI_DEVICE_ID_SI_730 
     73#define PCI_DEVICE_ID_SI_730            0x0730 
     74#endif 
     75#ifndef PCI_DEVICE_ID_SI_5598 
     76#define PCI_DEVICE_ID_SI_5598           0x5598 
     77#endif 
     78 
     79static int blacklist[] = { 
     80                        PCI_DEVICE_ID_SI_540, 
     81                        PCI_DEVICE_ID_SI_550, 
     82                        PCI_DEVICE_ID_SI_630, 
     83                        PCI_DEVICE_ID_SI_730, 
     84                        PCI_DEVICE_ID_SI_5511, /* 5513 chip has the 0008 device but 
     85                                                  that ID shows up in other chips so we 
     86                                                  use the 5511 ID for recognition */ 
     87                        PCI_DEVICE_ID_SI_5597, 
     88                        PCI_DEVICE_ID_SI_5598, 
     89                          0 }; 
    4190 
    4291/* Length of ISA address segment */ 
     
    153202        u8 val; 
    154203        struct pci_dev *SIS5595_dev; 
     204        int *i; 
    155205 
    156206        /* First check whether we can access PCI at all */ 
     
    167217                printk("i2c-sis5595.o: Error: Can't detect SIS5595!\n"); 
    168218                return -ENODEV; 
     219        } 
     220 
     221        /* Look for imposters */ 
     222        for(i = blacklist; *i != 0; i++) { 
     223                if (pci_find_device(PCI_VENDOR_ID_SI, *i, NULL)) { 
     224                        printk("i2c-sis5595.o: Error: Looked for SIS5595 but found unsupported device %.4X\n", *i); 
     225                        return -ENODEV; 
     226                } 
    169227        } 
    170228 
  • lm-sensors/trunk/kernel/chips/sis5595.c

    r1101 r1150  
    2727        1               1039/0008       01 
    2828        2               1039/0008       C0 
     29 
     30   Note: these chips contain a 0008 device which is incompatible with the 
     31         5595. We recognize these by the presence of the listed 
     32         "blacklist" PCI ID and refuse to load. 
     33 
     34   NOT SUPPORTED        PCI ID          BLACKLIST PCI ID         
     35         540            0008            0540 
     36         550            0008            0550 
     37        5513            0008            5511 
     38        5581            0008            5597 
     39        5582            0008            5597 
     40        5597            0008            5597 
     41        5598            0008            5597/5598 
     42         630            0008            0630 
     43         730            0008            0730 
    2944*/ 
    3045 
     
    7287SENSORS_INSMOD_1(sis5595); 
    7388 
     89#ifndef PCI_DEVICE_ID_SI_540 
     90#define PCI_DEVICE_ID_SI_540            0x0540 
     91#endif 
     92#ifndef PCI_DEVICE_ID_SI_550 
     93#define PCI_DEVICE_ID_SI_550            0x0550 
     94#endif 
     95#ifndef PCI_DEVICE_ID_SI_630 
     96#define PCI_DEVICE_ID_SI_630            0x0630 
     97#endif 
     98#ifndef PCI_DEVICE_ID_SI_730 
     99#define PCI_DEVICE_ID_SI_730            0x0730 
     100#endif 
     101#ifndef PCI_DEVICE_ID_SI_5598 
     102#define PCI_DEVICE_ID_SI_5598           0x5598 
     103#endif 
     104 
     105static int blacklist[] = { 
     106                        PCI_DEVICE_ID_SI_540, 
     107                        PCI_DEVICE_ID_SI_550, 
     108                        PCI_DEVICE_ID_SI_630, 
     109                        PCI_DEVICE_ID_SI_730, 
     110                        PCI_DEVICE_ID_SI_5511, /* 5513 chip has the 0008 device but 
     111                                                  that ID shows up in other chips so we 
     112                                                  use the 5511 ID for recognition */ 
     113                        PCI_DEVICE_ID_SI_5597, 
     114                        PCI_DEVICE_ID_SI_5598, 
     115                          0 }; 
    74116/* 
    75117   SiS southbridge has a LM78-like chip integrated on the same IC. 
     
    312354{ 
    313355        u16 val; 
     356        int *i; 
    314357 
    315358        if (!pci_present()) 
     
    321364                return -ENODEV; 
    322365 
     366        /* Look for imposters */ 
     367        for(i = blacklist; *i != 0; i++) { 
     368                if (pci_find_device(PCI_VENDOR_ID_SI, *i, NULL)) { 
     369                        printk("sis5595.o: Error: Looked for SIS5595 but found unsupported device %.4X\n", *i); 
     370                        return -ENODEV; 
     371                } 
     372        } 
    323373 
    324374        if (PCIBIOS_SUCCESSFUL !=