[PATCH v2] sensors-detect: Add code to detect LM95245

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



v2: Fixed per review feedback. Tested code with LM95231 and LM95245.

---

Index: prog/detect/sensors-detect
===================================================================
--- prog/detect/sensors-detect	(revision 5983)
+++ prog/detect/sensors-detect	(working copy)
@@ -1008,6 +1008,11 @@
 		i2c_addrs => [0x2b, 0x19, 0x2a],
 		i2c_detect => sub { lm95231_detect(@_, 1); },
 	}, {
+		name => "National Semiconductor LM95245",
+		driver => "lm95245",
+		i2c_addrs => [0x18, 0x19, 0x29, 0x4c, 0x4d],
+		i2c_detect => sub { lm95231_detect(@_, 2); },
+	}, {
 		name => "National Semiconductor LM63",
 		driver => "lm63",
 		i2c_addrs => [0x4c],
@@ -4540,12 +4545,14 @@
 	return 5;
 }
 
-# Chip to detect: 0 = LM95231, 1 = LM95241
+# Chip to detect: 0 = LM95231, 1 = LM95241, 2 = LM95245
 # Registers used:
 #   0x02: Status (3 unused bits)
 #   0x03: Configuration (3 unused bits)
-#   0x06: Remote diode filter control (6 unused bits)
-#   0x30: Remote diode model type select (6 unused bits)
+#   0x06: Remote diode filter control (6 unused bits, LM95231 and LM95241)
+#   0x30: Remote diode model type select (6 unused bits, LM95231 and LM95241)
+#   0x30: Local Temperature LSB (5 unused bits, LM95245)
+#   0x33: Status register 2 (6 unused bits, LM95245)
 #   0xfe: Manufacturer ID
 #   0xff: Revision ID
 sub lm95231_detect
@@ -4555,13 +4562,21 @@
 	my $cid = i2c_smbus_read_byte_data($file, 0xff);
 
 	return if $mid != 0x01;				# National Semiconductor
-	return if $chip == 0 && $cid != 0xa1;		# LM95231
-	return if $chip == 1 && $cid != 0xa4;		# LM95241
 
-	return if i2c_smbus_read_byte_data($file, 0x02) & 0x70;
-	return if i2c_smbus_read_byte_data($file, 0x03) & 0x89;
-	return if i2c_smbus_read_byte_data($file, 0x06) & 0xfa;
-	return if i2c_smbus_read_byte_data($file, 0x30) & 0xfa;
+	if ($chip == 0 || $chip == 1) {
+		return if $chip == 0 && $cid != 0xa1;	# LM95231
+		return if $chip == 1 && $cid != 0xa4;	# LM95241
+		return if i2c_smbus_read_byte_data($file, 0x02) & 0x70;
+		return if i2c_smbus_read_byte_data($file, 0x03) & 0x89;
+		return if i2c_smbus_read_byte_data($file, 0x06) & 0xfa;
+		return if i2c_smbus_read_byte_data($file, 0x30) & 0xfa;
+	} elsif ($chip == 2) {
+		return if $cid != 0xb3;			# LM95245
+		return if i2c_smbus_read_byte_data($file, 0x02) & 0x68;
+		return if i2c_smbus_read_byte_data($file, 0x03) & 0xa1;
+		return if i2c_smbus_read_byte_data($file, 0x30) & 0x1a;
+		return if i2c_smbus_read_byte_data($file, 0x33) & 0x3f;
+	}
 
 	return 6;
 }
Index: CHANGES
===================================================================
--- CHANGES	(revision 5983)
+++ CHANGES	(working copy)
@@ -17,6 +17,7 @@
                   Add detection of ITE IT8772E
                   Don't advertise the ipmisensors driver
                   Add detection of SA56004
+                  Add detection of LM95245
 
 3.3.0 (2011-03-28)
   Makefile: Check for bison and flex

_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors


[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux