Changeset 153

Show
Ignore:
Timestamp:
01/10/99 09:03:43 (14 years ago)
Author:
phil
Message:

(Phil) Added a driver for the Analog Devices ADM1021. The ADM1021 is
basically an expanded LM75. It can have an external temp probe (in
addition to the internal one), customizable conversion rate (in # of times
per second, depending on power consumption requirements), and
actually has a device-id register for easier/more-certain detecting!

The only strange property is the low-limit. The low-limit doesn't act
as a Hystersis value like the LM75. I.e., if the temp falls below it,
it triggers an alarm instead of clearing it. Strange, ey? This makes
using the chip for a thermostat control (like for a fan) much harder.
But it *could* be used to turn on a heater to prevent your computer from
freezing. :')

Here's what my output looks like (without a remote sensor. temp's
are the same format as the LM75 [high-limit, low-limit, value]):

[root@penn adm1021-i2c-0-18]# ls -l
total 0
-r--r--r-- 1 root root 0 Jan 9 23:42 die_code
-rw-r--r-- 1 root root 0 Jan 9 23:42 remote_temp
-r--r--r-- 1 root root 0 Jan 9 23:42 status
-rw-r--r-- 1 root root 0 Jan 9 23:42 temp
[root@penn adm1021-i2c-0-18]# cat *
3
60 20 0
76
60 20 24

PS- all temp values in the ADM1021 (limits and readings) are signed
(2's comp) bytes. So, all readings go from -128 to 127 C (actually,
the docs say it can only reliable sense down to -65), and only
in whole degree increments.

Location:
lm-sensors/trunk
Files:
2 added
4 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/kernel/Module.mk

    r115 r153  
    2828              $(MODULE_DIR)/i2c-proc.o $(MODULE_DIR)/gl518sm.o \ 
    2929              $(MODULE_DIR)/eeprom.o $(MODULE_DIR)/w83781d.o \ 
    30               $(MODULE_DIR)/lm80.o 
     30              $(MODULE_DIR)/lm80.o $(MODULE_DIR)/adm1021.o 
    3131 
    3232SRCHEADERFILES := $(MODULE_DIR)/sensors.h $(MODULE_DIR)/isa.h \ 
  • lm-sensors/trunk/kernel/include/sensors.h

    r121 r153  
    8989#define I2C_DRIVERID_W83781D 1006 
    9090#define I2C_DRIVERID_LM80 1007 
     91#define I2C_DRIVERID_ADM1021 1008 
    9192 
    9293/* Sysctl IDs */ 
     
    169170#define LM75_SYSCTL_TEMP 1200 /* Degrees Celcius * 10 */ 
    170171 
     172#define ADM1021_SYSCTL_TEMP 1200  
     173#define ADM1021_SYSCTL_REMOTE_TEMP 1201 
     174#define ADM1021_SYSCTL_DIE_CODE 1202  
     175#define ADM1021_SYSCTL_STATUS 1203  
     176 
    171177#define GL518_SYSCTL_VDD  1000     /* Volts * 100 */ 
    172178#define GL518_SYSCTL_VIN1 1001 
  • lm-sensors/trunk/src/Module.mk

    r115 r153  
    2828              $(MODULE_DIR)/i2c-proc.o $(MODULE_DIR)/gl518sm.o \ 
    2929              $(MODULE_DIR)/eeprom.o $(MODULE_DIR)/w83781d.o \ 
    30               $(MODULE_DIR)/lm80.o 
     30              $(MODULE_DIR)/lm80.o $(MODULE_DIR)/adm1021.o 
    3131 
    3232SRCHEADERFILES := $(MODULE_DIR)/sensors.h $(MODULE_DIR)/isa.h \ 
  • lm-sensors/trunk/src/sensors.h

    r121 r153  
    8989#define I2C_DRIVERID_W83781D 1006 
    9090#define I2C_DRIVERID_LM80 1007 
     91#define I2C_DRIVERID_ADM1021 1008 
    9192 
    9293/* Sysctl IDs */ 
     
    169170#define LM75_SYSCTL_TEMP 1200 /* Degrees Celcius * 10 */ 
    170171 
     172#define ADM1021_SYSCTL_TEMP 1200  
     173#define ADM1021_SYSCTL_REMOTE_TEMP 1201 
     174#define ADM1021_SYSCTL_DIE_CODE 1202  
     175#define ADM1021_SYSCTL_STATUS 1203  
     176 
    171177#define GL518_SYSCTL_VDD  1000     /* Volts * 100 */ 
    172178#define GL518_SYSCTL_VIN1 1001