Hello I "ported" chips/busses documentation from 2.4. Please read/comment so we can be sure there are no bugs left. Also I dont know if I know status of i801 features correctly. This is preliminary patch. Thanks Rudolf diff -Naur a/Documentation/i2c/busses/i2c-ali15x3 b/Documentation/i2c/busses/i2c-ali15x3 --- a/Documentation/i2c/busses/i2c-ali15x3 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-ali15x3 2005-02-04 22:24:27.000000000 +0100 @@ -0,0 +1,112 @@ +Kernel driver i2c-ali15x3 + +Supported adapters: + * Acer Labs, Inc. ALI 1533 and 1543C (south bridge) + Datasheet: Available at the Acer Labs website (password required) + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Mark D. Studebaker <mdsxyz123 at yahoo.com> + +Module Parameters +----------------- + +* force_addr: int + Initialize the base address of the i2c controller + + +Notes +----- + +The force_addr parameter is useful for boards that don't set the address +in the BIOS. Does not do a PCI force; the device must still be present +in lspci. Don't use this unless the driver complains that the +base address is not set. +Example: 'modprobe i2c-ali15x3 force_addr=0xe800' + +SMBus periodically hangs on ASUS P5A motherboards and can only be +cleared by a power cycle. Cause unknown (see Issues below). + + +Description +----------- + +This is the driver for the SMB Host controller on +Acer Labs Inc. (ALI) M1541 and M1543C South Bridges. + +The M1543C is a South bridge for desktop systems. +The M1541 is a South bridge for portable systems. +They are part of the following ALI chipsets: + "Aladdin Pro 2": Includes the M1621 Slot 1 North bridge + with AGP and 100MHz CPU Front Side bus + + "Aladdin V": Includes the M1541 Socket 7 North bridge + with AGP and 100MHz CPU Front Side bus + Some Aladdin V motherboards: + Asus P5A + Atrend ATC-5220 + BCM/GVC VP1541 + Biostar M5ALA + Gigabyte GA-5AX (** Generally doesn't work because the BIOS doesn't + enable the 7101 device! **) + Iwill XA100 Plus + Micronics C200 + Microstar (MSI) MS-5169 + + "Aladdin IV": Includes the M1541 Socket 7 North bridge + with host bus up to 83.3 MHz. + +For an overview of these chips see http://www.acerlabs.com +At this time the full data sheets on the web site are password protected, +however if you contact the ALI office in San Jose +they may give you the password. + +The M1533/M1543C devices appear as FOUR separate devices +on the PCI bus. An output of lspci will show something similar +to the following: + + 00:02.0 USB Controller: Acer Laboratories Inc. M5237 (rev 03) + 00:03.0 Bridge: Acer Laboratories Inc. M7101 <= THIS IS THE ONE WE NEED + 00:07.0 ISA bridge: Acer Laboratories Inc. M1533 (rev c3) + 00:0f.0 IDE interface: Acer Laboratories Inc. M5229 (rev c1) + +** IMPORTANT ** +** If you have a 1533 or 1543C on the board and you get +** "ali15x3.o: Error: Can't detect ali15x3!" +** then run lspci. +** If you see the 1533 and 5229 devices but NOT the 7101 device, +** then you must enable ACPI, the PMU, SMB, or something similar +** in the BIOS. +** The driver won't work if it can't find the 7101 device. + +The SMB controller is part of the 7101 device, which is an +ACPI-compliant Power Management Unit (PMU). + +The whole 7101 device has to be enabled for the SMB to work. +You can't just enable the SMB alone. +The SMB and the ACPI have separate I/O spaces. +We make sure that the SMB is enabled. We leave the ACPI alone. + + +Features +-------- +This driver controls the SMB Host only. +The SMB Slave controller on the M15X3 is not enabled. +This driver does not use interrupts. + + +Issues +------ +This driver requests the I/O space for only the SMB +registers. It doesn't use the ACPI region. + +On the ASUS P5A motherboard, there are several reports that +the SMBus will hang and this can only be resolved by +powering off the computer. It appears to be worse when the board +gets hot, for example under heavy CPU load, or in the summer. +There may be electrical problems on this board. +On the P5A, the W83781D sensor chip is on both the ISA and +SMBus. Therefore the SMBus hangs can generally be avoided +by accessing the W83781D on the ISA bus only. + diff -Naur a/Documentation/i2c/busses/i2c-ali1535 b/Documentation/i2c/busses/i2c-ali1535 --- a/Documentation/i2c/busses/i2c-ali1535 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-ali1535 2005-02-04 22:02:24.000000000 +0100 @@ -0,0 +1,50 @@ +Kernel driver i2c-ali1535 + +Supported adapters: + * Acer Labs, Inc. ALI 1535 (south bridge) + Datasheet: Available at the Acer Labs website (password may be required) + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Mark D. Studebaker <mdsxyz123 at yahoo.com>, + Dan Eaton <dan.eaton at rocketlogix.com>, + Stephen Rousset<stephen.rousset at rocketlogix.com> + +Module Parameters +----------------- + +(none) + + +Description +----------- + +This is the driver for the SMB Host controller on +Acer Labs Inc. (ALI) M1535 South Bridge. + +The M1535 is a South bridge for portable systems. +It is very similar to the M15x3 South bridges also produced +by Acer Labs Inc. Some of the registers within the part +have moved and some have been redefined slightly. Additionally, +the sequencing of the SMBus transactions has been modified +to be more consistent with the sequencing recommended by +the manufacturer and observed through testing. These +changes are reflected in this driver and can be identified +by comparing this driver to the i2c-ali15x3 driver. +For an overview of these chips see http://www.acerlabs.com + +The SMB controller is part of the 7101 device, which is an +ACPI-compliant Power Management Unit (PMU). + +The whole 7101 device has to be enabled for the SMB to work. +You can't just enable the SMB alone. +The SMB and the ACPI have separate I/O spaces. +We make sure that the SMB is enabled. We leave the ACPI alone. + + +Features +-------- + +This driver controls the SMB Host only. +This driver does not use interrupts. diff -Naur a/Documentation/i2c/busses/i2c-ali1563 b/Documentation/i2c/busses/i2c-ali1563 --- a/Documentation/i2c/busses/i2c-ali1563 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-ali1563 2005-02-04 22:23:43.000000000 +0100 @@ -0,0 +1,26 @@ +Kernel driver i2c-ali1563 + +Supported adapters: + * Acer Labs, Inc. ALI 1563 (south bridge) + Datasheet: Under NDA + +Author: Patrick Mochel <mochel at digitalimplant.org> + +Description +----------- + +This is the driver for the SMB Host controller on +Acer Labs Inc. (ALI) M1563 South Bridge. + +For an overview of these chips see http://www.acerlabs.com + +The 1563 southbridge is deceptively similar to the 1533, with a +few notable exceptions. One of those happens to be the fact they +upgraded the i2c core to be 2.0 compliant, and happens to be almost +identical to the i2c controller found in the Intel 801 south bridges. + +Features +-------- + +This driver controls the SMB Host only. +This driver does not use interrupts. diff -Naur a/Documentation/i2c/busses/i2c-amd756 b/Documentation/i2c/busses/i2c-amd756 --- a/Documentation/i2c/busses/i2c-amd756 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-amd756 2005-02-04 22:24:54.000000000 +0100 @@ -0,0 +1,27 @@ +Kernel driver i2c-amd756 + +Status: Complete and somewhat tested + +Supported adapters: + * AMD 756 + * AMD 766 + * AMD 768 + * AMD 8111 + Datasheets: Publicly available on AMD website + + * nVidia nForce + Datasheet: Unavailable + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com> + +Description +----------- + +This driver supports the AMD 756, 766, 768 and 8111 Peripheral Bus Controllers, and +the nVidia nForce. + +Note that for the 8111, there are two SMBus adapters. The SMBus 1.0 adapter is +supported by this driver, and the SMBus 2.0 adapter is supported +by the i2c-amd8111 driver. diff -Naur a/Documentation/i2c/busses/i2c-amd8111 b/Documentation/i2c/busses/i2c-amd8111 --- a/Documentation/i2c/busses/i2c-amd8111 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-amd8111 2005-02-04 22:25:11.000000000 +0100 @@ -0,0 +1,40 @@ +Kernel driver i2c-adm8111 + +Supported adapters: + * AMD-8111 SMBus 2.0 PCI interface + +Datasheets: + AMD datasheet not yet available, but almost everything can be found in + publically available ACPI 2.0 specification, which the adapter follows. + +Author: Vojtech Pavlik <vojtech at suse.cz> + +Description +----------- + +If you see something like this: + +00:07.2 SMBus: Advanced Micro Devices [AMD] AMD-8111 SMBus 2.0 (rev 02) + Subsystem: Advanced Micro Devices [AMD] AMD-8111 SMBus 2.0 + Flags: medium devsel, IRQ 19 + I/O ports at d400 [size=32] + +in your 'lspci -v', then this driver is for your chipset. + +Process Call Support +-------------------- + +Supported. + +SMBus 2.0 Support +----------------- + +Supported. Both PEC and block process call support is implemented. +Slave mode or host notification are not yet implemented. + +Notes +----- + +Note that for the 8111, there are two SMBus adapters. The SMBus 2.0 adapter is +supported by this driver, and the SMBus 1.0 adapter is supported +by the i2c-amd756 driver. diff -Naur a/Documentation/i2c/busses/i2c-i801 b/Documentation/i2c/busses/i2c-i801 --- a/Documentation/i2c/busses/i2c-i801 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-i801 2005-02-05 12:12:36.000000000 +0100 @@ -0,0 +1,86 @@ +Kernel driver i2c-i801 + +Supported adapters: + * Intel 82801AA and 82801AB (ICH and ICH0 - part of the + '810' and '810E' chipsets) + * Intel 82801BA (ICH2 - part of the '815E' chipset) + * Intel 82801CA/CAM (ICH3) + * Intel 82801DB (ICH4) (HW PEC supported, 32 byte buffer not supported) + * Intel 82801EB/ER (ICH5) (HW PEC supported, 32 byte buffer not supported) + * Intel 6300ESB + * Intel 82801FB/FR/FW/FRW (ICH6) + * Intel ICH7 + Datasheets: Publicly available at the Intel website + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Mark Studebaker <mdsxyz123 at yahoo.com> + + +Module Parameters +----------------- + +* force_addr: int + Forcibly enable the ICH at the given address. EXTREMELY DANGEROUS! + + +Description +----------- + +The ICH (properly known as the 82801AA), ICH0 (82801AB), +ICH2 (82801BA), ICH3 (82801CA/CAM) and later devices +are Intel chips that are a part of +Intel's '810' chipset for Celeron-based PCs, +'810E' chipset for Pentium-based PCs, '815E' chipset, and others. + +The ICH chips contain at least SEVEN separate PCI functions +in TWO logical PCI devices. +An output of lspci will show something similar to the following: + + 00:1e.0 PCI bridge: Intel Corporation: Unknown device 2418 (rev 01) + 00:1f.0 ISA bridge: Intel Corporation: Unknown device 2410 (rev 01) + 00:1f.1 IDE interface: Intel Corporation: Unknown device 2411 (rev 01) + 00:1f.2 USB Controller: Intel Corporation: Unknown device 2412 (rev 01) + 00:1f.3 Unknown class [0c05]: Intel Corporation: Unknown device 2413 (rev 01) + +The SMBus controller is function 3 in device 1f. +Class 0c05 is SMBus Serial Controller. + +If you do NOT see the 24x3 device at function 3, and you can't +figure out any way in the BIOS to enable it, + +The ICH chips are quite similar to Intel's PIIX4 chip, +at least in the SMBus controller. + +See the file i2c-piix4 for some additional information. + + +Process Call Support +-------------------- + +Not supported. + + +I2C Block Read Support +---------------------- + +The ICH4 supports a special 3-byte address (command code +plus 2 more bytes) I2C block read. +The driver and the kernel i2c protocol stack do not +support this. +The ICH5 and higher support a standard 1-byte address (command code) +I2C block read. The driver does support this. + + +SMBus 2.0 Support +----------------- + +The 82801DB (ICH4) and later chips support several SMBus 2.0 features. + +********************** +The lm_sensors project gratefully acknowledges the support of +Texas Instruments in the initial development of this driver. + +The lm_sensors project gratefully acknowledges the support of +Intel in the development of SMBus 2.0 / ICH4 features of this driver. diff -Naur a/Documentation/i2c/busses/i2c-i810 b/Documentation/i2c/busses/i2c-i810 --- a/Documentation/i2c/busses/i2c-i810 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-i810 2005-02-04 22:26:32.000000000 +0100 @@ -0,0 +1,49 @@ +Kernel driver i2c-i810 + +Supported adapters: + * Intel 82810, 82810-DC100, 82810E, and 82815 (GMCH) + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Ky?sti M?lkki <kmalkki at cc.hut.fi>, + Ralph Metzler <rjkm at thp.uni-koeln.de>, + Mark D. Studebaker <mdsxyz123 at yahoo.com> + +Main contact: Mark Studebaker <mdsxyz123 at yahoo.com> + +Description +----------- +This driver uses the i2c-algo-bit module which must be +modprobed and/or enabled in your kernel +(Character Devices -> I2C Support -> I2C Bit-Banging Interfaces). + +WARNING: If you have an '810' or '815' motherboard, your standard I2C +temperature sensors are most likely on the 801's I2C bus. +You want the i2c-i80 driver for those, not this driver. + +Now for the i2c-i810... + +The GMCH chip contains two I2C interfaces. + +The first interface is used for DDC (Data Display Channel) +which is a serial channel through the VGA monitor connector +to a DDC-compliant monitor. This interface is defined by the +Video Electronics Standards Association (VESA). The standards +are available for purchase at http://www.vesa.org . + +The second interface is a general-purpose I2C bus. +It may be connected to a TV-out chip such as the BT869 or possibly +to a digital flat-panel display. + +Features +-------- +Both busses use the i2c-algo-bit driver for 'bit banging' and support +for specific transactions is provided by i2c-algo-bit. + + +Issues +------ +If you enable bus testing in i2c-algo-bit (insmod i2c-algo-bit bit_test=1), +the test may fail; if so, the i2c-i810 driver won't be inserted. +However, we think this has been fixed. diff -Naur a/Documentation/i2c/busses/i2c-nforce2 b/Documentation/i2c/busses/i2c-nforce2 --- a/Documentation/i2c/busses/i2c-nforce2 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-nforce2 2005-02-04 22:27:10.000000000 +0100 @@ -0,0 +1,37 @@ +Kernel driver i2c-nforce2 + +Supported adapters: + * nVidia nForce2 SMBus PCI interface (10de:0064, included in nForce2 MCP) + Datasheet: not publically available, but seems to be similar to the + AMD-8111 SMBus 2.0 adapter. + +Authors: + Hans-Frieder Vogt <hfvogt at arcor.de>, + Thomas Leibold <thomas at plx.com>, + Patrick Dreker <patrick at dreker.de> + +Description +----------- + +i2c-nforce2 is a driver for the SMBuses included in the nVidia nForce2 MCP. + +If your 'lspci -v' listing shows something like the following, + +00:01.1 SMBus: nVidia Corporation: Unknown device 0064 (rev a2) + Subsystem: Asustek Computer, Inc.: Unknown device 0c11 + Flags: 66Mhz, fast devsel, IRQ 5 + I/O ports at c000 [size=32] + Capabilities: <available only to root> + +then this driver should support the SMBuses of your motherboard. + + +Notes +----- + +The SMBus adapter in the nForce2 chipset seems to be very similar to the +SMBus 2.0 adapter in the AMD-8111 southbridge. However, I could only get the +driver to work with direct I/O access, which is different to the EC interface +of the AMD-8111. +Tested on Asus A7N8X. The ACPI DSDT table of the Asus A7N8X lists two SMBuses, +both of which are supported by this driver. diff -Naur a/Documentation/i2c/busses/i2c-parport b/Documentation/i2c/busses/i2c-parport --- a/Documentation/i2c/busses/i2c-parport 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-parport 2005-02-04 22:27:42.000000000 +0100 @@ -0,0 +1,154 @@ +Kernel driver i2c-parport + +Author: Jean Delvare <khali at linux-fr.org> + +This is a unified driver for several i2c-over-parallel-port adapters, +such as the ones made by Philips, Velleman or ELV. This driver is +meant as a replacement for the older, individual drivers: + * i2c-philips-par + * i2c-elv + * i2c-velleman + * video/i2c-parport (NOT the same as this one, dedicated to home brew + teletext adapters) + +It currently supports the following devices: + * Philips adapter + * home brew teletext adapter + * Velleman K8000 adapter + * ELV adapter + * Analog Devices evaluation boards (ADM1025, ADM1030, ADM1031, ADM1032) + +These devices use different pinout configurations, so you have to tell +the driver what you have, using the type module parameter. There is no +way to autodetect the devices. Support for different pinout configurations +can be easily added when needed. + + +Building your own adapter +------------------------- + +If you want to build you own i2c-over-parallel-port adapter, here is +a sample electronics schema (credits go to Sylvain Munaut): + +Device PC +Side ___________________Vdd (+) Side + | | | + --- --- --- + | | | | | | + |R| |R| |R| + | | | | | | + --- --- --- + | | | + | | /| | +SCL ----------x--------o |-----------x------------------- pin 2 + | \| | | + | | | + | |\ | | +SDA ----------x----x---| o---x--------------------------- pin 13 + | |/ | + | | + | /| | + ---------o |----------------x-------------- pin 3 + \| | | + | | + --- --- + | | | | + |R| |R| + | | | | + --- --- + | | + ### ### + GND GND + +Remarks: + - This is the exact pinout and electronics used on the Analog Devices + evaluation boards. + /| + - All inverters -o |- must be 74HC05, they must be open collector output. + \| + - All resitors are 10k. + - Pins 18-25 of the parallel port connected to GND. + - Pins 4-9 (D2-D7) could be used as VDD is the driver drives them high. + The ADM1032 evaluation board uses D4-D7. Beware that the amount of + current you can draw from the parallel port is limited. Also note that + all connected lines MUST BE driven at the same state, else you'll short + circuit the output buffers! So plugging the I2C adapter after loading + the i2c-parport module might be a good safety since data line state + prior to init may be unknown. + - This is 5V! + - Obviously you cannot read SCL (so it's not really standard-compliant). + Pretty easy to add, just copy the SDA part and use another input pin. + That would give (ELV compatible pinout): + + +Device PC +Side ______________________________Vdd (+) Side + | | | | + --- --- --- --- + | | | | | | | | + |R| |R| |R| |R| + | | | | | | | | + --- --- --- --- + | | | | + | | |\ | | +SCL ----------x--------x--| o---x------------------------ pin 15 + | | |/ | + | | | + | | /| | + | ---o |-------------x-------------- pin 2 + | \| | | + | | | + | | | + | |\ | | +SDA ---------------x---x--| o--------x------------------- pin 10 + | |/ | + | | + | /| | + ---o |------------------x--------- pin 3 + \| | | + | | + --- --- + | | | | + |R| |R| + | | | | + --- --- + | | + ### ### + GND GND + + +If possible, you should use the same pinout configuration as existing +adapters do, so you won't even have to change the code. + + +Similar (but different) drivers +------------------------------- + +This driver is NOT the same as the i2c-pport driver found in the i2c package. +The i2c-pport driver makes use of modern parallel port features so that +you don't need additional electronics. It has other restrictions however, and +was not ported to Linux 2.6 (yet). + +This driver is also NOT the same as the i2c-pcf-epp driver found in the +lm_sensors package. The i2c-pcf-epp driver doesn't use the parallel port +as an I2C bus directly. Instead, it uses it to control an external I2C bus +master. That driver was not ported to Linux 2.6 (yet) either. + + +Legacy documentation for Velleman adapter +----------------------------------------- + +Useful links: +Velleman http://www.velleman.be/ +Velleman K8000 Howto http://howto.htlw16.ac.at/k8000-howto.html + +The project has lead to new libs for the Velleman K8000 and K8005: + LIBK8000 v1.99.1 and LIBK8005 v0.21 +With these libs, you can control the K8000 interface card and the K8005 +stepper motor card with the simple commands which are in the original +Velleman software, like SetIOchannel, ReadADchannel, SendStepCCWFull and +many more, using /dev/velleman. + http://home.wanadoo.nl/hihihi/libk8000.htm + http://home.wanadoo.nl/hihihi/libk8005.htm + http://struyve.mine.nu:8080/index.php?block=k8000 + http://sourceforge.net/projects/libk8005/ diff -Naur a/Documentation/i2c/busses/i2c-parport-light b/Documentation/i2c/busses/i2c-parport-light --- a/Documentation/i2c/busses/i2c-parport-light 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-parport-light 2005-02-04 22:28:32.000000000 +0100 @@ -0,0 +1,161 @@ +Kernel driver i2c-parport-light + +Author: Jean Delvare <khali at linux-fr.org> + +This driver is a light version of i2c-parport. It doesn't depend +on the parport driver, and uses direct I/O access instead. This +might be prefered on embedded systems where wasting memory for +the clean but heavy parport handling is not an option. The +drawback is a reduced portability and the impossibility to +dasiy-chain other parallel port devices. + +This is a unified driver for several i2c-over-parallel-port adapters, +such as the ones made by Philips, Velleman or ELV. This driver is +meant as a replacement for the older, individual drivers: + * i2c-philips-par + * i2c-elv + * i2c-velleman + * video/i2c-parport (NOT the same as this one, dedicated to home brew + teletext adapters) + +It currently supports the following devices: + * Philips adapter + * home brew teletext adapter + * Velleman K8000 adapter + * ELV adapter + * Analog Devices evaluation boards (ADM1025, ADM1030, ADM1031, ADM1032) + +These devices use different pinout configurations, so you have to tell +the driver what you have, using the type module parameter. There is no +way to autodetect the devices. Support for different pinout configurations +can be easily added when needed. + + +Building your own adapter +------------------------- + +If you want to build you own i2c-over-parallel-port adapter, here is +a sample electronics schema (credits go to Sylvain Munaut): + +Device PC +Side ___________________Vdd (+) Side + | | | + --- --- --- + | | | | | | + |R| |R| |R| + | | | | | | + --- --- --- + | | | + | | /| | +SCL ----------x--------o |-----------x------------------- pin 2 + | \| | | + | | | + | |\ | | +SDA ----------x----x---| o---x--------------------------- pin 13 + | |/ | + | | + | /| | + ---------o |----------------x-------------- pin 3 + \| | | + | | + --- --- + | | | | + |R| |R| + | | | | + --- --- + | | + ### ### + GND GND + +Remarks: + - This is the exact pinout and electronics used on the Analog Devices + evaluation boards. + /| + - All inverters -o |- must be 74HC05, they must be open collector output. + \| + - All resitors are 10k. + - Pins 18-25 of the parallel port connected to GND. + - Pins 4-9 (D2-D7) could be used as VDD is the driver drives them high. + The ADM1032 evaluation board uses D4-D7. Beware that the amount of + current you can draw from the parallel port is limited. Also note that + all connected lines MUST BE driven at the same state, else you'll short + circuit the output buffers! So plugging the I2C adapter after loading + the i2c-parport module might be a good safety since data line state + prior to init may be unknown. + - This is 5V! + - Obviously you cannot read SCL (so it's not really standard-compliant). + Pretty easy to add, just copy the SDA part and use another input pin. + That would give (ELV compatible pinout): + + +Device PC +Side ______________________________Vdd (+) Side + | | | | + --- --- --- --- + | | | | | | | | + |R| |R| |R| |R| + | | | | | | | | + --- --- --- --- + | | | | + | | |\ | | +SCL ----------x--------x--| o---x------------------------ pin 15 + | | |/ | + | | | + | | /| | + | ---o |-------------x-------------- pin 2 + | \| | | + | | | + | | | + | |\ | | +SDA ---------------x---x--| o--------x------------------- pin 10 + | |/ | + | | + | /| | + ---o |------------------x--------- pin 3 + \| | | + | | + --- --- + | | | | + |R| |R| + | | | | + --- --- + | | + ### ### + GND GND + + +If possible, you should use the same pinout configuration as existing +adapters do, so you won't even have to change the code. + + +Similar (but different) drivers +------------------------------- + +This driver is NOT the same as the i2c-pport driver found in the i2c package. +The i2c-pport driver makes use of modern parallel port features so that +you don't need additional electronics. It has other restrictions however, and +was not ported to Linux 2.6 (yet). + +This driver is also NOT the same as the i2c-pcf-epp driver found in the +lm_sensors package. The i2c-pcf-epp driver doesn't use the parallel port +as an I2C bus directly. Instead, it uses it to control an external I2C bus +master. That driver was not ported to Linux 2.6 (yet) either. + + +Legacy documentation for Velleman adapter +----------------------------------------- + +Useful links: +Velleman http://www.velleman.be/ +Velleman K8000 Howto http://howto.htlw16.ac.at/k8000-howto.html + +The project has lead to new libs for the Velleman K8000 and K8005: + LIBK8000 v1.99.1 and LIBK8005 v0.21 +With these libs, you can control the K8000 interface card and the K8005 +stepper motor card with the simple commands which are in the original +Velleman software, like SetIOchannel, ReadADchannel, SendStepCCWFull and +many more, using /dev/velleman. + http://home.wanadoo.nl/hihihi/libk8000.htm + http://home.wanadoo.nl/hihihi/libk8005.htm + http://struyve.mine.nu:8080/index.php?block=k8000 + http://sourceforge.net/projects/libk8005/ diff -Naur a/Documentation/i2c/busses/i2c-pca-isa b/Documentation/i2c/busses/i2c-pca-isa --- a/Documentation/i2c/busses/i2c-pca-isa 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-pca-isa 2005-02-04 22:28:44.000000000 +0100 @@ -0,0 +1,23 @@ +Kernel driver i2c-pca-isa + +Supported adapters: +This driver supports ISA boards using the Philips PCA 9564 +Parallel bus to I2C bus controller + +Author: Ian Campbell <icampbell at arcom.com>, Arcom Control Systems + +Module Parameters +----------------- + +* base int + I/O base address +* irq int + IRQ interrupt +* clock int + Clock rate as described in table 1 of PCA9564 datasheet + +Description +----------- + +This driver supports ISA boards using the Philips PCA 9564 +Parallel bus to I2C bus controller diff -Naur a/Documentation/i2c/busses/i2c-piix4 b/Documentation/i2c/busses/i2c-piix4 --- a/Documentation/i2c/busses/i2c-piix4 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-piix4 2005-02-04 22:29:17.000000000 +0100 @@ -0,0 +1,73 @@ +Kernel driver i2c-piix4 + +Supported adapters: + * Intel 82371AB PIIX4 and PIIX4E + * Intel 82443MX (440MX) + Datasheet: Publicly available at the Intel website + * ServerWorks OSB4, CSB5 and CSB6 southbridges + Datasheet: Only available via NDA from ServerWorks + * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge + Datasheet: Publicly available at the SMSC website http://www.smsc.com + +Authors: + Frodo Looijaard <frodol at dds.nl> + Philip Edelbrock <phil at netroedge.com> + + +Module Parameters +----------------- + +* force: int + Forcibly enable the PIIX4. DANGEROUS! +* force_addr: int + Forcibly enable the PIIX4 at the given address. EXTREMELY DANGEROUS! +* fix_hstcfg: int + Fix config register. Needed on some boards (Force CPCI735). + + +Description +----------- + +The PIIX4 (properly known as the 82371AB) is an Intel chip with a lot of +functionality. Among other things, it implements the PCI bus. One of its +minor functions is implementing a System Management Bus. This is a true +SMBus - you can not access it on I2C levels. The good news is that it +natively understands SMBus commands and you do not have to worry about +timing problems. The bad news is that non-SMBus devices connected to it +can confuse it mightily. Yes, this is known to happen... + +Cat /proc/pci, and see whether it contains an entry like this: + + Bus 0, device 1, function 3: + Bridge: Intel 82371AB PIIX4 ACPI (rev 1). + Medium devsel. Fast back-to-back capable. + +Bus and device numbers may differ, but the function number must be identical +(like many PCI devices, the PIIX4 incorporates a number of different +'functions', which can be considered as separate devices). If you find such +an entry, you have a PIIX4 SMBus controller. + +On some computers (most notably, some Dells), the SMBus is disabled by +default. If you use the insmod parameter 'force=1', the kernel module + will try to enable it. THIS IS VERY DANGEROUS! If the BIOS did not +set up a correct address for this module, you could get in big trouble +(read: crashes, data corruption, etc.). Try this only as a last resort +(try BIOS updates first, for example), and backup first! An even more +dangerous option is 'force_addr=<IOPORT>'. This will not only enable the +PIIX4 like 'force' foes, but it will also set a new base I/O port address. +The SMBus parts of the PIIX4 needs a range of 8 of these addresses to +function correctly. If these addresses are already reserved by some other +device, you will get into big trouble! DON'T USE THIS IF YOU ARE NOT VERY +SURE ABOUT WHAT YOU ARE DOING! + +The PIIX4E is just an new version of the PIIX4; it is supported as well. The +PIIX/PIIX3 does not implement an SMBus or I2C bus, so you can't use this +driver on those mainboards. + +The ServerWorks Southbridges, the Intel 440MX, +and the Victory766 are identical to the PIIX4 in I2C/SMBus support. + +A few OSB4 southbridges are known to be misconfigured by the BIOS. In this +case, you have you use the fix_hstcfg module parameter. Do not use it +unless you know you have to, because in some cases it also breaks +configuration on southbridges that don't need it. diff -Naur a/Documentation/i2c/busses/i2c-prosavage b/Documentation/i2c/busses/i2c-prosavage --- a/Documentation/i2c/busses/i2c-prosavage 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-prosavage 2005-02-04 22:29:53.000000000 +0100 @@ -0,0 +1,27 @@ +Kernel driver i2c-prosavage + +Supported adapters: + + S3/VIA KM266/VT8375 aka ProSavage8 + S3/VIA KM133/VT8365 aka Savage4 + +Author: Henk Vergonet <henk at god.dyndns.org> + +Description +----------- + +The Savage4 chips contain two I2C interfaces (aka a I2C 'master' +or 'host'). + +The first interface is used for DDC (Data Display Channel) +which is a serial channel through the VGA monitor connector +to a DDC-compliant monitor. This interface is defined by the +Video Electronics Standards Association (VESA). The standards +are available for purchase at http://www.vesa.org . +The second interface is a general-purpose I2C bus. + +Usefull for gaining access to the TV Encoder chips. + +This driver uses the i2c-algo-bit module which must be +modprobed and/or enabled in your kernel +(Character Devices -> I2C Support -> I2C Bit-Banging Interfaces). diff -Naur a/Documentation/i2c/busses/i2c-savage4 b/Documentation/i2c/busses/i2c-savage4 --- a/Documentation/i2c/busses/i2c-savage4 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-savage4 2005-02-04 22:30:08.000000000 +0100 @@ -0,0 +1,30 @@ +Kernel driver i2c-savage4 + +Supported adapters: + * Savage4 + * Savage2000 + +Authors: + Alexander Wold <awold at bigfoot.com>, + Mark D. Studebaker <mdsxyz123 at yahoo.com> + +Description +----------- + +The Savage4 chips contain two I2C interfaces (aka a I2C 'master' +or 'host'). + +The first interface is used for DDC (Data Display Channel) +which is a serial channel through the VGA monitor connector +to a DDC-compliant monitor. This interface is defined by the +Video Electronics Standards Association (VESA). The standards +are available for purchase at http://www.vesa.org . +The DDC bus is not yet supported because its register is not +directly memory-mapped. + +The second interface is a general-purpose I2C bus. +This is the only interface supported by the driver at the moment. + +This driver uses the i2c-algo-bit module which must be +modprobed and/or enabled in your kernel +(Character Devices -> I2C Support -> I2C Bit-Banging Interfaces). diff -Naur a/Documentation/i2c/busses/i2c-sis5595 b/Documentation/i2c/busses/i2c-sis5595 --- a/Documentation/i2c/busses/i2c-sis5595 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-sis5595 2005-02-05 12:25:56.000000000 +0100 @@ -0,0 +1,65 @@ +Kernel driver i2c-sis5595 + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Mark D. Studebaker <mdsxyz123 at yahoo.com>, + Philip Edelbrock <phil at netroedge.com> + +Supported adapters: + * Silicon Integrated Systems Corp. SiS5595 Southbridge + Datasheet: Publicly available at the Silicon Integrated Systems Corp. site. + +Note: all have mfr. ID 0x1039. + + SUPPORTED PCI ID + 5595 0008 + + Note: these chips contain a 0008 device which is incompatible with the + 5595. We recognize these by the presence of the listed + "blacklist" PCI ID and refuse to load. + + NOT SUPPORTED PCI ID BLACKLIST PCI ID + 540 0008 0540 + 550 0008 0550 + 5513 0008 5511 + 5581 0008 5597 + 5582 0008 5597 + 5597 0008 5597 + 5598 0008 5597/5598 + 630 0008 0630 + 645 0008 0645 + 646 0008 0646 + 648 0008 0648 + 650 0008 0650 + 651 0008 0651 + 730 0008 0730 + 735 0008 0735 + 745 0008 0745 + 746 0008 0746 + +Module Parameters +----------------- + +* force_addr=0xaddr Set the I/O base address. Useful for boards + that don't set the address in the BIOS. Does not do a + PCI force; the device must still be present in lspci. + Don't use this unless the driver complains that the + base address is not set. + Example: 'modprobe i2c-sis5595 force_addr=0x290' + + +Description +----------- + +i2c-sis5595 is a true SMBus host driver for motherboards with the +SiS5595 southbridges. + +WARNING: If you are trying to access the integrated sensors on the +SiS5595 chip, you want the sis5595.o driver for those, not this driver. +This driver is a BUS driver, not a CHIP driver. +A BUS driver is used by other CHIP drivers to access chips on the bus. + +To install this driver, simply do + # modprobe i2c-sis5595 + +Please send feedback to us at sensors at stimpy.netroedge.com. diff -Naur a/Documentation/i2c/busses/i2c-sis630 b/Documentation/i2c/busses/i2c-sis630 --- a/Documentation/i2c/busses/i2c-sis630 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-sis630 2005-02-04 22:30:38.000000000 +0100 @@ -0,0 +1,57 @@ +Kernel driver i2c-sis630 + +Supported adapters: + * Silicon Integrated Systems Corp (SiS) + 630 chipset (Datasheet: available at http://amalysh.bei.t-online.de/docs/SIS/) + 730 chipset + * Possible other SiS chipsets ? + +Author: Alexander Malysh <amalysh at web.de> + +Module Parameters +----------------- + +* force = [1|0] Forcibly enable the SIS630. DANGEROUS! + This can be interesting for chipsets not named + above to check if it works for you chipset, but DANGEROUS! +* high_clock = [1|0] Forcibly set Host Master Clock to 56KHz (default,what your BIOS use). + DANGEROUS! This should be a bit faster, but freeze some systems (i.e. + my Laptop). + + +Description +----------- + +This SMBus only driver is known to work on motherboards with the above named +chipsets. + +If you see something like this: + +00:00.0 Host bridge: Silicon Integrated Systems [SiS] 630 Host (rev 31) +00:01.0 ISA bridge: Silicon Integrated Systems [SiS] 85C503/5513 + +or like this: + +00:00.0 Host bridge: Silicon Integrated Systems [SiS] 730 Host (rev 02) +00:01.0 ISA bridge: Silicon Integrated Systems [SiS] 85C503/5513 + +in your 'lspci' output , then this driver is for your chipset. + +Note: kernel versions later than 2.4.18 not tested. + +If anyone owns a board with those chips AND is willing to risk crashing & +burning an otherwise well-behaved kernel in the name of progress... please +contact me at <amalysh at web.de> or via the project's mailing list: +<sensors at stimpy.netroedge.com>. Please send bug reports and/or success +stories as well. + + +Thank Yous +----------- +Philip Edelbrock <phil at netroedge.com> +- testing SiS730 support +Mark M. Hoffman <mhoffman at lightlink.com> +- bug fixes + +To anyone else which I forgot here ;), thanks! + diff -Naur a/Documentation/i2c/busses/i2c-sis69x b/Documentation/i2c/busses/i2c-sis69x --- a/Documentation/i2c/busses/i2c-sis69x 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-sis69x 2005-02-05 12:26:11.000000000 +0100 @@ -0,0 +1,72 @@ +Kernel driver i2c-sis96x + +Replaces 2.4.x i2c-sis645 + +Supported adapters: + * Silicon Integrated Systems Corp (SiS) + Any combination of these host bridges: + 645, 645DX (aka 646), 648, 650, 651, 655, 735, 745, 746 + and these south bridges: + 961, 962, 963(L) + +Author: Mark M. Hoffman <mhoffman at lightlink.com> + +Description +----------- + +This SMBus only driver is known to work on motherboards with the above named +chipset combinations. The driver was developed without benefit of a proper +datasheet from SiS. The SMBus registers are assumed compatible with those of +the SiS630, although they are located in a completely different place. Thanks +to Alexander Malysh <amalysh at web.de> for providing the SiS630 datasheet (and +driver). + +The command "lspci" as root should produce something like these lines: + +00:00.0 Host bridge: Silicon Integrated Systems [SiS]: Unknown device 0645 +00:02.0 ISA bridge: Silicon Integrated Systems [SiS] 85C503/5513 +00:02.1 SMBus: Silicon Integrated Systems [SiS]: Unknown device 0016 + +or perhaps this... + +00:00.0 Host bridge: Silicon Integrated Systems [SiS]: Unknown device 0645 (rev 02) +00:02.0 ISA bridge: Silicon Integrated Systems [SiS]: Unknown device 0961 +00:02.1 SMBus: Silicon Integrated Systems [SiS]: Unknown device 0016 + +(kernel versions later than 2.4.18 may fill in the "Unknown"s) + +If you cant see it please look on quirk_sis_96x_smbus (drivers/pci/quirks.c) +(also if southbridge detection fails) + +I suspect that this driver could be made to work for the following SiS chipsets +as well: 635, and 635T. +If anyone owns a board with those chips AND is willing to risk crashing & +burning an otherwise well-behaved kernel in the name of progress... please +contact me at <mhoffman at lightlink.com> or via the project's mailing list: +<sensors at stimpy.netroedge.com>. Please send bug reports and/or success +stories as well. + + +TO DOs +----------- +* The driver does not support SMBus block reads/writes; I may add them if a +scenario is found where they're needed. + + +Thank Yous +----------- +Mark D. Studebaker <mdsxyz123 at yahoo.com> + - design hints and bug fixes +Alexander Maylsh <amalysh at web.de> + - ditto, plus an important datasheet... almost the one I really wanted +Hans-G?nter L?tke Uphues <hg_lu at t-online.de> + - patch for SiS735 +Robert Zwerus <arzie at dds.nl> + - testing for SiS645DX +Kianusch Sayah Karadji <kianusch at sk-tech.net> + - patch for SiS645DX/962 +Ken Healy + - patch for Sis655 + +To anyone else who has written w/ feedback, thanks! + diff -Naur a/Documentation/i2c/busses/i2c-stub b/Documentation/i2c/busses/i2c-stub --- a/Documentation/i2c/busses/i2c-stub 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-stub 2005-02-04 22:31:06.000000000 +0100 @@ -0,0 +1,9 @@ +Kernel driver i2c-stub + +Author: Mark M. Hoffman <mhoffman at lightlink.com> + +Description +----------- + +This module may be useful to developers of SMBus client drivers, +especially for certain kinds of sensor chips. diff -Naur a/Documentation/i2c/busses/i2c-via b/Documentation/i2c/busses/i2c-via --- a/Documentation/i2c/busses/i2c-via 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-via 2005-02-04 22:31:19.000000000 +0100 @@ -0,0 +1,41 @@ +Kernel driver i2c-via + +Supported adapters: + * VIA Technologies, InC. VT82C586B + Datasheet: Publicly available at the VIA website + +Author: Ky?sti M?lkki <kmalkki at cc.hut.fi> + +Description +----------- + +i2c-via is an i2c bus driver for motherboards with VIA chipset. + +The following VIA pci chipsets are supported: + - MVP3, VP3, VP2/97, VPX/97 + - others with South bridge VT82C586B + +Your /proc/pci or lspci listing must show this : + + Bridge: VIA Technologies, Inc. VT82C586B ACPI (rev 10) + +To install this driver, simply do + # modprobe i2c-via + +This driver uses the i2c-algo-bit module which must be +modprobed and/or enabled in your kernel +(Character Devices -> I2C Support -> I2C Bit-Banging Interfaces). + + Problems? + + Q: You have VT82C586B on the motherboard, but not in the listing. + + A: Go to your BIOS setup, section PCI devices or similar. + Turn USB support on, and try again. + + Q: No error messages, but still i2c doesn't seem to work. + + A: This can happen. This driver uses the pins VIA recommends in their + datasheets, but there are several ways the motherboard manufacturer + can actually wire the lines. + diff -Naur a/Documentation/i2c/busses/i2c-viapro b/Documentation/i2c/busses/i2c-viapro --- a/Documentation/i2c/busses/i2c-viapro 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-viapro 2005-02-04 22:31:36.000000000 +0100 @@ -0,0 +1,50 @@ +Kernel driver i2c-viapro + +Supported adapters: + * VIA Technologies, Inc. VT82C596A/B + Datasheet: Sometimes available at the VIA website + + * VIA Technologies, Inc. VT82C686A/B + Datasheet: Sometimes available at the VIA website + + * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237 + Datasheet: available on request from Via + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Ky?sti M?lkki <kmalkki at cc.hut.fi>, + Mark D. Studebaker <mdsxyz123 at yahoo.com> + +Module Parameters +----------------- + +* force: int + Forcibly enable the SMBus controller. DANGEROUS! +* force_addr: int + Forcibly enable the SMBus at the given address. EXTREMELY DANGEROUS! + +Description +----------- + +i2c-viapro is a true SMBus host driver for motherboards with one of the +supported VIA southbridges. + +Your /proc/pci or lspci -n listing must show one of these : + + device 1106:3050 (VT82C596 function 3) + device 1106:3051 (VT82C596 function 3) + device 1106:3057 (VT82C686 function 4) + device 1106:3074 (VT8233) + device 1106:3147 (VT8233A) + device 1106:8235 (VT8231) + devide 1106:3177 (VT8235) + devide 1106:3227 (VT8237) + +If none of these show up, you should look in the BIOS for settings like +enable ACPI / SMBus or even USB. + +To install this driver, simply do + # modprobe i2c-viapro + + diff -Naur a/Documentation/i2c/busses/i2c-voodoo3 b/Documentation/i2c/busses/i2c-voodoo3 --- a/Documentation/i2c/busses/i2c-voodoo3 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/i2c-voodoo3 2005-02-04 22:31:48.000000000 +0100 @@ -0,0 +1,76 @@ +Kernel driver i2c-voodoo3 + +Supported adapters: + * 3dfx Voodoo3 based cards + * Voodoo Banshee based cards + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Ralph Metzler <rjkm at thp.uni-koeln.de>, + Mark D. Studebaker <mdsxyz123 at yahoo.com> + +Main contact: Philip Edelbrock <phil at netroedge.com> + +The code is based upon Ralph's test code (he did the hard stuff ;') + +Description +----------- + +The 3dfx Voodoo3 chip contains two I2C interfaces (aka a I2C 'master' +or 'host'). + +The first interface is used for DDC (Data Display Channel) +which is a serial channel through the VGA monitor connector +to a DDC-compliant monitor. This interface is defined by the +Video Electronics Standards Association (VESA). The standards +are available for purchase at http://www.vesa.org . + +The second interface is a general-purpose I2C bus. +The intent by 3dfx was to allow manufacturers to add extra +chips to the video card such as a TV-out chip such as the BT869 or possibly +even I2C based temperature sensors like the ADM1021 or LM75. + +The 'feature' set of this driver is based on the i2c-piix4 (SMBus) +features. I.e., SMBus byte reads and writes, as well as detected faults in +transmission. Quick reads/writes, block transactions, word transactions, +are yet unwritten but are probably not too hard to add. + +This driver uses the i2c-algo-bit module which must be +modprobed and/or enabled in your kernel +(Character Devices -> I2C Support -> I2C Bit-Banging Interfaces). + +Stability +--------- +Seems to be stable on the test machine, but needs more testing on other +machines. + +Simultaneous accesses of the DDC and I2C busses may cause errors. + + +Supported Devices +----------------- +Specifically, this driver was written and tested on the '3dfx Voodoo3 AGP +3000' which has a tv-out feature (s-video or composite). According to the +docs and discussions, this code should work for any Voodoo3 based cards as +well as Voodoo Banshee based cards. The DDC interface has been tested +on a Voodoo Banshee card. + +Features +-------- +This driver controls the I2C controller of the Voodoo3 chip. 'byte read' +transactions and 'data_byte write' transactions are supported, but all else +is not (but is probably easy to add if the need arises). + +Issues +------ +Probably many, but it seems to work OK on my system. :') + + +External Device Connection +-------------------------- +The digital video input jumpers give availability to the I2C bus. +Specifically, pins 13 and 25 (bottom row middle, and bottom right-end) are +the I2C clock and I2C data lines, respectively. +5V and GND are probably +also easily available making the addition of extra I2C/SMBus devices easy +to implement. diff -Naur a/Documentation/i2c/busses/scx200_acb b/Documentation/i2c/busses/scx200_acb --- a/Documentation/i2c/busses/scx200_acb 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/busses/scx200_acb 2005-02-04 22:32:09.000000000 +0100 @@ -0,0 +1,14 @@ +Kernel driver scx200_acb + +Author: Christer Weinigel <wingel at nano-system.com> + +Module Parameters +----------------- + +* base: int + Base addresses for the ACCESS.bus controllers + +Description +----------- + +Enable the use of the ACCESS.bus controllers of a SCx200 processor. diff -Naur a/Documentation/i2c/chips/adm1021 b/Documentation/i2c/chips/adm1021 --- a/Documentation/i2c/chips/adm1021 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/adm1021 2005-02-05 12:34:10.000000000 +0100 @@ -0,0 +1,114 @@ +Kernel driver adm1021 +========================= + +Supported chips: + * Analog Devices ADM1021 + Prefix `adm1021' + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: Publicly available at the Analog Devices website + * Analog Devices ADM1021A/ADM1023 + Prefix `adm1023' + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: Publicly available at the Analog Devices website + * Genesys Logic GL523SM + Prefix `gl523sm' + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: + * Intel Xeon Processor + Prefix - any other - may require 'force_adm1021' parameter + Addresses scanned: none + Datasheet: Publicly available at Intel website + Status: Alpha, untested. + * Maxim MAX1617 + Prefix `max1617' + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: Publicly available at the Maxim website + * Maxim MAX1617A + Prefix `max1617a' + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: Publicly available at the Maxim website + * National Semiconductor LM84 + Prefix `lm84' + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: Publicly available at the National Semiconductor website + * Philips NE1617 + Prefix `max1617' (probably detected as a max1617) + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: Publicly available at the Philips website + * Philips NE1617A + Prefix `max1617' (probably detected as a max1617) + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: Publicly available at the Philips website + * TI THMC10 + Prefix `thmc10' + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: Publicly available at the TI website + * Onsemi MC1066 + Prefix `mc1066' + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: Publicly available at the Onsemi website + + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com> + +Module Parameters +----------------- + +* read_only: int + Don't set any values, read only mode + + +Description +----------- + +The chips supported by this driver are very similar. The Maxim MAX1617 +is the oldest; it has the problem that it is not very well detectable. +The MAX1617A solves that. The ADM1021 is a straight clone of the MAX1617A. +Ditto for the THMC10. +From here on, we will refer to all these chips as ADM1021-clones. + +ADM1021-clones implement two temperature sensors. One of them is internal, +and measures the temperature of the chip itself; the other is external +and is realised in the form of a transistor-like device. A special alarm +indicates whether the remote sensor is connected. + +Each sensor has its own low and high limits. When they are crossed, the +corresponding alarm is set and remains on as long as the temperature stays +out of range. Temperatures are measured in degrees Celcius. Measurements +are possible between -65 and +127 degrees, with a resolution of one degree. + +The ADM1021 reports a die code, which is a sort of revision code. This +can help us pinpoint problems; it is not very useful otherwise. + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once. This means that the cause for the alarm may +already have disappeared! + +This driver only updates its values each 1.5 seconds; reading it more often +will do no harm, but will return 'old' values. It is possible to make +ADM1021-clones do faster measurements, but there is really no good reason +for that. + + +Xeon support +------------ +Some Xeon processors have real max1617, adm1021, or compatible chips +with in them, with two temperature sensors. + +Other Xeons have chips with only one sensor. + +If you have a Xeon, and the adm1021 module loads, and both +temperatures appear valid, then things are good. + +If the adm1021 module doesn't load, you should try this: + modprobe adm1021 force_adm1021=BUS,ADDRESS + ADDRESS can only be 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. + See if you have one or two valid temperatures + +If you have dual Xeons you may have appear to have two separate +adm1021-compatible chips, or two single-temperature sensors, +at distinct addresses. + + diff -Naur a/Documentation/i2c/chips/adm1025 b/Documentation/i2c/chips/adm1025 --- a/Documentation/i2c/chips/adm1025 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/adm1025 2005-02-04 23:03:30.000000000 +0100 @@ -0,0 +1,52 @@ +Kernel driver adm1025 +========================= + +Supported chips: + * Analog Devices ADM1025, AMD1025A + Prefix `adm1025' + Addresses scanned: I2C 0x2c - 0x2e (inclusive) + Datasheet: Publicly available at the Analog Devices website + * Philips NE1619 + Prefix `ne1619' + Addresses scanned: I2C 0x2c - 0x2d (inclusive) + Datasheet: Publicly available at the Philips website + +The NE1619 presents some differences with the original ADM1025: + * Only two possible addresses (0x2c - 0x2d). + * No temperature offset register, but we don't use it anyway. + * No INT mode for pin 16. We don't play with it anyway. + +Authors: + Chen-Yuan Wu <gwu at esoft.com>, + Jean Delvare <khali at linux-fr.org> + +Description +----------- + +(This is from Analog Devices.) The ADM1025 is a complete system hardware +monitor for microprocessor-based systems, providing measurement and limit +comparison of various system parameters. Five voltage measurement inputs +are provided, for monitoring +2.5V, +3.3V, +5V and +12V power supplies and +the processor core voltage. The ADM1025 can monitor a sixth power-supply +voltage by measuring its own VCC. One input (two pins) is dedicated to a +remote temperature-sensing diode and an on-chip temperature sensor allows +ambient temperature to be monitored. + +One specificity of this chip is that the pin 11 can be hardwired in two +different manners. It can act as the +12V power-supply voltage analog +input, or as the a fifth digital entry for the VID reading (bit 4). It's +kind of strange since both are useful, and the reason for designing the +chip that way is obscure at least to me. The bit 5 of the configuration +register can be used to define how the chip is hardwired. Please note +that it is not a choice you have to make as the user. The choice was +already made by your motherboard's maker. If the configuration bit isn't +set properly, you'll have a wrong +12V reading or a wrong VID reading. +The way the driver handles that is to preserve this bit through the +initialization process, assuming that the BIOS set it up properly +beforehand. If it turns out not to be true in some cases, we'll provide +a module parameter to force modes. + +This driver also supports the ADM1025A, which differs from the ADM1025 +only in that it has "open-drain VID inputs while the ADM1025 has +on-chip 100k pull-ups on the VID inputs". It doesn't make any +difference for us. diff -Naur a/Documentation/i2c/chips/adm1026 b/Documentation/i2c/chips/adm1026 --- a/Documentation/i2c/chips/adm1026 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/adm1026 2005-02-04 23:07:21.000000000 +0100 @@ -0,0 +1,103 @@ +Kernel driver adm1026 +====================== + +Supported chips: + * Analog Devices ADM1026 + Prefix `adm1026' + Addresses scanned: I2C 0x2c, 0x2d, 0x2e + +Authors: + Philip Pokorny <ppokorny at penguincomputing.com> for Penguin Computing + Justin Thiessen <jthiessen at penguincomputing.com> + +Module Parameters +----------------- + +* gpio_input: int array (min = 1, max = 17) + List of GPIO pins (0-16) to program as inputs +* gpio_output: int array (min = 1, max = 17) + List of GPIO pins (0-16) to program as outputs +* gpio_inverted: int array (min = 1, max = 17) + List of GPIO pins (0-16) to program as inverted +* gpio_normal: int array (min = 1, max = 17) + List of GPIO pins (0-16) to program as normal/non-inverted +* gpio_fan: int array (min = 1, max = 8) + List of GPIO pins (0-7) to program as fan tachs + + +Description +----------- + +This driver implements support for the Analog Devices ADM1026. Analog +Devices calls it a "complete thermal system management controller." + +The ADM1026 implements three (3) temperature sensors, 17 voltage +sensors, 16 general purpose digital I/O lines, eight (8) fan speed +sensors (8-bit), an analog output and a PWM output along with limit, +alarm and mask bits for all of the above. There is even 8k bytes of +EEPROM memory on chip. + +Temperatures are measured in degrees Celcius. There are two external +sensor inputs and one internal sensor. Each sensor has a high and low +limit. If the limit is exceeded, an interrupt (#SMBALERT) can be +generated. The interrupts can be masked. In addition, there are +over-temp limits for each sensor. If this limit is exceeded, the +#THERM output will be asserted. The current temperature and limits +have a resolution of 1 degree. + +FAN rotation speeds are reported in RPM (rotations per minute) but +measured in counts of a 22.5kHz internal clock. Each fan has a high +limit which corresponds to a minimum fan speed. If the limit is +exceeded, an interrupt can be generated. Each fan can be programmed +to divide the reference clock by 1, 2, 4 or 8. Not all RPM values can +accurately be represented, so some rounding is done. With a divider of +8, the slowest measureable speed of a one pulse per rev fan is 1323 +RPM. Two pulse per rev fans can be measured as slow as 661 RPM. + +Voltage sensors (in0 to in16) report their values in volts. An alarm +is triggered if the voltage has crossed a programmable minimum or +maximum limit. Note that minimum in this case always means 'closest +to zero'; this is important for negative voltage measurements. +Several inputs have integrated attenuators so they can measure higher +voltages directly. 3.3V, 5V, 12V, -12V and battery voltage all have +dedicated inputs. There are several inputs scaled to 0-3V full-scale +range for SCSI terminator power. The remaining inputs are not scaled +and have a 0-2.5V full-scale range. A 2.5V or 1.82V reference voltage +is provided for negative voltage measurements. + +If an alarm triggers, it will remain triggered until the hardware +register is read at least once. This means that the cause for the +alarm may already have disappeared! Note that in the current +implementation, all hardware registers are read whenever any data is +read (unless it is less than 2.0 seconds since the last update). This +means that you can easily miss once-only alarms. + +The ADM1026 measures continuously. Analog inputs are measured about 4 +times a second. Fan speed measurement time depends on fan speed and +divisor. It can take as long as 1.5 seconds to measure all fan +speeds. + +The ADM1026 has the ability to automaticaly control fan speed based on +the temperature sensor inputs. Both the PWM output and the DAC output +can be used to control fan speed. Usually only one of these two +outputs will be used. Write the minimum PWM or DAC value to the +appropriate control register. Then set the low temperature limit in +the tmin values for each temperature sensor. The range of control is +fixed at 20 degC, and the largest difference between current and tmin +of the temperature sensors sets the control output. See the datasheet +for several example circuits for controlling fan speed with the PWM +and DAC outputs. The fan speed sensors do not have PWM compensation, +so it is probably best to control the fan voltage from the power +lead rather than on the ground lead. + +The datasheet shows an example application with VID signals attached +to GPIO lines. Unfortunately, the chip may not be connected to the +VID lines in this way. The driver assumes that the chips *is* +connected this way to get a vid voltage. If the VID value is wrong or +not wired as shown in the example, then you will need to write the +correct VID value to the driver either based on the GPIO values or +setting it directly. The value written to VID should be the *raw* VID +value (0 to 0x3f) or -1 (to restore the default value). When read, +the vid interface returns the scaled voltage according to the VRM spec +selected. + diff -Naur a/Documentation/i2c/chips/adm1031 b/Documentation/i2c/chips/adm1031 --- a/Documentation/i2c/chips/adm1031 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/adm1031 2005-02-04 23:08:37.000000000 +0100 @@ -0,0 +1,37 @@ +Kernel driver adm1031 +========================= + +Supported chips: + * Analog Devices ADM1030 + Prefix: `adm1030' + Addresses scanned: I2C 0x2c to 0x2e + Datasheet: Publicly available at the Analog Devices website + http://products.analog.com/products/info.asp?product=ADM1030 + + * Analog Devices ADM1031 + Prefix: `adm1031' + Addresses scanned: I2C 0x2c to 0x2e + Datasheet: Publicly available at the Analog Devices website + http://products.analog.com/products/info.asp?product=ADM1031 + + +Authors: + Alexandre d'Alton <alex at alexdalton.org> + Jean Delvare <khali at linux-fr.org> + +Description +----------- + +ADM1030 and ADM1031 are digital temperature sensors and fan controllers. +They sense their own temperature as well as the temperature of up to one +(ADM1030) or two (ADM1031) external diodes. + +All temperature values are given in degrees Celcius. Resolution +is 0.5 degree for the local temperature, 0.125 degree for the remote +temperatures. + +Each temperature channel has its own high and low limits, plus a critical +limit. + +The ADM1030 monitors a single fan speed, while the ADM1031 monitors up to +two. Each fan channel has its own low speed limit. diff -Naur a/Documentation/i2c/chips/asb100 b/Documentation/i2c/chips/asb100 --- a/Documentation/i2c/chips/asb100 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/asb100 2005-02-04 23:50:36.000000000 +0100 @@ -0,0 +1,72 @@ +Kernel driver asb100 +======================== + +Supported Chips: + * Asus ASB100 and ASB100-A "Bach" + Addresses scanned: I2C 0x2d + Datasheet: none released + +Author: Mark M. Hoffman <mhoffman at lightlink.com> + +Description +----------- + +This driver implements support for the Asus ASB100 and ASB100-A "Bach". These +are custom ASICs available only on Asus mainboards. Asus refuses to supply a +datasheet for these chips. Thanks go to many people who helped investigate +their hardware, including: + +Vitaly V. Bursov +Alexander van Kaam (author of MBM for Windows) +Bertrik Sikken + +The ASB100 implements seven voltage sensors, three fan rotation speed sensors, +four temperature sensors, VID lines and alarms. In addition to these, the +ASB100-A also implements a single PWM controller for fans 2 and 3 (i.e. one +setting controls both.) If you have a plain ASB100, the pwm controller will +simply not work (or maybe it will for you... it doesn't for me). + +Temperatures are measured and reported in degrees Celcius. + +Fan speeds are reported in RPM (rotations per minute). An alarm is triggered +if the rotation speed has dropped below a programmable limit. + +Voltage sensors (also known as IN sensors) report values in volts. + +The VID lines encode the core voltage value: the voltage level your processor +should work with. This is hardcoded by the mainboard and/or processor itself. +It is a value in volts. + +Alarms: (TODO question marks indicate may or may not work) + +0x0001 => in0 (?) +0x0002 => in1 (?) +0x0004 => in2 +0x0008 => in3 +0x0010 => temp1 (1) +0x0020 => temp2 +0x0040 => fan1 +0x0080 => fan2 +0x0100 => in4 +0x0200 => in5 (?) (2) +0x0400 => in6 (?) (2) +0x0800 => fan3 +0x1000 => chassis switch +0x2000 => temp3 + +Alarm Notes: + +(1) This alarm will only trigger if the hysteresis value is 127C. +I.e. it behaves the same as w83781d. + +(2) The min and max registers for these values appear to +be read-only or otherwise stuck at 0x00. + +TODO: +* Experiment with fan divisors > 8. +* Experiment with temp. sensor types. +* Are there really 13 voltage inputs? Probably not... +* Fix bogus client deregistration (like w83781d in 2.6). +* Fix fan divisor / fan minimum interaction (like lm78). +* Cleanups, no doubt... + diff -Naur a/Documentation/i2c/chips/ds1621 b/Documentation/i2c/chips/ds1621 --- a/Documentation/i2c/chips/ds1621 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/ds1621 2005-02-04 23:14:55.000000000 +0100 @@ -0,0 +1,130 @@ +Kernel driver ds1621 +======================== + +Supported chips: + * Dallas Semiconductor DS1621 + Prefix: `ds1621' + Addresses scanned: I2C 0x48 - 0x4f (inclusive) + Datasheet: Publicly available at the Dallas Semiconductor website + http://www.dalsemi.com/ + * Dallas Semiconductor DS1625 + Prefix: `ds1621' + Addresses scanned: I2C 0x48 - 0x4f (inclusive) + Datasheet: Publicly available at the Dallas Semiconductor website + http://www.dalsemi.com/ + +Authors: + Christian W. Zuckschwerdt <zany at triq.net> + valueable contributions by Jan M. Sendler <sendler at sendler.de> + ported to 2.6 by Aurelien Jarno <aurelien at aurel32.net> + with the help of Jean Delvare <khali at linux-fr.org> + +Module Parameters +------------------ + +* polarity int + Output's polarity: 0 = active high, 1 = active low + +Description +----------- + +The DS1621 is a (one instance) digital thermometer and thermostat. It +has both high and low temperature limits which can be user defined +(i. e. programmed into non-volatile on-chip registers). +Temperature range is -55 degree Celsius to +125 in 0.5 increments. You +may convert this into a Fahrenheit range of -67 to +257 degrees with +0.9 steps. Unfortunally though, you will need a hash table or even a +conversion routine for that. + +Temperature readings are internally converted into a 9bit value to be +read straight via the i2c-bus, but higher resolutions may be obtained +with little effort via 'precise_temp' access or using a simple algorithm. + +As for the thermostat, behavior can also be programmed using the +polarity toggle. +On the one hand ("heater"), the thermostat output of the chip, Tout, +will trigger when the low limit temperature is met or underrun and +stays high until the high limit is met or exceeded. On the other hand +("cooler"), vice versa. +That way "heater" equals "active low", whereas "conditioner" equals +"active high". Please note that the DS1621 data sheet is somewhat +misleading in this point since setting the polarity bit does not +simply invert Tout. + + +A second thing is that, during extensive testing, Tout showed a +tolerance of up to +/- 0.5 degrees even when compared against precise +temperature readings. +Be sure to have a high vs. low temperature limit gap of al least 1.0 +degree Celsius to avoid Tout "bouncing", though! + +As for alarms, you can read the alarm status of the DS1621 via the +'alarms' proc file interface. The result consits mainly of bit 6 and 5 +of the configuration register of the chip; bit 6 (0x40 or 64) is the +high alarm bit and bit 5 (0x20 or 32) the low one. These bits are set +when the high or low limits are met or exceeded and are reset by the +module as soon as the respective temperature ranges are left. + +The alarm registers are in no way suitable to find out about the +actual status of Tout. They will only tell you about its history, +whether or not any of the limits have ever been met or exceeded since +last power-up or reset. Be aware: When testing, it showed that the +status of Tout can change with neither of the alarms set. + +Temperature conversion of the DS1621 takes up to 1000ms; internal +access to non-volatile registers may last for 10ms or below. + +This driver also detects DS1625. As this chip is discontinued, you +should use a DS1621 instead. Detected 1625s also get the +"ds1621"-prefix, but the accuracy registers are not supported. +The latest modification of this driver was not checked against 1625s, +though, but should work well with them. + +Default values written into the DS1621 upon detection are: +Temperature limits: High 60.0; low 0.0 degree Celsius; +Continuous mode (not enabled), Tout active high, alarms reset. + +High Accuracy Temperature Reading +--------------------------------- + +As said before, the temperature issued via the 9bit i2c-bus data is +somewhat arbitrary. Internally, the temperature conversion is of a +different kind that is explained (not so...) well in the DS1621 data +sheet. To cut the long story short: Inside the DS1621 there are two +oscillators, both of them biassed by a temperature coefficient. + +Higher accuracy of the temperature reading can be achieved using the +internal projection, which means taking account of REG_COUNT and +REG_SLOPE (the driver manages them): + +Taken from Dallas Semiconductors App Note 068: 'Increasing Temperature +Resolution on the DS1620' and App Note 105: 'High Resolution +Temperature Measurement with Dallas Direct-to-Digital Temperature +Sensors' + +- Read the 9bit temperature and strip the LSB (Truncate the .5 degs) +- The resulting value is TEMP_READ. +- Then, read REG_COUNT. +- And then, REG_SLOPE. + + TEMP = TEMP_READ - 0.25 + ((REG_SLOPE - REG_COUNT) / REG_SLOPE) + +Note that this is what the DONE bit in the DS1621 configuration +register is good for: Internally, one temperature conversion takes up +to 1000ms. Before that conversion is complete you will not be able to +read valid things out of REG_COUNT and REG_SLOPE. The DONE bit, as you +may have guessed by now, tells you whether the conversion is complete +("done", in plain english) and thus, whether the values you read are +good or not. + +The DS1621 has two modes of operation: "Continuous" conversion, which +can be understood as the default stand-alone mode where the chip gets +the temperature and controls external devices via its Tout pin or +tells other i2c's about it if they care. The other mode is called +"1SHOT", that means that it only figures out about the temperature +when it is explicitly told to do so; this can be seen as power saving +mode. + +Now if you want to read REG_COUNT and REG_SLOPE, you have to either +stop the continuous conversions until the contents of these registers +are valid, or, in 1SHOT mode, you have to have one conversion made. diff -Naur a/Documentation/i2c/chips/eeprom b/Documentation/i2c/chips/eeprom --- a/Documentation/i2c/chips/eeprom 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/eeprom 2005-02-05 12:24:23.000000000 +0100 @@ -0,0 +1,99 @@ +Kernel driver eeprom +======================== + +Supported chips: + * Any EEPROM chip in the designated address range + Prefix `eeprom' + Addresses scanned: I2C 0x50 - 0x57 (inclusive) + Datasheets: Publicly available from: + Atmel (www.atmel.com), + Catalyst (www.catsemi.com), + Fairchild (www.fairchildsemi.com), + Microchip (www.microchip.com), + Philips (www.semiconductor.philips.com), + Rohm (www.rohm.com), + ST (www.st.com), + Xicor (www.xicor.com), + and others. + + Chip Size (bits) Address + 24C01 1K 0x50 (shadows at 0x51 - 0x57) + 24C01A 1K 0x50 - 0x57 (Typical device on DIMMs) + 24C02 2K 0x50 - 0x57 + 24C04 4K 0x50, 0x52, 0x54, 0x56 + (additional data at 0x51, 0x53, 0x55, 0x57) + 24C08 8K 0x50, 0x54 (additional data at 0x51, 0x52, + 0x53, 0x55, 0x56, 0x57) + 24C16 16K 0x50 (additional data at 0x51 - 0x57) + Sony 2K 0x57 + + Atmel 34C02B 2K 0x50 - 0x57, SW write protect at 0x30-37 + Catalyst 34FC02 2K 0x50 - 0x57, SW write protect at 0x30-37 + Catalyst 34RC02 2K 0x50 - 0x57, SW write protect at 0x30-37 + Fairchild 34W02 2K 0x50 - 0x57, SW write protect at 0x30-37 + Microchip 24AA52 2K 0x50 - 0x57, SW write protect at 0x30-37 + ST M34C02 2K 0x50 - 0x57, SW write protect at 0x30-37 + + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Jean Delvare <khali at linux-fr.org>, + Greg Kroah-Hartman <greg at kroah.com>, + IBM Corp. + +Description +----------- + +This is a simple EEPROM module meant to enable reading the first 256 bytes +of an EEPROM (on a SDRAM DIMM for example). However, it will access serial +EEPROMs on any I2C adapter. The supported devices are generically +called 24Cxx, and are listed above; however the numbering +for these industry-standard devices may vary by manufacturer. + +This module was a programming exercise to get used to the new project +organization laid out by Frodo, but it should be at least completely +effective for decoding the contents of EEPROMs on DIMMs. + +DIMMS will typically contain a 24C01A or 24C02, or the 34C02 variants. +The other devices will not be found on a DIMM because +they respond to more than one address. + +DDC Monitors may contain any device. Often a 24C01, which responds +to all 8 addresses, is found. + +Recent Sony Vaio laptops have an EEPROM at 0x57. We couldn't get the +specification, so it is guess work and far from being complete. + +The Microchip 24AA52/24LCS52, ST M34C02, and others support an additional +software write protect register at 0x30 - 0x37 (0x20 less than the +memory location). The chip responds to "write quick" detection at this +address but does not respond to byte reads. +If this register is present, the lower 128 bytes of the memory +array are not write protected. Any byte data write to this address +will write protect the memory array permanently, and the device +will no longer respond at the 0x30-37 address. +The eeprom driver does not support this register. + +Lacking functionality: + +* Full support for larger devices (24C04, 24C08, 24C16). These are +not typically found on a PC. These devices will appear as separate +devices at multiple addresses. + +* Support for really large devices (24C32, 24C64, 24C128, 24C256, 24C512). +These devices require two-byte address fields and are not supported. + +* Enable Writing. Again, no technical reason why not, but making it easy +to change the contents of the EEPROMs (on DIMMs anyway) also makes it easy +to disable the DIMMs (potentially preventing the computer from booting) +until the values are restored somehow. + +Use: + +After inserting the module (and any other required smbus/i2c modules), you +should have some EEPROM directories in /sys/bus/i2c/devices of names such +as "eeprom-i2c-0-50". Inside each of these is a series of files which +represent 16 bytes blocks from the EEPROM. The data is in decimal (base +10) delimited by spaces. + diff -Naur a/Documentation/i2c/chips/fscher b/Documentation/i2c/chips/fscher --- a/Documentation/i2c/chips/fscher 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/fscher 2005-02-04 23:17:40.000000000 +0100 @@ -0,0 +1,176 @@ +Kernel driver fscher +======================= + +Supported chips: + * Fujitsu-Siemens Hermes chip + Prefix `fscher' + Addresses scanned: I2C 0x73 + +Authors: + Reinhard Nissl <rnissl at gmx.de> based on work + from Hermann Jung <hej at odn.de>, + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com> + +Description +----------- + +This driver implements support for the Fujitsu-Siemens Hermes chip. +It is described in the 'Register Set Specification BMC Hermes based +Systemboard' from Fujitsu-Siemens. + +The Hermes chip implements a hardware-based system management, +e.g. for controlling fan speed and core voltage. +There is also a watchdog counter on the chip which can trigger +an alarm and even shut the system down. + +The chip provides three temperature values (CPU, motherboard and auxiliary), +three voltage values (+12V, +5V and battery) and three fans (power supply, +CPU and auxiliary). + +Temperatures are measured in degrees Celcius. The resolution is 1 degree. + +Fan rotation speeds are reported in RPM (rotations per minute). +The value can be divided by a programmable divider (1, 2 or 4) which +is stored on the chip. + +Voltage sensors (also known as "in" sensors) report their values in volts. + +All values are reported as final values from the driver. +There is no need for further calculations. + + +Detailed description +-------------------- + +Below you'll find a single line description of all the bit values. With this +information, you're able to decode e. g. alarms, wdog, etc. +To make use of the watchdog, you'll need to set the watchdog time and enable +the watchdog. After that it is necessary to restart the watchdog time within +the specified period of time, or a system reset will occur. + +* rev:1 + READING & 0xff = 0x??: HERMES revision identification + +* alarms:1 + READING & 0x80 = 0x80: CPU throttling active + READING & 0x80 = 0x00: CPU running at full speed + + READING & 0x10 = 0x10: software event (see control:1) + READING & 0x10 = 0x00: no software event + + READING & 0x08 = 0x08: watchdog event (see wdog:2) + READING & 0x08 = 0x00: no watchdog event + + READING & 0x02 = 0x02: thermal event (see temp*:1) + READING & 0x02 = 0x00: no thermal event + + READING & 0x01 = 0x01: fan event (see fan*:1) + READING & 0x01 = 0x00: no fan event + + READING & 0x13 ! 0x00: ALERT LED is flashing + +* control:1 + READING & 0x01 = 0x01: software event + READING & 0x01 = 0x00: no software event + + WRITING & 0x01 = 0x01: set software event + WRITING & 0x01 = 0x00: clear software event + +* wdog:3 + READING & 0x80 = 0x80: power off on watchdog event while thermal event + READING & 0x80 = 0x00: watchdog power off disabled (just system reset enabled) + + READING & 0x40 = 0x40: watchdog timebase 60 seconds (see also wdog:1) + READING & 0x40 = 0x00: watchdog timebase 2 seconds + + READING & 0x10 = 0x10: watchdog enabled + READING & 0x10 = 0x00: watchdog disabled + + WRITING & 0x80 = 0x80: enable "power off on watchdog event while thermal event" + WRITING & 0x80 = 0x00: disable "power off on watchdog event while thermal event" + + WRITING & 0x40 = 0x40: set watchdog timebase to 60 seconds + WRITING & 0x40 = 0x00: set watchdog timebase to 2 seconds + + WRITING & 0x20 = 0x20: disable watchdog + + WRITING & 0x10 = 0x10: enable watchdog / restart watchdog time + +* wdog:2 + READING & 0x02 = 0x02: watchdog system reset occurred + READING & 0x02 = 0x00: no watchdog system reset occurred + + WRITING & 0x02 = 0x02: clear watchdog event + +* wdog:1 + READING & 0xff = 0x??: configured watch dog time in units (see wdog:3 0x40) + + WRITING & 0xff = 0x??: configure watch dog time in units + +* in*:1 (0: +5V, 1: +12V, 2: onboard 3V battery) + READING: actual voltage value + +* temp*:1 (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor) + READING & 0x02 = 0x02: thermal event (overtemperature) + READING & 0x02 = 0x00: no thermal event + + READING & 0x01 = 0x01: sensor is working + READING & 0x01 = 0x00: sensor is faulty + + WRITING & 0x02 = 0x02: clear thermal event + +* temp*:2 (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor) + READING: actual temperature value + +* fan*:1 (1: power supply fan, 2: CPU fan, 3: auxiliary fan) + READING & 0x04 = 0x04: fan event (fan fault) + READING & 0x04 = 0x00: no fan event + + WRITING & 0x04 = 0x04: clear fan event + +* fan*:2 (1: power supply fan, 2: CPU fan, 3: auxiliary fan) + READING & 0x03 = 0x03: 8 ripples are one fan turn + READING & 0x03 = 0x02: 4 ripples are one fan turn + READING & 0x03 = 0x01: 2 ripples are one fan turn + + WRITING & 0x03 = 0x03: set prescaler to "8 ripples are one fan turn" + WRITING & 0x03 = 0x02: set prescaler to "4 ripples are one fan turn" + WRITING & 0x03 = 0x01: set prescaler to "2 ripples are one fan turn" + +* fan*:3 (1: power supply fan, 2: CPU fan, 3: auxiliary fan) + READING & 0xff = 0x00: fan may be switched off + READING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V) + READING & 0xff = 0xff: fan must run at maximum speed (supply: 12V) + READING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V) + + WRITING & 0xff = 0x00: fan may be switched off + WRITING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V) + WRITING & 0xff = 0xff: fan must run at maximum speed (supply: 12V) + WRITING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V) + +* fan*:4 (1: power supply fan, 2: CPU fan, 3: auxiliary fan) + READING: actual RPM value + + +Limitations +----------- + +* Measuring fan speed +It seems that the chip counts "ripples" (typical fans produce 2 ripples per +rotation while VERAX fans produce 18) in a 9-bit register. This register is +read out every second, then the ripple prescaler (2, 4 or 8) is applied and +the result is stored in the 8 bit output register. Due to the limitation of +the counting register to 9 bits, it is impossible to measure a VERAX fan +properly (even with a prescaler of 8). At its maximum speed of 3500 RPM the +fan produces 1080 ripples per second which causes the counting register to +overflow twice, leading to only 186 RPM. + +* Measuring input voltages +in2 ("battery") reports the voltage of the onboard lithium battery and not ++3.3V from the power supply. + +* Undocumented features +Fujitsu-Siemens Computers has not documented all features of the chip so far. +Their software, System Guard, shows that there are a still some features which +cannot be controled by this implementation. diff -Naur a/Documentation/i2c/chips/gl518sm b/Documentation/i2c/chips/gl518sm --- a/Documentation/i2c/chips/gl518sm 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/gl518sm 2005-02-04 23:20:56.000000000 +0100 @@ -0,0 +1,79 @@ +Kernel driver gl518sm +========================= + +Supported chips: + * Genesys Logic GL518SM release 0x00 + Prefix `gl518sm' + Addresses scanned: I2C 0x2c and 0x2d + Datasheet: http://www.genesyslogic.com/pdf + * Genesys Logic GL518SM release 0x80 + Prefix `gl518sm' + Addresses scanned: I2C 0x2c and 0x2d + Datasheet: http://www.genesyslogic.com/pdf + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Ky?sti M?lkki <kmalkki at cc.hut.fi> + Hong-Gunn Chew <hglinux at gunnet.org> + Jean Delvare <khali at linux-fr.org> + +Description +----------- + +IMPORTANT: For the revision 0x00 chip, the + in0, in1, and in2 values (+5, +3, and +12) CANNOT be read + unless you use the slow 'iterate' method. Limits will still + work even when iterate=0. See below. This is a limitation + of the chip, not the driver. + Note that the 'iterate' method was trimmed while porting the + driver to Linux 2.6 as we considered it too ugly for the thin + benefit. + + +This driver supports the Genesys Logic GL518SM chip. There are at least +two revision of this chip, which we call revision 0x00 and 0x80. Revision +0x80 chips support the reading of voltages directly, 0x00 only for VIN3. + +The GL518SM implements one temperature sensor, two FAN rotation speed +sensors, and four voltage sensors. It can report alarms through the +computer speakers. + +Temperatures are measured in degrees Celcius. An alarm goes off while the +temperature is above the over temperature limit, and has not yet dropped +below the hysteresis limit. The alarm always reflects the current situation. +Measurements are guaranteed between -10 degrees and +110 degrees, with +a resolution of +-3 degrees. + +FAN rotation speeds are reported in RPM (rotations per minute). An alarm is +triggered if the rotation speed has dropped below a programmable limit. +In case when you have selected to turn Fan1 off, no Fan1 alarm is triggered. + +FAN readings can be divided by a programmable divider (1, 2, 4 or 8) to give +the readings more range or accuracy. This is important because some FANs +report only one 'tick' each rotation, while others report two. +Not all RPM values can accurately be represented, so some rounding is done. +With a divider of 2, the lowest representable value is around 1900 RPM. + +Voltage sensors (also known as VIN sensors) report their values in volts. An +alarm is triggered if the voltage has crossed a programmable minimum or +maximum limit. Note that minimum in this case always means 'closest to +zero'; this is important for negative voltage measurements. The VDD input +measures voltages between 0.000 and 5.865 volt, with a resolution of 0.023 +volt. The other inputs measure voltages between 0.000 and 4.845 volt, with a +resolution of 0.019 volt. Note that revision 0x00 chips do not support +reading the current voltage of any input except for VIN3; limit setting and +alarms work fine, though. There is code to compute them by iterating. + +When an alarm goes off, you can be warned by a beeping signal through +your computer speaker. It is possible to enable all beeping globally, +or only the beeping for some alarms. + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once (except for temperature alarms). This means that the +cause for the alarm may already have disappeared! Note that in the current +implementation, all hardware registers are read whenever any data is read +(unless it is less than 1.5 seconds since the last update). This means that +you can easily miss once-only alarms. + +The GL518SM only updates its values each 1.5 seconds; reading it more often +will do no harm, but will return 'old' values. diff -Naur a/Documentation/i2c/chips/it87 b/Documentation/i2c/chips/it87 --- a/Documentation/i2c/chips/it87 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/it87 2005-02-04 23:23:04.000000000 +0100 @@ -0,0 +1,159 @@ +Kernel driver it87 +====================== + +Supported chips: + * IT8705F + ISA 0x290 + Datasheet: Publicly available at the ITE website + http://www.ite.com.tw + * IT8712F + Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports) + Datasheet: Publicly available at the ITE website + http://www.ite.com.tw + * Sis950 [clone of IT8705F] + ISA 0x290 + Datasheet: Publicly available at the SIS website + Appears to no longer be available on SIS website, found at + http://ic.doma.kiev.ua/pdf/chip/sio.htm + +Author: Christophe Gauthron <chrisg at 0-in.com> + + +Module Parameters +----------------- + +* update_vbat: integer 0 if vbat should report power on value, 1 if + vbat should be updated after each read. Default is 0. + On some boards the battery voltage is provided by either the battery or + the onboard power supply. Only the first reading at power on will be + the actual battery voltage (which the chip does automatically). On other + boards the battery voltage is always fed to the chip so can be read at + any time. Excessive reading may decrease battery life but no information + is given in the datasheet. + +Description +----------- + +This driver implements support for the IT8705F chip. +This chip is also known as SIS 950. + +This driver also supports IT8712F, which adds SmBus access, and a Vid +input, used to report the Vcore voltage of the Pentium processor. + +These chips are 'Super I/O chips', supporting floppy disks, infrared ports, +joysticks and other miscellaneous stuff. For hardware monitoring, +they include an 'environmnent controller' with 3 temperature sensors, +3 fan rotation speed sensors, 8 voltage sensors, and associated alarms. + +Temperatures are measured in degrees Celcius. An alarm is triggered once +when the Overtemperature Shutdown limit is crossed; it is triggered again +as soon as it drops below the Hysteresis value. + +Fan rotation speeds are reported in RPM (rotations per minute). An alarm is +triggered if the rotation speed has dropped below a programmable limit. Fan +readings can be divided by a programmable divider (1, 2, 4 or 8) to give +the readings more range or accuracy. This is important because some Fans +report only one 'tick' each rotation, while others report two - making +all readings twice as high. Not all RPM values can accurately be represented, +so some rounding is done. With a divider of 2, the lowest representable +value is around 2600 RPM. + +Voltage sensors (also known as IN sensors) report their values in volts. +An alarm is triggered if the voltage has crossed a programmable minimum +or maximum limit. Note that minimum in this case always means 'closest to +zero'; this is important for negative voltage measurements. All voltage +inputs can measure voltages between 0 and 4.08 volts, with a resolution +of 0.016 volt. The battery voltage in8 does not have limit registers. + +The VID lines (IT8712F only) encode the core voltage value: the voltage level +your processor should work with. This is hardcoded by the mainboard and/or +processor itself. It is a value in volts. + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once. This means that the cause for the alarm may +already have disappeared! Note that in the current implementation, all +hardware registers are read whenever any data is read (unless it is less +than 1.5 seconds since the last update). This means that you can easily +miss once-only alarms. + +The IT87xx only updates its values each 1.5 seconds; reading it more often +will do no harm, but will return 'old' values. + +The sensor type can be set at runtime as of release 2.8.2. +To change sensor N to a thermistor, 'echo 2 > sensorN' +where N is 1, 2, or 3. +To change sensor N to a thermal diode, 'echo 3 > sensorN'. +Give 0 for unused sensor. Any other value is invalid. +To configure this at startup, put the following lines in the it87 section +of /etc/sensors.conf. +(2 = thermistor; 3 = thermal diode; 0 = unused) + set sensor1 3 + set sensor2 3 + set sensor3 3 + +If you set a sensor to 0, you'll also want to ignore its value: + ignore tempN + +The fan speed control features can be enabled by setting the bits 0-2 of +the fan_ctl register to 1. (Note: bits 6-4 of this register must be set to +1 to enable the fan monitoring). + 0x40 : enable fan speed monitoring for fan3 + 0x20 : enable fan speed monitoring for fan2 + 0x10 : enable fan speed monitoring for fan1 + 0x04 : enable fan smart guardian mode for fan3 + 0x02 : enable fan smart guardian mode for fan2 + 0x01 : enable fan smart guardian mode for fan1 + +If a fan's smart guardian bit is not set this fan is in on-off mode. +It can be switched on or off by setting/clearing the corresponding bit 0-2 +of the second fan control register fan_on_off. This register has no effect if +a fan is in smart guardian mode. + 0x04 : fan3 is on + 0x02 : fan2 is on + 0x01 : fan1 is on + +Bit 7 of the pwm[1-3] registers enables/disables the chip's automatic +temperature control mode for the specified fan. If Bit 7 is set the bits +1 and 0 encode the number of the temperature sensor used for this feature. +Possible register values are: + 0x00-0x7f direct power control for the fan speed + 0x80 automatic smart guardian mode use temperature sensor 1 + 0x81 automatic smart guardian mode use temperature sensor 2 + 0x82 automatic smart guardian mode use temperature sensor 3 + +In automatic smart guardian mode pwm values for low, medium and high speed +can be set in sg_pwm[1-3]. The temperature limits for fan off, low, medium, +hi speed and over temperature are set in sg_tl[1-3]. While the sensor's +temperature is between the low and medium speed value the fan will run in +low speed. When the sensor's temperature is between the medium and high speed +value the fan spins in medium speed. When the sensor's temperature is between +the high speed and over temperature value the fan spins in high speed. +If the sensor's temperature is higher than the over temperature limit the +fan will spin with the highest possible speed. + +Example: +The preconfigured (BIOS set) values of the Shuttle XPC SN41G2 Barebone. +The MB uses temp2 to monitor the CPU temperature and fan3 as the fan for their +special ICE heatpipe cooling system. + $ cat fan_ctl + 116 + $ cat tan_on_off + 215 + $ cat pwm3 + 129 + $ cat sg_tl3 + 16.0 16.0 48.0 54.0 58.0 + $ cat sg_pwm3 + 3 4 9 + +Explanation: + fan_ctl -> 116 = 0x74 = 01110100 : fan monitoring on for all fans, + and fan3 is in smart guardian mode. + fan_on_off -> 215 = 0xd7 =11010111 : all fans are on this setting is + ignored for fan3 which is in smart guardian mode + pwm3 -> 129 = 0x81 = 10000001 : fan3 is in automatic mode and uses + temp2 for speed control + sg_tl3 -> 16.0 16.0 48.0 54.0 58.0 : off, low, med, high, and + over temperature limits of fan3 + sg_pwm3 -> 3 4 9 : pwm values for low, medium and high fan speed of fan3. + diff -Naur a/Documentation/i2c/chips/lm63 b/Documentation/i2c/chips/lm63 --- a/Documentation/i2c/chips/lm63 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/lm63 2005-02-04 23:25:53.000000000 +0100 @@ -0,0 +1,57 @@ +Kernel driver lm63 +====================== + +Supported chips: + * National Semiconductor LM63 + Prefix: `lm63' + Addresses scanned: I2C 0x4c + Datasheet: Publicly available at the National Semiconductor website + http://www.national.com/pf/LM/LM63.html + +Author: Jean Delvare <khali at linux-fr.org> + +Thanks go to Tyan and especially Alex Buckingham for setting up a remote +access to their S4882 test platform for this driver. + http://www.tyan.com/ + +Description +----------- + +The LM63 is a digital temperature sensor with integrated fan monitoring +and control. + +The LM63 is basically an LM86 with fan speed monitoring and control +capabilities added. It misses some of the LM86 features though: + - No low limit for local temperature. + - No critical limit for local temperature. + - Critical limit for remote temperature can be changed only once. We + will consider that the critical limit is read-only. + +The datasheet isn't very clear about what the tachometer reading is. + +An explanation from National Semiconductor: The two lower bits of the read +value have to be masked out. The value is still 16 bit in width. + +All temperature values are given in degrees Celcius. Resolution is 1.0 +degree for the local temperature, 0.125 degree for the remote temperature. + +The fan speed is measured using a tachometer. Contrary to most chips which +store the value in an 8-bit register and have a selectable clock divider +to make sure that the result will fit in the register, the LM63 uses 16-bit +value for measuring the speed of the fan. It can measure fan speeds down to +83 RPM, at least in theory. + +Note that the pin used for fan monitoring is shared with an alert out +function. Depending on how the board designer wanted to use the chip, fan +speed monitoring will or will not be possible. The proper chip configuration +is left to the BIOS, and the driver will blindly trust it. + +A PWM output can be used to control the speed of the fan. The LM63 has two +PWM modes: manual and automatic. Automatic mode is not fully implemented yet +(you cannot define your custom pwm/temperature curve), and mode change isn't +supported either. + +The lm63 driver will not update its values more frequently than every +second; reading them more often will do no harm, but will return 'old' +values. + diff -Naur a/Documentation/i2c/chips/lm75 b/Documentation/i2c/chips/lm75 --- a/Documentation/i2c/chips/lm75 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/lm75 2005-02-04 23:27:40.000000000 +0100 @@ -0,0 +1,66 @@ +Kernel driver lm75 +===================== + +Supported chips: + * National Semiconductor LM75 + Prefix: `lm75' + Addresses scanned: I2C 0x48 - 0x4f (inclusive) + Datasheet: Publicly available at the National Semiconductor website + http://www.national.com + * Dallas Semiconductor DS75 + Prefix: `lm75' + Addresses scanned: I2C 0x48 - 0x4f (inclusive) + Datasheet: Publicly available at the Dallas Semiconductor website + http://www.dalsemi.com + * Dallas Semiconductor DS1775 + Prefix: `lm75' + Addresses scanned: I2C 0x48 - 0x4f (inclusive) + Datasheet: Publicly available at the Dallas Semiconductor website + http://www.dalsemi.com + * Maxim MAX6625, MAX6626 + Prefix: `lm75' + Addresses scanned: I2C 0x48 - 0x4b (inclusive) + Datasheet: Publicly available at the Maxim website + http://www.maxim-ic.com + * Microchip (TelCom) TCN75 + Prefix: `lm75' + Addresses scanned: I2C 0x48 - 0x4f (inclusive) + Datasheet: Publicly available at the Microchip website + http://www.microchip.com + +Author: Frodo Looijaard <frodol at dds.nl> + + +Description +----------- + +The LM75 implements one temperature sensor. Limits can be set through the +Overtemperature Shutdown register and Hysteresis register. Each value can be +set and read to half-degree accuracy. +An alarm is issued (usually to a connected LM78) when the temperature +gets higher then the Overtemperature Shutdown value; it stays on until +the temperature falls below the Hysteresis value. +All temperatures are in degrees Celcius, and are guaranteed within a +range of -55 to +125 degrees. + +The LM75 only updates its values each 1.5 seconds; reading it more often +will do no harm, but will return 'old' values. + +The LM75 is usually used in combination with LM78-like chips, to measure +the temperature of the processor(s). + +The DS75, DS1775, MAX6625, and MAX6626 are supported as well. +They are not distinguished from an LM75. While most of these chips +have three additional bits of accuracy (12 vs. 9 for the LM75), +the additional bits are not supported. Not only that, but these chips will +not be detected if not in 9-bit precision mode (use the force parameter if +needed). + +The TCN75 is supported as well, and is not distinguished from an LM75. + +The LM75 is essentially an industry standard; there may be other +LM75 clones not listed here, with or without various enhancements, +that are supported. + +The LM77 is not supported, contrary to what we pretended for a long time. +Both chips are simply not compatible, value encoding differs. diff -Naur a/Documentation/i2c/chips/lm77 b/Documentation/i2c/chips/lm77 --- a/Documentation/i2c/chips/lm77 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/lm77 2005-02-04 23:53:06.000000000 +0100 @@ -0,0 +1,23 @@ +Kernel driver lm77 +===================== + +Supported chips: + * National Semiconductor LM77 + Prefix: `lm75' + Addresses scanned: I2C 0x48 - 0x4b (inclusive) + Datasheet: Publicly available at the National Semiconductor website + http://www.national.com + +Author: Andras BALI <drewie at freemail.hu> + +Description +----------- + +The LM77 implements one temperature sensor. The temperature +sensor incorporates a band-gap type temperature sensor, +10-bit ADC, and a digital comparator with user-programmable upper +and lower limit values. + +Limits can be set through the Overtemperature Shutdown register and +Hysteresis register. + diff -Naur a/Documentation/i2c/chips/lm78 b/Documentation/i2c/chips/lm78 --- a/Documentation/i2c/chips/lm78 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/lm78 2005-02-04 23:46:30.000000000 +0100 @@ -0,0 +1,81 @@ +Kernel driver lm78 +====================== + +Supported chips: + * National Semiconductors LM78 + Prefix `lm78' + Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports) + Datasheet: Publicly available at the National Semiconductors website + * National Semiconductors LM78-J + Prefix `lm78-j' + Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports) + Datasheet: Publicly available at the National Semiconductors website + * National Semiconductors LM79 + Prefix `lm79' + Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports) + Datasheet: Publicly available at the National Semiconductors website + +Author: Frodo Looijaard <frodol at dds.nl> + +Description +----------- + +This driver implements support for the National Semiconductors LM78, LM78-J +and LM79. They are described as `Microprocessor System Hardware Monitors'. + +There is almost no difference between the three supported chips. Functionally, +the LM78 and LM78-J are exactly identical. The LM79 has one more VID line, +which is used to report the lower voltages newer Pentium processors use. +From here on, LM7* means either of these three types. + +The LM7* implements one temperature sensor, three FAN rotation speed sensors, +seven voltage sensors, VID lines, alarms, and some miscellaneous stuff. + +Temperatures are measured in degrees Celcius. An alarm is triggered once +when the Overtemperature Shutdown limit is crossed; it is triggered again +as soon as it drops below the Hysteresis value. A more useful behaviour +can be found by setting the Hysteresis value to +127 degrees Celcius; in +this case, alarms are issued during all the time when the actual temperature +is above the Overtemperature Shutdown value. Measurements are guaranteed +between -55 and +125 degrees, with a resolution of 1 degree. + +FAN rotation speeds are reported in RPM (rotations per minute). An alarm is +triggered if the rotation speed has dropped below a programmable limit. FAN +readings can be divided by a programmable divider (1, 2, 4 or 8) to give +the readings more range or accuracy. This is important because some FANs +report only one 'tick' each rotation, while others report two - making +all readings twice as high. Not all RPM values can accurately be represented, +so some rounding is done. With a divider of 2, the lowest representable +value is around 2600 RPM. + +Voltage sensors (also known as IN sensors) report their values in volts. +An alarm is triggered if the voltage has crossed a programmable minimum +or maximum limit. Note that minimum in this case always means 'closest to +zero'; this is important for negative voltage measurements. All voltage +inputs can measure voltages between 0 and 4.08 volts, with a resolution +of 0.016 volt. + +The VID lines encode the core voltage value: the voltage level your processor +should work with. This is hardcoded by the mainboard and/or processor itself. +It is a value in volts. When it is unconnected, you will often find the +value 3.50 V here. + +In addition to the alarms described above, there are a couple of additional +ones. There is a BTI alarm, which gets triggered when an external chip has +crossed its limits. Usually, this is connected to all LM75 chips; if at +least one crosses its limits, this bit gets set. The CHAS alarm triggers +if your computer case is open. The FIFO alarms should never trigger; it +indicates an internal error. The SMI_IN alarm indicates some other chip +has triggered an SMI interrupt. As we do not use SMI interrupts at all, +this condition usually indicates there is a problem with some other +device. + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once. This means that the cause for the alarm may +already have disappeared! Note that in the current implementation, all +hardware registers are read whenever any data is read (unless it is less +than 1.5 seconds since the last update). This means that you can easily +miss once-only alarms. + +The LM7* only updates its values each 1.5 seconds; reading it more often +will do no harm, but will return 'old' values. diff -Naur a/Documentation/i2c/chips/lm80 b/Documentation/i2c/chips/lm80 --- a/Documentation/i2c/chips/lm80 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/lm80 2005-02-04 23:54:49.000000000 +0100 @@ -0,0 +1,56 @@ +Kernel driver lm80 +====================== + +Supported chips: + * National Semiconductors LM80 + Prefix `lm80' + Addresses scanned: I2C 0x28 - 0x2f (inclusive) + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com> + +Description +----------- + +This driver implements support for the National Semiconductors LM80. +It is descibed as a `Serial Interface ACPI-Compatible Microprocessor +System Hardware Monitor'. + +The LM80 implements one temperature sensor, two FAN rotation speed sensors, +seven voltage sensors, alarms, and some miscellaneous stuff. + +Temperatures are measured in degrees Celcius. There are two sets of limits +which operate independently. When the HOT Temperature Limit is crossed, +this will cause an alarm that will be reasserted until the temperature +drops below the HOT Hysteresis. The Overtemperature Shotdown (OS) limits +should work in the same way (but this must be checked; the datasheet +is unclear about this). Measurements are guaranteed between -55 and ++125 degrees. The current temperature measurement has a resolution of +0.0625 degrees; the limits have a resolution of 1 degree. + +FAN rotation speeds are reported in RPM (rotations per minute). An alarm is +triggered if the rotation speed has dropped below a programmable limit. FAN +readings can be divided by a programmable divider (1, 2, 4 or 8) to give +the readings more range or accuracy. This is important because some FANs +report only one 'tick' each rotation, while others report two - making +all readings twice as high. Not all RPM values can accurately be represented, +so some rounding is done. With a divider of 2, the lowest representable +value is around 2600 RPM. + +Voltage ensors (also known as IN sensors) report their values in volts. +An alarm is triggered if the voltage has crossed a programmable minimum +or maximum limit. Note that minimum in this case always means 'closest to +zero'; this is important for negative voltage measurements. All voltage +inputs can measure voltages between 0 and 2.55 volts, with a resolution +of 0.01 volt. + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once. This means that the cause for the alarm may +already have disappeared! Note that in the current implementation, all +hardware registers are read whenever any data is read (unless it is less +than 2.0 seconds since the last update). This means that you can easily +miss once-only alarms. + +The LM80 only updates its values each 1.5 seconds; reading it more often +will do no harm, but will return 'old' values. diff -Naur a/Documentation/i2c/chips/lm83 b/Documentation/i2c/chips/lm83 --- a/Documentation/i2c/chips/lm83 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/lm83 2005-02-05 10:12:39.000000000 +0100 @@ -0,0 +1,76 @@ +Kernel driver lm83 +===================== + +Supported chips: + * National Semiconductor LM83 + Prefix: `lm83' + Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e (inclusive) + Datasheet: Publicly available at the National Semiconductor website + http://www.national.com/pf/LM/LM83.html + + +Author: Jean Delvare <khali at linux-fr.org> + +Description +----------- + +The LM83 is a digital temperature sensor. It senses its own temperature as +well as the temperature of up to three external diodes. It is compatible +with many other devices such as the LM84 and all other ADM1021 clones. +The main difference between the LM83 and the LM84 in that the later can +only sense the temperature of one external diode. + +Using the adm1021 driver for a LM83 should work, but only two temperatures +will be reported instead of four. + +The LM83 is only found on a handful of motherboards. Both a confirmed +list and an unconfirmed list follow. If you can confirm or infirm the +fact that any of these motherboards do actually have an LM83, please +contact us. Note that the LM90 can easily be misdetected as a LM83. + +Confirmed motherboards: + SBS P014 + +Unconfirmed motherboards: + Gigabyte GA-8IK1100 + Iwill MPX2 + Soltek SL-75DRV5 + +The driver has been successfully tested by Magnus Forsstr?m, who I'd +like to thank here. More testers will be of course welcome. + +The fact that the LM83 is only scarcely used can be easily explained. +Most motherboards come with more than just temperature sensors for +health monitoring. They also have voltage and fan rotation speed +sensors. This means that temperature-only chips are usually used as +secondary chips coupled with another chip such as an IT87 or similar +chip, which provides more features. Since systems usually need three +temperature sensors (motherboard, processor, power supply) and primary +chips provide some temperature sensors, the secondary chip, if needed, +won't have to handle more than two temperatures. Thus, ADM1021 clones +are sufficent, and there is no need for a four temperatures sensor +chip such as the LM83. The only case where using an LM83 would make +sense is on SMP systems, such as the above-mentioned Iwill MPX2, +because you want an additional temperature sensor for each additional +CPU. + +On the SBS P014, this is different, since the LM83 is the only hardware +monitoring chipset. One temperature sensor is used for the motherboard +(actually measuring the LM83's own temperature), one is used for the +CPU. The two other sensors must be used to measure the temperature of +two other points of the motherboard. We suspect these points to be the +north and south bridges, but this couldn't be confirmed. + +All temperature values are given in degrees Celcius. Local temperature +is given within a range of 0 to +85 degrees. Remote temperatures are +given within a range of 0 to +125 degrees. Resolution is 1.0 degree, +accuracy is guaranteed to 3.0 degrees (see the datasheet for more +details). + +Each sensor has its own high limit, but the critical limit is common to +all four sensors. There is no hysteresis mechanism as found on most +recent temperature sensors. + +The lm83 driver will not update its values more frequently than every +other second; reading them more often will do no harm, but will return +'old' values. diff -Naur a/Documentation/i2c/chips/lm85 b/Documentation/i2c/chips/lm85 --- a/Documentation/i2c/chips/lm85 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/lm85 2005-02-05 10:26:27.000000000 +0100 @@ -0,0 +1,323 @@ +Kernel driver `lm85.o' +====================== + +Status: Complete and somewhat tested + +Supported chips: + * National Semiconductors LM85 (B and C versions) + Prefix `lm85' + Addresses scanned: I2C 0x2c, 0x2d, 0x2e + * Analog Devices ADM1027 + Prefix `adm1027' + Addresses scanned: I2C 0x2c, 0x2d, 0x2e + * Analog Devices ADT7463 + Prefix 'adt7463' + Addresses scanned: I2C 0x2c, 0x2d, 0x2e + +Authors: + Philip Pokorny <ppokorny at penguincomputing.com>, + Frodo Looijaard <frodol at dds.nl>, + Richard Barrington <rich_b_nz at clear.net.nz>, + Margit Schubert-While <margitsw at t-online.de>, + Justin Thiessen <jthiessen at penguincomputing.com> + +Description +----------- + +This driver implements support for the National Semiconductors LM85 +and compatible chips including the Analog Devices ADM1027 and ADT7463. + +The LM85 uses the 2-wire interface compatible with the SMBUS 2.0 +specification. Using an analog to digital converter it measures three +(3) temperatures and five (5) voltages. It has four (4) 16-bit +counters for measuring fan speed. Five (5) digital inputs are +provided for sampling the VID signals from the processor to the VRM. +Lastly, there are three (3) PWM outputs that can be used to control +fan speed. + +The voltage inputs have internal scaling resistors so that the +following voltage can be measured without external resistors: + + 2.5V, 3.3V, 5V, 12V, and CPU core voltage (2.25V) + +The temperatures measured are one internal diode, and two remote +diodes. Remote 1 is generally the CPU temperature. These inputs are +designed to measure a thermal diode like the one in a Pentium 4 +processor in a socket 423 or socket 478 package. They can also +measure temperature using a transistor like the 2N3904. + +A sophisticated control system for the PWM outputs is designed into +the LM85 that allows fan speed to be adjusted automatically based on +any of the three temperature sensors. Each PWM output is individually +adjustable and programmable. Once configured, the LM85 will adjust +the PWM outputs in response to the measured temperatures without +further host intervention. This feature can also be disabled for +manual control of the PWM's. + +Each of the measured inputs (voltage, temperature, fan speed) has +corresponding high/low limit values. The LM85 will signal an ALARM if +any measured value exceeds either limit. + +The LM85 samples all inputs continuously. The lm85 driver will not +read the lm85 more often than once a second. Further, configuration +data is only read once each 5 minutes. There is twice as much config +data as measurements, so this would seem to be a worthwhile +optimization. + +Special Features + +The LM85 has four fan speed monitoring modes. The ADM1027 has only +two. Both have special circuitry to compensate for PWM interactions +with the TACH signal from the fans. The ADM1027 can be configured to +measure the speed of a two wire fan, but the input conditioning +circuitry is different for 3-wire and 2-wire mode. For this reason, +the 2-wire fan modes are not exposed to user control. The BIOS should +initialize them to the correct mode. If you've designed your own +ADM1027, you'll have to modify the init_client function and add an +insmod parameter to set this up. + +To smooth the response of fans to changes in temperature, the LM85 has +an optional filter for smoothing temperatures. The ADM1027 has the +same config option but uses it to rate limit the changes to fan speed +instead. In libsensors, we associate the smoothing feature with a +zone in the LM85 and with a PWM in the ADM1027. + +The ADM1027 and ADT7463 have a 10-bit ADC and can therefore measure +temperatures with 0.25 degC resolution. They also provide an offset to +the temperature readings that is automatically applied during +measurement. This offset can be used to zero out any errors due to +traces and placement. The documentation says that the offset is in +0.25 degC steps, but in initial testing of the ADM1027 it was 1.00 +degC steps. Analog Devices has confirmed this "bug". The ADT7463 is +reported to work as described in the documentation. Accordingly, the +driver currently reports 1.00 degC steps for the ADM1027 and 0.25 degC +steps for the ADT7463. If you have an ADT7463, please confirm to the +LM85 maintainer that the temperature offset works as implemented. + +The ADT7463 has a THERM asserted counter. This counter has a 22.76ms +resolution and a range of 5.8 seconds. The driver implements a 32-bit +accumulator of the counter value to extend the range to over a year. +The counter will stay at it's max value until read. + +See the vendor datasheets for more information. There is application +note from National (AN-1260) with some additional information about +the LM85. The Analog Devices datasheet is very detailed and describes +a procedure for determining an optimal configuration for the automatic +PWM control. + +Hardware Configurations +----------------------- + +The LM85 can be jumpered for 3 different SMBus addresses. There are +no other hardware configuration options for the LM85. + +The lm85 driver detects both LM85B and LM85C revisions of the chip. +See the datasheet for a complete description of the differences. +Other than identifying the chip, the driver behaves no differently +with regard to these two chips. The LM85B is recommended for new +designs. + +The ADM1027 and ADT7463 chips have an optional SMBALERT output that +can be used to signal the chipset in case a limit is exceeded or the +temperature sensors fail. Individual sensor interrupts can be masked +with 'alarm_mask' so they won't trigger SMBALERT. The SMBALERT output +if configured replaces one of the other functions (PWM2 or IN0). The +driver will print a message if the BIOS has configured this option +when the chip is detected. + +The ADT7463 also has an optional THERM output/input which can be +connected to the processor PROC_HOT output. If available, the autofan +control dynamic Tmin feature can be enabled to keep the system +temperature within spec (just?!) with the least possible fan noise. + +Configuration Notes +------------------- + +* Temperatures and Zones + +Each temperature sensor is associated with a Zone. There are three +sensors and therefore three zones. Each zone has the following +temperature configuration points: + + Limit temp -- Temperature at which the fan will turn on + [ absolute deg C from 0.0 to 127.0 ] + Hysteresis -- Degrees below the limit that fan will remain + on before turning off. + [ relative C from 0.0 to -15.0 ] + Range -- Degrees above the limit over which the fan + PWM will be adjusted (from PWM_MIN to 100%) + [ relative deg C from 2.0 to 80.0 ] + Critical temp -- Temperature above which other fans will be + forced to 100% PWM + [ absolute deg C from 0.0 to 127.0 ] + +** Temperature Range for a Zone + +The RANGE value for a given zone can have one of 16 different values +in an approximately logrithmic spacing: +Selecting a RANGE not in this list will cause the next larger range to +be used. + + Temperature ranges: 2.0, 2.5, 3.3, 4.0, 5.0, 6.6, 8.0, 10.0, + (in deg C) 13.3, 16.0, 20.0, 26.6, 32.0, 40.0, 53.3, + 80.0 + +* Temperature Smoothing or Acoustic Enhancement + +The LM85 and ADM1027 use this value in different ways. In the LM85 +it's used to filter the temperature input of a zone. In this way, it +affects all PWM's controlled by that zone temperature. In the +ADM1027, it limits the rate of change in fan speed. Thus it is part +of the PWM control algorithm. + + Smooth filter -- Optional filter constant to smooth the system + response to temperature spikes. It either + filters the measured temperatures or limits the + rate of change of fan speed. This improves + the system by limiting rapid changes in fan + speed. + [ seconds from 0.8 to 35.0 or 0.0 for OFF ] + +The smoothing can be disabled, or enabled and set to one of the values +listed below. Selecting a filter time constant not on this list will +cause the next smaller value to be used. Setting the time constant to +0 will disable the filtering. + + Filter time constant: 35.0, 17.6, 11.8, 7.0, 4.4, 3.0, 1.6, 0.8 + (in seconds) + +* PWM Control + +There are three PWM outputs. The LM85 datasheet suggests that the +PWM3 output control both FAN3 and FAN4. Each PWM can be individually +configured and assigned to a zone for it's control value. Each PWM can be +configured individually according to the following options. + + Spinup time -- When turning on a fan that was off, the PWM will + temporarily be set to 100% for this length of + time to insure the fan starts spinning. + [ seconds from 0.0 to 4.0 ] + Minimum PWM -- This is the PWM value at the limit temp of the + referenced zone. + [ PWM value from 0.0 to 255.0 ] + Frequency -- This is the base frequency of the PWM output. + [ Hz from 10.0 to 98.0 ] + Min/Off flag -- This flag determines if the PWM will be off or + "min PWM" below the limit temperature. + [ 0.0 means PWM off (0%) below limit ] + Invert flag -- This flag causes the PWM output to be inverted. + If inverted, a PWM setting of 0 will be full on + and 100 will be off. + [ 0.0 means PWM is "normal" ] + +** Spinup Time + +Spinup time can be one of eight (8) values. Selecting a spinup time +not on this list will result in the next larger spinup time being +selected. Note, the value 0.2 actually results in a setting of 0.250 +seconds. + + Spinup Time 0.0, 0.1, 0.2, 0.4, 0.7, 1.0, 2.0, 4.0 + (in seconds) + +** PWM Frequency + +The base frequency of the PWM can be controlled. The frequency can be +set to one of the following 8 values. Setting the frequency to a +value not on this list, will result in the next higher frequency being +selected. The actual device frequency may vary slightly from this +specification as designed by the manufacturer. Consult the datasheet +for more details. + + PWM Frequency 10.0, 15.0, 23.0, 30.0, 38.0, 47.0, 62.0, 98.0 + (in Hz) + +** Min/Off Flag + +Below the temperature "Limit - Hysteresis" from the controlling zone, +the PWM can turn off (set to 0) or it can stay at the minimum PWM +value. Setting this flag to 1 will cause the PWM value to be the +"Minimum PWM" value below this limit. Setting it to 0 will set the +PWM to 0 (off) below that limit. + +NOTE: It has been reported that there is a bug in the LM85 that causes +the Min/Off flag to be associated with the zones not the PWMs. This +contradicts all the published documentation. Setting pwm#_min_ctl in +this case actually affects all PWMs controlled by zone '#'. + +** Invert Flag + +The PWM output can be inverted. This may be useful if the fan power +circuitry is inverted. (A low output turns on power and a high output +turns off power to the fan). Alternatively, if a slower fan speed is +needed for higher temperatures, this could be set. + +Setting this flag to 1 will invert the PWM output. A value of 0 +does not invert the PWM output. + +* PWM Controlling Zone selection + +PWM's can be controlled by zones according to the following +configuration choices: + + Value Meaning + ------ ------------------------------------------------ + 1 Controlled by Zone 1 + 2 Controlled by Zone 2 + 3 Controlled by Zone 3 + 23 Controlled by higher temp of Zone 2 or 3 + 123 Controlled by highest temp of Zone 1, 2 or 3 + 0 PWM alwasy 0% (off) + -1 PWM always 100% (full on) + -2 Manual control (write to 'pwm#' to set) + +These are specified in sensors.conf using 'pwm#_zone' + +The National LM85's have two vendor specific configuration +features. Tach. mode and Spinup Control. For more details on these, +see the LM85 datasheet or Application Note AN-1260. + +The Analog Devices ADM1027 has several vendor specific enhancements. +The number of pulses-per-rev of the fans can be set, Tach monitoring +can be optimized for PWM operation, and an offset can be applied to +the temperatures to compensate for systemic errors in the +measurements. + +In addition to the ADM1027 features, the ADT7463 also has Tmin control +and THERM asserted counts. Automatic Tmin control acts to adjust the +Tmin value to maintain the measured temperature sensor at a specified +temperature. There isn't much documentation on this feature in the +ADT7463 data sheet. The following values control this feature. +(These are not available via sensors.conf) + + Enable Flag -- When set to 1, the Tmin control is enabled. When + set to 0, Tmin will remain unchanged. + [ 1 means Tmin control is enabled ] + Control Loop -- This value sets the cycle time of the control + loop which adjusts the Tmin value. The mapping + from raw value to loop period is non-linear. + [ Raw value from 0 to 7 (4sec) ] + Set on THERM -- If enabled, this causes the operating point to be + set from the current temperature when THERM is + asserted. If THERM is connected to a PROC_HOT + signal, this can automatically set the operating + point to the highest value that is within spec. + allowing the lowest/quietest fan speed possible. + [ 1 means set op-point on THERM asserted ] + Target Temp -- This is the target temperature. Tmin will be + adjusted to keep the measured temperature at this + value. + [ degC -127 to 127 degC ] + +The THERM signal monitoring has three parameters: + + THERM Limit -- How long THERM can be asserted before an ALARM is + triggered. + [ 22.7 ms counts ] + THERM Total -- How long THERM has been asserted since the driver + was loaded. + [ 22.7 ms counts ] + Overflows -- How many times the THERM counter was read with a + max value indicating it overflowed. + [ count ] + diff -Naur a/Documentation/i2c/chips/lm87 b/Documentation/i2c/chips/lm87 --- a/Documentation/i2c/chips/lm87 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/lm87 2005-02-05 10:33:46.000000000 +0100 @@ -0,0 +1,78 @@ +Kernel driver lm87 +====================== + +Status: Complete and somewhat tested + +Supported chips: + * National Semiconductors LM87 + Prefix `lm87' + Addresses scanned: I2C 0x2c - 0x2f (inclusive) + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Mark Studebaker <mdsxyz123 at yahoo.com>, + Stephen Rousset <stephen.rousset at rocketlogix.com>, + Dan Eaton <dan.eaton at rocketlogix.com>, + Jean Delvare <khali at linux-fr.org>, + Original 2.6 port Jeff Oliver + +Description +----------- + +This driver implements support for the National Semiconductors LM87. + +The LM87 implements up to three temperature sensors, up to two FAN +rotation speed sensors, up to seven voltage sensors, alarms, and some +miscellaneous stuff. + +Temperatures are measured in degrees Celcius. Each input has a high +and low alarm settings. A high limit produces an alarm when the value +goes above it, and an alarm is also produced when the value goes below +the low limit. + +FAN rotation speeds are reported in RPM (rotations per minute). An alarm is +triggered if the rotation speed has dropped below a programmable limit. FAN +readings can be divided by a programmable divider (1, 2, 4 or 8) to give +the readings more range or accuracy. This is important because some FANs +report only one 'tick' each rotation, while others report two - making +all readings twice as high. Not all RPM values can accurately be represented, +so some rounding is done. With a divider of 2, the lowest representable +value is around 2600 RPM. + +Voltage sensors (also known as IN sensors) report their values in +volts. An alarm is triggered if the voltage has crossed a programmable +minimum or maximum limit. Note that minimum in this case always means +'closest to zero'; this is important for negative voltage +measurements. + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once. This means that the cause for the alarm may +already have disappeared! Note that in the current implementation, all +hardware registers are read whenever any data is read (unless it is less +than 2.0 seconds since the last update). This means that you can easily +miss once-only alarms. + +The LM87 only updates its values each 1.0 seconds; reading it more +often will do no harm, but will return 'old' values. + + +Hardware Configurations +----------------------- + +The LM87 has four pins which can serve one of two possible functions, +depending on the hardware configuration. + +Some functions share pins, so not all functions are available at the same +time. Which are depends on the hardware setup. This driver assumes that +the BIOS configured the chip correctly. In that respect, it differs from +the original driver (from lm_sensors for Linux 2.4), which would force the +LM87 to an arbitrary, compile-time chosen mode, regardless of the actual + chipset wiring. + +For reference, here is the list of exclusive functions: + - in0+in5 (default) or temp3 + - fan1 (default) or in6 + - fan2 (default) or in7 + - VID lines (default) or IRQ lines (not handled by this driver) + diff -Naur a/Documentation/i2c/chips/lm90 b/Documentation/i2c/chips/lm90 --- a/Documentation/i2c/chips/lm90 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/lm90 2005-02-05 10:43:40.000000000 +0100 @@ -0,0 +1,105 @@ +Kernel driver lm90 +====================== + +Supported chips: + * National Semiconductor LM90 + Prefix: `lm90' + Addresses scanned: I2C 0x4c + Datasheet: Publicly available at the National Semiconductor website + http://www.national.com/pf/LM/LM90.html + * National Semiconductor LM89 + Prefix: `lm99' + Addresses scanned: I2C 0x4c and 0x4d + Datasheet: Publicly available at the National Semiconductor website + http://www.national.com/pf/LM/LM89.html + * National Semiconductor LM99 + Prefix: `lm99' + Addresses scanned: I2C 0x4c and 0x4d + Datasheet: Publicly available at the National Semiconductor website + http://www.national.com/pf/LM/LM99.html + * National Semiconductor LM86 + Prefix: `lm86' + Addresses scanned: I2C 0x4c + Datasheet: Publicly available at the National Semiconductor website + http://www.national.com/pf/LM/LM86.html + * Analog Devices ADM1032 + Prefix: `adm1032' + Addresses scanned: I2C 0x4c + Datasheet: Publicly available at the Analog Devices website + http://products.analog.com/products/info.asp?product=ADM1032 + * Maxim MAX6657 + Prefix: `max6657' + Addresses scanned: I2C 0x4c + Datasheet: Publicly available at the Maxim website + http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578 + * Maxim MAX6658 + Prefix: `max6657' + Addresses scanned: I2C 0x4c + Datasheet: Publicly available at the Maxim website + http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578 + * Maxim MAX6659 + Prefix: `max6657' + Addresses scanned: I2C 0x4c (unsupported: 0x4d or 0x4e) + Datasheet: Publicly available at the Maxim website + http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578 + + +Author: Jean Delvare <khali at linux-fr.org> + + +Description +----------- + +The LM90 is a digital temperature sensor. It senses its own temperature as +well as the temperature of up to one external diode. It is compatible +with many other devices such as the LM86, the LM89, the LM99, the ADM1032, +the MAX6657, MAX6658 and the MAX6659 all of which are supported by this driver. +Note that there is no easy way to differenciate between the last three +variants. The extra address and features of the MAX6659 are not supported by +this driver. + +The specificity of this family of chipsets over the ADM1021/LM84 +family is that it features critical limits with hysteresis, and an +increased resolution of the remote temperature measurement. + +The different chipsets of the family are not strictly identical, although +very similar. This driver doesn't handle any specific feature for now, +but could if there ever was a need for it. For reference, here comes a +non-exhaustive list of specific features: + +LM90: + * Filter and alert configuration register at 0xBF. + * ALERT is triggered by temperatures over critical limits. + +LM86 and LM89: + * Same as LM90 + * Better external channel accuracy + +LM99: + * Same as LM89 + * External temperature shifted by 16 degrees down + +ADM1032: + * Consecutive alert register at 0x22. + * Conversion averaging. + * Up to 64 conversions/s. + * ALERT is triggered by open remote sensor. + +MAX6657 and MAX6658: + * Remote sensor type selecion + +All temperature values are given in degrees Celcius. Resolution +is 1.0 degree for the local temperature, 0.125 degree for the remote +temperature. + +Each sensor has its own high and low limits, plus a critical limit. +Additionally, there is a relative hysteresis value common to both critical +values. To make life easier to user-space applications, two absolute values +are exported, one for each channel, but these values are of course linked. +Only the local hysteresis can be set from user-space, and the same delta +applies to the remote hysteresis. + +The lm90 driver will not update its values more frequently than every +other second; reading them more often will do no harm, but will return +'old' values. + diff -Naur a/Documentation/i2c/chips/max1619 b/Documentation/i2c/chips/max1619 --- a/Documentation/i2c/chips/max1619 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/max1619 2005-02-05 10:44:59.000000000 +0100 @@ -0,0 +1,29 @@ +Kernel driver max1619 +========================= + +Supported chips: + * Maxim MAX1619 + Prefix: `max1619' + Addresses scanned: I2C 0x18-0x1a, 0x29-0x2b, 0x4c-0x4e (inclusive) + Datasheet: Publicly available at the Maxim website + http://pdfserv.maxim-ic.com/en/ds/MAX1619.pdf + +Authors: + Alexey Fisher <fishor at mail.ru>, + Jean Delvare <khali at linux-fr.org> + +Description +----------- + +The MAX1619 is a digital temperature sensor. It senses its own temperature as +well as the temperature of up to one external diode. + +All temperature values are given in degrees Celcius. Resolution +is 1.0 degree for the local temperature and for the remote temperature. + +Only the external sensor has high and low limits. + +The max1619 driver will not update its values more frequently than every +other second; reading them more often will do no harm, but will return +'old' values. + diff -Naur a/Documentation/i2c/chips/pcf8574 b/Documentation/i2c/chips/pcf8574 --- a/Documentation/i2c/chips/pcf8574 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/pcf8574 2005-02-05 11:55:59.000000000 +0100 @@ -0,0 +1,75 @@ +Kernel driver pcf8574 +========================= + +Supported chips: + * Philips PCF8574 + Prefix: `pcf8574' + Addresses scanned: I2C 0x20 - 0x27 (inclusive) + Datasheet: Publicly available at the Philips Semiconductors website + http://semiconductors.philips.com/ + + * Philips PCF8574A + Prefix: `pcf8574a' + Addresses scanned: I2C 0x38 - 0x3f (inclusive) + Datasheet: Publicly available at the Philips Semiconductors website + http://semiconductors.philips.com/ + +Authors: Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Dan Eaton <dan.eaton at rocketlogix.com>, + Aurelien Jarno <aurel32 at debian.org>, + Jean Delvare <khali at linux-fr.org>, + +Module Parameters +----------------- + +* force: short array (min = 1, max = 48) + List of adapter,address pairs to boldly assume to be present + + +Description +----------- +The PCF8574(A) is an 8-bit I/O expander for the I2C bus produced by Philips +Semiconductors. It is designed to provide a byte I2C interface to up to 16 +separate devices (8 x PCF8574 and 8 x PCF8574A). + +This device consists of a quasi-bidirectionnal port. Each of the eight I/Os +can be independently used as an input or output. To setup an I/O as an +input, you have to write a 1 to the corresponding output. + +For more informations see the datasheet. + + +Accessing PCF8574(A) via /sys interface +------------------------------------- + +! Be careful ! +The PCF8574(A) is plainly impossible to detect ! Stupid chip. +So every chip with adress in the interval [20..27] and (38..3f) are +detected as PCF8574(A). If you have other chips in this address +range, the workaround is to load this module after the one +for your others chips. + +On detection (i.e. insmod, modprobe et al.), directories are being +created for each detected PCF8574(A): + +/sys/bus/i2c/devices/<0>-<1>/ +where <0> is the bus the chip was detected on (e. g. i2c-0) +and <1> the chip address ([20..27] or [38..3f]): + +(example: /sys/bus/i2c/devices/1-0020/) + +Inside these directories, there are two files each: +read and write. (and one file with chip name) + +The read file is read-only. Reading gives you the current I/O input +if the corresponding output is set as 1, otherwise the current output +value, that is to say 0. + +The write file is read/write. Writing a value outputs it on the I/O +port. Reading return the last written value. + +On module initialization the chip is configured as eight I/Os input (all +outputs to 1), so you can connect any circuit to the PCF8574(A) without +to be afraid of short-circuit. + diff -Naur a/Documentation/i2c/chips/pcf8591 b/Documentation/i2c/chips/pcf8591 --- a/Documentation/i2c/chips/pcf8591 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/pcf8591 2005-02-05 12:01:45.000000000 +0100 @@ -0,0 +1,94 @@ +Kernel driver pcf8591 +======================== + +Supported chips: + * Philips PCF8591 + Prefix: `pcf8591' + Addresses scanned: I2C 0x48 - 0x4f (inclusive) + Datasheet: Publicly available at the Philips Semiconductor website + http://semiconductors.philips.com/ + +Authors: + Aurelien Jarno <aurelien at aurel32.net> + valuable contributions by Jan M. Sendler <sendler at sendler.de>, + Jean Delvare <khali at linux-fr.org> + + +Description +----------- +The PCF8591 is an 8-bit A/D and D/A converter (4 analog input and one +analog ouput) for the I2C bus produced by Philips Semiconductors. It +is designed to provide a byte I2C interface to up to 4 separate devices. + +The PCF8591 has 4 analog inputs programmable as single-ended or +differential inputs : +- mode 0 : four single ended inputs + Pins AIN0 to AIN3 are single ended inputs for channels 0 to 3 + +- mode 1 : three differential inputs + Pins AIN3 is the common negative differential input + Pins AIN0 to AIN2 are positive differential inputs for channels 0 to 2 + +- mode 2 : single ended and differential mixed + Pins AIN0 and AIN1 are single ended inputs for channels 0 and 1 + Pins AIN2 is the positive differential input for channel 3 + Pins AIN3 is the negative differential input for channel 3 + +- mode 3 : four differential inputs + Pins AIN0 is the positive differential input for channel 0 + Pins AIN1 is the negative differential input for channel 0 + Pins AIN2 is the positive differential input for channel 1 + Pins AIN3 is the negative differential input for channel 1 + +For more informations see the datasheet. + +Module parameters +----------------- + +* force: short array (min = 1, max = 48) + List of adapter,address pairs to boldly assume to be present + +* input_mode int + + Analog input mode: + 0 = four single ended inputs + 1 = three differential inputs + 2 = single ended and differential mixed + 3 = two differential inputs + + +Accessing PCF8591 via /sys interface +------------------------------------- + +! Be careful ! +The PCF8591 is plainly impossible to detect ! Stupid chip. +So every chip with adress in the interval [48..4f] are +detected as PCF8591. If you have other chips in this address +range, the workaround is to load this module after the one +for your others chips. + +On detection (i.e. insmod, modprobe et al.), directories are being +created for each detected PCF8591: + +/sys/bus/devices/<0>-<1>/ +where <0> is the bus the chip was detected on (e. g. i2c-0) +and <1> the chip address ([48..4f]) + +Inside these directories, there are such files: +in0, in1, in2, in3, out0_enable, out0_output, name + +Name contains chip name. + +The in0, in1, in2 and in3 files are ro. Reading gives the value +of the corresponding channel. Depending on the current analog inputs +configuration, channel in2 and/or in3 may are not used by the chip +and so read as 0. Values range are from 0 to 255 for single +ended inputs and -128 to +127 for differential inputs (8-bit ADC). + +The out0_enable is rw. Reading gives "0" for analog output enabled and +"1" for analog output disabled. Writing accepts "0" and "1" accordingly. + +The out0_output is rw. Writing a number between 0 and 255 (8-bit DAC), send +the value to the digital-to-analog converter. Note that a voltage will +only appears on AOUT pin if aout_enable equals 1. Reading return the last +value written. diff -Naur a/Documentation/i2c/chips/pc87360 b/Documentation/i2c/chips/pc87360 --- a/Documentation/i2c/chips/pc87360 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/pc87360 2005-02-05 10:49:01.000000000 +0100 @@ -0,0 +1,191 @@ +Kernel driver pc87360 +========================= + +Supported chips: + * National Semiconductor PC87360, PC87363, PC87364, PC87365 and PC87366 + Addresses scanned: none, address read from Super I/O config space + Datasheets: + http://www.national.com/pf/PC/PC87360.html + http://www.national.com/pf/PC/PC87363.html + http://www.national.com/pf/PC/PC87364.html + http://www.national.com/pf/PC/PC87365.html + http://www.national.com/pf/PC/PC87366.html + +Authors: Jean Delvare <khali at linux-fr.org> + +Thanks to Sandeep Mehta, Tonko de Rooy and Daniel Ceregatti for testing. +Thanks to Rudolf Marek for helping me investigate conversion issues. + + +Module Parameters +----------------- + +* init int + Chip initialization level: + 0: None + *1: Forcibly enable internal voltage and temperature channels, except in9 + 2: Forcibly enable all voltage and temperature channels, except in9 + 3: Forcibly enable all voltage and temperature channels, including in9 + +Note that this parameter has no effect for the PC87360, PC87363 and PC87364 +chips. + +Also note that for the PC87366, initialization levels 2 and 3 don't enable +all temperature channels, because some of them share pins with each other, +so they can't be used at the same time. + + +Description +----------- + +The National Semiconductor PC87360 Super I/O chip contains monitoring and +PWM control circuitry for two fans. The PC87363 chip is similar, and the +PC87364 chip has monitoring and PWM control for a third fan. + +The National Semiconductor PC87365 and PC87366 Super I/O chips are complete +hardware monitoring chipsets, not only controling and monitoring three fans, +but also monitoring eleven voltage inputs and two (PC87365) or six +(PC87366) remote temperatures. + + Chip #vin #fan #pwm #temp devid + + PC87360 - 2 2 - 0xE1 + PC87363 - 2 2 - 0xE8 + PC87364 - 3 3 - 0xE4 + PC87365 11 3 3 2 0xE5 + PC87366 11 3 3 3-4 0xE9 + +The driver assumes that no more than one chip is present, and the standard +Super I/O address is used (0x2E/0x2F). + + +Fan Monitoring +-------------- + +Fan rotation speeds are reported in RPM (revolutions per minute). An alarm +is triggered if the rotation speed has dropped below a programmable limit. +A different alarm is triggered if the fan speed is too low to be measured. +It is suggested to increase the fan divider (which is really a clock +divider) in this case. + +Fan readings are affected by a programmable clock divider, giving the +readings more range or accuracy. Usually, users have to learn how it works, +but this driver implements dynamic clock divider selection, so you don't +have to care no more. + +For reference, here are a few values about clock dividers: + + slowest accuracy highest + measurable around 3000 accurate + divider speed (RPM) RPM (RPM) speed (RPM) + 1 1882 18 6928 + 2 941 37 4898 + 4 470 74 3464 + 8 235 150 2449 + +For the curious, here is how the values above were computed: + * slowest measurable speed: clock/(255*divider) + * accuracy around 3000 RPM: 3000^2/clock + * highest accurate speed: sqrt(clock*100) +The clock speed for the PC87360 family is 480 kHz. I arbitrarily chose 100 +RPM as the lowest acceptable accuracy. + +As mentioned above, you don't have to care about this no more. + +Note that not all RPM values can be represented, even when the best clock +divider is selected. This is not only true for the measured speeds, but +also for the programmable low limits, so don't be surprised if you try to +set, say, fan1_min to 2900 and it finaly reads 2909. + + +Fan Control +----------- + +PWM (pulse width modulation) values range from 0 to 255, with 0 meaning +that the fan is stopped, and 255 meaning that the fan goes at full speed. + +Be extremely careful when changing PWM values. Low PWM values, even +non-zero, can stop the fan, which may cause irreversible damage to your +hardware if temperature increases too much. When changing PWM values, go +step by step and keep an eye on temperatures. + +One user reported problems with PWM. Changing PWM values would break fan +speed readings. No explanation nor fix could be found. + + +Temperature Monitoring +---------------------- + +Temperatures are reported in degrees Celcius. Each temperature measured has +associated low, high and overtemperature limits, each of which triggers an +alarm when crossed. + +The first two temperature channels are external. The third one (PC87366 +only) is internal. + +The PC87366 has three additional temperature channels, based on +thermistors (as opposed to thermal diodes for the first three temperature +channels). For technical reasons, these channels are held by the VLM +(voltage level monitor) logical device, not the TMS (temperature +measurement) one. As a consequence, these temperatures are exported as +voltages, and converted into temperatures in user-space. + +Note that these three additional channels share their pins with the +external thermal diode channels, so you (physically) can't use them all at +the same time. Although it should be possible to mix the two sensor types, +the documents from National Semiconductor suggest that motherboard +manufacturers should choose one type and stick to it. So you will more +likely have either channels 1 to 3 (thermal diodes) or 3 to 6 (internal +thermal diode, and thermistors). + + +Voltage Monitoring +------------------ + +Voltages are reported relatively to a reference voltage, either internal or +external. Some of them (in7:Vsb, in8:Vdd and in10:AVdd) are divided by two +internally, you will have to compensate in sensors.conf. Others (in0 to in6) +are likely to be divided externally. The meaning of each of these inputs as +well as the values of the resistors used for division is left to the +motherboard manufacturers, so you will have to document yourself and edit +sensors.conf accordingly. National Semiconductor has a document with +recommended resistor values for some voltages, but this still leaves much +room for per motherboard specificities, unfortunately. Even worse, +motherboard manufacturers don't seem to care about National Semiconductor's +recommendations. + +Each voltage measured has associated low and high limit, each of which +triggers an alarm when crossed. + +When available, VID inputs are used to provide the nominal CPU Core voltage. +The driver will default to VRM 9.0, but this can be changed from user-space. +The chipsets can handle two sets of VID inputs (on dual-CPU systems), but +the driver will only export one for now. This may change later if there is +a need. + + +General Remarks +--------------- + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once. This means that the cause for the alarm may already +have disappeared! Note that all hardware registers are read whenever any +data is read (unless it is less than 2 seconds since the last update, in +which case cached values are returned instead). As a consequence, when +a once-only alarm triggers, it may take 2 seconds for it to show, and 2 +more seconds for it to disappear. + +Monitoring of in9 isn't enabled at lower init levels (<3) because that +channel measures the battery voltage (Vbat). It is a known fact that +repeatedly sampling the battery voltage reduces its lifetime. National +Semiconductor smartly designed their chipset so that in9 is sampled only +once every 1024 sampling cycles (that is every 34 minutes at the default +sampling rate), so the effect is attenuated, but still present. + + +Limitations +----------- + +The datasheets suggests that some values (fan mins, fan dividers) +shouldn't be changed once the monitoring has started, but we ignore that +recommendation. We'll reconsider if it actually causes trouble. diff -Naur a/Documentation/i2c/chips/smsc47m1 b/Documentation/i2c/chips/smsc47m1 --- a/Documentation/i2c/chips/smsc47m1 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/smsc47m1 2005-02-05 12:23:58.000000000 +0100 @@ -0,0 +1,53 @@ +Kernel driver smsc47m1 +========================== + +Status: Beta. + +Supported chips: + * SMSC 47B27x and 47M1xx Super I/O Controllers + Addresses scanned: none, address read from Super I/O config space + Datasheets: + http://www.smsc.com/main/datasheets/47b27x.pdf + http://www.smsc.com/main/datasheets/47m10x.pdf + http://www.smsc.com/main/datasheets/47m13x.pdf + http://www.smsc.com/main/datasheets/47m14x.pdf + +Authors: + Mark D. Studebaker <mdsxyz123 at yahoo.com>, + With assistance from Bruce Allen <ballen at uwm.edu>, and his + fan.c program: http://www.lsc-group.phys.uwm.edu/%7Eballen/driver/ + Gabriele Gorla <gorlik at yahoo.com>, + Jean Delvare <khali at linux-fr.org> + +Description +----------- + +The Standard Microsystems Corporation (SMSC) 47M1xx Super I/O chips +contain monitoring and PWM control circuitry for two fans. + +The 47M15x and 47M192 chips contain a full 'hardware monitoring block' +in addition to the fan monitoring and control. The hardware monitoring +block is not yet supported by the driver. + +FAN rotation speeds are reported in RPM (rotations per minute). An alarm is +triggered if the rotation speed has dropped below a programmable limit. FAN +readings can be divided by a programmable divider (1, 2, 4 or 8) to give +the readings more range or accuracy. This is important because some FANs +report only one 'tick' each rotation, while others report two - making +all readings twice as high. Not all RPM values can accurately be represented, +so some rounding is done. With a divider of 2, the lowest representable +value is around 2600 RPM. + +PWM values are from 0 to 255. + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once. This means that the cause for the alarm may +already have disappeared! Note that in the current implementation, all +hardware registers are read whenever any data is read (unless it is less +than 1.5 seconds since the last update). This means that you can easily +miss once-only alarms. + + +********************** +The lm_sensors project gratefully acknowledges the support of +Intel in the development of this driver. diff -Naur a/Documentation/i2c/chips/via686a b/Documentation/i2c/chips/via686a --- a/Documentation/i2c/chips/via686a 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/via686a 2005-02-05 10:54:16.000000000 +0100 @@ -0,0 +1,72 @@ +Kernel driver via686a +========================= + +Supported chips: + * Via VT82C686A, VT82C686B Southbridge Integrated Hardware Monitor + Prefix: via686a + Addresses scanned: ISA in PCI-space encoded address + Datasheet: Sometimes available at the Via site http://www.via.com.tw. + +Authors: Ky?sti M?lkki <kmalkki at cc.hut.fi>, + Mark D. Studebaker <mdsxyz123 at yahoo.com> + Bob Dougherty <bobd at stanford.edu> + (Some conversion-factor data were contributed by + Jonathan Teh Soon Yew <j.teh at iname.com> and Alex van Kaam <darkside at chello.nl>.) + +Module Parameters +----------------- + +force_addr=0xaddr Set the I/O base address. Useful for Asus A7V boards + that don't set the address in the BIOS. Does not do a + PCI force; the via686a must still be present in lspci. + Don't use this unless the driver complains that the + base address is not set. + Example: 'modprobe via686a force_addr=0x6000' + +Description +----------- + +The driver does not distinguish between the chips and reports +all as a 686A. + +The Via 686a southbridge has integrated hardware monitor functionality. +It also has an I2C bus, but this driver only supports the hardware monitor. +For the I2C bus driver, see ../busses/i2c-viapro. + +The Via 686a implements three temperature sensors, two FAN rotation speed +sensors, five voltage sensors and alarms. + +Temperatures are measured in degrees Celcius. An alarm is triggered once +when the Overtemperature Shutdown limit is crossed; it is triggered again +as soon as it drops below the hysteresis value. A more useful behaviour +can be found by setting the hysteresis value to +127 degrees Celcius; in +this case, alarms are issued during all the time when the actual temperature +is above the Overtemperature Shutdown value. Measurements are guaranteed +between -55 and +125 degrees, with a resolution of 1 degree. + +FAN rotation speeds are reported in RPM (rotations per minute). An alarm is +triggered if the rotation speed has dropped below a programmable limit. FAN +readings can be divided by a programmable divider (1, 2, 4 or 8) to give +the readings more range or accuracy. This is important because some FANs +report only one 'tick' each rotation, while others report two - making +all readings twice as high. Not all RPM values can accurately be represented, +so some rounding is done. With a divider of 2, the lowest representable +value is around 2600 RPM. + +Voltage sensors (also known as IN sensors) report their values in volts. +An alarm is triggered if the voltage has crossed a programmable minimum +or maximum limit. Note that minimum in this case always means 'closest to +zero'; this is important for negative voltage measurements. All voltage +inputs can measure voltages between 0 and 4.08 volts, with a resolution +of 0.016 volt. + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once. This means that the cause for the alarm may +already have disappeared! Note that in the current implementation, all +hardware registers are read whenever any data is read (unless it is less +than 1.5 seconds since the last update). This means that you can easily +miss once-only alarms. + +The driver only updates its values each 1.5 seconds; reading it more often +will do no harm, but will return 'old' values. + diff -Naur a/Documentation/i2c/chips/w83l785ts b/Documentation/i2c/chips/w83l785ts --- a/Documentation/i2c/chips/w83l785ts 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/w83l785ts 2005-02-05 11:03:41.000000000 +0100 @@ -0,0 +1,42 @@ +Kernel driver w83l785ts +=========================== + +Supported chips: + * Winbond W83L785TS-S + Prefix: `w83l785ts' + Addresses scanned: I2C 0x2e + Datasheet: Publicly available at the Winbond USA website + http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83L785TS-S.pdf + + +Authors: + Jean Delvare <khali at linux-fr.org>, + Wolfgang Ziegler <nuppla at gmx.at> + +Description +----------- + +The W83L785TS-S is a digital temperature sensor. It senses the +temperature of a single external diode. The high limit is +theoretically defined as 85 or 100 degrees C through a combination +of external resistors, so the user cannot change it. Values seen so +far suggest that the two possible limits are actually 95 and 110 +degrees C. The datasheet is rather poor and obviously inaccurate +on several points including this one. + +All temperature values are given in degrees Celcius. Resolution +is 1.0 degree. See the datasheet for details. + +The w83l785ts driver will not update its values more frequently than +every other second; reading them more often will do no harm, but will +return 'old' values. + +Known Issues +------------ + +On some systems (Asus), the BIOS is known to interfere with the driver +and cause read errors. The driver will retry a given number of times +(5 by default) and then give up, returning the old value (or 0 if +there is no old value). It seems to work well enough so that you should +not notice anything. Thanks to James Bolt for helping test this feature. + diff -Naur a/Documentation/i2c/chips/w83627hf b/Documentation/i2c/chips/w83627hf --- a/Documentation/i2c/chips/w83627hf 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/w83627hf 2005-02-05 11:07:23.000000000 +0100 @@ -0,0 +1,72 @@ +Kernel driver w83627hf +========================= + +Supported chips: + * Winbond W83627HF (ISA accesses ONLY) + Prefix 'w83627hf' + Addresses scanned: ISA address retrieved from Super I/O registers + Datasheet: Publicly available at the Winbond website + * Winbond W83627THF (ISA accesses ONLY) + Prefix 'w83627thf' + Addresses scanned: ISA address retrieved from Super I/O registers + Datasheet: Publicly available at the Winbond website + * Winbond W83697HF (ISA accesses ONLY) + Prefix 'w83697hf' + Addresses scanned: ISA address retrieved from Super I/O registers + Datasheet: Publicly available at the Winbond website + * Winbond W83637HF (ISA accesses ONLY) + Prefix 'w83637hf' + Addresses scanned: ISA address retrieved from Super I/O registers + Datasheet: Publicly available at the Winbond website + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Mark Studebaker <mdsxyz123 at yahoo.com>, + Bernhard C. Schrenk <clemy at clemy.org> + +Module Parameters +----------------- + +* force_addr: int + Program the Super I/O register for the sensors ISA base address +* force_i2c: int + Program the Super I/O register for the i2c address of the sensors +* init=[0,1] (default 1) + Use 'init=0' to bypass initializing the chip. + Try this if your computer crashes when you load the module. + +Description +----------- + +This driver implements support for ISA accesses *only* for +the Winbond W83627HF, W83627THF, W83697HF and W83637HF Super I/O chips. +We will refer to them collectively as Winbond chips. + +This driver supports ISA accesses, which should be more reliable +than i2c accesses. Also, for Tyan boards which contain both a +Super I/O chip and a second i2c-only Winbond chip (often a W83782D), +using this driver will avoid i2c address conflicts and complex +initialization that were required in the w83781d driver +(lm_sensors releases 2.7.0 and earlier). + +If you really want i2c accesses for these Super I/O chips, +use the w83781d driver. However this is not the preferred method +now that this ISA driver has been developed. + +Technically, the w83627thf does not support a VID reading. However, it's +possible or even likely that your mainboard maker has routed these signals +to a specific set of general purpose IO pins (the Asus P4C800-E is one such +board). The w83627thf driver now interprets these as VID. If the VID on +your board doesn't work, first see doc/vid in the lm_sensors package. If +that still doesn't help, email us at sensors at stimpy.netroedge.com. + +For further information on this driver, /proc values, etc. +see the w83781d driver documentation. + + +Author/Maintainer +----------------- +Mark D. Studebaker (mdsxyz123 at yahoo.com). +Derived from the w83781d driver. +Send requests to the sensors at stimpy.netroedge.com mailing list. diff -Naur a/Documentation/i2c/chips/w83781d b/Documentation/i2c/chips/w83781d --- a/Documentation/i2c/chips/w83781d 1970-01-01 01:00:00.000000000 +0100 +++ b/Documentation/i2c/chips/w83781d 2005-02-05 11:01:54.000000000 +0100 @@ -0,0 +1,433 @@ +Kernel driver w83781d +========================= + +Supported chips: + * Winbond W83781D + Prefix 'w83781d' + Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports) + Datasheet: Publicly available at the Winbond website (www.winbond.com.tw) + * Winbond W83782D + Prefix 'w83782d' + Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports) + Datasheet: Publicly available at the Winbond website + * Winbond W83783S + Prefix 'w83783s' + Addresses scanned: I2C 0x2d + Datasheet: Publicly available at the Winbond website + * Winbond W83791D + Prefix 'w83791d' + Addresses scanned: I2C 0x2c - 0x2f (inclusive) + Datasheet: Publicly available at the Winbond website + * Winbond W83627HF + Prefix 'w83627hf' + Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports) + Datasheet: Publicly available at the Winbond website + * Winbond W83697HF + Prefix 'w83697hf' + Addresses scanned: ISA 0x290 (8 I/O ports) + Datasheet: Publicly available at the Winbond website + * Asus AS99127F + Prefix 'as99127f' + Addresses scanned: I2C 0x28 - 0x2f (inclusive) + Datasheet: Unavailable from Asus + +Authors: + Frodo Looijaard <frodol at dds.nl>, + Philip Edelbrock <phil at netroedge.com>, + Mark Studebaker <mdsxyz123 at yahoo.com> + +Module parameters +----------------- + +* init=[0,1] (default 1) + Use 'init=0' to bypass initializing the chip. + Try this if your computer crashes when you load the module. + +Description +----------- + +This driver implements support for the Winbond W83781D, W83782D, +W8783S, and W83627HF chips, and the Asus AS99127F chips. +We will refer to them collectively as W8378* chips. + +There is quite some difference between these chips, but they are similar +enough that it was sensible to put them together in one driver. +The W83627HF chip is assumed to be identical to the ISA W83782D. +The Asus chips are similar to an I2C-only W83782D. + +Chip #vin #fanin #pwm #temp wchipid vendid i2c ISA +as99127f 7 3 0 3 0x31 0x12c3 yes no +as99127f rev.2 (type_name = as99127f) 0x31 0x5ca3 yes no +w83781d 7 3 0 3 0x10-1 0x5ca3 yes yes +w83627hf 9 3 2 3 0x21 0x5ca3 yes yes(LPC) +w83627thf 9 3 2 3 0x90 0x5ca3 no yes(LPC) +w83782d 9 3 2-4 3 0x30 0x5ca3 yes yes +w83783s 5-6 3 2 1-2 0x40 0x5ca3 yes no +w83697hf 8 2 2 2 0x60 0x5ca3 no yes(LPC) + +Detection of these chips can sometimes be foiled because they can be in +an internal state that allows no clean access. If you know the address +of the chip, use a 'force' parameter; this will put them into a more +well-behaved state first. + +The W8378* implements temperature sensors (three on the W83781D and W83782D, +two on the W83783S), three FAN rotation speed sensors, voltage sensors +(seven on the W83781D, nine on the W83782D and six on the W83783S), VID +lines, alarms with beep warnings, and some miscellaneous stuff. + +Temperatures are measured in degrees Celcius. There is always one main +temperature sensor, and one (W83783S) or two (W83781D and W83782D) other +sensors. An alarm is triggered for the main sensor once when the +Overtemperature Shutdown limit is crossed; it is triggered again as soon as +it drops below the Hysteresis value. A more useful behaviour +can be found by setting the Hysteresis value to +127 degrees Celcius; in +this case, alarms are issued during all the time when the actual temperature +is above the Overtemperature Shutdown value. The driver sets the +hysteresis value for temp1 to 127 at initialization. + +For the other temperature sensor(s), an +alarm is triggered when the temperature gets higher then the Overtemperature +Shutdown value; it stays on until the temperature falls below the Hysteresis +value. But on the W83781D, there is only one alarm that functions for both +other sensors! Temperatures are guaranteed within a range of -55 to +125 +degrees. The main temperature sensors has a resolution of 1 degree; the other +sensor(s) of 0.5 degree. + +FAN rotation speeds are reported in RPM (rotations per minute). An alarm is +triggered if the rotation speed has dropped below a programmable limit. FAN +readings can be divided by a programmable divider (1, 2, 4 or 8 for the +W83781D; 1, 2, 4, 8, 16, 32, 64 or 128 for the others) to give +the readings more range or accuracy. This is important because some FANs +report only one 'tick' each rotation, while others report two - making +all readings twice as high. Not all RPM values can accurately be represented, +so some rounding is done. With a divider of 2, the lowest representable +value is around 2600 RPM. + +Voltage sensors (also known as IN sensors) report their values in volts. +An alarm is triggered if the voltage has crossed a programmable minimum +or maximum limit. Note that minimum in this case always means 'closest to +zero'; this is important for negative voltage measurements. All voltage +inputs can measure voltages between 0 and 4.08 volts, with a resolution +of 0.016 volt. + +The VID lines encode the core voltage value: the voltage level your processor +should work with. This is hardcoded by the mainboard and/or processor itself. +It is a value in volts. When it is unconnected, you will often find the +value 3.50 V here. + +The W83782D and W83783S temperature conversion machine understands about +several kinds of temperature probes. You can program the so-called +beta value in the sensor files. '1' is the PII/Celeron diode, '2' is the +TN3904 transistor, and 3435 the default thermistor value. Other values +are (not yet) supported. You can program your own values through the +rt interface, but this is not very useful, because these tables are +under NDA. + +In addition to the alarms described above, there is a CHAS alarm on the +chips which triggers if your computer case is open. + +When an alarm goes off, you can be warned by a beeping signal through +your computer speaker. It is possible to enable all beeping globally, +or only the beeping for some alarms. + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once. This means that the cause for the alarm may +already have disappeared! Note that in the current implementation, all +hardware registers are read whenever any data is read (unless it is less +than 1.5 seconds since the last update). This means that you can easily +miss once-only alarms. + +The chips only update values each 1.5 seconds; reading them more often +will do no harm, but will return 'old' values. + + +W8378* PROBLEMS +----------------- +Known problems: + - Some chips are misidentified. + This is caused by the chip having the wrong WCHIPID register + value, so there is no fix. The workaround is to use the + force_CHIP parameter. + (modprobe w83781d force_CHIP=BUS,0x2d where CHIP is the chip name + and BUS is your i2c bus number see /sys/bus/i2c dir) + + +AS99127F PROBLEMS +----------------- +The as99127f support was developed without the benefit of a datasheet. +In most cases it is treated as a w83781d (although revision 2 of the +AS9917F looks more like a w83782d). +This support will be BETA until a datasheet is released. +One user has reported problems with fans stopping +occasionally. + +Note that the individual beep bits are inverted from the other chips. +The driver now takes care of this so that user-space applications +don't have to know about it. + +Known problems: + - Problems with diode/thermistor settings (supported?) + - One user reports fans stopping under high server load. + - Revision 2 seems to have 2 PWM registers but we don't know + how to handle them. More details below. + +These will not be fixed unless we get a datasheet. +If you have problems, please lobby Asus to release a datasheet. +Unfortunately several others have without success. +Please do not send mail to us asking for better as99127f support. +We have done the best we can without a datasheet. +Please do not send mail to the author or the sensors group asking for +a datasheet or ideas on how to convince Asus. We can't help. + + +NOTES: +----- + 783s has no in1 so that in[2-6] are compatible with the 781d/782d. + + 783s pin is programmable for -5V or temp1; defaults to -5V, + no control in driver so temp1 doesn't work. + + 782d and 783s datasheets differ on which is pwm1 and which is pwm2. + We chose to follow 782d. + + 782d and 783s pin is programmable for fan3 input or pwm2 output; + defaults to fan3 input. + If pwm2 is enabled (with echo 255 1 > pwm2), then + fan3 will report 0. + + 782d has pwm1-2 for isa, pwm1-4 for i2c. (pwm3-4 share pins with + the isa pins) + + 781d allowable values for fan_div are 1,2,4,8. + 782d/783s allowable values for fan_div are 1,2,4,8,16,32,64,128. + + + +Data sheet updates: +------------------ + - PWM clock registers: + + 000: master / 512 + 001: master / 1024 + 010: master / 2048 + 011: master / 4096 + 100: master / 8192 + + +Answers from Winbond tech support +--------------------------------- +> +> 1) In the W83781D data sheet section 7.2 last paragraph, it talks about +> reprogramming the R-T table if the Beta of the thermistor is not +> 3435K. The R-T table is described briefly in section 8.20. +> What formulas do I use to program a new R-T table for a given Beta? +> + We are sorry that the calculation for R-T table value is +confidential. If you have another Beta value of thermistor, we can help +to calculate the R-T table for you. But you should give us real R-T +Table which can be gotten by thermistor vendor. Therefore we will calculate +them and obtain 32-byte data, and you can fill the 32-byte data to the +register in Bank0.CR51 of W83781D. + + +> 2) In the W83782D data sheet, it mentions that pins 38, 39, and 40 are +> programmable to be either thermistor or Pentium II diode inputs. +> How do I program them for diode inputs? I can't find any register +> to program these to be diode inputs. + --> You may program Bank0 CR[5Dh] and CR[59h] registers. + + CR[5Dh] bit 1(VTIN1) bit 2(VTIN2) bit 3(VTIN3) + + thermistor 0 0 0 + diode 1 1 1 + + +(error) CR[59h] bit 4(VTIN1) bit 2(VTIN2) bit 3(VTIN3) +(right) CR[59h] bit 4(VTIN1) bit 5(VTIN2) bit 6(VTIN3) + + PII thermal diode 1 1 1 + 2N3904 diode 0 0 0 + + +Author/Maintainer +----------------- +Original 781D support: Frodo and Phil (sensors at stimpy.netroedge.com) +782D/783S support added by: Mark D. Studebaker (mdsxyz123 at yahoo.com) +Send requests to the sensors at stimpy.netroedge.com mailing list. + + +Asus Clones +----------- + +We have no datasheets for the Asus clones (AS99127F and ASB100 Bach). +Here are some very useful information that were given to us by Alex Van +Kaam about how to detect these chips, and how to read their values. He +also gives advice for another Asus chipset, the Mozart-2 (which we +don't support yet). Thanks Alex! +I reworded some parts and added personal comments. + +# Detection: + +AS99127F rev.1, AS99127F rev.2 and ASB100: +- I2C address range: 0x29 - 0x2F +- If register 0x58 holds 0x31 then we have an Asus (either ASB100 or + AS99127F) +- Which one depends on register 0x4F (manufacturer ID): + 0x06 or 0x94: ASB100 + 0x12 or 0xC3: AS99127F rev.1 + 0x5C or 0xA3: AS99127F rev.2 + Note that 0x5CA3 is Winbond's ID (WEC), which let us think Asus get their + AS99127F rev.2 direct from Winbond. The other codes mean ATT and DVC, + respectively. ATT could stand for Asustek something (although it would be + very badly chosen IMHO), I don't know what DVC could stand for. Maybe + these codes simply aren't meant to be decoded that way. + +Mozart-2: +- I2C address: 0x77 +- If register 0x58 holds 0x56 or 0x10 then we have a Mozart-2 +- Of the mozart there are 3 types: + 0x58=0x56, 0x4E=0x94, 0x4F=0x36: Asus ASM58 Mozart-2 + 0x58=0x56, 0x4E=0x94, 0x4F=0x06: Asus AS2K129R Mozart-2 + 0x58=0x10, 0x4E=0x5C, 0x4F=0xA3: Asus ??? Mozart-2 + You can handle all 3 the exact same way :) + +# Temperature sensors: + +ASB100: +- sensor 1: register 0x27 +- sensor 2 & 3 are the 2 LM75's on the SMBus +- sensor 4: register 0x17 +Remark: I noticed that on Intel boards sensor 2 is used for the CPU + and 4 is ignored/stuck, on AMD boards sensor 4 is the CPU and sensor 2 is + either ignored or a socket temperature. + +AS99127F (rev.1 and 2 alike): +- sensor 1: register 0x27 +- sensor 2 & 3 are the 2 LM75's on the SMBus +Remark: Register 0x5b is suspected to be temperature type selector. Bit 1 + would control temp1, bit 3 temp2 and bit 5 temp3. + +Mozart-2: +- sensor 1: register 0x27 +- sensor 2: register 0x13 + +# Fan sensors: + +ASB100, AS99127F (rev.1 and 2 alike): +- 3 fans, identical to the W83781D + +Mozart-2: +- 2 fans only, 1350000/rpm/div +- fan 1: register 0x28, divisor on register 0xA1 (bits 4-5) +- fan 2: register 0x29, divisor on register 0xA1 (bits 6-7) + +# Voltages: + +This is where there is a diffrence between AS99127F rev.1 and 2. +Remark: The difference is similar to the difference between + W83781D and W83782D. + +ASB100: +in0=r(0x20)*0.016 +in1=r(0x21)*0.016 +in2=r(0x22)*0.016 +in3=r(0x23)*0.016*1.68 +in4=r(0x24)*0.016*3.8 +in5=r(0x25)*(-0.016)*3.97 +in6=r(0x26)*(-0.016)*1.666 + +AS99127F rev.1: +in0=r(0x20)*0.016 +in1=r(0x21)*0.016 +in2=r(0x22)*0.016 +in3=r(0x23)*0.016*1.68 +in4=r(0x24)*0.016*3.8 +in5=r(0x25)*(-0.016)*3.97 +in6=r(0x26)*(-0.016)*1.503 + +AS99127F rev.2: +in0=r(0x20)*0.016 +in1=r(0x21)*0.016 +in2=r(0x22)*0.016 +in3=r(0x23)*0.016*1.68 +in4=r(0x24)*0.016*3.8 +in5=(r(0x25)*0.016-3.6)*5.14+3.6 +in6=(r(0x26)*0.016-3.6)*3.14+3.6 + +Mozart-2: +in0=r(0x20)*0.016 +in1=255 +in2=r(0x22)*0.016 +in3=r(0x23)*0.016*1.68 +in4=r(0x24)*0.016*4 +in5=255 +in6=255 + + +# PWM + +Additional info about PWM on the AS99127F (may apply to other Asus +chips as well) by Jean Delvare as of 2004-04-09: + +AS99127F revision 2 seems to have two PWM registers at 0x59 and 0x5A, +and a temperature sensor type selector at 0x5B (which basically means +that they swapped registers 0x59 and 0x5B when you compare with Winbond +chips). +Revision 1 of the chip also has the temperature sensor type selector at +0x5B, but PWM registers have no effect. + +We don't know exactly how the temperature sensor type selection works. +Looks like bits 1-0 are for temp1, bits 3-2 for temp2 and bits 5-4 for +temp3, although it is possible that only the most significant bit matters +each time. So far, values other than 0 always broke the readings. + +PWM registers seem to be split in two parts: bit 7 is a mode selector, +while the other bits seem to define a value or threshold. + +When bit 7 is clear, bits 6-0 seem to hold a threshold value. If the value +is below a given limit, the fan runs at low speed. If the value is above +the limit, the fan runs at full speed. We have no clue as to what the limit +represents. Note that there seem to be some inertia in this mode, speed +changes may need some time to trigger. Also, an hysteresis mechanism is +suspected since walking through all the values increasingly and then +decreasingly led to slighlty different limits. + +When bit 7 is set, bits 3-0 seem to hold a threshold value, while bits 6-4 +would not be significant. If the value is below a given limit, the fan runs +at full speed, while if it is above the limit it runs at low speed (so this +is the contrary of the other mode, in a way). Here again, we don't know +what the limit is supposed to represent. + +One remarkable thing is that the fans would only have two or three +different speeds (transitional states left apart), not a whole range as +you usually get with PWM. + +As a conclusion, you can write 0x00 or 0x8F to the PWM registers to make +fans run at low speed, and 0x7F or 0x80 to make them run at full speed. + +Please contact us if you can figure out how it is supposed to work. As +long as we don't know more, the w83781d driver doesn't handle PWM on +AS99127F chips at all. + +Additional info about PWM on the AS99127F rev.1 by Hector Martin: + +I've been fiddling around with the (in)famous 0x59 register and +found out the following values do work as a form of coarse pwm: + +0x80 - seems to turn fans off after some time(1-2 minutes)... might be +some form of auto-fan-control based on temp? hmm (Qfan? this mobo is an +old ASUS, it isn't marketed as Qfan. Maybe some beta pre-attemp at Qfan +that was dropped at the BIOS) +0x81 - off +0x82 - slightly "on-ner" than off, but my fans do not get to move. I can +hear the high-pitched PWM sound that motors give off at too-low-pwm. +0x83 - now they do move. Estimate about 70% speed or so. +0x84-0x8f - full on + +Changing the high nibble doesn't seem to do much except the high bit +(0x80) must be set for PWM to work, else the current pwm doesn't seem to +change. + +My mobo is an ASUS A7V266-E. This behaviour is similar to what I got +with speedfan under Windows, where 0-15% would be off, 15-2x% (can't +remember the exact value) would be 70% and higher would be full on. diff -Naur a/Documentation/i2c/i2c-parport b/Documentation/i2c/i2c-parport --- a/Documentation/i2c/i2c-parport 2005-02-03 02:55:52.000000000 +0100 +++ b/Documentation/i2c/i2c-parport 1970-01-01 01:00:00.000000000 +0100 @@ -1,156 +0,0 @@ -================== -i2c-parport driver -================== - -2004-07-06, Jean Delvare - -This is a unified driver for several i2c-over-parallel-port adapters, -such as the ones made by Philips, Velleman or ELV. This driver is -meant as a replacement for the older, individual drivers: - * i2c-philips-par - * i2c-elv - * i2c-velleman - * video/i2c-parport (NOT the same as this one, dedicated to home brew - teletext adapters) - -It currently supports the following devices: - * Philips adapter - * home brew teletext adapter - * Velleman K8000 adapter - * ELV adapter - * Analog Devices evaluation boards (ADM1025, ADM1030, ADM1031, ADM1032) - -These devices use different pinout configurations, so you have to tell -the driver what you have, using the type module parameter. There is no -way to autodetect the devices. Support for different pinout configurations -can be easily added when needed. - - -Building your own adapter -------------------------- - -If you want to build you own i2c-over-parallel-port adapter, here is -a sample electronics schema (credits go to Sylvain Munaut): - -Device PC -Side ___________________Vdd (+) Side - | | | - --- --- --- - | | | | | | - |R| |R| |R| - | | | | | | - --- --- --- - | | | - | | /| | -SCL ----------x--------o |-----------x------------------- pin 2 - | \| | | - | | | - | |\ | | -SDA ----------x----x---| o---x--------------------------- pin 13 - | |/ | - | | - | /| | - ---------o |----------------x-------------- pin 3 - \| | | - | | - --- --- - | | | | - |R| |R| - | | | | - --- --- - | | - ### ### - GND GND - -Remarks: - - This is the exact pinout and electronics used on the Analog Devices - evaluation boards. - /| - - All inverters -o |- must be 74HC05, they must be open collector output. - \| - - All resitors are 10k. - - Pins 18-25 of the parallel port connected to GND. - - Pins 4-9 (D2-D7) could be used as VDD is the driver drives them high. - The ADM1032 evaluation board uses D4-D7. Beware that the amount of - current you can draw from the parallel port is limited. Also note that - all connected lines MUST BE driven at the same state, else you'll short - circuit the output buffers! So plugging the I2C adapter after loading - the i2c-parport module might be a good safety since data line state - prior to init may be unknown. - - This is 5V! - - Obviously you cannot read SCL (so it's not really standard-compliant). - Pretty easy to add, just copy the SDA part and use another input pin. - That would give (ELV compatible pinout): - - -Device PC -Side ______________________________Vdd (+) Side - | | | | - --- --- --- --- - | | | | | | | | - |R| |R| |R| |R| - | | | | | | | | - --- --- --- --- - | | | | - | | |\ | | -SCL ----------x--------x--| o---x------------------------ pin 15 - | | |/ | - | | | - | | /| | - | ---o |-------------x-------------- pin 2 - | \| | | - | | | - | | | - | |\ | | -SDA ---------------x---x--| o--------x------------------- pin 10 - | |/ | - | | - | /| | - ---o |------------------x--------- pin 3 - \| | | - | | - --- --- - | | | | - |R| |R| - | | | | - --- --- - | | - ### ### - GND GND - - -If possible, you should use the same pinout configuration as existing -adapters do, so you won't even have to change the code. - - -Similar (but different) drivers -------------------------------- - -This driver is NOT the same as the i2c-pport driver found in the i2c package. -The i2c-pport driver makes use of modern parallel port features so that -you don't need additional electronics. It has other restrictions however, and -was not ported to Linux 2.6 (yet). - -This driver is also NOT the same as the i2c-pcf-epp driver found in the -lm_sensors package. The i2c-pcf-epp driver doesn't use the parallel port -as an I2C bus directly. Instead, it uses it to control an external I2C bus -master. That driver was not ported to Linux 2.6 (yet) either. - - -Legacy documentation for Velleman adapter ------------------------------------------ - -Useful links: -Velleman http://www.velleman.be/ -Velleman K8000 Howto http://howto.htlw16.ac.at/k8000-howto.html - -The project has lead to new libs for the Velleman K8000 and K8005: - LIBK8000 v1.99.1 and LIBK8005 v0.21 -With these libs, you can control the K8000 interface card and the K8005 -stepper motor card with the simple commands which are in the original -Velleman software, like SetIOchannel, ReadADchannel, SendStepCCWFull and -many more, using /dev/velleman. - http://home.wanadoo.nl/hihihi/libk8000.htm - http://home.wanadoo.nl/hihihi/libk8005.htm - http://struyve.mine.nu:8080/index.php?block=k8000 - http://sourceforge.net/projects/libk8005/