new module for MAX1668, MAX1805, MAX1989

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

 



Hello,

I would like to contribute a module which covers the Maxim chips MAX1668,
MAX1805, and MAX1989 (see also ticket #2125). It has been tested with a
MAX1805 module as described on
    http://www.madhacker.org/mbmsensors.htm     or
    http://www.andreas-lenz.de/casemods/de/max1668.php

It would be good if somebody with a MAX1668 or a MAX1989 could also test the
module and the patch to sensors-detect (relative to SVN HEAD).

Regards,

-- 
Christoph Scheurer                                  GnuPG key Id: 0x6128C6B6
-------------- next part --------------
A non-text attachment was scrubbed...
Name: max1668.c
Type: text/x-csrc
Size: 17751 bytes
Desc: not available
Url : http://lists.lm-sensors.org/pipermail/lm-sensors/attachments/20060922/2bf4f190/attachment.bin 
-------------- next part --------------
--- lm-sensors/prog/detect/sensors-detect.orig	2006-09-22 22:54:34.359156000 +0200
+++ lm-sensors/prog/detect/sensors-detect	2006-09-22 23:12:50.412859000 +0200
@@ -1078,6 +1078,24 @@
        i2c_detect => sub { adm1021_detect(3, @_); },
      },
      {
+       name => "Maxim MAX1668",
+       driver => "max1668",
+       i2c_addrs => [0x18..0x20,0x29..0x2b,0x4c..0x4e],
+       i2c_detect => sub { max1668_detect(0, @_); },
+     },
+     {
+       name => "Maxim MAX1805",
+       driver => "max1668",
+       i2c_addrs => [0x18..0x20,0x29..0x2b,0x4c..0x4e],
+       i2c_detect => sub { max1668_detect(1, @_); },
+     },
+     {
+       name => "Maxim MAX1989",
+       driver => "max1668",
+       i2c_addrs => [0x18..0x20,0x29..0x2b,0x4c..0x4e],
+       i2c_detect => sub { max1668_detect(2, @_); },
+     },
+     {
        name => "Maxim MAX6650/MAX6651",
        driver => "max6650",
        i2c_addrs => [0x1b,0x1f,0x48,0x4b],
@@ -4255,6 +4273,35 @@
 }
 
 # $_[0]: Chip to detect
+#   (0 = MAX1668, 1 = MAX1805, 2 = MAX1989)
+# $_[1]: A reference to the file descriptor to access this chip.
+#        We may assume an i2c_set_slave_addr was already done.
+# $_[2]: Address
+# Returns: undef if not detected, 7 if detected
+# Registers used:
+#   0xfe: Company ID
+#   0xff: Device ID
+#   0x05: Status1
+#   0x06: Status2
+#   0x07: Configuration
+sub max1668_detect
+{
+  my ($chip, $file, $addr) = @_;
+  my $man_id = i2c_smbus_read_byte_data($file, 0xfe);
+  my $dev_id = i2c_smbus_read_byte_data($file, 0xff);
+  my $status1 = i2c_smbus_read_byte_data($file, 0x05);
+  my $status2 = i2c_smbus_read_byte_data($file, 0x06);
+  my $conf = i2c_smbus_read_byte_data($file, 0x07);
+
+  return if $man_id != 0x4D;
+  return if $chip == 0 and $dev_id != 0x03;
+  return if $chip == 1 and $dev_id != 0x05;
+  return if $chip == 2 and $dev_id != 0x0b;
+
+  return 7;
+}
+
+# $_[0]: Chip to detect
 #   (0 = MAX1619)
 # $_[1]: A reference to the file descriptor to access this chip.
 #        We may assume an i2c_set_slave_addr was already done.


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

  Powered by Linux