Kernel driver smsc47b397
========================

Supported chips:

  * SMSC LPC47B397-NC

  * SMSC SCH5307-NS

  * SMSC SCH5317

    Prefix: 'smsc47b397'

    Addresses scanned: none, address read from Super I/O config space

    Datasheet: In this file

Authors:

       - Mark M. Hoffman <mhoffman@lightlink.com>
       - Utilitek Systems, Inc.

November 23, 2004

The following specification describes the SMSC LPC47B397-NC [1]_ sensor chip
(for which there is no public datasheet available). This document was
provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected
by Mark M. Hoffman <mhoffman@lightlink.com>.

.. [1] And SMSC SCH5307-NS and SCH5317, which have different device IDs but are
       otherwise compatible.

-------------------------------------------------------------------------

Methods for detecting the HP SIO and reading the thermal data on a dc7100
-------------------------------------------------------------------------

The thermal information on the dc7100 is contained in the SIO Hardware Monitor
(HWM). The information is accessed through an index/data pair. The index/data
pair is located at the HWM Base Address + 0 and the HWM Base Address + 1. The
HWM Base address can be obtained from Logical Device 8, registers 0x60 (MSB)
and 0x61 (LSB). Currently we are using 0x480 for the HWM Base Address and
0x480 and 0x481 for the index/data pair.

Reading temperature information.
The temperature information is located in the following registers:

=============== ======= =======================================================
Temp1		0x25	(Currently, this reflects the CPU temp on all systems).
Temp2		0x26
Temp3		0x27
Temp4		0x80
=============== ======= =======================================================

Programming Example
The following is an example of how to read the HWM temperature registers::

	MOV	DX,480H
	MOV	AX,25H
	OUT	DX,AL
	MOV	DX,481H
	IN	AL,DX

AL contains the data in hex, the temperature in Celsius is the decimal
equivalent.

Ex: If AL contains 0x2A, the temperature is 42 degrees C.

Reading tach information.
The fan speed information is located in the following registers:

=============== ======= ======= =================================
		LSB	MSB
Tach1		0x28	0x29	(Currently, this reflects the CPU
				fan speed on all systems).
Tach2		0x2A	0x2B
Tach3		0x2C	0x2D
Tach4		0x2E	0x2F
=============== ======= ======= =================================

.. Important::

	Reading the tach LSB locks the tach MSB.
	The LSB Must be read first.

How to convert the tach reading to RPM
--------------------------------------

The tach reading (TCount) is given by: (Tach MSB * 256) + (Tach LSB)
The SIO counts the number of 90kHz (11.111us) pulses per revolution.
RPM = 60/(TCount * 11.111us)

Example::

	Reg 0x28 = 0x9B
	Reg 0x29 = 0x08

TCount = 0x89B = 2203

RPM = 60 / (2203 * 11.11111 E-6) = 2451 RPM

Obtaining the SIO version.

Configuration Sequence
----------------------

To program the configuration registers, the following sequence must be followed:
1. Enter Configuration Mode
2. Configure the Configuration Registers
3. Exit Configuration Mode.

Enter Configuration Mode
^^^^^^^^^^^^^^^^^^^^^^^^

To place the chip into the Configuration State The config key (0x55) is written
to the CONFIG PORT (0x2E).

Configuration Mode
^^^^^^^^^^^^^^^^^^

In configuration mode, the INDEX PORT is located at the CONFIG PORT address and
the DATA PORT is at INDEX PORT address + 1.

The desired configuration registers are accessed in two steps:

a.	Write the index of the Logical Device Number Configuration Register
	(i.e., 0x07) to the INDEX PORT and then write the number of the
	desired logical device to the DATA PORT.

b.	Write the address of the desired configuration register within the
	logical device to the INDEX PORT and then write or read the config-
	uration register through the DATA PORT.

Note:
	If accessing the Global Configuration Registers, step (a) is not required.

Exit Configuration Mode
^^^^^^^^^^^^^^^^^^^^^^^

To exit the Configuration State the write 0xAA to the CONFIG PORT (0x2E).
The chip returns to the RUN State.  (This is important).

Programming Example
^^^^^^^^^^^^^^^^^^^

The following is an example of how to read the SIO Device ID located at 0x20:

	; ENTER CONFIGURATION MODE
	MOV	DX,02EH
	MOV	AX,055H
	OUT	DX,AL
	; GLOBAL CONFIGURATION  REGISTER
	MOV	DX,02EH
	MOV	AL,20H
	OUT	DX,AL
	; READ THE DATA
	MOV	DX,02FH
	IN	AL,DX
	; EXIT CONFIGURATION MODE
	MOV	DX,02EH
	MOV	AX,0AAH
	OUT	DX,AL

The registers of interest for identifying the SIO on the dc7100 are Device ID
(0x20) and Device Rev  (0x21).

The Device ID will read 0x6F (0x81 for SCH5307-NS, and 0x85 for SCH5317)
The Device Rev currently reads 0x01

Obtaining the HWM Base Address
------------------------------

The following is an example of how to read the HWM Base Address located in
Logical Device 8::

	; ENTER CONFIGURATION MODE
	MOV	DX,02EH
	MOV	AX,055H
	OUT	DX,AL
	; CONFIGURE REGISTER CRE0,
	; LOGICAL DEVICE 8
	MOV	DX,02EH
	MOV	AL,07H
	OUT	DX,AL ;Point to LD# Config Reg
	MOV	DX,02FH
	MOV	AL, 08H
	OUT	DX,AL;Point to Logical Device 8
	;
	MOV	DX,02EH
	MOV	AL,60H
	OUT	DX,AL	; Point to HWM Base Addr MSB
	MOV	DX,02FH
	IN	AL,DX	; Get MSB of HWM Base Addr
	; EXIT CONFIGURATION MODE
	MOV	DX,02EH
	MOV	AX,0AAH
	OUT	DX,AL
