blob: da9d80c9643286183750fd978aec69ac78e0633b [file] [log] [blame]
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +00001Kernel driver smsc47b397
2========================
3
4Supported chips:
5 * SMSC LPC47B397-NC
6 Prefix: 'smsc47b397'
7 Addresses scanned: none, address read from Super I/O config space
8 Datasheet: In this file
9
10Authors: Mark M. Hoffman <mhoffman@lightlink.com>
11 Utilitek Systems, Inc.
12
Linus Torvalds1da177e2005-04-16 15:20:36 -070013November 23, 2004
14
15The following specification describes the SMSC LPC47B397-NC sensor chip
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000016(for which there is no public datasheet available). This document was
Linus Torvalds1da177e2005-04-16 15:20:36 -070017provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected
18by Mark M. Hoffman <mhoffman@lightlink.com>.
19
20* * * * *
21
22Methods for detecting the HP SIO and reading the thermal data on a dc7100.
23
24The thermal information on the dc7100 is contained in the SIO Hardware Monitor
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000025(HWM). The information is accessed through an index/data pair. The index/data
26pair is located at the HWM Base Address + 0 and the HWM Base Address + 1. The
Linus Torvalds1da177e2005-04-16 15:20:36 -070027HWM Base address can be obtained from Logical Device 8, registers 0x60 (MSB)
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000028and 0x61 (LSB). Currently we are using 0x480 for the HWM Base Address and
Linus Torvalds1da177e2005-04-16 15:20:36 -0700290x480 and 0x481 for the index/data pair.
30
31Reading temperature information.
32The temperature information is located in the following registers:
33Temp1 0x25 (Currently, this reflects the CPU temp on all systems).
34Temp2 0x26
35Temp3 0x27
36Temp4 0x80
37
38Programming Example
39The following is an example of how to read the HWM temperature registers:
40MOV DX,480H
41MOV AX,25H
42OUT DX,AL
43MOV DX,481H
44IN AL,DX
45
46AL contains the data in hex, the temperature in Celsius is the decimal
47equivalent.
48
49Ex: If AL contains 0x2A, the temperature is 42 degrees C.
50
51Reading tach information.
52The fan speed information is located in the following registers:
53 LSB MSB
54Tach1 0x28 0x29 (Currently, this reflects the CPU
55 fan speed on all systems).
56Tach2 0x2A 0x2B
57Tach3 0x2C 0x2D
58Tach4 0x2E 0x2F
59
60Important!!!
61Reading the tach LSB locks the tach MSB.
62The LSB Must be read first.
63
64How to convert the tach reading to RPM.
R.Marek@sh.cvut.cz7f15b662005-05-26 12:42:19 +000065The tach reading (TCount) is given by: (Tach MSB * 256) + (Tach LSB)
Linus Torvalds1da177e2005-04-16 15:20:36 -070066The SIO counts the number of 90kHz (11.111us) pulses per revolution.
67RPM = 60/(TCount * 11.111us)
68
69Example:
70Reg 0x28 = 0x9B
71Reg 0x29 = 0x08
72
73TCount = 0x89B = 2203
74
75RPM = 60 / (2203 * 11.11111 E-6) = 2451 RPM
76
77Obtaining the SIO version.
78
79CONFIGURATION SEQUENCE
80To program the configuration registers, the following sequence must be followed:
811. Enter Configuration Mode
822. Configure the Configuration Registers
833. Exit Configuration Mode.
84
85Enter Configuration Mode
86To place the chip into the Configuration State The config key (0x55) is written
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +000087to the CONFIG PORT (0x2E).
Linus Torvalds1da177e2005-04-16 15:20:36 -070088
89Configuration Mode
90In configuration mode, the INDEX PORT is located at the CONFIG PORT address and
91the DATA PORT is at INDEX PORT address + 1.
92
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +000093The desired configuration registers are accessed in two steps:
Linus Torvalds1da177e2005-04-16 15:20:36 -070094a. Write the index of the Logical Device Number Configuration Register
95 (i.e., 0x07) to the INDEX PORT and then write the number of the
96 desired logical device to the DATA PORT.
97
98b. Write the address of the desired configuration register within the
99 logical device to the INDEX PORT and then write or read the config-
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +0000100 uration register through the DATA PORT.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700101
102Note: If accessing the Global Configuration Registers, step (a) is not required.
103
104Exit Configuration Mode
105To exit the Configuration State the write 0xAA to the CONFIG PORT (0x2E).
106The chip returns to the RUN State. (This is important).
107
108Programming Example
109The following is an example of how to read the SIO Device ID located at 0x20
110
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +0000111; ENTER CONFIGURATION MODE
Linus Torvalds1da177e2005-04-16 15:20:36 -0700112MOV DX,02EH
113MOV AX,055H
114OUT DX,AL
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +0000115; GLOBAL CONFIGURATION REGISTER
Linus Torvalds1da177e2005-04-16 15:20:36 -0700116MOV DX,02EH
117MOV AL,20H
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +0000118OUT DX,AL
Linus Torvalds1da177e2005-04-16 15:20:36 -0700119; READ THE DATA
120MOV DX,02FH
121IN AL,DX
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +0000122; EXIT CONFIGURATION MODE
Linus Torvalds1da177e2005-04-16 15:20:36 -0700123MOV DX,02EH
124MOV AX,0AAH
125OUT DX,AL
126
127The registers of interest for identifying the SIO on the dc7100 are Device ID
128(0x20) and Device Rev (0x21).
129
130The Device ID will read 0X6F
131The Device Rev currently reads 0x01
132
133Obtaining the HWM Base Address.
134The following is an example of how to read the HWM Base Address located in
135Logical Device 8.
136
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +0000137; ENTER CONFIGURATION MODE
Linus Torvalds1da177e2005-04-16 15:20:36 -0700138MOV DX,02EH
139MOV AX,055H
140OUT DX,AL
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +0000141; CONFIGURE REGISTER CRE0,
142; LOGICAL DEVICE 8
Linus Torvalds1da177e2005-04-16 15:20:36 -0700143MOV DX,02EH
144MOV AL,07H
145OUT DX,AL ;Point to LD# Config Reg
146MOV DX,02FH
147MOV AL, 08H
148OUT DX,AL;Point to Logical Device 8
149;
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +0000150MOV DX,02EH
Linus Torvalds1da177e2005-04-16 15:20:36 -0700151MOV AL,60H
152OUT DX,AL ; Point to HWM Base Addr MSB
153MOV DX,02FH
154IN AL,DX ; Get MSB of HWM Base Addr
R.Marek@sh.cvut.cz2bf34a12005-05-26 12:42:11 +0000155; EXIT CONFIGURATION MODE
Linus Torvalds1da177e2005-04-16 15:20:36 -0700156MOV DX,02EH
157MOV AX,0AAH
158OUT DX,AL