Changeset 5833

Show
Ignore:
Timestamp:
04/29/10 18:46:24 (3 years ago)
Author:
khali
Message:

Add detection of SMSC EMC1403 and EMC1404.

Location:
lm-sensors/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/CHANGES

    r5826 r5833  
    66  sensors-detect: Give udev time to settle before accessing i2c nodes 
    77                  Add support for Intel PCH (SMBus) 
     8                  Add support for SMSC EMC1403 and EMC1404 
    89 
    9103.1.2 (2010-02-02) 
  • lm-sensors/trunk/prog/detect/sensors-detect

    r5832 r5833  
    11661166                i2c_detect => sub { fintek_detect(@_, 7); }, 
    11671167        }, { 
     1168                name => "SMSC EMC1403", 
     1169                driver => "emc1403", 
     1170                i2c_addrs => [0x18, 0x2a, 0x4c, 0x4d], 
     1171                i2c_detect => sub { emc1403_detect(@_, 0); }, 
     1172        }, { 
     1173                name => "SMSC EMC1404", 
     1174                driver => "to-be-written", # emc1403 
     1175                i2c_addrs => [0x18, 0x2a, 0x4c, 0x4d], 
     1176                i2c_detect => sub { emc1403_detect(@_, 1); }, 
     1177        }, { 
    11681178                name => "Smart Battery", 
    11691179                driver => "sbs", # ACPI driver, not sure if it always works 
     
    51325142 
    51335143        return 7; 
     5144} 
     5145 
     5146# Chip to detect: 0 = EMC1403, 1 = EMC1404 
     5147# Registers used: 
     5148#   0xfd: Device ID register 
     5149#   0xfe: Vendor ID register 
     5150#   0xff: Revision register 
     5151sub emc1403_detect 
     5152{ 
     5153        my ($file, $addr, $chip) = @_; 
     5154        my $dev_id = i2c_smbus_read_byte_data($file, 0xfd); 
     5155        my $man_id = i2c_smbus_read_byte_data($file, 0xfe); 
     5156        my $rev = i2c_smbus_read_byte_data($file, 0xff); 
     5157 
     5158        return unless $man_id == 0x5d;  # SMSC 
     5159 
     5160        if ($chip == 0) { 
     5161                return unless $dev_id == 0x21; 
     5162                return unless $rev == 0x01; 
     5163        } elsif ($chip == 1) { 
     5164                return unless $dev_id == 0x25; 
     5165                return unless $rev == 0x01; 
     5166        } 
     5167 
     5168        return 6; 
    51345169} 
    51355170