Changeset 5457

Show
Ignore:
Timestamp:
11/29/08 23:28:05 (4 years ago)
Author:
khali
Message:

Reindent @chip_ids.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/branches/lm-sensors-3.0.0/prog/detect/sensors-detect

    r5456 r5457  
    457457#      open file descriptor to access the I2C bus, and the I2C address. 
    458458@chip_ids = ( 
    459      { 
    460        name => "Myson MTP008", 
    461        driver => "mtp008", 
    462        i2c_addrs => [0x2c..0x2e], 
    463        i2c_detect => sub { mtp008_detect(@_); }, 
    464      }, 
    465      { 
    466        name => "National Semiconductor LM78", 
    467        driver => "lm78", 
    468        i2c_addrs => [0x28..0x2f], 
    469        i2c_detect => sub { lm78_detect(@_, 0); }, 
    470        isa_addrs => [0x290], 
    471        isa_detect => sub { lm78_isa_detect(@_, 0); }, 
    472        alias_detect => sub { winbond_alias_detect(@_, 0x2b, 0x3d); }, 
    473      }, 
    474      { 
    475        name => "National Semiconductor LM79", 
    476        driver => "lm78", 
    477        i2c_addrs => [0x28..0x2f], 
    478        i2c_detect => sub { lm78_detect(@_, 2); }, 
    479        isa_addrs => [0x290], 
    480        isa_detect => sub { lm78_isa_detect(@_, 2); }, 
    481        alias_detect => sub { winbond_alias_detect(@_, 0x2b, 0x3d); }, 
    482      }, 
    483      { 
    484        name => "National Semiconductor LM75", 
    485        driver => "lm75", 
    486        i2c_addrs => [0x48..0x4f], 
    487        i2c_detect => sub { lm75_detect(@_, 0); }, 
    488      }, 
    489      { 
    490        name => "Dallas Semiconductor DS75", 
    491        driver => "lm75", 
    492        i2c_addrs => [0x48..0x4f], 
    493        i2c_detect => sub { lm75_detect(@_, 1); }, 
    494      }, 
    495      { 
    496        name => "National Semiconductor LM77", 
    497        driver => "lm77", 
    498        i2c_addrs => [0x48..0x4b], 
    499        i2c_detect => sub { lm77_detect(@_); }, 
    500      }, 
    501      { 
    502        name => "National Semiconductor LM80", 
    503        driver => "lm80", 
    504        i2c_addrs => [0x28..0x2f], 
    505        i2c_detect => sub { lm80_detect(@_); }, 
    506      }, 
    507      { 
    508        name => "National Semiconductor LM85", 
    509        driver => "lm85", 
    510        i2c_addrs => [0x2c..0x2e], 
    511        i2c_detect => sub { lm85_detect(@_, 0); }, 
    512      }, 
    513      { 
    514        name => "National Semiconductor LM96000 or PC8374L", 
    515        driver => "lm85", 
    516        i2c_addrs => [0x2c..0x2e], 
    517        i2c_detect => sub { lm85_detect(@_, 1); }, 
    518      }, 
    519      { 
    520        name => "Analog Devices ADM1027", 
    521        driver => "lm85", 
    522        i2c_addrs => [0x2c..0x2e], 
    523        i2c_detect => sub { lm85_detect(@_, 2); }, 
    524      }, 
    525      { 
    526        name => "Analog Devices ADT7460 or ADT7463", 
    527        driver => "lm85", 
    528        i2c_addrs => [0x2c..0x2e], 
    529        i2c_detect => sub { lm85_detect(@_, 3); }, 
    530      }, 
    531      { 
    532        name => "SMSC EMC6D100 or EMC6D101", 
    533        driver => "lm85", 
    534        i2c_addrs => [0x2c..0x2e], 
    535        i2c_detect => sub { lm85_detect(@_, 4); }, 
    536      }, 
    537      { 
    538        name => "SMSC EMC6D102", 
    539        driver => "lm85", 
    540        i2c_addrs => [0x2c..0x2e], 
    541        i2c_detect => sub { lm85_detect(@_, 5); }, 
    542      }, 
    543      { 
    544        name => "SMSC EMC6D103", 
    545        driver => "lm85", 
    546        i2c_addrs => [0x2c..0x2e], 
    547        i2c_detect => sub { lm85_detect(@_, 6); }, 
    548      }, 
    549      { 
    550        name => "Analog Devices ADT7462", 
    551        driver => "adt7462", 
    552        i2c_addrs => [0x5c, 0x58], 
    553        i2c_detect => sub { adt7467_detect(@_, 2); }, 
    554      }, 
    555      { 
    556        name => "Analog Devices ADT7466", 
    557        driver => "to-be-written", 
    558        i2c_addrs => [0x4c], 
    559        i2c_detect => sub { adt7467_detect(@_, 3); }, 
    560      }, 
    561      { 
    562        name => "Analog Devices ADT7467 or ADT7468", 
    563        driver => "to-be-written", 
    564        i2c_addrs => [0x2e], 
    565        i2c_detect => sub { adt7467_detect(@_, 0); }, 
    566      }, 
    567      { 
    568        name => "Analog Devices ADT7470", 
    569        driver => "adt7470", 
    570        i2c_addrs => [0x2c, 0x2e, 0x2f], 
    571        i2c_detect => sub { adt7467_detect(@_, 4); }, 
    572      }, 
    573      { 
    574        name => "Analog Devices ADT7473", 
    575        driver => "adt7473", 
    576        i2c_addrs => [0x2e], 
    577        i2c_detect => sub { adt7473_detect(@_, 0); }, 
    578      }, 
    579      { 
    580        name => "Analog Devices ADT7475", 
    581        driver => "to-be-written", 
    582        i2c_addrs => [0x2e], 
    583        i2c_detect => sub { adt7473_detect(@_, 1); }, 
    584      }, 
    585      { 
    586        name => "Analog Devices ADT7476", 
    587        driver => "to-be-written", 
    588        i2c_addrs => [0x2c..0x2e], 
    589        i2c_detect => sub { adt7467_detect(@_, 1); }, 
    590      }, 
    591      { 
    592        name => "Andigilog aSC7511", 
    593        driver => "to-be-written", 
    594        i2c_addrs => [0x4c], 
    595        i2c_detect => sub { andigilog_aSC7511_detect(@_); }, 
    596      }, 
    597      { 
    598        name => "Andigilog aSC7512", 
    599        driver => "to-be-written", 
    600        i2c_addrs => [0x58], 
    601        i2c_detect => sub { andigilog_detect(@_, 0); }, 
    602      }, 
    603      { 
    604        name => "Andigilog aSC7611", 
    605        driver => "to-be-written", 
    606        i2c_addrs => [0x2c, 0x2d, 0x2e], 
    607        i2c_detect => sub { andigilog_detect(@_, 1); }, 
    608      }, 
    609      { 
    610        name => "Andigilog aSC7621", 
    611        driver => "to-be-written", 
    612        i2c_addrs => [0x2c, 0x2d, 0x2e], 
    613        i2c_detect => sub { andigilog_detect(@_, 2); }, 
    614      }, 
    615      { 
    616        name => "National Semiconductor LM87", 
    617        driver => "lm87", 
    618        i2c_addrs => [0x2c..0x2e], 
    619        i2c_detect => sub { lm87_detect(@_, 0); }, 
    620      }, 
    621      { 
    622        name => "Analog Devices ADM1024", 
    623        driver => "lm87", 
    624        i2c_addrs => [0x2c..0x2e], 
    625        i2c_detect => sub { lm87_detect(@_, 1); }, 
    626      }, 
    627      { 
    628        name => "National Semiconductor LM93", 
    629        driver => "lm93", 
    630        i2c_addrs => [0x2c..0x2e], 
    631        i2c_detect => sub { lm93_detect(@_); }, 
    632      }, 
    633      { 
    634        name => "Winbond W83781D", 
    635        driver => "w83781d", 
    636        i2c_detect => sub { w83781d_detect(@_, 0); }, 
    637        i2c_addrs => [0x28..0x2f], 
    638        isa_addrs => [0x290], 
    639        isa_detect => sub { w83781d_isa_detect(@_, 0); }, 
    640        alias_detect => sub { winbond_alias_detect(@_, 0x2b, 0x3d); }, 
    641      }, 
    642      { 
    643        name => "Winbond W83782D", 
    644        driver => "w83781d", 
    645        i2c_addrs => [0x28..0x2f], 
    646        i2c_detect => sub { w83781d_detect(@_, 1); }, 
    647        isa_addrs => [0x290], 
    648        isa_detect => sub { w83781d_isa_detect(@_, 1); }, 
    649        alias_detect => sub { winbond_alias_detect(@_, 0x2b, 0x3d); }, 
    650      }, 
    651      { 
    652        name => "Winbond W83783S", 
    653        driver => "w83781d", 
    654        i2c_addrs => [0x2d], 
    655        i2c_detect => sub { w83781d_detect(@_, 2); }, 
    656      }, 
    657      { 
    658        name => "Winbond W83791D", 
    659        driver => "w83791d", 
    660        i2c_addrs => [0x2c..0x2f], 
    661        i2c_detect => sub { w83781d_detect(@_, 7); }, 
    662      }, 
    663      { 
    664        name => "Winbond W83792D", 
    665        driver => "w83792d", 
    666        i2c_addrs => [0x2c..0x2f], 
    667        i2c_detect => sub { w83781d_detect(@_, 8); }, 
    668      }, 
    669      { 
    670        name => "Winbond W83793R/G", 
    671        driver => "w83793", 
    672        i2c_addrs => [0x2c..0x2f], 
    673        i2c_detect => sub { w83793_detect(@_); }, 
    674      }, 
    675      { 
    676        name => "Winbond W83791SD", 
    677        driver => "not-a-sensor", 
    678        i2c_addrs => [0x2c..0x2f], 
    679        i2c_detect => sub { w83791sd_detect(@_); }, 
    680      }, 
    681      { 
    682        name => "Winbond W83627HF", 
    683        driver => "use-isa-instead", 
    684        i2c_addrs => [0x28..0x2f], 
    685        i2c_detect => sub { w83781d_detect(@_, 3); }, 
    686      }, 
    687      { 
    688        name => "Winbond W83627EHF", 
    689        driver => "use-isa-instead", 
    690        i2c_addrs => [0x28..0x2f], 
    691        i2c_detect => sub { w83781d_detect(@_, 9); }, 
    692      }, 
    693      { 
    694        name => "Winbond W83627DHG", 
    695        driver => "use-isa-instead", 
    696        i2c_addrs => [0x28..0x2f], 
    697        i2c_detect => sub { w83781d_detect(@_, 10); }, 
    698      }, 
    699      { 
    700        name => "Asus AS99127F (rev.1)", 
    701        driver => "w83781d", 
    702        i2c_addrs => [0x28..0x2f], 
    703        i2c_detect => sub { w83781d_detect(@_, 4); }, 
    704      }, 
    705      { 
    706        name => "Asus AS99127F (rev.2)", 
    707        driver => "w83781d", 
    708        i2c_addrs => [0x28..0x2f], 
    709        i2c_detect => sub { w83781d_detect(@_, 5); }, 
    710      }, 
    711      { 
    712        name => "Asus ASB100 Bach", 
    713        driver => "asb100", 
    714        i2c_addrs => [0x28..0x2f], 
    715        i2c_detect => sub { w83781d_detect(@_, 6); }, 
    716      }, 
    717      { 
    718        name => "Asus Mozart-2", 
    719        driver => "to-be-written", 
    720        i2c_addrs => [0x77], 
    721        i2c_detect => sub { mozart_detect(@_); }, 
    722      }, 
    723      { 
    724        name => "Winbond W83L784R/AR/G", 
    725        driver => "to-be-written", 
    726        i2c_addrs => [0x2d], 
    727        i2c_detect => sub { w83l784r_detect(@_, 0); }, 
    728      }, 
    729      { 
    730        name => "Winbond W83L785R/G", 
    731        driver => "to-be-written", 
    732        i2c_addrs => [0x2d], 
    733        i2c_detect => sub { w83l784r_detect(@_, 1); }, 
    734      }, 
    735      { 
    736        name => "Winbond W83L786NR/NG/R/G", 
    737        driver => "w83l786ng", 
    738        i2c_addrs => [0x2e, 0x2f], 
    739        i2c_detect => sub { w83l784r_detect(@_, 2); }, 
    740      }, 
    741      { 
    742        name => "Winbond W83L785TS-S", 
    743        driver => "w83l785ts", 
    744        i2c_addrs => [0x2e], 
    745        i2c_detect => sub { w83l784r_detect(@_, 3); }, 
    746      }, 
    747      { 
    748        name => "Genesys Logic GL518SM", 
    749        driver => "gl518sm", 
    750        i2c_addrs => [0x2c, 0x2d], 
    751        i2c_detect => sub { gl518sm_detect(@_, 0); }, 
    752      }, 
    753      { 
    754        name => "Genesys Logic GL520SM", 
    755        driver => "gl520sm", 
    756        i2c_addrs => [0x2c, 0x2d], 
    757        i2c_detect => sub { gl518sm_detect(@_, 1); }, 
    758      }, 
    759      { 
    760        name => "Genesys Logic GL525SM", 
    761        driver => "to-be-written", 
    762        i2c_addrs => [0x2d], 
    763        i2c_detect => sub { gl525sm_detect(@_); }, 
    764      }, 
    765      { 
    766        name => "Analog Devices ADM9240", 
    767        driver => "adm9240", 
    768        i2c_addrs => [0x2c..0x2f], 
    769        i2c_detect => sub { adm9240_detect(@_, 0); }, 
    770      }, 
    771      { 
    772        name => "Dallas Semiconductor DS1621/DS1631", 
    773        driver => "ds1621", 
    774        i2c_addrs => [0x48..0x4f], 
    775        i2c_detect => sub { ds1621_detect(@_); }, 
    776      }, 
    777      { 
    778        name => "Dallas Semiconductor DS1780", 
    779        driver => "adm9240", 
    780        i2c_addrs => [0x2c..0x2f], 
    781        i2c_detect => sub { adm9240_detect(@_, 1); }, 
    782      }, 
    783      { 
    784        name => "National Semiconductor LM81", 
    785        driver => "adm9240", 
    786        i2c_addrs => [0x2c..0x2f], 
    787        i2c_detect => sub { adm9240_detect(@_, 2); }, 
    788      }, 
    789      { 
    790        name => "Analog Devices ADM1026", 
    791        driver => "adm1026", 
    792        i2c_addrs => [0x2c, 0x2d, 0x2e], 
    793        i2c_detect => sub { adm1026_detect(@_); }, 
    794      }, 
    795      { 
    796        name => "Analog Devices ADM1025", 
    797        driver => "adm1025", 
    798        i2c_addrs => [0x2c..0x2e], 
    799        i2c_detect => sub { adm1025_detect(@_, 0); }, 
    800      }, 
    801      { 
    802        name => "Philips NE1619", 
    803        driver => "adm1025", 
    804        i2c_addrs => [0x2c..0x2d], 
    805        i2c_detect => sub { adm1025_detect(@_, 1); }, 
    806      }, 
    807      { 
    808        name => "Analog Devices ADM1021", 
    809        driver => "adm1021", 
    810        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    811        i2c_detect => sub { adm1021_detect(@_, 0); }, 
    812      }, 
    813      { 
    814        name => "Analog Devices ADM1021A/ADM1023", 
    815        driver => "adm1021", 
    816        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    817        i2c_detect => sub { adm1021_detect(@_, 1); }, 
    818      }, 
    819      { 
    820        name => "Maxim MAX1617", 
    821        driver => "adm1021", 
    822        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    823        i2c_detect => sub { adm1021_detect(@_, 2); }, 
    824      }, 
    825      { 
    826        name => "Maxim MAX1617A", 
    827        driver => "adm1021", 
    828        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    829        i2c_detect => sub { adm1021_detect(@_, 3); }, 
    830      }, 
    831      { 
    832        name => "Maxim MAX1668", 
    833        driver => "max1668", 
    834        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    835        i2c_detect => sub { max1668_detect(@_, 0); }, 
    836      }, 
    837      { 
    838        name => "Maxim MAX1805", 
    839        driver => "max1668", 
    840        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    841        i2c_detect => sub { max1668_detect(@_, 1); }, 
    842      }, 
    843      { 
    844        name => "Maxim MAX1989", 
    845        driver => "max1668", 
    846        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    847        i2c_detect => sub { max1668_detect(@_, 2); }, 
    848      }, 
    849      { 
    850        name => "Maxim MAX6650/MAX6651", 
    851        driver => "max6650", 
    852        i2c_addrs => [0x1b, 0x1f, 0x48, 0x4b], 
    853        i2c_detect => sub { max6650_detect(@_); }, 
    854      }, 
    855      { 
    856        name => "Maxim MAX6655/MAX6656", 
    857        driver => "max6655", 
    858        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    859        i2c_detect => sub { max6655_detect(@_); }, 
    860      }, 
    861      { 
    862        name => "TI THMC10", 
    863        driver => "adm1021", 
    864        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    865        i2c_detect => sub { adm1021_detect(@_, 4); }, 
    866      }, 
    867      { 
    868        name => "National Semiconductor LM84", 
    869        driver => "adm1021", 
    870        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    871        i2c_detect => sub { adm1021_detect(@_, 5); }, 
    872      }, 
    873      { 
    874        name => "Genesys Logic GL523SM", 
    875        driver => "adm1021", 
    876        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    877        i2c_detect => sub { adm1021_detect(@_, 6); }, 
    878      }, 
    879      { 
    880        name => "Onsemi MC1066", 
    881        driver => "adm1021", 
    882        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    883        i2c_detect => sub { adm1021_detect(@_, 7); }, 
    884      }, 
    885      { 
    886        name => "Maxim MAX1618", 
    887        driver => "max1619", 
    888        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    889        i2c_detect => sub { max1619_detect(@_, 1); }, 
    890      }, 
    891      { 
    892        name => "Maxim MAX1619", 
    893        driver => "max1619", 
    894        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    895        i2c_detect => sub { max1619_detect(@_, 0); }, 
    896      }, 
    897      { 
    898        name => "National Semiconductor LM82/LM83", 
    899        driver => "lm83", 
    900        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    901        i2c_detect => sub { lm83_detect(@_); }, 
    902      }, 
    903      { 
    904        name => "National Semiconductor LM90", 
    905        driver => "lm90", 
    906        i2c_addrs => [0x4c], 
    907        i2c_detect => sub { lm90_detect(@_, 0); }, 
    908      }, 
    909      { 
    910        name => "National Semiconductor LM89/LM99", 
    911        driver => "lm90", 
    912        i2c_addrs => [0x4c..0x4d], 
    913        i2c_detect => sub { lm90_detect(@_, 1); }, 
    914      }, 
    915      { 
    916        name => "National Semiconductor LM86", 
    917        driver => "lm90", 
    918        i2c_addrs => [0x4c], 
    919        i2c_detect => sub { lm90_detect(@_, 2); }, 
    920      }, 
    921      { 
    922        name => "Analog Devices ADM1032", 
    923        driver => "lm90", 
    924        i2c_addrs => [0x4c..0x4d], 
    925        i2c_detect => sub { lm90_detect(@_, 3); }, 
    926      }, 
    927      { 
    928        name => "Maxim MAX6654/MAX6690", 
    929        driver => "to-be-written", # probably lm90 
    930        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    931        i2c_detect => sub { lm90_detect(@_, 4); }, 
    932      }, 
    933      { 
    934        name => "Maxim MAX6657/MAX6658/MAX6659", 
    935        driver => "lm90", 
    936        i2c_addrs => [0x4c], 
    937        i2c_detect => sub { max6657_detect(@_); }, 
    938      }, 
    939      { 
    940        name => "Maxim MAX6659", 
    941        driver => "lm90", 
    942        i2c_addrs => [0x4d..0x4e], # 0x4c is handled above 
    943        i2c_detect => sub { max6657_detect(@_); }, 
    944      }, 
    945      { 
    946        name => "Maxim MAX6646", 
    947        driver => "lm90", 
    948        i2c_addrs => [0x4d], 
    949        i2c_detect => sub { lm90_detect(@_, 6); }, 
    950      }, 
    951      { 
    952        name => "Maxim MAX6647", 
    953        driver => "lm90", 
    954        i2c_addrs => [0x4e], 
    955        i2c_detect => sub { lm90_detect(@_, 6); }, 
    956      }, 
    957      { 
    958        name => "Maxim MAX6648/MAX6649/MAX6692", 
    959        driver => "lm90", 
    960        i2c_addrs => [0x4c], 
    961        i2c_detect => sub { lm90_detect(@_, 6); }, 
    962      }, 
    963      { 
    964        name => "Maxim MAX6680/MAX6681", 
    965        driver => "lm90", 
    966        i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    967        i2c_detect => sub { lm90_detect(@_, 7); }, 
    968      }, 
    969      { 
    970        name => "Winbond W83L771W/G", 
    971        driver => "lm90", 
    972        i2c_addrs => [0x4c], 
    973        i2c_detect => sub { lm90_detect(@_, 8); }, 
    974      }, 
    975      { 
    976        name => "Texas Instruments TMP401", 
    977        driver => "tmp401", 
    978        i2c_addrs => [0x4c], 
    979        i2c_detect => sub { lm90_detect(@_, 9); }, 
    980      }, 
    981      { 
    982        name => "Texas Instruments TMP411", 
    983        driver => "to-be-written", 
    984        i2c_addrs => [0x4c..0x4e], 
    985        i2c_detect => sub { lm90_detect(@_, 10); }, 
    986      }, 
    987      { 
    988        name => "National Semiconductor LM95231", 
    989        driver => "to-be-written", 
    990        i2c_addrs => [0x2b, 0x19, 0x2a], 
    991        i2c_detect => sub { lm95231_detect(@_); }, 
    992      }, 
    993      { 
    994        name => "National Semiconductor LM63", 
    995        driver => "lm63", 
    996        i2c_addrs => [0x4c], 
    997        i2c_detect => sub { lm63_detect(@_, 1); }, 
    998      }, 
    999      { 
    1000        name => "National Semiconductor LM64", 
    1001        driver => "to-be-written", # lm63 
    1002        i2c_addrs => [0x18, 0x4e], 
    1003        i2c_detect => sub { lm63_detect(@_, 3); }, 
    1004      }, 
    1005      { 
    1006        name => "Fintek F75363SG", 
    1007        driver => "lm63", # Not yet 
    1008        i2c_addrs => [0x4c], 
    1009        i2c_detect => sub { lm63_detect(@_, 2); }, 
    1010      }, 
    1011      { 
    1012        name => "National Semiconductor LM92", 
    1013        driver => "lm92", 
    1014        i2c_addrs => [0x48..0x4b], 
    1015        i2c_detect => sub { lm92_detect(@_, 0); }, 
    1016      }, 
    1017      { 
    1018        name => "National Semiconductor LM76", 
    1019        driver => "lm92", 
    1020        i2c_addrs => [0x48..0x4b], 
    1021        i2c_detect => sub { lm92_detect(@_, 1); }, 
    1022      }, 
    1023      { 
    1024        name => "Maxim MAX6633/MAX6634/MAX6635", 
    1025        driver => "lm92", 
    1026        i2c_addrs => [0x48..0x4f], # The MAX6633 can also use 0x40-0x47 but we 
    1027                                   # don't want to probe these addresses, it's 
    1028                                   # dangerous. 
    1029        i2c_detect => sub { lm92_detect(@_, 2); }, 
    1030      }, 
    1031      { 
    1032        name => "Analog Devices ADT7461", 
    1033        driver => "lm90", 
    1034        i2c_addrs => [0x4c..0x4d], 
    1035        i2c_detect => sub { lm90_detect(@_, 5); }, 
    1036      }, 
    1037      { 
    1038        name => "Analog Devices ADT7481", 
    1039        driver => "to-be-written", 
    1040        i2c_addrs => [0x4c, 0x4b], 
    1041        i2c_detect => sub { adt7481_detect(@_); }, 
    1042      }, 
    1043      { 
    1044        name => "Analog Devices ADM1029", 
    1045        driver => "adm1029", 
    1046        i2c_addrs => [0x28..0x2f], 
    1047        i2c_detect => sub { adm1029_detect(@_); }, 
    1048      }, 
    1049      { 
    1050        name => "Analog Devices ADM1030", 
    1051        driver => "adm1031", 
    1052        i2c_addrs => [0x2c..0x2e], 
    1053        i2c_detect => sub { adm1031_detect(@_, 0); }, 
    1054      }, 
    1055      { 
    1056        name => "Analog Devices ADM1031", 
    1057        driver => "adm1031", 
    1058        i2c_addrs => [0x2c..0x2e], 
    1059        i2c_detect => sub { adm1031_detect(@_, 1); }, 
    1060      }, 
    1061      { 
    1062        name => "Analog Devices ADM1033", 
    1063        driver => "to-be-written", 
    1064        i2c_addrs => [0x50..0x53], 
    1065        i2c_detect => sub { adm1034_detect(@_, 0); }, 
    1066      }, 
    1067      { 
    1068        name => "Analog Devices ADM1034", 
    1069        driver => "to-be-written", 
    1070        i2c_addrs => [0x50..0x53], 
    1071        i2c_detect => sub { adm1034_detect(@_, 1); }, 
    1072      }, 
    1073      { 
    1074        name => "Analog Devices ADM1022", 
    1075        driver => "thmc50", 
    1076        i2c_addrs => [0x2c..0x2e], 
    1077        i2c_detect => sub { adm1022_detect(@_, 0); }, 
    1078      }, 
    1079      { 
    1080        name => "Texas Instruments THMC50", 
    1081        driver => "thmc50", 
    1082        i2c_addrs => [0x2c..0x2e], 
    1083        i2c_detect => sub { adm1022_detect(@_, 1); }, 
    1084      }, 
    1085      { 
    1086        name => "Analog Devices ADM1028", 
    1087        driver => "thmc50", 
    1088        i2c_addrs => [0x2e], 
    1089        i2c_detect => sub { adm1022_detect(@_, 2); }, 
    1090      }, 
    1091      { 
    1092        name => "Texas Instruments THMC51", 
    1093        driver => "to-be-written", # thmc50 
    1094        i2c_addrs => [0x2e], # At least (no datasheet) 
    1095        i2c_detect => sub { adm1022_detect(@_, 3); }, 
    1096      }, 
    1097      { 
    1098        name => "VIA VT1211 (I2C)", 
    1099        driver => "use-isa-instead", 
    1100        i2c_addrs => [0x2d], 
    1101        i2c_detect => sub { vt1211_i2c_detect(@_); }, 
    1102      }, 
    1103      { 
    1104        name => "ITE IT8712F", 
    1105        driver => "it87", 
    1106        i2c_addrs => [0x28..0x2f], 
    1107        i2c_detect => sub { it8712_i2c_detect(@_); }, 
    1108      }, 
    1109      { 
    1110        name => "ITE IT8201R/IT8203R/IT8206R/IT8266R", 
    1111        driver => "not-a-sensor", 
    1112        i2c_addrs => [0x4e], 
    1113        i2c_detect => sub { ite_overclock_detect(@_); }, 
    1114      }, 
    1115      { 
    1116        name => "SPD EEPROM", 
    1117        driver => "not-a-sensor", 
    1118        # Can also live at 0x54-0x57, but we don't care: we only check 
    1119        # for SPD and EDID EEPROMs because some hardware monitoring chips 
    1120        # can live at 0x50-0x53. 
    1121        i2c_addrs => [0x50..0x53], 
    1122        i2c_detect => sub { eeprom_detect(@_); }, 
    1123      }, 
    1124      { 
    1125        name => "EDID EEPROM", 
    1126        driver => "not-a-sensor", 
    1127        i2c_addrs => [0x50..0x53], 
    1128        i2c_detect => sub { ddcmonitor_detect(@_); }, 
    1129      }, 
    1130      { 
    1131        name => "FSC Poseidon I", 
    1132        driver => sub { kernel_version_at_least(2, 6, 24) ? "fschmd" : "fscpos" }, 
    1133        i2c_addrs => [0x73], 
    1134        i2c_detect => sub { fsc_detect(@_, 0); }, 
    1135      }, 
    1136      { 
    1137        name => "FSC Poseidon II", 
    1138        driver => "to-be-written", 
    1139        i2c_addrs => [0x73], 
    1140        i2c_detect => sub { fsc_detect(@_, 1); }, 
    1141      }, 
    1142      { 
    1143        name => "FSC Scylla", 
    1144        driver => "fschmd", 
    1145        i2c_addrs => [0x73], 
    1146        i2c_detect => sub { fsc_detect(@_, 2); }, 
    1147      }, 
    1148      { 
    1149        name => "FSC Hermes", 
    1150        driver => sub { kernel_version_at_least(2, 6, 24) ? "fschmd" : "fscher" }, 
    1151        i2c_addrs => [0x73], 
    1152        i2c_detect => sub { fsc_detect(@_, 3); }, 
    1153      }, 
    1154      { 
    1155        name => "FSC Heimdal", 
    1156        driver => "fschmd", 
    1157        i2c_addrs => [0x73], 
    1158        i2c_detect => sub { fsc_detect(@_, 4); }, 
    1159      }, 
    1160      { 
    1161        name => "FSC Heracles", 
    1162        driver => "fschmd", 
    1163        i2c_addrs => [0x73], 
    1164        i2c_detect => sub { fsc_detect(@_, 5); }, 
    1165      }, 
    1166      { 
    1167        name => "ALi M5879", 
    1168        driver => "to-be-written", 
    1169        i2c_addrs => [0x2c..0x2d], 
    1170        i2c_detect => sub { m5879_detect(@_); }, 
    1171      }, 
    1172      { 
    1173        name => "SMSC LPC47M15x/192/292/997", 
    1174        driver => "smsc47m192", 
    1175        i2c_addrs => [0x2c..0x2d], 
    1176        i2c_detect => sub { smsc47m192_detect(@_); }, 
    1177      }, 
    1178      { 
    1179        name => "SMSC DME1737", 
    1180        driver => "dme1737", 
    1181        i2c_addrs => [0x2c..0x2e], 
    1182        i2c_detect => sub { dme1737_detect(@_, 1); }, 
    1183      }, 
    1184      { 
    1185        name => "SMSC SCH5027D-NW", 
    1186        driver => "dme1737", 
    1187        i2c_addrs => [0x2c..0x2e], 
    1188        i2c_detect => sub { dme1737_detect(@_, 2); }, 
    1189      }, 
    1190      { 
    1191        name => "Fintek F75111R/RG/N (GPIO)", 
    1192        driver => "not-a-sensor", 
    1193        i2c_addrs => [0x4e], # 0x37 not probed 
    1194        i2c_detect => sub { fintek_detect(@_, 1); }, 
    1195      }, 
    1196      { 
    1197        name => "Fintek F75121R/F75122R/RG (VID+GPIO)", 
    1198        driver => "to-be-written", 
    1199        i2c_addrs => [0x4e], # 0x37 not probed 
    1200        i2c_detect => sub { fintek_detect(@_, 2); }, 
    1201      }, 
    1202      { 
    1203        name => "Fintek F75373S/SG", 
    1204        driver => "f75375s", 
    1205        i2c_addrs => [0x2d..0x2e], 
    1206        i2c_detect => sub { fintek_detect(@_, 3); }, 
    1207      }, 
    1208      { 
    1209        name => "Fintek F75375S/SP", 
    1210        driver => "f75375s", 
    1211        i2c_addrs => [0x2d..0x2e], 
    1212        i2c_detect => sub { fintek_detect(@_, 4); }, 
    1213      }, 
    1214      { 
    1215        name => "Fintek F75387SG/RG", 
    1216        driver => "to-be-written", 
    1217        i2c_addrs => [0x2d..0x2e], 
    1218        i2c_detect => sub { fintek_detect(@_, 5); }, 
    1219      }, 
    1220      { 
    1221        name => "Fintek F75383S/M", 
    1222        driver => "to-be-written", 
    1223        i2c_addrs => [0x4c], 
    1224        i2c_detect => sub { fintek_detect(@_, 6); }, 
    1225      }, 
    1226      { 
    1227        name => "Fintek F75384S/M", 
    1228        driver => "to-be-written", 
    1229        i2c_addrs => [0x4d], 
    1230        i2c_detect => sub { fintek_detect(@_, 6); }, 
    1231      }, 
    1232      { 
    1233        name => "Fintek custom power control IC", 
    1234        driver => "to-be-written", 
    1235        i2c_addrs => [0x2f], 
    1236        i2c_detect => sub { fintek_detect(@_, 7); }, 
    1237      }, 
    1238      { 
    1239        name => "Smart Battery", 
    1240        driver => "sbs", # ACPI driver, not sure if it always works 
    1241        i2c_addrs => [0x0b], 
    1242        i2c_detect => sub { smartbatt_detect(@_); }, 
    1243      }, 
    1244      { 
    1245        name => "IPMI BMC KCS", 
    1246        driver => "ipmisensors", 
    1247        isa_addrs => [0x0ca0], 
    1248        isa_detect => sub { ipmi_detect(@_); }, 
    1249      }, 
    1250      { 
    1251        name => "IPMI BMC SMIC", 
    1252        driver => "ipmisensors", 
    1253        isa_addrs => [0x0ca8], 
    1254        isa_detect => sub { ipmi_detect(@_); }, 
    1255      }, 
     459        { 
     460                name => "Myson MTP008", 
     461                driver => "mtp008", 
     462                i2c_addrs => [0x2c..0x2e], 
     463                i2c_detect => sub { mtp008_detect(@_); }, 
     464        }, { 
     465                name => "National Semiconductor LM78", 
     466                driver => "lm78", 
     467                i2c_addrs => [0x28..0x2f], 
     468                i2c_detect => sub { lm78_detect(@_, 0); }, 
     469                isa_addrs => [0x290], 
     470                isa_detect => sub { lm78_isa_detect(@_, 0); }, 
     471                alias_detect => sub { winbond_alias_detect(@_, 0x2b, 0x3d); }, 
     472        }, { 
     473                name => "National Semiconductor LM79", 
     474                driver => "lm78", 
     475                i2c_addrs => [0x28..0x2f], 
     476                i2c_detect => sub { lm78_detect(@_, 2); }, 
     477                isa_addrs => [0x290], 
     478                isa_detect => sub { lm78_isa_detect(@_, 2); }, 
     479                alias_detect => sub { winbond_alias_detect(@_, 0x2b, 0x3d); }, 
     480        }, { 
     481                name => "National Semiconductor LM75", 
     482                driver => "lm75", 
     483                i2c_addrs => [0x48..0x4f], 
     484                i2c_detect => sub { lm75_detect(@_, 0); }, 
     485        }, { 
     486                name => "Dallas Semiconductor DS75", 
     487                driver => "lm75", 
     488                i2c_addrs => [0x48..0x4f], 
     489                i2c_detect => sub { lm75_detect(@_, 1); }, 
     490        }, { 
     491                name => "National Semiconductor LM77", 
     492                driver => "lm77", 
     493                i2c_addrs => [0x48..0x4b], 
     494                i2c_detect => sub { lm77_detect(@_); }, 
     495        }, { 
     496                name => "National Semiconductor LM80", 
     497                driver => "lm80", 
     498                i2c_addrs => [0x28..0x2f], 
     499                i2c_detect => sub { lm80_detect(@_); }, 
     500        }, { 
     501                name => "National Semiconductor LM85", 
     502                driver => "lm85", 
     503                i2c_addrs => [0x2c..0x2e], 
     504                i2c_detect => sub { lm85_detect(@_, 0); }, 
     505        }, { 
     506                name => "National Semiconductor LM96000 or PC8374L", 
     507                driver => "lm85", 
     508                i2c_addrs => [0x2c..0x2e], 
     509                i2c_detect => sub { lm85_detect(@_, 1); }, 
     510        }, { 
     511                name => "Analog Devices ADM1027", 
     512                driver => "lm85", 
     513                i2c_addrs => [0x2c..0x2e], 
     514                i2c_detect => sub { lm85_detect(@_, 2); }, 
     515        }, { 
     516                name => "Analog Devices ADT7460 or ADT7463", 
     517                driver => "lm85", 
     518                i2c_addrs => [0x2c..0x2e], 
     519                i2c_detect => sub { lm85_detect(@_, 3); }, 
     520        }, { 
     521                name => "SMSC EMC6D100 or EMC6D101", 
     522                driver => "lm85", 
     523                i2c_addrs => [0x2c..0x2e], 
     524                i2c_detect => sub { lm85_detect(@_, 4); }, 
     525        }, { 
     526                name => "SMSC EMC6D102", 
     527                driver => "lm85", 
     528                i2c_addrs => [0x2c..0x2e], 
     529                i2c_detect => sub { lm85_detect(@_, 5); }, 
     530        }, { 
     531                name => "SMSC EMC6D103", 
     532                driver => "lm85", 
     533                i2c_addrs => [0x2c..0x2e], 
     534                i2c_detect => sub { lm85_detect(@_, 6); }, 
     535        }, { 
     536                name => "Analog Devices ADT7462", 
     537                driver => "adt7462", 
     538                i2c_addrs => [0x5c, 0x58], 
     539                i2c_detect => sub { adt7467_detect(@_, 2); }, 
     540        }, { 
     541                name => "Analog Devices ADT7466", 
     542                driver => "to-be-written", 
     543                i2c_addrs => [0x4c], 
     544                i2c_detect => sub { adt7467_detect(@_, 3); }, 
     545        }, { 
     546                name => "Analog Devices ADT7467 or ADT7468", 
     547                driver => "to-be-written", 
     548                i2c_addrs => [0x2e], 
     549                i2c_detect => sub { adt7467_detect(@_, 0); }, 
     550        }, { 
     551                name => "Analog Devices ADT7470", 
     552                driver => "adt7470", 
     553                i2c_addrs => [0x2c, 0x2e, 0x2f], 
     554                i2c_detect => sub { adt7467_detect(@_, 4); }, 
     555        }, { 
     556                name => "Analog Devices ADT7473", 
     557                driver => "adt7473", 
     558                i2c_addrs => [0x2e], 
     559                i2c_detect => sub { adt7473_detect(@_, 0); }, 
     560        }, { 
     561                name => "Analog Devices ADT7475", 
     562                driver => "to-be-written", 
     563                i2c_addrs => [0x2e], 
     564                i2c_detect => sub { adt7473_detect(@_, 1); }, 
     565        }, { 
     566                name => "Analog Devices ADT7476", 
     567                driver => "to-be-written", 
     568                i2c_addrs => [0x2c..0x2e], 
     569                i2c_detect => sub { adt7467_detect(@_, 1); }, 
     570        }, { 
     571                name => "Andigilog aSC7511", 
     572                driver => "to-be-written", 
     573                i2c_addrs => [0x4c], 
     574                i2c_detect => sub { andigilog_aSC7511_detect(@_); }, 
     575        }, { 
     576                name => "Andigilog aSC7512", 
     577                driver => "to-be-written", 
     578                i2c_addrs => [0x58], 
     579                i2c_detect => sub { andigilog_detect(@_, 0); }, 
     580        }, { 
     581                name => "Andigilog aSC7611", 
     582                driver => "to-be-written", 
     583                i2c_addrs => [0x2c, 0x2d, 0x2e], 
     584                i2c_detect => sub { andigilog_detect(@_, 1); }, 
     585        }, { 
     586                name => "Andigilog aSC7621", 
     587                driver => "to-be-written", 
     588                i2c_addrs => [0x2c, 0x2d, 0x2e], 
     589                i2c_detect => sub { andigilog_detect(@_, 2); }, 
     590        }, { 
     591                name => "National Semiconductor LM87", 
     592                driver => "lm87", 
     593                i2c_addrs => [0x2c..0x2e], 
     594                i2c_detect => sub { lm87_detect(@_, 0); }, 
     595        }, { 
     596                name => "Analog Devices ADM1024", 
     597                driver => "lm87", 
     598                i2c_addrs => [0x2c..0x2e], 
     599                i2c_detect => sub { lm87_detect(@_, 1); }, 
     600        }, { 
     601                name => "National Semiconductor LM93", 
     602                driver => "lm93", 
     603                i2c_addrs => [0x2c..0x2e], 
     604                i2c_detect => sub { lm93_detect(@_); }, 
     605        }, { 
     606                name => "Winbond W83781D", 
     607                driver => "w83781d", 
     608                i2c_addrs => [0x28..0x2f], 
     609                i2c_detect => sub { w83781d_detect(@_, 0); }, 
     610                isa_addrs => [0x290], 
     611                isa_detect => sub { w83781d_isa_detect(@_, 0); }, 
     612                alias_detect => sub { winbond_alias_detect(@_, 0x2b, 0x3d); }, 
     613        }, { 
     614                name => "Winbond W83782D", 
     615                driver => "w83781d", 
     616                i2c_addrs => [0x28..0x2f], 
     617                i2c_detect => sub { w83781d_detect(@_, 1); }, 
     618                isa_addrs => [0x290], 
     619                isa_detect => sub { w83781d_isa_detect(@_, 1); }, 
     620                alias_detect => sub { winbond_alias_detect(@_, 0x2b, 0x3d); }, 
     621        }, { 
     622                name => "Winbond W83783S", 
     623                driver => "w83781d", 
     624                i2c_addrs => [0x2d], 
     625                i2c_detect => sub { w83781d_detect(@_, 2); }, 
     626        }, { 
     627                name => "Winbond W83791D", 
     628                driver => "w83791d", 
     629                i2c_addrs => [0x2c..0x2f], 
     630                i2c_detect => sub { w83781d_detect(@_, 7); }, 
     631        }, { 
     632                name => "Winbond W83792D", 
     633                driver => "w83792d", 
     634                i2c_addrs => [0x2c..0x2f], 
     635                i2c_detect => sub { w83781d_detect(@_, 8); }, 
     636        }, { 
     637                name => "Winbond W83793R/G", 
     638                driver => "w83793", 
     639                i2c_addrs => [0x2c..0x2f], 
     640                i2c_detect => sub { w83793_detect(@_); }, 
     641        }, { 
     642                name => "Winbond W83791SD", 
     643                driver => "not-a-sensor", 
     644                i2c_addrs => [0x2c..0x2f], 
     645                i2c_detect => sub { w83791sd_detect(@_); }, 
     646        }, { 
     647                name => "Winbond W83627HF", 
     648                driver => "use-isa-instead", 
     649                i2c_addrs => [0x28..0x2f], 
     650                i2c_detect => sub { w83781d_detect(@_, 3); }, 
     651        }, { 
     652                name => "Winbond W83627EHF", 
     653                driver => "use-isa-instead", 
     654                i2c_addrs => [0x28..0x2f], 
     655                i2c_detect => sub { w83781d_detect(@_, 9); }, 
     656        }, { 
     657                name => "Winbond W83627DHG", 
     658                driver => "use-isa-instead", 
     659                i2c_addrs => [0x28..0x2f], 
     660                i2c_detect => sub { w83781d_detect(@_, 10); }, 
     661        }, { 
     662                name => "Asus AS99127F (rev.1)", 
     663                driver => "w83781d", 
     664                i2c_addrs => [0x28..0x2f], 
     665                i2c_detect => sub { w83781d_detect(@_, 4); }, 
     666        }, { 
     667                name => "Asus AS99127F (rev.2)", 
     668                driver => "w83781d", 
     669                i2c_addrs => [0x28..0x2f], 
     670                i2c_detect => sub { w83781d_detect(@_, 5); }, 
     671        }, { 
     672                name => "Asus ASB100 Bach", 
     673                driver => "asb100", 
     674                i2c_addrs => [0x28..0x2f], 
     675                i2c_detect => sub { w83781d_detect(@_, 6); }, 
     676        }, { 
     677                name => "Asus Mozart-2", 
     678                driver => "to-be-written", 
     679                i2c_addrs => [0x77], 
     680                i2c_detect => sub { mozart_detect(@_); }, 
     681        }, { 
     682                name => "Winbond W83L784R/AR/G", 
     683                driver => "to-be-written", 
     684                i2c_addrs => [0x2d], 
     685                i2c_detect => sub { w83l784r_detect(@_, 0); }, 
     686        }, { 
     687                name => "Winbond W83L785R/G", 
     688                driver => "to-be-written", 
     689                i2c_addrs => [0x2d], 
     690                i2c_detect => sub { w83l784r_detect(@_, 1); }, 
     691        }, { 
     692                name => "Winbond W83L786NR/NG/R/G", 
     693                driver => "w83l786ng", 
     694                i2c_addrs => [0x2e, 0x2f], 
     695                i2c_detect => sub { w83l784r_detect(@_, 2); }, 
     696        }, { 
     697                name => "Winbond W83L785TS-S", 
     698                driver => "w83l785ts", 
     699                i2c_addrs => [0x2e], 
     700                i2c_detect => sub { w83l784r_detect(@_, 3); }, 
     701        }, { 
     702                name => "Genesys Logic GL518SM", 
     703                driver => "gl518sm", 
     704                i2c_addrs => [0x2c, 0x2d], 
     705                i2c_detect => sub { gl518sm_detect(@_, 0); }, 
     706        }, { 
     707                name => "Genesys Logic GL520SM", 
     708                driver => "gl520sm", 
     709                i2c_addrs => [0x2c, 0x2d], 
     710                i2c_detect => sub { gl518sm_detect(@_, 1); }, 
     711        }, { 
     712                name => "Genesys Logic GL525SM", 
     713                driver => "to-be-written", 
     714                i2c_addrs => [0x2d], 
     715                i2c_detect => sub { gl525sm_detect(@_); }, 
     716        }, { 
     717                name => "Analog Devices ADM9240", 
     718                driver => "adm9240", 
     719                i2c_addrs => [0x2c..0x2f], 
     720                i2c_detect => sub { adm9240_detect(@_, 0); }, 
     721        }, { 
     722                name => "Dallas Semiconductor DS1621/DS1631", 
     723                driver => "ds1621", 
     724                i2c_addrs => [0x48..0x4f], 
     725                i2c_detect => sub { ds1621_detect(@_); }, 
     726        }, { 
     727                name => "Dallas Semiconductor DS1780", 
     728                driver => "adm9240", 
     729                i2c_addrs => [0x2c..0x2f], 
     730                i2c_detect => sub { adm9240_detect(@_, 1); }, 
     731        }, { 
     732                name => "National Semiconductor LM81", 
     733                driver => "adm9240", 
     734                i2c_addrs => [0x2c..0x2f], 
     735                i2c_detect => sub { adm9240_detect(@_, 2); }, 
     736        }, { 
     737                name => "Analog Devices ADM1026", 
     738                driver => "adm1026", 
     739                i2c_addrs => [0x2c, 0x2d, 0x2e], 
     740                i2c_detect => sub { adm1026_detect(@_); }, 
     741        }, { 
     742                name => "Analog Devices ADM1025", 
     743                driver => "adm1025", 
     744                i2c_addrs => [0x2c..0x2e], 
     745                i2c_detect => sub { adm1025_detect(@_, 0); }, 
     746        }, { 
     747                name => "Philips NE1619", 
     748                driver => "adm1025", 
     749                i2c_addrs => [0x2c..0x2d], 
     750                i2c_detect => sub { adm1025_detect(@_, 1); }, 
     751        }, { 
     752                name => "Analog Devices ADM1021", 
     753                driver => "adm1021", 
     754                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     755                i2c_detect => sub { adm1021_detect(@_, 0); }, 
     756        }, { 
     757                name => "Analog Devices ADM1021A/ADM1023", 
     758                driver => "adm1021", 
     759                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     760                i2c_detect => sub { adm1021_detect(@_, 1); }, 
     761        }, { 
     762                name => "Maxim MAX1617", 
     763                driver => "adm1021", 
     764                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     765                i2c_detect => sub { adm1021_detect(@_, 2); }, 
     766        }, { 
     767                name => "Maxim MAX1617A", 
     768                driver => "adm1021", 
     769                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     770                i2c_detect => sub { adm1021_detect(@_, 3); }, 
     771        }, { 
     772                name => "Maxim MAX1668", 
     773                driver => "max1668", 
     774                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     775                i2c_detect => sub { max1668_detect(@_, 0); }, 
     776        }, { 
     777                name => "Maxim MAX1805", 
     778                driver => "max1668", 
     779                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     780                i2c_detect => sub { max1668_detect(@_, 1); }, 
     781        }, { 
     782                name => "Maxim MAX1989", 
     783                driver => "max1668", 
     784                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     785                i2c_detect => sub { max1668_detect(@_, 2); }, 
     786        }, { 
     787                name => "Maxim MAX6650/MAX6651", 
     788                driver => "max6650", 
     789                i2c_addrs => [0x1b, 0x1f, 0x48, 0x4b], 
     790                i2c_detect => sub { max6650_detect(@_); }, 
     791        }, { 
     792                name => "Maxim MAX6655/MAX6656", 
     793                driver => "max6655", 
     794                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     795                i2c_detect => sub { max6655_detect(@_); }, 
     796        }, { 
     797                name => "TI THMC10", 
     798                driver => "adm1021", 
     799                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     800                i2c_detect => sub { adm1021_detect(@_, 4); }, 
     801        }, { 
     802                name => "National Semiconductor LM84", 
     803                driver => "adm1021", 
     804                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     805                i2c_detect => sub { adm1021_detect(@_, 5); }, 
     806        }, { 
     807                name => "Genesys Logic GL523SM", 
     808                driver => "adm1021", 
     809                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     810                i2c_detect => sub { adm1021_detect(@_, 6); }, 
     811        }, { 
     812                name => "Onsemi MC1066", 
     813                driver => "adm1021", 
     814                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     815                i2c_detect => sub { adm1021_detect(@_, 7); }, 
     816        }, { 
     817                name => "Maxim MAX1618", 
     818                driver => "max1619", 
     819                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     820                i2c_detect => sub { max1619_detect(@_, 1); }, 
     821        }, { 
     822                name => "Maxim MAX1619", 
     823                driver => "max1619", 
     824                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     825                i2c_detect => sub { max1619_detect(@_, 0); }, 
     826        }, { 
     827                name => "National Semiconductor LM82/LM83", 
     828                driver => "lm83", 
     829                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     830                i2c_detect => sub { lm83_detect(@_); }, 
     831        }, { 
     832                name => "National Semiconductor LM90", 
     833                driver => "lm90", 
     834                i2c_addrs => [0x4c], 
     835                i2c_detect => sub { lm90_detect(@_, 0); }, 
     836        }, { 
     837                name => "National Semiconductor LM89/LM99", 
     838                driver => "lm90", 
     839                i2c_addrs => [0x4c..0x4d], 
     840                i2c_detect => sub { lm90_detect(@_, 1); }, 
     841        }, { 
     842                name => "National Semiconductor LM86", 
     843                driver => "lm90", 
     844                i2c_addrs => [0x4c], 
     845                i2c_detect => sub { lm90_detect(@_, 2); }, 
     846        }, { 
     847                name => "Analog Devices ADM1032", 
     848                driver => "lm90", 
     849                i2c_addrs => [0x4c..0x4d], 
     850                i2c_detect => sub { lm90_detect(@_, 3); }, 
     851        }, { 
     852                name => "Maxim MAX6654/MAX6690", 
     853                driver => "to-be-written", # probably lm90 
     854                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     855                i2c_detect => sub { lm90_detect(@_, 4); }, 
     856        }, { 
     857                name => "Maxim MAX6657/MAX6658/MAX6659", 
     858                driver => "lm90", 
     859                i2c_addrs => [0x4c], 
     860                i2c_detect => sub { max6657_detect(@_); }, 
     861        }, { 
     862                name => "Maxim MAX6659", 
     863                driver => "lm90", 
     864                i2c_addrs => [0x4d..0x4e], # 0x4c is handled above 
     865                i2c_detect => sub { max6657_detect(@_); }, 
     866        }, { 
     867                name => "Maxim MAX6646", 
     868                driver => "lm90", 
     869                i2c_addrs => [0x4d], 
     870                i2c_detect => sub { lm90_detect(@_, 6); }, 
     871        }, { 
     872                name => "Maxim MAX6647", 
     873                driver => "lm90", 
     874                i2c_addrs => [0x4e], 
     875                i2c_detect => sub { lm90_detect(@_, 6); }, 
     876        }, { 
     877                name => "Maxim MAX6648/MAX6649/MAX6692", 
     878                driver => "lm90", 
     879                i2c_addrs => [0x4c], 
     880                i2c_detect => sub { lm90_detect(@_, 6); }, 
     881        }, { 
     882                name => "Maxim MAX6680/MAX6681", 
     883                driver => "lm90", 
     884                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     885                i2c_detect => sub { lm90_detect(@_, 7); }, 
     886        }, { 
     887                name => "Winbond W83L771W/G", 
     888                driver => "lm90", 
     889                i2c_addrs => [0x4c], 
     890                i2c_detect => sub { lm90_detect(@_, 8); }, 
     891        }, { 
     892                name => "Texas Instruments TMP401", 
     893                driver => "tmp401", 
     894                i2c_addrs => [0x4c], 
     895                i2c_detect => sub { lm90_detect(@_, 9); }, 
     896        }, { 
     897                name => "Texas Instruments TMP411", 
     898                driver => "to-be-written", 
     899                i2c_addrs => [0x4c..0x4e], 
     900                i2c_detect => sub { lm90_detect(@_, 10); }, 
     901        }, { 
     902                name => "National Semiconductor LM95231", 
     903                driver => "to-be-written", 
     904                i2c_addrs => [0x2b, 0x19, 0x2a], 
     905                i2c_detect => sub { lm95231_detect(@_); }, 
     906        }, { 
     907                name => "National Semiconductor LM63", 
     908                driver => "lm63", 
     909                i2c_addrs => [0x4c], 
     910                i2c_detect => sub { lm63_detect(@_, 1); }, 
     911        }, { 
     912                name => "National Semiconductor LM64", 
     913                driver => "to-be-written", # lm63 
     914                i2c_addrs => [0x18, 0x4e], 
     915                i2c_detect => sub { lm63_detect(@_, 3); }, 
     916        }, { 
     917                name => "Fintek F75363SG", 
     918                driver => "lm63", # Not yet 
     919                i2c_addrs => [0x4c], 
     920                i2c_detect => sub { lm63_detect(@_, 2); }, 
     921        }, { 
     922                name => "National Semiconductor LM92", 
     923                driver => "lm92", 
     924                i2c_addrs => [0x48..0x4b], 
     925                i2c_detect => sub { lm92_detect(@_, 0); }, 
     926        }, { 
     927                name => "National Semiconductor LM76", 
     928                driver => "lm92", 
     929                i2c_addrs => [0x48..0x4b], 
     930                i2c_detect => sub { lm92_detect(@_, 1); }, 
     931        }, { 
     932                name => "Maxim MAX6633/MAX6634/MAX6635", 
     933                driver => "lm92", 
     934                i2c_addrs => [0x48..0x4f], # The MAX6633 can also use 0x40-0x47 but we 
     935                                           # don't want to probe these addresses, it's 
     936                                           # dangerous. 
     937                i2c_detect => sub { lm92_detect(@_, 2); }, 
     938        }, { 
     939                name => "Analog Devices ADT7461", 
     940                driver => "lm90", 
     941                i2c_addrs => [0x4c..0x4d], 
     942                i2c_detect => sub { lm90_detect(@_, 5); }, 
     943        }, { 
     944                name => "Analog Devices ADT7481", 
     945                driver => "to-be-written", 
     946                i2c_addrs => [0x4c, 0x4b], 
     947                i2c_detect => sub { adt7481_detect(@_); }, 
     948        }, { 
     949                name => "Analog Devices ADM1029", 
     950                driver => "adm1029", 
     951                i2c_addrs => [0x28..0x2f], 
     952                i2c_detect => sub { adm1029_detect(@_); }, 
     953        }, { 
     954                name => "Analog Devices ADM1030", 
     955                driver => "adm1031", 
     956                i2c_addrs => [0x2c..0x2e], 
     957                i2c_detect => sub { adm1031_detect(@_, 0); }, 
     958        }, { 
     959                name => "Analog Devices ADM1031", 
     960                driver => "adm1031", 
     961                i2c_addrs => [0x2c..0x2e], 
     962                i2c_detect => sub { adm1031_detect(@_, 1); }, 
     963        }, { 
     964                name => "Analog Devices ADM1033", 
     965                driver => "to-be-written", 
     966                i2c_addrs => [0x50..0x53], 
     967                i2c_detect => sub { adm1034_detect(@_, 0); }, 
     968        }, { 
     969                name => "Analog Devices ADM1034", 
     970                driver => "to-be-written", 
     971                i2c_addrs => [0x50..0x53], 
     972                i2c_detect => sub { adm1034_detect(@_, 1); }, 
     973        }, { 
     974                name => "Analog Devices ADM1022", 
     975                driver => "thmc50", 
     976                i2c_addrs => [0x2c..0x2e], 
     977                i2c_detect => sub { adm1022_detect(@_, 0); }, 
     978        }, { 
     979                name => "Texas Instruments THMC50", 
     980                driver => "thmc50", 
     981                i2c_addrs => [0x2c..0x2e], 
     982                i2c_detect => sub { adm1022_detect(@_, 1); }, 
     983        }, { 
     984                name => "Analog Devices ADM1028", 
     985                driver => "thmc50", 
     986                i2c_addrs => [0x2e], 
     987                i2c_detect => sub { adm1022_detect(@_, 2); }, 
     988        }, { 
     989                name => "Texas Instruments THMC51", 
     990                driver => "to-be-written", # thmc50 
     991                i2c_addrs => [0x2e], # At least (no datasheet) 
     992                i2c_detect => sub { adm1022_detect(@_, 3); }, 
     993        }, { 
     994                name => "VIA VT1211 (I2C)", 
     995                driver => "use-isa-instead", 
     996                i2c_addrs => [0x2d], 
     997                i2c_detect => sub { vt1211_i2c_detect(@_); }, 
     998        }, { 
     999                name => "ITE IT8712F", 
     1000                driver => "it87", 
     1001                i2c_addrs => [0x28..0x2f], 
     1002                i2c_detect => sub { it8712_i2c_detect(@_); }, 
     1003        }, { 
     1004                name => "ITE IT8201R/IT8203R/IT8206R/IT8266R", 
     1005                driver => "not-a-sensor", 
     1006                i2c_addrs => [0x4e], 
     1007                i2c_detect => sub { ite_overclock_detect(@_); }, 
     1008        }, { 
     1009                name => "SPD EEPROM", 
     1010                driver => "not-a-sensor", 
     1011                # Can also live at 0x54-0x57, but we don't care: we only check 
     1012                # for SPD and EDID EEPROMs because some hardware monitoring 
     1013                # chips can live at 0x50-0x53. 
     1014                i2c_addrs => [0x50..0x53], 
     1015                i2c_detect => sub { eeprom_detect(@_); }, 
     1016        }, { 
     1017                name => "EDID EEPROM", 
     1018                driver => "not-a-sensor", 
     1019                i2c_addrs => [0x50..0x53], 
     1020                i2c_detect => sub { ddcmonitor_detect(@_); }, 
     1021        }, { 
     1022                name => "FSC Poseidon I", 
     1023                driver => sub { kernel_version_at_least(2, 6, 24) ? "fschmd" : "fscpos" }, 
     1024                i2c_addrs => [0x73], 
     1025                i2c_detect => sub { fsc_detect(@_, 0); }, 
     1026        }, { 
     1027                name => "FSC Poseidon II", 
     1028                driver => "to-be-written", 
     1029                i2c_addrs => [0x73], 
     1030                i2c_detect => sub { fsc_detect(@_, 1); }, 
     1031        }, { 
     1032                name => "FSC Scylla", 
     1033                driver => "fschmd", 
     1034                i2c_addrs => [0x73], 
     1035                i2c_detect => sub { fsc_detect(@_, 2); }, 
     1036        }, { 
     1037                name => "FSC Hermes", 
     1038                driver => sub { kernel_version_at_least(2, 6, 24) ? "fschmd" : "fscher" }, 
     1039                i2c_addrs => [0x73], 
     1040                i2c_detect => sub { fsc_detect(@_, 3); }, 
     1041        }, { 
     1042                name => "FSC Heimdal", 
     1043                driver => "fschmd", 
     1044                i2c_addrs => [0x73], 
     1045                i2c_detect => sub { fsc_detect(@_, 4); }, 
     1046        }, { 
     1047                name => "FSC Heracles", 
     1048                driver => "fschmd", 
     1049                i2c_addrs => [0x73], 
     1050                i2c_detect => sub { fsc_detect(@_, 5); }, 
     1051        }, { 
     1052                name => "ALi M5879", 
     1053                driver => "to-be-written", 
     1054                i2c_addrs => [0x2c..0x2d], 
     1055                i2c_detect => sub { m5879_detect(@_); }, 
     1056        }, { 
     1057                name => "SMSC LPC47M15x/192/292/997", 
     1058                driver => "smsc47m192", 
     1059                i2c_addrs => [0x2c..0x2d], 
     1060                i2c_detect => sub { smsc47m192_detect(@_); }, 
     1061        }, { 
     1062                name => "SMSC DME1737", 
     1063                driver => "dme1737", 
     1064                i2c_addrs => [0x2c..0x2e], 
     1065                i2c_detect => sub { dme1737_detect(@_, 1); }, 
     1066        }, { 
     1067                name => "SMSC SCH5027D-NW", 
     1068                driver => "dme1737", 
     1069                i2c_addrs => [0x2c..0x2e], 
     1070                i2c_detect => sub { dme1737_detect(@_, 2); }, 
     1071        }, { 
     1072                name => "Fintek F75111R/RG/N (GPIO)", 
     1073                driver => "not-a-sensor", 
     1074                i2c_addrs => [0x4e], # 0x37 not probed 
     1075                i2c_detect => sub { fintek_detect(@_, 1); }, 
     1076        }, { 
     1077                name => "Fintek F75121R/F75122R/RG (VID+GPIO)", 
     1078                driver => "to-be-written", 
     1079                i2c_addrs => [0x4e], # 0x37 not probed 
     1080                i2c_detect => sub { fintek_detect(@_, 2); }, 
     1081        }, { 
     1082                name => "Fintek F75373S/SG", 
     1083                driver => "f75375s", 
     1084                i2c_addrs => [0x2d..0x2e], 
     1085                i2c_detect => sub { fintek_detect(@_, 3); }, 
     1086        }, { 
     1087                name => "Fintek F75375S/SP", 
     1088                driver => "f75375s", 
     1089                i2c_addrs => [0x2d..0x2e], 
     1090                i2c_detect => sub { fintek_detect(@_, 4); }, 
     1091        }, { 
     1092                name => "Fintek F75387SG/RG", 
     1093                driver => "to-be-written", 
     1094                i2c_addrs => [0x2d..0x2e], 
     1095                i2c_detect => sub { fintek_detect(@_, 5); }, 
     1096        }, { 
     1097                name => "Fintek F75383S/M", 
     1098                driver => "to-be-written", 
     1099                i2c_addrs => [0x4c], 
     1100                i2c_detect => sub { fintek_detect(@_, 6); }, 
     1101        }, { 
     1102                name => "Fintek F75384S/M", 
     1103                driver => "to-be-written", 
     1104                i2c_addrs => [0x4d], 
     1105                i2c_detect => sub { fintek_detect(@_, 6); }, 
     1106        }, { 
     1107                name => "Fintek custom power control IC", 
     1108                driver => "to-be-written", 
     1109                i2c_addrs => [0x2f], 
     1110                i2c_detect => sub { fintek_detect(@_, 7); }, 
     1111        }, { 
     1112                name => "Smart Battery", 
     1113                driver => "sbs", # ACPI driver, not sure if it always works 
     1114                i2c_addrs => [0x0b], 
     1115                i2c_detect => sub { smartbatt_detect(@_); }, 
     1116        }, { 
     1117                name => "IPMI BMC KCS", 
     1118                driver => "ipmisensors", 
     1119                isa_addrs => [0x0ca0], 
     1120                isa_detect => sub { ipmi_detect(@_); }, 
     1121        }, { 
     1122                name => "IPMI BMC SMIC", 
     1123                driver => "ipmisensors", 
     1124                isa_addrs => [0x0ca8], 
     1125                isa_detect => sub { ipmi_detect(@_); }, 
     1126        } 
    12561127); 
    12571128