Changeset 4353

Show
Ignore:
Timestamp:
03/25/07 17:25:57 (6 years ago)
Author:
khali
Message:

sensors-detect: Probe the Super-I/O families from the shorter enter
sequence to the longer one, and stop as soon as one enter sequence worked.
This avoids false positives.

Location:
lm-sensors/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/CHANGES

    r4352 r4353  
    55  Program isadump: Detect when address bit 7 is a busy flag 
    66  Program sensors: Drop ddcmon and eeprom support 
     7  Program sensors-detect: Stop Super-I/O probe after first family success 
    78 
    89 
  • lm-sensors/trunk/prog/detect/sensors-detect

    r4348 r4353  
    15721572#  enter: The password sequence to write to the address register 
    15731573#  chips: Array of chips 
     1574# The order of families matters, because we stop as soon as one family 
     1575# succeeds. So we have to list families with shorter password sequences 
     1576# first. 
    15741577@superio_ids = ( 
    1575   { 
    1576     family => "ITE", 
    1577     guess => 0x290, 
    1578     enter => 
    1579     { 
    1580       0x2e => [0x87, 0x01, 0x55, 0x55], 
    1581       0x4e => [0x87, 0x01, 0x55, 0xaa], 
    1582     }, 
    1583     chips => 
    1584     [ 
    1585       { 
    1586         name => "ITE IT8702F Super IO Sensors", 
    1587         driver => "to-be-written", 
    1588         devid => 0x8702, 
    1589         logdev => 0x04, 
    1590       }, 
    1591       { 
    1592         name => "ITE IT8705F Super IO Sensors", 
    1593         driver => "it87", 
    1594         devid => 0x8705, 
    1595         logdev => 0x04, 
    1596       }, 
    1597       { 
    1598         name => "ITE IT8712F Super IO Sensors", 
    1599         driver => "it87", 
    1600         devid => 0x8712, 
    1601         logdev => 0x04, 
    1602         alias_detect => sub { ite_alias_detect(0, @_); }, 
    1603       }, 
    1604       { 
    1605         name => "ITE IT8716F Super IO Sensors", 
    1606         driver => "it87", 
    1607         devid => 0x8716, 
    1608         logdev => 0x04, 
    1609       }, 
    1610       { 
    1611         name => "ITE IT8718F Super IO Sensors", 
    1612         driver => "it87", 
    1613         devid => 0x8718, 
    1614         logdev => 0x04, 
    1615       }, 
    1616     ], 
    1617   }, 
    16181578  { 
    16191579    family => "National Semiconductor", 
     
    19451905    ], 
    19461906  }, 
     1907  { 
     1908    family => "ITE", 
     1909    guess => 0x290, 
     1910    enter => 
     1911    { 
     1912      0x2e => [0x87, 0x01, 0x55, 0x55], 
     1913      0x4e => [0x87, 0x01, 0x55, 0xaa], 
     1914    }, 
     1915    chips => 
     1916    [ 
     1917      { 
     1918        name => "ITE IT8702F Super IO Sensors", 
     1919        driver => "to-be-written", 
     1920        devid => 0x8702, 
     1921        logdev => 0x04, 
     1922      }, 
     1923      { 
     1924        name => "ITE IT8705F Super IO Sensors", 
     1925        driver => "it87", 
     1926        devid => 0x8705, 
     1927        logdev => 0x04, 
     1928      }, 
     1929      { 
     1930        name => "ITE IT8712F Super IO Sensors", 
     1931        driver => "it87", 
     1932        devid => 0x8712, 
     1933        logdev => 0x04, 
     1934        alias_detect => sub { ite_alias_detect(0, @_); }, 
     1935      }, 
     1936      { 
     1937        name => "ITE IT8716F Super IO Sensors", 
     1938        driver => "it87", 
     1939        devid => 0x8716, 
     1940        logdev => 0x04, 
     1941      }, 
     1942      { 
     1943        name => "ITE IT8718F Super IO Sensors", 
     1944        driver => "it87", 
     1945        devid => 0x8718, 
     1946        logdev => 0x04, 
     1947      }, 
     1948    ], 
     1949  }, 
    19471950); 
    19481951 
     
    31483151 
    31493152  $| = 1; 
     3153# reset state to avoid false positives 
     3154  exit_superio($addrreg, $datareg); 
    31503155  FAMILY:  
    31513156  foreach my $family (@superio_ids) { 
     
    31833188 
    31843189    exit_superio($addrreg, $datareg); 
     3190    last FAMILY; 
    31853191  } 
    31863192  $| = 0;