Changeset 4529
- Timestamp:
- 06/30/07 17:21:46 (6 years ago)
- Location:
- lm-sensors/branches/lm-sensors-3.0.0
- Files:
-
- 5 modified
-
CONTRIBUTORS (modified) (4 diffs)
-
README (modified) (2 diffs)
-
doc/chips/SUMMARY (modified) (2 diffs)
-
doc/useful_addresses.html (modified) (2 diffs)
-
prog/detect/sensors-detect (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lm-sensors/branches/lm-sensors-3.0.0/CONTRIBUTORS
r4491 r4529 33 33 Added DDC support and i2c-algo-bit layer to the i2c-voodoo3 bus driver. 34 34 Added the RRD interface. 35 Author of the ddcmon, icspll, smbus-arp, smsc47m1, 36 vt1211, and vt8231 chip drivers. 35 Author of the smsc47m1, vt1211, and vt8231 chip drivers. 37 36 * Bob Dougherty <bobd@stanford.edu> 38 37 Author (with MDS) of the via686a driver. … … 71 70 Author of the pcf8591 driver. 72 71 * Abraham vd Merwe <abraham@2d3d.co.za> 73 Author of the LM92 and DS1307 drivers.72 Author of the LM92 driver. 74 73 * Mark M. Hoffman <mhoffman@lightlink.com> 75 74 Author of the i2c-sis645 bus driver. … … 81 80 Author of the lm63, lm83, lm90 and w83l785ts SMBus chip drivers. 82 81 Author of the f71805f and pc87360 Super-I/O chip drivers. 83 Author of the i2c-amd756-s4882 and pca9540 SMBus multiplexing drivers.82 Author of the i2c-amd756-s4882 SMBus multiplexing driver. 84 83 Perl scripts maintainer, tester, bug fixer, general support. 85 84 * Vojtech Pavlik <vojtech@suse.cz> … … 89 88 Author of the LM85 chip driver. 90 89 Author of the ADM1026 chip driver. 91 * Sascha Volkenandt <sascha@akv-soft.de>92 Author of the SAA1064 chip driver.93 90 * John Morris <john.morris@spirentcom.com> 94 91 Author of the MAX6650 chip driver. -
lm-sensors/branches/lm-sensors-3.0.0/README
r4386 r4529 63 63 LM89, LM90, LM92, LM93, LM99, PC87360, 64 64 PC87363, PC87364, PC87365, PC87366 65 Philips NE1617, NE1617A, NE1619 65 Philips NE1617, NE1617A, NE1619, PCF8591 66 66 SiS 5595, 950 embedded sensors 67 67 SMSC 47M1xx embedded sensors, EMC6D100, EMC6D101, EMC6D102 … … 70 70 Winbond W83781D, W83782D, W83783S, W83791D, W83792D, 71 71 W83627HF, W83627THF, W83637HF, W83687THF and W83697HF 72 73 74 We also support some miscellaneous chips:75 Dallas DS1307 real time clock76 Intel Xeon processor embedded EEPROMs77 Linear Technologies LTC171078 Philips Semiconductors PCF8574, PCF859179 DDC Monitor embedded EEPROMs80 SDRAM Dimms with Serial Presence Detect EEPROMs81 72 Smart Battery sensors 82 73 IPMI-BMC sensors 83 Philips Semiconductors SAA106484 74 85 75 -
lm-sensors/branches/lm-sensors-3.0.0/doc/chips/SUMMARY
r4526 r4529 205 205 pc87366 3-4 11 3 3 pwm no yes (LPC) 206 206 207 pcf8591 208 pcf8591 - 2-4 - 1 dac yes no 209 207 210 sis5595 208 211 sis5595 0-1 4-5 2 - no yes … … 261 264 xeontemp 262 265 xeontemp 1 - - - yes no 263 264 265 266 SUPPORTED NON-SENSOR CHIPS267 --------------------------268 269 Driver Chips270 ------ -----271 272 bmcsensors273 An interface to an IPMI BMC (Baseboard management controller)274 275 bt869276 bt869 video modulator chip277 278 ddcmon279 DDC-compliant monitor integrated eeproms - reads locations only280 281 ds1307282 real-time clock283 284 eeprom285 Memory SPD (serial presence detect) eeproms - reads locations only286 Xeon scratch eeproms - reads locations only287 288 ltc1710289 ltc1710 two switches only290 291 pca9540292 2-channel I2C multiplexer293 294 pcf8574 & pcf8574a295 Simple eight-bit parallel I/O296 297 pcf8591298 Quad A/D + one D/A299 300 saa1064301 4-digit LED-driver302 303 smbus-arp304 An SMBus 2.0 ARP client305 266 306 267 -
lm-sensors/branches/lm-sensors-3.0.0/doc/useful_addresses.html
r4357 r4529 87 87 <li><a href="http://www.hp.com/">Hewlett Packard</a> (Maxilife) 88 88 <br />Datasheets only under NDA.</li> 89 <li><a href="http://www.linear.com/">Linear Technologies</a>90 (<a href="http://www.linear.com/prod/datasheet.html?datasheet=434">LTC1710</a>)91 <br />Datasheets available for92 <a href="http://www.linear.com/prod/pft.html">download</a> (choose "Special Functions").</li>93 89 <li><a href="http://www.maxim-ic.com/">Maxim IC</a> (includes Dallas Semiconductor) 94 90 (<a href="http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2952">DS75</a>, … … 306 302 <li><a href="http://www.thermometrics.com/assets/images/ntcnotes.pdf">NTC thermistors</a> 307 303 <br />A comprehensive description of the physics and mathematics of NTC thermistors.</li> 308 <li><a href="http://www.jedec.org/DOWNLOAD/jedec/JEP106I.pdf">Standard manufacturer's309 identification code</a>310 <br />The official list of Manufacturer IDs for EEPROMs.</li>311 304 <li><a href="http://www.temperatures.com/">About temperature sensors</a> 312 305 <br />A web guide to devices that measure temperature. General information.</li> -
lm-sensors/branches/lm-sensors-3.0.0/prog/detect/sensors-detect
r4479 r4529 1389 1389 { 1390 1390 name => "SPD EEPROM", 1391 driver => "eeprom", 1392 i2c_addrs => [0x50..0x57], 1393 i2c_detect => sub { eeprom_detect(0, @_); }, 1394 }, 1395 { 1396 name => "Sony Vaio EEPROM", 1397 driver => "eeprom", 1398 i2c_addrs => [0x57], 1399 i2c_detect => sub { eeprom_detect(1, @_); }, 1391 driver => "not-a-sensor", 1392 # Can also live at 0x54-0x57, but we don't care: we only check 1393 # for SPD and EDID EEPROMs because some hardware monitoring chips 1394 # can live at 0x50-0x53. 1395 i2c_addrs => [0x50..0x53], 1396 i2c_detect => sub { eeprom_detect(@_); }, 1400 1397 }, 1401 1398 { 1402 1399 name => "EDID EEPROM", 1403 driver => " eeprom",1404 i2c_addrs => [0x50 ],1400 driver => "not-a-sensor", 1401 i2c_addrs => [0x50..0x53], 1405 1402 i2c_detect => sub { ddcmonitor_detect(@_); }, 1406 1403 }, … … 1443 1440 { 1444 1441 name => "Fintek F75111R/RG/N (GPIO)", 1445 driver => " to-be-written",1442 driver => "not-a-sensor", 1446 1443 i2c_addrs => [0x4e], # 0x37 not probed 1447 1444 i2c_detect => sub { fintek_detect(1, @_); }, … … 1490 1487 }, 1491 1488 { 1492 name => "Philips Semiconductors SAA1064",1493 driver => "saa1064",1494 i2c_addrs => [0x38..0x3b],1495 i2c_detect => sub { saa1064_detect(@_); },1496 },1497 {1498 1489 name => "Philips Semiconductors PCA9540", 1499 1490 driver => "pca9540", 1500 1491 i2c_addrs => [0x70], 1501 1492 i2c_detect => sub { pca9540_detect(@_); }, 1502 },1503 {1504 name => "Philips Semiconductors PCA9556",1505 driver => "to-be-written",1506 i2c_addrs => [0x18..0x1f],1507 i2c_detect => sub { pca9556_detect(@_); },1508 },1509 {1510 name => "Maxim MAX6900",1511 driver => "not-a-sensor",1512 i2c_addrs => [0x50],1513 i2c_detect => sub { max6900_detect(@_); },1514 },1515 {1516 name => "Smart Battery Charger",1517 driver => "to-be-written",1518 i2c_addrs => [0x09],1519 i2c_detect => sub { smartbatt_chgr_detect(@_); },1520 },1521 {1522 name => "Smart Battery Manager/Selector",1523 driver => "to-be-written",1524 i2c_addrs => [0x0a],1525 i2c_detect => sub { smartbatt_mgr_detect(@_); },1526 1493 }, 1527 1494 { … … 4807 4774 } 4808 4775 4809 # $_[0]: Chip to detect (0 = SPD EEPROM, 1 = Sony Vaio EEPROM) 4810 # $_[1]: A reference to the file descriptor to access this chip 4811 # $_[2]: Address 4776 # $_[0]: A reference to the file descriptor to access this chip 4777 # $_[1]: Address 4812 4778 # Returns: 8 for a memory eeprom 4813 # 4 to 9 for a Sony Vaio eeprom4814 4779 # Registers used: 4815 4780 # 0-63: SPD Data and Checksum 4816 # 0x80-0x83: Sony Vaio Data ("PCG-")4817 # 0xe2, 0xe5, 0xe8, 0xeb, Oxee: Sony Vaio Timestamp constant bytes.4818 # 0x1a-0x1c: Sony Vaio MAC address4819 # This detection function is a bit tricky; this is to workaround4820 # wrong misdetection messages that would else arise.4821 4781 sub eeprom_detect 4822 4782 { 4823 my ($ chip,$file,$addr) = @_;4783 my ($file, $addr) = @_; 4824 4784 my $checksum = 0; 4825 4785 4826 4786 # Check the checksum for validity (works for most DIMMs and RIMMs) 4827 if ($chip == 0) { 4828 for (my $i = 0; $i <= 62; $i++) { 4829 $checksum += i2c_smbus_read_byte_data($file, $i); 4830 } 4831 $checksum &= 255; 4832 4833 return 8 4834 if $checksum == i2c_smbus_read_byte_data($file, 63); 4835 return; 4836 } 4837 4838 # Look for a Sony Vaio EEPROM ($chip == 1) 4839 my $vaioconf = 1; 4840 $vaioconf += 4 4841 if i2c_smbus_read_byte_data($file,0x80) == 0x50 4842 && i2c_smbus_read_byte_data($file,0x81) == 0x43 4843 && i2c_smbus_read_byte_data($file,0x82) == 0x47 4844 && i2c_smbus_read_byte_data($file,0x83) == 0x2d; 4845 $vaioconf += 5 4846 if i2c_smbus_read_byte_data($file,0xe2) == 0x2f 4847 && i2c_smbus_read_byte_data($file,0xe5) == 0x2f 4848 && i2c_smbus_read_byte_data($file,0xe8) == 0x20 4849 && i2c_smbus_read_byte_data($file,0xeb) == 0x3a 4850 && i2c_smbus_read_byte_data($file,0xee) == 0x3a; 4851 $vaioconf += 3 4852 if i2c_smbus_read_byte_data($file,0x1a) == 0x08 4853 && i2c_smbus_read_byte_data($file,0x1b) == 0x00 4854 && i2c_smbus_read_byte_data($file,0x1c) == 0x46; 4855 $vaioconf = 9 4856 if $vaioconf > 9; 4857 4858 if ($vaioconf > 1) { 4859 return $vaioconf; 4860 } 4787 for (my $i = 0; $i <= 62; $i++) { 4788 $checksum += i2c_smbus_read_byte_data($file, $i); 4789 } 4790 $checksum &= 255; 4791 4792 return 8 4793 if $checksum == i2c_smbus_read_byte_data($file, 63); 4794 4861 4795 return; 4862 4796 } … … 4881 4815 i2c_smbus_read_byte_data($file,0x07) == 0x00; 4882 4816 4883 return (8,$addr+1,$addr+2,$addr+3,$addr+4,$addr+5,$addr+6,$addr+7);4817 return 8; 4884 4818 } 4885 4819 … … 5068 5002 # $_[0]: A reference to the file descriptor to access this chip. 5069 5003 # $_[1]: Address 5070 # Returns: undef if not detected, 4 or 7 if detected5071 # Detection is based on the fact that the SAA1064 has only one readable5072 # register, and thus ignores the read address. This register can have value5073 # 0x80 (first read since power-up) or 0x00.5074 sub saa1064_detect5075 {5076 my ($file,$addr) = @_;5077 my $status = i2c_smbus_read_byte_data ($file, 0x00);5078 5079 return if ($status & 0x7f) != 0x00;5080 5081 for (my $i=0 ; $i<256; $i++) {5082 return if i2c_smbus_read_byte_data ($file, $i) != 0x00;5083 }5084 5085 return 75086 if $status == 0x80;5087 return 4;5088 }5089 5090 # $_[0]: A reference to the file descriptor to access this chip.5091 # $_[1]: Address5092 5004 # Returns: undef if not detected, 1 if detected 5093 5005 # Detection is rather difficult, since the PCA9540 has a single register. … … 5104 5016 5105 5017 return 1; 5106 }5107 5108 # $_[0]: A reference to the file descriptor to access this chip.5109 # $_[1]: Address (unused)5110 # Returns: undef if not detected, 1 if detected5111 # Detection is rather difficult, since the PCA9556 only has 4 registers5112 # and no unused bit. We use the fact that the registers cycle over5113 # 4 addresses boundaries, and the logic rules between registers.5114 sub pca9556_detect5115 {5116 my ($file, $addr) = @_;5117 my $input = i2c_smbus_read_byte_data($file, 0x00);5118 my $output = i2c_smbus_read_byte_data($file, 0x01);5119 my $invert = i2c_smbus_read_byte_data($file, 0x02);5120 my $config = i2c_smbus_read_byte_data($file, 0x03);5121 5122 # Pins configured for output (config = 0) must obey the following5123 # rule: input = output ^ invert5124 5125 return unless ($input & ~$config) == (($output ^ $invert) & ~$config);5126 5127 for (my $i = 5; $i < 254 ; $i+=4) {5128 return unless i2c_smbus_read_byte_data($file, $i) == $output;5129 return unless i2c_smbus_read_byte_data($file, $i+1) == $invert;5130 return unless i2c_smbus_read_byte_data($file, $i+2) == $config;5131 }5132 5133 return 1;5134 }5135 5136 # $_[0]: A reference to the file descriptor to access this chip.5137 # $_[1]: Address5138 # Returns: undef if not detected, 3 if detected5139 sub max6900_detect5140 {5141 my ($file,$addr) = @_;5142 my $reg;5143 5144 # SEC5145 $reg = i2c_smbus_read_byte_data ($file, 0x81);5146 return if5147 ($reg & 0xF0) > 0x50 or5148 ($reg & 0x0F) > 9;5149 5150 # MIN5151 $reg = i2c_smbus_read_byte_data ($file, 0x83);5152 return if5153 ($reg & 0xF0) > 0x50 or5154 ($reg & 0x0F) > 9;5155 5156 # HR5157 $reg = i2c_smbus_read_byte_data ($file, 0x85);5158 return if5159 ($reg & 0x40) != 0x00 or5160 ($reg & 0x0F) > 9;5161 5162 # DATE5163 $reg = i2c_smbus_read_byte_data ($file, 0x87);5164 return if5165 $reg == 0x00 or5166 ($reg & 0xF0) > 0x30 or5167 ($reg & 0x0F) > 9;5168 5169 # MONTH5170 $reg = i2c_smbus_read_byte_data ($file, 0x89);5171 return if5172 $reg == 0x00 or5173 ($reg & 0xF0) > 0x10 or5174 ($reg & 0x0F) > 9;5175 5176 # DAY5177 $reg = i2c_smbus_read_byte_data ($file, 0x8B);5178 return if5179 $reg == 0 or5180 $reg > 7;5181 5182 # YEAR5183 $reg = i2c_smbus_read_byte_data ($file, 0x8D);5184 return if5185 ($reg & 0xF0) > 0x90 or5186 ($reg & 0x0F) > 9;5187 5188 # CONTROL5189 $reg = i2c_smbus_read_byte_data ($file, 0x8F);5190 return if5191 ($reg & 0x7F) != 0x00;5192 5193 # CENTURY5194 $reg = i2c_smbus_read_byte_data ($file, 0x93);5195 return if5196 ($reg & 0xF0) > 0x90 or5197 ($reg & 0x0F) > 9;5198 5199 return 3;5200 }5201 5202 # This checks for non-FFFF values for SpecInfo and Status.5203 # The address (0x09) is specified by the SMBus standard so it's likely5204 # that this really is a smart battery charger.5205 # $_[0]: A reference to the file descriptor to access this chip.5206 # $_[1]: Address5207 # Returns: 55208 sub smartbatt_chgr_detect5209 {5210 my ($file,$addr) = @_;5211 # check some registers5212 if (i2c_smbus_read_word_data($file,0x11) == 0xffff) {5213 return;5214 }5215 if (i2c_smbus_read_word_data($file,0x13) == 0xffff) {5216 return;5217 }5218 return (5);5219 }5220 5221 # This checks for non-FFFF values for State and Info.5222 # The address (0x0a) is specified by the SMBus standard so it's likely5223 # that this really is a smart battery manager/selector.5224 # $_[0]: A reference to the file descriptor to access this chip.5225 # $_[1]: Address5226 # Returns: 55227 sub smartbatt_mgr_detect5228 {5229 my ($file,$addr) = @_;5230 # check some registers5231 if (i2c_smbus_read_word_data($file,0x01) == 0xffff) {5232 return;5233 }5234 if (i2c_smbus_read_word_data($file,0x04) == 0xffff) {5235 return;5236 }5237 return (5);5238 5018 } 5239 5019 … … 5863 5643 print " Misdetects:\n"; 5864 5644 print_chips_report $chip->{misdetected}; 5865 }5866 5867 # People are easily confused5868 if ($chip->{driver} eq "eeprom") {5869 print "\n EEPROMs are *NOT* sensors! They are data storage chips commonly\n",5870 " found on memory modules (SPD), in monitors (EDID), or in some\n",5871 " laptops, for example.\n";5872 5645 } 5873 5646 }
