diff options
Diffstat (limited to 'Documentation/hwmon')
106 files changed, 5017 insertions, 530 deletions
diff --git a/Documentation/hwmon/ab8500 b/Documentation/hwmon/ab8500 new file mode 100644 index 00000000000..cf169c8ef4e --- /dev/null +++ b/Documentation/hwmon/ab8500 @@ -0,0 +1,22 @@ +Kernel driver ab8500 +==================== + +Supported chips: +  * ST-Ericsson AB8500 +    Prefix: 'ab8500' +    Addresses scanned: - +    Datasheet: http://www.stericsson.com/developers/documentation.jsp + +Authors: +        Martin Persson <martin.persson@stericsson.com> +        Hongbo Zhang <hongbo.zhang@linaro.org> + +Description +----------- + +See also Documentation/hwmon/abx500. This is the ST-Ericsson AB8500 specific +driver. + +Currently only the AB8500 internal sensor and one external sensor for battery +temperature are monitored. Other GPADC channels can also be monitored if needed +in future. diff --git a/Documentation/hwmon/abituguru b/Documentation/hwmon/abituguru index 5eb3b9d5f0d..915f32063a2 100644 --- a/Documentation/hwmon/abituguru +++ b/Documentation/hwmon/abituguru @@ -78,7 +78,7 @@ motherboards (most modern Abit motherboards).  The first and second revision of the uGuru chip in reality is a Winbond  W83L950D in disguise (despite Abit claiming it is "a new microprocessor -designed by the ABIT Engineers"). Unfortunatly this doesn't help since the +designed by the ABIT Engineers"). Unfortunately this doesn't help since the  W83L950D is a generic microcontroller with a custom Abit application running  on it. diff --git a/Documentation/hwmon/abituguru-datasheet b/Documentation/hwmon/abituguru-datasheet index d9251efdcec..86c0b1251c8 100644 --- a/Documentation/hwmon/abituguru-datasheet +++ b/Documentation/hwmon/abituguru-datasheet @@ -5,9 +5,9 @@ First of all, what I know about uGuru is no fact based on any help, hints or  datasheet from Abit. The data I have got on uGuru have I assembled through  my weak knowledge in "backwards engineering".  And just for the record, you may have noticed uGuru isn't a chip developed by -Abit, as they claim it to be. It's realy just an microprocessor (uC) created by +Abit, as they claim it to be. It's really just an microprocessor (uC) created by  Winbond (W83L950D). And no, reading the manual for this specific uC or -mailing  Windbond for help won't give any usefull data about uGuru, as it is +mailing  Windbond for help won't give any useful data about uGuru, as it is  the program inside the uC that is responding to calls.  Olle Sandberg <ollebull@gmail.com>, 2005-05-25 @@ -41,7 +41,7 @@ later on attached again data-port will hold 0x08, more about this later.  After wider testing of the Linux kernel driver some variants of the uGuru have  turned up which will hold 0x00 instead of 0xAC at the CMD port, thus we also -have to test CMD for two different values. On these uGuru's DATA will initally +have to test CMD for two different values. On these uGuru's DATA will initially  hold 0x09 and will only hold 0x08 after reading CMD first, so CMD must be read  first! @@ -299,7 +299,7 @@ Byte 1:  min threshold (scale as bank 0x26) -Warning for the adventerous +Warning for the adventurous  ===========================  A word of caution to those who want to experiment and see if they can figure @@ -308,5 +308,5 @@ the voltage / clock programming out, I tried reading and only reading banks  resulted in a _permanent_ reprogramming of the voltages, luckily I had the  sensors part configured so that it would shutdown my system on any out of spec  voltages which proprably safed my computer (after a reboot I managed to -immediatly enter the bios and reload the defaults). This probably means that +immediately enter the bios and reload the defaults). This probably means that  the read/write cycle for the non sensor part is different from the sensor part. diff --git a/Documentation/hwmon/abituguru3 b/Documentation/hwmon/abituguru3 index fa598aac22f..a6ccfe4bb6a 100644 --- a/Documentation/hwmon/abituguru3 +++ b/Documentation/hwmon/abituguru3 @@ -47,7 +47,7 @@ This driver supports the hardware monitoring features of the third revision of  the Abit uGuru chip, found on recent Abit uGuru featuring motherboards.  The 3rd revision of the uGuru chip in reality is a Winbond W83L951G. -Unfortunatly this doesn't help since the W83L951G is a generic microcontroller +Unfortunately this doesn't help since the W83L951G is a generic microcontroller  with a custom Abit application running on it.  Despite Abit not releasing any information regarding the uGuru revision 3, diff --git a/Documentation/hwmon/abx500 b/Documentation/hwmon/abx500 new file mode 100644 index 00000000000..319a058cec7 --- /dev/null +++ b/Documentation/hwmon/abx500 @@ -0,0 +1,28 @@ +Kernel driver abx500 +==================== + +Supported chips: +  * ST-Ericsson ABx500 series +    Prefix: 'abx500' +    Addresses scanned: - +    Datasheet: http://www.stericsson.com/developers/documentation.jsp + +Authors: +        Martin Persson <martin.persson@stericsson.com> +        Hongbo Zhang <hongbo.zhang@linaro.org> + +Description +----------- + +Every ST-Ericsson Ux500 SOC consists of both ABx500 and DBx500 physically, +this is kernel hwmon driver for ABx500. + +There are some GPADCs inside ABx500 which are designed for connecting to +thermal sensors, and there is also a thermal sensor inside ABx500 too, which +raises interrupt when critical temperature reached. + +This abx500 is a common layer which can monitor all of the sensors, every +specific abx500 chip has its special configurations in its own file, e.g. some +sensors can be configured invisible if they are not available on that chip, and +the corresponding gpadc_addr should be set to 0, thus this sensor won't be +polled. diff --git a/Documentation/hwmon/ad7314 b/Documentation/hwmon/ad7314 new file mode 100644 index 00000000000..1912549c746 --- /dev/null +++ b/Documentation/hwmon/ad7314 @@ -0,0 +1,25 @@ +Kernel driver ad7314 +==================== + +Supported chips: +   * Analog Devices AD7314 +     Prefix: 'ad7314' +     Datasheet: Publicly available at Analog Devices website. +   * Analog Devices ADT7301 +     Prefix: 'adt7301' +     Datasheet: Publicly available at Analog Devices website. +   * Analog Devices ADT7302 +     Prefix: 'adt7302' +     Datasheet: Publicly available at Analog Devices website. + +Description +----------- + +Driver supports the above parts.  The ad7314 has a 10 bit +sensor with 1lsb = 0.25 degrees centigrade. The adt7301 and +adt7302 have 14 bit sensors with 1lsb = 0.03125 degrees centigrade. + +Notes +----- + +Currently power down mode is not supported. diff --git a/Documentation/hwmon/adc128d818 b/Documentation/hwmon/adc128d818 new file mode 100644 index 00000000000..39c95004dab --- /dev/null +++ b/Documentation/hwmon/adc128d818 @@ -0,0 +1,47 @@ +Kernel driver adc128d818 +======================== + +Supported chips: +  * Texas Instruments ADC818D818 +    Prefix: 'adc818d818' +    Addresses scanned: I2C 0x1d, 0x1e, 0x1f, 0x2d, 0x2e, 0x2f +    Datasheet: Publicly available at the TI website +               http://www.ti.com/ + +Author: Guenter Roeck + +Description +----------- + +This driver implements support for the Texas Instruments ADC128D818. +It is described as 'ADC System Monitor with Temperature Sensor'. + +The ADC128D818 implements one temperature sensor and seven voltage sensors. + +Temperatures are measured in degrees Celsius. There is one set of limits. +When the HOT Temperature Limit is crossed, this will cause an alarm that will +be reasserted until the temperature drops below the HOT Hysteresis. +Measurements are guaranteed between -55 and +125 degrees. The temperature +measurement has a resolution of 0.5 degrees; the limits have a resolution +of 1 degree. + +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 2.55 volts, with a resolution +of 0.625 mV. + +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 by the time the alarm is read. The driver +caches the alarm status for each sensor until it is at least reported +once, to ensure that alarms are reported to user space. + +The ADC128D818 only updates its values approximately once per second; +reading it more often will do no harm, but will return 'old' values. + +In addition to the scanned address list, the chip can also be configured for +addresses 0x35 to 0x37. Those addresses are not scanned. You have to instantiate +the driver explicitly if the chip is configured for any of those addresses in +your system. diff --git a/Documentation/hwmon/adm1021 b/Documentation/hwmon/adm1021 index 03d02bfb3df..02ad96cf9b2 100644 --- a/Documentation/hwmon/adm1021 +++ b/Documentation/hwmon/adm1021 @@ -14,10 +14,6 @@ Supported chips:      Prefix: 'gl523sm'      Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e      Datasheet: -  * Intel Xeon Processor -    Prefix: - any other - may require 'force_adm1021' parameter -    Addresses scanned: none -    Datasheet: Publicly available at Intel website    * Maxim MAX1617      Prefix: 'max1617'      Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e @@ -91,21 +87,27 @@ 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 -within them, with two temperature sensors. +Netburst-based Xeon support +--------------------------- -Other Xeons have chips with only one sensor. +Some Xeon processors based on the Netburst (early Pentium 4, from 2001 to +2003) microarchitecture had real MAX1617, ADM1021, or compatible chips +within them, with two temperature sensors. Other Xeon processors of this +era (with 400 MHz FSB) had chips with only one temperature sensor. -If you have a Xeon, and the adm1021 module loads, and both temperatures -appear valid, then things are good. +If you have such an old Xeon, and you get two valid temperatures when +loading the adm1021 module, 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. +If nothing happens when loading the adm1021 module, and you are certain +that your specific Xeon processor model includes compatible sensors, you +will have to explicitly instantiate the sensor chips from user-space. See +method 4 in Documentation/i2c/instantiating-devices. Possible slave +addresses are 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. It is likely that +only temp2 will be correct and temp1 will have to be ignored. -If you have dual Xeons you may have appear to have two separate -adm1021-compatible chips, or two single-temperature sensors, at distinct -addresses. +Previous generations of the Xeon processor (based on Pentium II/III) +didn't have these sensors. Next generations of Xeon processors (533 MHz +FSB and faster) lost them, until the Core-based generation which +introduced integrated digital thermal sensors. These are supported by +the coretemp driver. diff --git a/Documentation/hwmon/adm1025 b/Documentation/hwmon/adm1025 index 39d2b781b5d..99f05049c68 100644 --- a/Documentation/hwmon/adm1025 +++ b/Documentation/hwmon/adm1025 @@ -18,7 +18,7 @@ The NE1619 presents some differences with the original ADM1025:  Authors:          Chen-Yuan Wu <gwu@esoft.com>, -        Jean Delvare <khali@linux-fr.org> +        Jean Delvare <jdelvare@suse.de>  Description  ----------- diff --git a/Documentation/hwmon/adm1031 b/Documentation/hwmon/adm1031 index be92a77da1d..a143117c99c 100644 --- a/Documentation/hwmon/adm1031 +++ b/Documentation/hwmon/adm1031 @@ -16,7 +16,7 @@ Supported chips:  Authors:          Alexandre d'Alton <alex@alexdalton.org> -        Jean Delvare <khali@linux-fr.org> +        Jean Delvare <jdelvare@suse.de>  Description  ----------- diff --git a/Documentation/hwmon/adm1275 b/Documentation/hwmon/adm1275 new file mode 100644 index 00000000000..15b4a20d506 --- /dev/null +++ b/Documentation/hwmon/adm1275 @@ -0,0 +1,92 @@ +Kernel driver adm1275 +===================== + +Supported chips: +  * Analog Devices ADM1075 +    Prefix: 'adm1075' +    Addresses scanned: - +    Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1075.pdf +  * Analog Devices ADM1275 +    Prefix: 'adm1275' +    Addresses scanned: - +    Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1275.pdf +  * Analog Devices ADM1276 +    Prefix: 'adm1276' +    Addresses scanned: - +    Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1276.pdf + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +This driver supports hardware montoring for Analog Devices ADM1075, ADM1275, +and ADM1276 Hot-Swap Controller and Digital Power Monitor. + +ADM1075, ADM1275, and ADM1276 are hot-swap controllers that allow a circuit +board to be removed from or inserted into a live backplane. They also feature +current and voltage readback via an integrated 12-bit analog-to-digital +converter (ADC), accessed using a PMBus interface. + +The driver is a client driver to the core PMBus driver. Please see +Documentation/hwmon/pmbus for details on PMBus client drivers. + + +Usage Notes +----------- + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. + +The ADM1075, unlike many other PMBus devices, does not support internal voltage +or current scaling. Reported voltages, currents, and power are raw measurements, +and will typically have to be scaled. + + +Platform data support +--------------------- + +The driver supports standard PMBus driver platform data. Please see +Documentation/hwmon/pmbus for details. + + +Sysfs entries +------------- + +The following attributes are supported. Limits are read-write, history reset +attributes are write-only, all other attributes are read-only. + +in1_label		"vin1" or "vout1" depending on chip variant and +			configuration. On ADM1075, vout1 reports the voltage on +			the VAUX pin. +in1_input		Measured voltage. +in1_min			Minimum Voltage. +in1_max			Maximum voltage. +in1_min_alarm		Voltage low alarm. +in1_max_alarm		Voltage high alarm. +in1_highest		Historical maximum voltage. +in1_reset_history	Write any value to reset history. + +curr1_label		"iout1" +curr1_input		Measured current. +curr1_max		Maximum current. +curr1_max_alarm		Current high alarm. +curr1_lcrit		Critical minimum current. Depending on the chip +			configuration, either curr1_lcrit or curr1_crit is +			supported, but not both. +curr1_lcrit_alarm	Critical current low alarm. +curr1_crit		Critical maximum current. Depending on the chip +			configuration, either curr1_lcrit or curr1_crit is +			supported, but not both. +curr1_crit_alarm	Critical current high alarm. +curr1_highest		Historical maximum current. +curr1_reset_history	Write any value to reset history. + +power1_label		"pin1" +power1_input		Input power. +power1_reset_history	Write any value to reset history. + +			Power attributes are supported on ADM1075 and ADM1276 +			only. diff --git a/Documentation/hwmon/adm9240 b/Documentation/hwmon/adm9240 index 2c6f1fed461..9b174fc700c 100644 --- a/Documentation/hwmon/adm9240 +++ b/Documentation/hwmon/adm9240 @@ -25,7 +25,7 @@ Authors:      Philip Edelbrock <phil@netroedge.com>,      Michiel Rook <michiel@grendelproject.nl>,      Grant Coady <gcoady.lk@gmail.com> with guidance -        from Jean Delvare <khali@linux-fr.org> +        from Jean Delvare <jdelvare@suse.de>  Interface  --------- @@ -155,7 +155,7 @@ connected to a normally open switch.  The ADM9240 provides an internal open drain on this line, and may output  a 20 ms active low pulse to reset an external Chassis Intrusion latch. -Clear the CI latch by writing value 1 to the sysfs chassis_clear file. +Clear the CI latch by writing value 0 to the sysfs intrusion0_alarm file.  Alarm flags reported as 16-bit word diff --git a/Documentation/hwmon/ads1015 b/Documentation/hwmon/ads1015 new file mode 100644 index 00000000000..063b80d857b --- /dev/null +++ b/Documentation/hwmon/ads1015 @@ -0,0 +1,76 @@ +Kernel driver ads1015 +===================== + +Supported chips: +  * Texas Instruments ADS1015 +    Prefix: 'ads1015' +    Datasheet: Publicly available at the Texas Instruments website : +               http://focus.ti.com/lit/ds/symlink/ads1015.pdf +  * Texas Instruments ADS1115 +    Prefix: 'ads1115' +    Datasheet: Publicly available at the Texas Instruments website : +               http://focus.ti.com/lit/ds/symlink/ads1115.pdf + +Authors: +        Dirk Eibach, Guntermann & Drunck GmbH <eibach@gdsys.de> + +Description +----------- + +This driver implements support for the Texas Instruments ADS1015/ADS1115. + +This device is a 12/16-bit A-D converter with 4 inputs. + +The inputs can be used single ended or in certain differential combinations. + +The inputs can be made available by 8 sysfs input files in0_input - in7_input: +in0: Voltage over AIN0 and AIN1. +in1: Voltage over AIN0 and AIN3. +in2: Voltage over AIN1 and AIN3. +in3: Voltage over AIN2 and AIN3. +in4: Voltage over AIN0 and GND. +in5: Voltage over AIN1 and GND. +in6: Voltage over AIN2 and GND. +in7: Voltage over AIN3 and GND. + +Which inputs are available can be configured using platform data or devicetree. + +By default all inputs are exported. + +Platform Data +------------- + +In linux/i2c/ads1015.h platform data is defined, channel_data contains +configuration data for the used input combinations: +- pga is the programmable gain amplifier (values are full scale) +  0: +/- 6.144 V +  1: +/- 4.096 V +  2: +/- 2.048 V +  3: +/- 1.024 V +  4: +/- 0.512 V +  5: +/- 0.256 V +- data_rate in samples per second +  0: 128 +  1: 250 +  2: 490 +  3: 920 +  4: 1600 +  5: 2400 +  6: 3300 + +Example: +struct ads1015_platform_data data = { +	.channel_data = { +		[2] = { .enabled = true, .pga = 1, .data_rate = 0 }, +		[4] = { .enabled = true, .pga = 4, .data_rate = 5 }, +	} +}; + +In this case only in2_input (FS +/- 4.096 V, 128 SPS) and in4_input +(FS +/- 0.512 V, 2400 SPS) would be created. + +Devicetree +---------- + +Configuration is also possible via devicetree: +Documentation/devicetree/bindings/hwmon/ads1015.txt diff --git a/Documentation/hwmon/ads7828 b/Documentation/hwmon/ads7828 index 75bc4beaf44..f6e263e0f60 100644 --- a/Documentation/hwmon/ads7828 +++ b/Documentation/hwmon/ads7828 @@ -4,29 +4,47 @@ Kernel driver ads7828  Supported chips:    * Texas Instruments/Burr-Brown ADS7828      Prefix: 'ads7828' -    Addresses scanned: I2C 0x48, 0x49, 0x4a, 0x4b -    Datasheet: Publicly available at the Texas Instruments website : +    Datasheet: Publicly available at the Texas Instruments website:                 http://focus.ti.com/lit/ds/symlink/ads7828.pdf +  * Texas Instruments ADS7830 +    Prefix: 'ads7830' +    Datasheet: Publicly available at the Texas Instruments website: +               http://focus.ti.com/lit/ds/symlink/ads7830.pdf +  Authors: -        Steve Hardy <steve@linuxrealtime.co.uk> +        Steve Hardy <shardy@redhat.com> +        Vivien Didelot <vivien.didelot@savoirfairelinux.com> +        Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> + +Platform data +------------- + +The ads7828 driver accepts an optional ads7828_platform_data structure (defined +in include/linux/platform_data/ads7828.h). The structure fields are: -Module Parameters ------------------ +* diff_input: (bool) Differential operation +  set to true for differential mode, false for default single ended mode. -* se_input: bool (default Y) -  Single ended operation - set to N for differential mode -* int_vref: bool (default Y) -  Operate with the internal 2.5V reference - set to N for external reference -* vref_mv: int (default 2500) -  If using an external reference, set this to the reference voltage in mV +* ext_vref: (bool) External reference +  set to true if it operates with an external reference, false for default +  internal reference. + +* vref_mv: (unsigned int) Voltage reference +  if using an external reference, set this to the reference voltage in mV, +  otherwise it will default to the internal value (2500mV). This value will be +  bounded with limits accepted by the chip, described in the datasheet. + + If no structure is provided, the configuration defaults to single ended + operation and internal voltage reference (2.5V).  Description  ----------- -This driver implements support for the Texas Instruments ADS7828. +This driver implements support for the Texas Instruments ADS7828 and ADS7830. -This device is a 12-bit 8-channel A-D converter. +The ADS7828 device is a 12-bit 8-channel A/D converter, while the ADS7830 does +8-bit sampling.  It can operate in single ended mode (8 +ve inputs) or in differential mode,  where 4 differential pairs can be measured. @@ -34,3 +52,7 @@ where 4 differential pairs can be measured.  The chip also has the facility to use an external voltage reference.  This  may be required if your hardware supplies the ADS7828 from a 5V supply, see  the datasheet for more details. + +There is no reliable way to identify this chip, so the driver will not scan +some addresses to try to auto-detect it. That means that you will have to +statically declare the device in the platform support code. diff --git a/Documentation/hwmon/adt7410 b/Documentation/hwmon/adt7410 new file mode 100644 index 00000000000..9817941e5f1 --- /dev/null +++ b/Documentation/hwmon/adt7410 @@ -0,0 +1,73 @@ +Kernel driver adt7410 +===================== + +Supported chips: +  * Analog Devices ADT7410 +    Prefix: 'adt7410' +    Addresses scanned: None +    Datasheet: Publicly available at the Analog Devices website +               http://www.analog.com/static/imported-files/data_sheets/ADT7410.pdf +  * Analog Devices ADT7420 +    Prefix: 'adt7420' +    Addresses scanned: None +    Datasheet: Publicly available at the Analog Devices website +               http://www.analog.com/static/imported-files/data_sheets/ADT7420.pdf +  * Analog Devices ADT7310 +    Prefix: 'adt7310' +    Addresses scanned: None +    Datasheet: Publicly available at the Analog Devices website +               http://www.analog.com/static/imported-files/data_sheets/ADT7310.pdf +  * Analog Devices ADT7320 +    Prefix: 'adt7320' +    Addresses scanned: None +    Datasheet: Publicly available at the Analog Devices website +               http://www.analog.com/static/imported-files/data_sheets/ADT7320.pdf + +Author: Hartmut Knaack <knaack.h@gmx.de> + +Description +----------- + +The ADT7310/ADT7410 is a temperature sensor with rated temperature range of +-55°C to +150°C. It has a high accuracy of +/-0.5°C and can be operated at a +resolution of 13 bits (0.0625°C) or 16 bits (0.0078°C). The sensor provides an +INT pin to indicate that a minimum or maximum temperature set point has been +exceeded, as well as a critical temperature (CT) pin to indicate that the +critical temperature set point has been exceeded. Both pins can be set up with a +common hysteresis of 0°C - 15°C and a fault queue, ranging from 1 to 4 events. +Both pins can individually set to be active-low or active-high, while the whole +device can either run in comparator mode or interrupt mode. The ADT7410 supports +continuous temperature sampling, as well as sampling one temperature value per +second or even just get one sample on demand for power saving. Besides, it can +completely power down its ADC, if power management is required. + +The ADT7320/ADT7420 is register compatible, the only differences being the +package, a slightly narrower operating temperature range (-40°C to +150°C), and +a better accuracy (0.25°C instead of 0.50°C.) + +The difference between the ADT7310/ADT7320 and ADT7410/ADT7420 is the control +interface, the ADT7310 and ADT7320 use SPI while the ADT7410 and ADT7420 use +I2C. + +Configuration Notes +------------------- + +Since the device uses one hysteresis value, which is an offset to minimum, +maximum and critical temperature, it can only be set for temp#_max_hyst. +However, temp#_min_hyst and temp#_crit_hyst show their corresponding +hysteresis. +The device is set to 16 bit resolution and comparator mode. + +sysfs-Interface +--------------- + +temp#_input		- temperature input +temp#_min		- temperature minimum setpoint +temp#_max		- temperature maximum setpoint +temp#_crit		- critical temperature setpoint +temp#_min_hyst		- hysteresis for temperature minimum (read-only) +temp#_max_hyst		- hysteresis for temperature maximum (read/write) +temp#_crit_hyst		- hysteresis for critical temperature (read-only) +temp#_min_alarm		- temperature minimum alarm flag +temp#_max_alarm		- temperature maximum alarm flag +temp#_crit_alarm	- critical temperature alarm flag diff --git a/Documentation/hwmon/coretemp b/Documentation/hwmon/coretemp index 25568f84480..fec5a9bf755 100644 --- a/Documentation/hwmon/coretemp +++ b/Documentation/hwmon/coretemp @@ -6,7 +6,9 @@ Supported chips:      Prefix: 'coretemp'      CPUID: family 0x6, models 0xe (Pentium M DC), 0xf (Core 2 DC 65nm),                                0x16 (Core 2 SC 65nm), 0x17 (Penryn 45nm), -                              0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield) +                              0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield), +                              0x26 (Tunnel Creek Atom), 0x27 (Medfield Atom), +                              0x36 (Cedar Trail Atom)      Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual                 Volume 3A: System Programming Guide                 http://softwarecommunity.intel.com/Wiki/Mobility/720.htm @@ -15,8 +17,13 @@ Author: Rudolf Marek  Description  ----------- +This driver permits reading the DTS (Digital Temperature Sensor) embedded +inside Intel CPUs. This driver can read both the per-core and per-package +temperature using the appropriate sensors. The per-package sensor is new; +as of now, it is present only in the SandyBridge platform. The driver will +show the temperature of all cores inside a package under a single device +directory inside hwmon. -This driver permits reading temperature sensor embedded inside Intel Core CPU.  Temperature is measured in degrees Celsius and measurement resolution is  1 degree C. Valid temperatures are from 0 to TjMax degrees C, because  the actual value of temperature register is in fact a delta from TjMax. @@ -27,24 +34,39 @@ mechanism will perform actions to forcibly cool down the processor. Alarm  may be raised, if the temperature grows enough (more than TjMax) to trigger  the Out-Of-Spec bit. Following table summarizes the exported sysfs files: -temp1_input	 - Core temperature (in millidegrees Celsius). -temp1_max	 - All cooling devices should be turned on (on Core2). -temp1_crit	 - Maximum junction temperature (in millidegrees Celsius). -temp1_crit_alarm - Set when Out-of-spec bit is set, never clears. +All Sysfs entries are named with their core_id (represented here by 'X'). +tempX_input	 - Core temperature (in millidegrees Celsius). +tempX_max	 - All cooling devices should be turned on (on Core2). +tempX_crit	 - Maximum junction temperature (in millidegrees Celsius). +tempX_crit_alarm - Set when Out-of-spec bit is set, never clears.  		   Correct CPU operation is no longer guaranteed. -temp1_label	 - Contains string "Core X", where X is processor -		   number. +tempX_label	 - Contains string "Core X", where X is processor +		   number. For Package temp, this will be "Physical id Y", +		   where Y is the package number. -The TjMax temperature is set to 85 degrees C if undocumented model specific -register (UMSR) 0xee has bit 30 set. If not the TjMax is 100 degrees C as -(sometimes) documented in processor datasheet. +On CPU models which support it, TjMax is read from a model-specific register. +On other models, it is set to an arbitrary value based on weak heuristics. +If these heuristics don't work for you, you can pass the correct TjMax value +as a module parameter (tjmax).  Appendix A. Known TjMax lists (TBD):  Some information comes from ark.intel.com  Process		Processor					TjMax(C) +22nm		Core i5/i7 Processors +		i7 3920XM, 3820QM, 3720QM, 3667U, 3520M		105 +		i5 3427U, 3360M/3320M				105 +		i7 3770/3770K					105 +		i5 3570/3570K, 3550, 3470/3450			105 +		i7 3770S					103 +		i5 3570S/3550S, 3475S/3470S/3450S		103 +		i7 3770T					94 +		i5 3570T					94 +		i5 3470T					91 +  32nm		Core i3/i5/i7 Processors +		i7 2600						98  		i7 660UM/640/620, 640LM/620, 620M, 610E		105  		i5 540UM/520/430, 540M/520/450/430		105  		i3 330E, 370M/350/330				90 rPGA, 105 BGA @@ -57,6 +79,14 @@ Process		Processor					TjMax(C)  		U3400						105  		P4505/P4500 					90 +32nm		Atom Processors +		S1260/1220					95 +		S1240						102 +		Z2460						90 +		Z2760						90 +		D2700/2550/2500					100 +		N2850/2800/2650/2600				100 +  45nm		Xeon Processors 5400 Quad-Core  		X5492, X5482, X5472, X5470, X5460, X5450	85  		E5472, E5462, E5450/40/30/20/10/05		85 @@ -72,11 +102,21 @@ Process		Processor					TjMax(C)  45nm		Atom Processors  		D525/510/425/410				100 +		K525/510/425/410				100 +		Z670/650					90  		Z560/550/540/530P/530/520PT/520/515/510PT/510P	90  		Z510/500					90 +		N570/550					100  		N475/470/455/450				100  		N280/270					90  		330/230						125 +		E680/660/640/620				90 +		E680T/660T/640T/620T				110 +		E665C/645C					90 +		E665CT/645CT					110 +		CE4170/4150/4110				110 +		CE4200 series					unknown +		CE5300 series					unknown  45nm		Core2 Processors  		Solo ULV SU3500/3300				100 diff --git a/Documentation/hwmon/da9052 b/Documentation/hwmon/da9052 new file mode 100644 index 00000000000..5bc51346b68 --- /dev/null +++ b/Documentation/hwmon/da9052 @@ -0,0 +1,61 @@ +Supported chips: +  * Dialog Semiconductors DA9052-BC and DA9053-AA/Bx PMICs +    Prefix: 'da9052' +    Datasheet: Datasheet is not publicly available. + +Authors: David Dajun Chen <dchen@diasemi.com> + +Description +----------- + +The DA9052/53 provides an Analogue to Digital Converter (ADC) with 10 bits +resolution and track and hold circuitry combined with an analogue input +multiplexer. The analogue input multiplexer will allow conversion of up to 10 +different inputs. The track and hold circuit ensures stable input voltages at +the input of the ADC during the conversion. + +The ADC is used to measure the following inputs: +Channel 0: VDDOUT - measurement of the system voltage +Channel 1: ICH - internal battery charger current measurement +Channel 2: TBAT - output from the battery NTC +Channel 3: VBAT - measurement of the battery voltage +Channel 4: ADC_IN4 - high impedance input (0 - 2.5V) +Channel 5: ADC_IN5 - high impedance input (0 - 2.5V) +Channel 6: ADC_IN6 - high impedance input (0 - 2.5V) +Channel 7: XY - TSI interface to measure the X and Y voltage of the touch +	   screen resistive potentiometers +Channel 8: Internal Tjunc. - sense (internal temp. sensor) +Channel 9: VBBAT - measurement of the backup battery voltage + +By using sysfs attributes we can measure the system voltage VDDOUT, the battery +charging current ICH, battery temperature TBAT, battery junction temperature +TJUNC, battery voltage VBAT and the back up battery voltage VBBAT. + +Voltage Monitoring +------------------ + +Voltages are sampled by a 10 bit ADC. + +The battery voltage is calculated as: +	Milli volt = ((ADC value * 1000) / 512) + 2500 + +The backup battery voltage is calculated as: +	Milli volt = (ADC value * 2500) / 512; + +The voltages on ADC channels 4, 5 and 6 are calculated as: +	Milli volt = (ADC value * 2500) / 1023 + +Temperature Monitoring +---------------------- + +Temperatures are sampled by a 10 bit ADC.  Junction and battery temperatures +are monitored by the ADC channels. + +The junction temperature is calculated: +	Degrees celsius = 1.708 * (TJUNC_RES - T_OFFSET) - 108.8 +The junction temperature attribute is supported by the driver. + +The battery temperature is calculated: +	Degree Celsius = 1 / (t1 + 1/298)- 273 +where t1 = (1/B)* ln(( ADCval * 2.5)/(R25*ITBAT*255)) +Default values of R25, B, ITBAT are 10e3, 3380 and 50e-6 respectively. diff --git a/Documentation/hwmon/da9055 b/Documentation/hwmon/da9055 new file mode 100644 index 00000000000..855c3f536e0 --- /dev/null +++ b/Documentation/hwmon/da9055 @@ -0,0 +1,47 @@ +Supported chips: +  * Dialog Semiconductors DA9055 PMIC +    Prefix: 'da9055' +    Datasheet: Datasheet is not publicly available. + +Authors: David Dajun Chen <dchen@diasemi.com> + +Description +----------- + +The DA9055 provides an Analogue to Digital Converter (ADC) with 10 bits +resolution and track and hold circuitry combined with an analogue input +multiplexer. The analogue input multiplexer will allow conversion of up to 5 +different inputs. The track and hold circuit ensures stable input voltages at +the input of the ADC during the conversion. + +The ADC is used to measure the following inputs: +Channel 0: VDDOUT - measurement of the system voltage +Channel 1: ADC_IN1 - high impedance input (0 - 2.5V) +Channel 2: ADC_IN2 - high impedance input (0 - 2.5V) +Channel 3: ADC_IN3 - high impedance input (0 - 2.5V) +Channel 4: Internal Tjunc. - sense (internal temp. sensor) + +By using sysfs attributes we can measure the system voltage VDDOUT, +chip junction temperature and auxiliary channels voltages. + +Voltage Monitoring +------------------ + +Voltages are sampled in a AUTO mode it can be manually sampled too and results +are stored in a 10 bit ADC. + +The system voltage is calculated as: +	Milli volt = ((ADC value * 1000) / 85) + 2500 + +The voltages on ADC channels 1, 2 and 3 are calculated as: +	Milli volt = (ADC value * 1000) / 102 + +Temperature Monitoring +---------------------- + +Temperatures are sampled by a 10 bit ADC.  Junction temperatures +are monitored by the ADC channels. + +The junction temperature is calculated: +	Degrees celsius = -0.4084 * (ADC_RES - T_OFFSET) + 307.6332 +The junction temperature attribute is supported by the driver. diff --git a/Documentation/hwmon/dme1737 b/Documentation/hwmon/dme1737 index fc5df7654d6..4d2935145a1 100644 --- a/Documentation/hwmon/dme1737 +++ b/Documentation/hwmon/dme1737 @@ -42,7 +42,7 @@ Description  This driver implements support for the hardware monitoring capabilities of the  SMSC DME1737 and Asus A8000 (which are the same), SMSC SCH5027, SCH311x,  and SCH5127 Super-I/O chips. These chips feature monitoring of 3 temp sensors -temp[1-3] (2 remote diodes and 1 internal), 7 voltages in[0-6] (6 external and +temp[1-3] (2 remote diodes and 1 internal), 8 voltages in[0-7] (7 external and  1 internal) and up to 6 fan speeds fan[1-6]. Additionally, the chips implement  up to 5 PWM outputs pwm[1-3,5-6] for controlling fan speeds both manually and  automatically. @@ -105,6 +105,7 @@ SCH5127:  	in4: V1_IN				0V - 1.5V  	in5: VTR	(+3.3V standby)		0V - 4.38V  	in6: Vbat	(+3.0V)			0V - 4.38V +	in7: Vtrip	(+1.5V)			0V - 1.99V  Each voltage input has associated min and max limits which trigger an alarm  when crossed. @@ -217,10 +218,10 @@ cpu0_vid			RO	CPU core reference voltage in  vrm				RW	Voltage regulator module version  					number. -in[0-6]_input			RO	Measured voltage in millivolts. -in[0-6]_min			RW	Low limit for voltage input. -in[0-6]_max			RW	High limit for voltage input. -in[0-6]_alarm			RO	Voltage input alarm. Returns 1 if +in[0-7]_input			RO	Measured voltage in millivolts. +in[0-7]_min			RW	Low limit for voltage input. +in[0-7]_max			RW	High limit for voltage input. +in[0-7]_alarm			RO	Voltage input alarm. Returns 1 if  					voltage input is or went outside the  					associated min-max range, 0 otherwise. @@ -324,3 +325,4 @@ fan5			opt		opt  pwm5			opt		opt  fan6			opt		opt  pwm6			opt		opt +in7						yes diff --git a/Documentation/hwmon/ds1621 b/Documentation/hwmon/ds1621 index 5e97f333c4d..f775e612f58 100644 --- a/Documentation/hwmon/ds1621 +++ b/Documentation/hwmon/ds1621 @@ -2,22 +2,36 @@ Kernel driver ds1621  ====================  Supported chips: -  * Dallas Semiconductor DS1621 +  * Dallas Semiconductor / Maxim Integrated DS1621      Prefix: 'ds1621' -    Addresses scanned: I2C 0x48 - 0x4f -    Datasheet: Publicly available at the Dallas Semiconductor website -               http://www.dalsemi.com/ +    Addresses scanned: none +    Datasheet: Publicly available from www.maximintegrated.com +    * Dallas Semiconductor DS1625 -    Prefix: 'ds1621' -    Addresses scanned: I2C 0x48 - 0x4f -    Datasheet: Publicly available at the Dallas Semiconductor website -               http://www.dalsemi.com/ +    Prefix: 'ds1625' +    Addresses scanned: none +    Datasheet: Publicly available from www.datasheetarchive.com + +  * Maxim Integrated DS1631 +    Prefix: 'ds1631' +    Addresses scanned: none +    Datasheet: Publicly available from www.maximintegrated.com + +  * Maxim Integrated DS1721 +    Prefix: 'ds1721' +    Addresses scanned: none +    Datasheet: Publicly available from www.maximintegrated.com + +  * Maxim Integrated DS1731 +    Prefix: 'ds1731' +    Addresses scanned: none +    Datasheet: Publicly available from www.maximintegrated.com  Authors:          Christian W. Zuckschwerdt <zany@triq.net>          valuable contributions by Jan M. Sendler <sendler@sendler.de>          ported to 2.6 by Aurelien Jarno <aurelien@aurel32.net> -        with the help of Jean Delvare <khali@linux-fr.org> +        with the help of Jean Delvare <jdelvare@suse.de>  Module Parameters  ------------------ @@ -59,5 +73,115 @@ 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. +Since there is no version or vendor identification register, there is +no unique identification for these devices. Therefore, explicit device +instantiation is required for correct device identification and functionality +(one device per address in this address range: 0x48..0x4f). + +The DS1625 is pin compatible and functionally equivalent with the DS1621, +but the DS1621 is meant to replace it. The DS1631, DS1721, and DS1731 are +also pin compatible with the DS1621 and provide multi-resolution support. + +Additionally, the DS1721 data sheet says the temperature flags (THF and TLF) +are used internally, however, these flags do get set and cleared as the actual +temperature crosses the min or max settings (which by default are set to 75 +and 80 degrees respectively). + +Temperature Conversion: +----------------------- +DS1621 - 750ms (older devices may take up to 1000ms) +DS1625 - 500ms +DS1631 - 93ms..750ms for 9..12 bits resolution, respectively. +DS1721 - 93ms..750ms for 9..12 bits resolution, respectively. +DS1731 - 93ms..750ms for 9..12 bits resolution, respectively. + +Note: +On the DS1621, internal access to non-volatile registers may last for 10ms +or less (unverified on the other devices). + +Temperature Accuracy: +--------------------- +DS1621: +/- 0.5 degree Celsius (from 0 to +70 degrees) +DS1625: +/- 0.5 degree Celsius (from 0 to +70 degrees) +DS1631: +/- 0.5 degree Celsius (from 0 to +70 degrees) +DS1721: +/- 1.0 degree Celsius (from -10 to +85 degrees) +DS1731: +/- 1.0 degree Celsius (from -10 to +85 degrees) + +Note: +Please refer to the device datasheets for accuracy at other temperatures. + +Temperature Resolution: +----------------------- +As mentioned above, the DS1631, DS1721, and DS1731 provide multi-resolution +support, which is achieved via the R0 and R1 config register bits, where: + +R0..R1 +------ + 0  0 => 9 bits, 0.5 degrees Celcius + 1  0 => 10 bits, 0.25 degrees Celcius + 0  1 => 11 bits, 0.125 degrees Celcius + 1  1 => 12 bits, 0.0625 degrees Celcius + +Note: +At initial device power-on, the default resolution is set to 12-bits. + +The resolution mode for the DS1631, DS1721, or DS1731 can be changed from +userspace, via the device 'update_interval' sysfs attribute. This attribute +will normalize the range of input values to the device maximum resolution +values defined in the datasheet as follows: + +Resolution    Conversion Time    Input Range + (C/LSB)       (msec)             (msec) +------------------------------------------------ +0.5             93.75              0....94 +0.25            187.5              95...187 +0.125           375                188..375 +0.0625          750                376..infinity +------------------------------------------------ + +The following examples show how the 'update_interval' attribute can be +used to change the conversion time: + +$ cat update_interval +750 +$ cat temp1_input +22062 +$ +$ echo 300 > update_interval +$ cat update_interval +375 +$ cat temp1_input +22125 +$ +$ echo 150 > update_interval +$ cat update_interval +188 +$ cat temp1_input +22250 +$ +$ echo 1 > update_interval +$ cat update_interval +94 +$ cat temp1_input +22000 +$ +$ echo 1000 > update_interval +$ cat update_interval +750 +$ cat temp1_input +22062 +$ + +As shown, the ds1621 driver automatically adjusts the 'update_interval' +user input, via a step function. Reading back the 'update_interval' value +after a write operation provides the conversion time used by the device. + +Mathematically, the resolution can be derived from the conversion time +via the following function: + +   g(x) = 0.5 * [minimum_conversion_time/x] + +where: + -> 'x' = the output from 'update_interval' + -> 'g(x)' = the resolution in degrees C per LSB. + -> 93.75ms = minimum conversion time diff --git a/Documentation/hwmon/ds620 b/Documentation/hwmon/ds620 new file mode 100644 index 00000000000..1fbe3cd916c --- /dev/null +++ b/Documentation/hwmon/ds620 @@ -0,0 +1,34 @@ +Kernel driver ds620 +=================== + +Supported chips: +  * Dallas Semiconductor DS620 +    Prefix: 'ds620' +    Datasheet: Publicly available at the Dallas Semiconductor website +               http://www.dalsemi.com/ + +Authors: +        Roland Stigge <stigge@antcom.de> +        based on ds1621.c by +        Christian W. Zuckschwerdt <zany@triq.net> + +Description +----------- + +The DS620 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. Between 0 and 70 degree Celsius, accuracy is 0.5 Kelvin. The value +returned via sysfs displays post decimal positions. + +The thermostat function works as follows: When configured via platform_data +(struct ds620_platform_data) .pomode == 0 (default), the thermostat output pin +PO is always low. If .pomode == 1, the thermostat is in PO_LOW mode. I.e., the +output pin PO becomes active when the temperature falls below temp1_min and +stays active until the temperature goes above temp1_max. + +Likewise, with .pomode == 2, the thermostat is in PO_HIGH mode. I.e., the PO +output pin becomes active when the temperature goes above temp1_max and stays +active until the temperature falls below temp1_min. + +The PO output pin of the DS620 operates active-low. diff --git a/Documentation/hwmon/emc1403 b/Documentation/hwmon/emc1403 new file mode 100644 index 00000000000..a869b0ef6a9 --- /dev/null +++ b/Documentation/hwmon/emc1403 @@ -0,0 +1,59 @@ +Kernel driver emc1403 +===================== + +Supported chips: +  * SMSC / Microchip EMC1402, EMC1412 +    Addresses scanned: I2C 0x18, 0x1c, 0x29, 0x4c, 0x4d, 0x5c +    Prefix: 'emc1402' +    Datasheets: +	http://ww1.microchip.com/downloads/en/DeviceDoc/1412.pdf +	http://ww1.microchip.com/downloads/en/DeviceDoc/1402.pdf +  * SMSC / Microchip EMC1403, EMC1404, EMC1413, EMC1414 +    Addresses scanned: I2C 0x18, 0x29, 0x4c, 0x4d +    Prefix: 'emc1403', 'emc1404' +    Datasheets: +	http://ww1.microchip.com/downloads/en/DeviceDoc/1403_1404.pdf +	http://ww1.microchip.com/downloads/en/DeviceDoc/1413_1414.pdf +  * SMSC / Microchip EMC1422 +    Addresses scanned: I2C 0x4c +    Prefix: 'emc1422' +    Datasheet: +	http://ww1.microchip.com/downloads/en/DeviceDoc/1422.pdf +  * SMSC / Microchip EMC1423, EMC1424 +    Addresses scanned: I2C 0x4c +    Prefix: 'emc1423', 'emc1424' +    Datasheet: +	http://ww1.microchip.com/downloads/en/DeviceDoc/1423_1424.pdf + +Author: +    Kalhan Trisal <kalhan.trisal@intel.com + + +Description +----------- + +The Standard Microsystems Corporation (SMSC) / Microchip EMC14xx chips +contain up to four temperature sensors. EMC14x2 support two sensors +(one internal, one external). EMC14x3 support three sensors (one internal, +two external), and EMC14x4 support four sensors (one internal, three +external). + +The chips implement three limits for each sensor: low (tempX_min), high +(tempX_max) and critical (tempX_crit.) The chips also implement an +hysteresis mechanism which applies to all limits. The relative difference +is stored in a single register on the chip, which means that the relative +difference between the limit and its hysteresis is always the same for +all three limits. + +This implementation detail implies the following: +* When setting a limit, its hysteresis will automatically follow, the +  difference staying unchanged. For example, if the old critical limit +  was 80 degrees C, and the hysteresis was 75 degrees C, and you change +  the critical limit to 90 degrees C, then the hysteresis will +  automatically change to 85 degrees C. +* The hysteresis values can't be set independently. We decided to make +  only temp1_crit_hyst writable, while all other hysteresis attributes +  are read-only. Setting temp1_crit_hyst writes the difference between +  temp1_crit_hyst and temp1_crit into the chip, and the same relative +  hysteresis applies automatically to all other limits. +* The limits should be set before the hysteresis. diff --git a/Documentation/hwmon/emc6w201 b/Documentation/hwmon/emc6w201 new file mode 100644 index 00000000000..757629b1289 --- /dev/null +++ b/Documentation/hwmon/emc6w201 @@ -0,0 +1,42 @@ +Kernel driver emc6w201 +====================== + +Supported chips: +  * SMSC EMC6W201 +    Prefix: 'emc6w201' +    Addresses scanned: I2C 0x2c, 0x2d, 0x2e +    Datasheet: Not public + +Author: Jean Delvare <jdelvare@suse.de> + + +Description +----------- + +From the datasheet: + +"The EMC6W201 is an environmental monitoring device with automatic fan +control capability and enhanced system acoustics for noise suppression. +This ACPI compliant device provides hardware monitoring for up to six +voltages (including its own VCC) and five external thermal sensors, +measures the speed of up to five fans, and controls the speed of +multiple DC fans using three Pulse Width Modulator (PWM) outputs. Note +that it is possible to control more than three fans by connecting two +fans to one PWM output. The EMC6W201 will be available in a 36-pin +QFN package." + +The device is functionally close to the EMC6D100 series, but is +register-incompatible. + +The driver currently only supports the monitoring of the voltages, +temperatures and fan speeds. Limits can be changed. Alarms are not +supported, and neither is fan speed control. + + +Known Systems With EMC6W201 +--------------------------- + +The EMC6W201 is a rare device, only found on a few systems, made in +2005 and 2006. Known systems with this device: +* Dell Precision 670 workstation +* Gigabyte 2CEWH mainboard diff --git a/Documentation/hwmon/f71805f b/Documentation/hwmon/f71805f index f0d55976740..48a356084bc 100644 --- a/Documentation/hwmon/f71805f +++ b/Documentation/hwmon/f71805f @@ -15,7 +15,7 @@ Supported chips:      Addresses scanned: none, address read from Super I/O config space      Datasheet: Available from the Fintek website -Author: Jean Delvare <khali@linux-fr.org> +Author: Jean Delvare <jdelvare@suse.de>  Thanks to Denis Kieft from Barracuda Networks for the donation of a  test system (custom Jetway K8M8MS motherboard, with CPU and RAM) and diff --git a/Documentation/hwmon/f71882fg b/Documentation/hwmon/f71882fg index a7952c2bd95..de91c0db584 100644 --- a/Documentation/hwmon/f71882fg +++ b/Documentation/hwmon/f71882fg @@ -2,6 +2,14 @@ Kernel driver f71882fg  ======================  Supported chips: +  * Fintek F71808E +    Prefix: 'f71808e' +    Addresses scanned: none, address read from Super I/O config space +    Datasheet: Not public +  * Fintek F71808A +    Prefix: 'f71808a' +    Addresses scanned: none, address read from Super I/O config space +    Datasheet: Not public    * Fintek F71858FG      Prefix: 'f71858fg'      Addresses scanned: none, address read from Super I/O config space @@ -10,6 +18,14 @@ Supported chips:      Prefix: 'f71862fg'      Addresses scanned: none, address read from Super I/O config space      Datasheet: Available from the Fintek website +  * Fintek F71869F and F71869E +    Prefix: 'f71869' +    Addresses scanned: none, address read from Super I/O config space +    Datasheet: Available from the Fintek website +  * Fintek F71869A +    Prefix: 'f71869a' +    Addresses scanned: none, address read from Super I/O config space +    Datasheet: Not public    * Fintek F71882FG and F71883FG      Prefix: 'f71882fg'      Addresses scanned: none, address read from Super I/O config space @@ -17,11 +33,30 @@ Supported chips:    * Fintek F71889FG      Prefix: 'f71889fg'      Addresses scanned: none, address read from Super I/O config space +    Datasheet: Available from the Fintek website +  * Fintek F71889ED +    Prefix: 'f71889ed' +    Addresses scanned: none, address read from Super I/O config space +    Datasheet: Should become available on the Fintek website soon +  * Fintek F71889A +    Prefix: 'f71889a' +    Addresses scanned: none, address read from Super I/O config space      Datasheet: Should become available on the Fintek website soon    * Fintek F8000      Prefix: 'f8000'      Addresses scanned: none, address read from Super I/O config space      Datasheet: Not public +  * Fintek F81801U +    Prefix: 'f71889fg' +    Addresses scanned: none, address read from Super I/O config space +    Datasheet: Not public +    Note: This is the 64-pin variant of the F71889FG, they have the +	  same device ID and are fully compatible as far as hardware +	  monitoring is concerned. +  * Fintek F81865F +    Prefix: 'f81865f' +    Addresses scanned: none, address read from Super I/O config space +    Datasheet: Available from the Fintek website  Author: Hans de Goede <hdegoede@redhat.com> @@ -29,9 +64,9 @@ Author: Hans de Goede <hdegoede@redhat.com>  Description  ----------- -Fintek F718xxFG/F8000 Super I/O chips include complete hardware monitoring -capabilities. They can monitor up to 9 voltages (3 for the F8000), 4 fans and -3 temperature sensors. +Fintek F718xx/F8000 Super I/O chips include complete hardware monitoring +capabilities. They can monitor up to 9 voltages, 4 fans and 3 temperature +sensors.  These chips also have fan controlling features, using either DC or PWM, in  three different modes (one manual, two automatic). @@ -99,5 +134,5 @@ Writing an unsupported mode will result in an invalid parameter error.    The fan speed is regulated to keep the temp the fan is mapped to between    temp#_auto_point2_temp and temp#_auto_point3_temp. -Both of the automatic modes require that pwm1 corresponds to fan1, pwm2 to +All of the automatic modes require that pwm1 corresponds to fan1, pwm2 to  fan2 and pwm3 to fan3. diff --git a/Documentation/hwmon/fam15h_power b/Documentation/hwmon/fam15h_power new file mode 100644 index 00000000000..80654813d04 --- /dev/null +++ b/Documentation/hwmon/fam15h_power @@ -0,0 +1,37 @@ +Kernel driver fam15h_power +========================== + +Supported chips: +* AMD Family 15h Processors + +  Prefix: 'fam15h_power' +  Addresses scanned: PCI space +  Datasheets: +  BIOS and Kernel Developer's Guide (BKDG) For AMD Family 15h Processors +    (not yet published) + +Author: Andreas Herrmann <herrmann.der.user@googlemail.com> + +Description +----------- + +This driver permits reading of registers providing power information +of AMD Family 15h processors. + +For AMD Family 15h processors the following power values can be +calculated using different processor northbridge function registers: + +* BasePwrWatts: Specifies in watts the maximum amount of power +  consumed by the processor for NB and logic external to the core. +* ProcessorPwrWatts: Specifies in watts the maximum amount of power +  the processor can support. +* CurrPwrWatts: Specifies in watts the current amount of power being +  consumed by the processor. + +This driver provides ProcessorPwrWatts and CurrPwrWatts: +* power1_crit (ProcessorPwrWatts) +* power1_input (CurrPwrWatts) + +On multi-node processors the calculated value is for the entire +package and not for a single node. Thus the driver creates sysfs +attributes only for internal node0 of a multi-node processor. diff --git a/Documentation/hwmon/g762 b/Documentation/hwmon/g762 new file mode 100644 index 00000000000..923db9c5b5b --- /dev/null +++ b/Documentation/hwmon/g762 @@ -0,0 +1,65 @@ +Kernel driver g762 +================== + +The GMT G762 Fan Speed PWM Controller is connected directly to a fan +and performs closed-loop or open-loop control of the fan speed. Two +modes - PWM or DC - are supported by the device. + +For additional information, a detailed datasheet is available at +http://natisbad.org/NAS/ref/GMT_EDS-762_763-080710-0.2.pdf. sysfs +bindings are described in Documentation/hwmon/sysfs-interface. + +The following entries are available to the user in a subdirectory of +/sys/bus/i2c/drivers/g762/ to control the operation of the device. +This can be done manually using the following entries but is usually +done via a userland daemon like fancontrol. + +Note that those entries do not provide ways to setup the specific +hardware characteristics of the system (reference clock, pulses per +fan revolution, ...); Those can be modified via devicetree bindings +documented in Documentation/devicetree/bindings/hwmon/g762.txt or +using a specific platform_data structure in board initialization +file (see include/linux/platform_data/g762.h). + +  fan1_target: set desired fan speed. This only makes sense in closed-loop +            fan speed control (i.e. when pwm1_enable is set to 2). + +  fan1_input: provide current fan rotation value in RPM as reported by +            the fan to the device. + +  fan1_div: fan clock divisor. Supported value are 1, 2, 4 and 8. + +  fan1_pulses: number of pulses per fan revolution. Supported values +            are 2 and 4. + +  fan1_fault: reports fan failure, i.e. no transition on fan gear pin for +            about 0.7s (if the fan is not voluntarily set off). + +  fan1_alarm: in closed-loop control mode, if fan RPM value is 25% out +            of the programmed value for over 6 seconds 'fan1_alarm' is +            set to 1. + +  pwm1_enable: set current fan speed control mode i.e. 1 for manual fan +            speed control (open-loop) via pwm1 described below, 2 for +            automatic fan speed control (closed-loop) via fan1_target +            above. + +  pwm1_mode: set or get fan driving mode: 1 for PWM mode, 0 for DC mode. + +  pwm1: get or set PWM fan control value in open-loop mode. This is an +            integer value between 0 and 255. 0 stops the fan, 255 makes +            it run at full speed. + +Both in PWM mode ('pwm1_mode' set to 1) and DC mode ('pwm1_mode' set to 0), +when current fan speed control mode is open-loop ('pwm1_enable' set to 1), +the fan speed is programmed by setting a value between 0 and 255 via 'pwm1' +entry (0 stops the fan, 255 makes it run at full speed). In closed-loop mode +('pwm1_enable' set to 2), the expected rotation speed in RPM can be passed to +the chip via 'fan1_target'. In closed-loop mode, the target speed is compared +with current speed (available via 'fan1_input') by the device and a feedback +is performed to match that target value. The fan speed value is computed +based on the parameters associated with the physical characteristics of the +system: a reference clock source frequency, a number of pulses per fan +revolution, etc. + +Note that the driver will update its values at most once per second. diff --git a/Documentation/hwmon/gl518sm b/Documentation/hwmon/gl518sm index 26f9f3c02dc..494bb55b6e7 100644 --- a/Documentation/hwmon/gl518sm +++ b/Documentation/hwmon/gl518sm @@ -14,7 +14,7 @@ Authors:          Frodo Looijaard <frodol@dds.nl>,          Kyösti Mälkki <kmalkki@cc.hut.fi>          Hong-Gunn Chew <hglinux@gunnet.org> -        Jean Delvare <khali@linux-fr.org> +        Jean Delvare <jdelvare@suse.de>  Description  ----------- diff --git a/Documentation/hwmon/hih6130 b/Documentation/hwmon/hih6130 new file mode 100644 index 00000000000..73dae918ea7 --- /dev/null +++ b/Documentation/hwmon/hih6130 @@ -0,0 +1,37 @@ +Kernel driver hih6130 +===================== + +Supported chips: +  * Honeywell HIH-6130 / HIH-6131 +    Prefix: 'hih6130' +    Addresses scanned: none +    Datasheet: Publicly available at the Honeywell website +    http://sensing.honeywell.com/index.php?ci_id=3106&la_id=1&defId=44872 + +Author: +  Iain Paton <ipaton0@gmail.com> + +Description +----------- + +The HIH-6130 & HIH-6131 are humidity and temperature sensors in a SO8 package. +The difference between the two devices is that the HIH-6131 has a condensation +filter. + +The devices communicate with the I2C protocol. All sensors are set to the same +I2C address 0x27 by default, so an entry with I2C_BOARD_INFO("hih6130", 0x27) +can be used in the board setup code. + +Please see Documentation/i2c/instantiating-devices for details on how to +instantiate I2C devices. + +sysfs-Interface +--------------- + +temp1_input - temperature input +humidity1_input - humidity input + +Notes +----- + +Command mode and alarms are not currently supported. diff --git a/Documentation/hwmon/hpfall.c b/Documentation/hwmon/hpfall.c deleted file mode 100644 index a4a8fc5d05d..00000000000 --- a/Documentation/hwmon/hpfall.c +++ /dev/null @@ -1,146 +0,0 @@ -/* Disk protection for HP machines. - * - * Copyright 2008 Eric Piel - * Copyright 2009 Pavel Machek <pavel@ucw.cz> - * - * GPLv2. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <fcntl.h> -#include <sys/stat.h> -#include <sys/types.h> -#include <string.h> -#include <stdint.h> -#include <errno.h> -#include <signal.h> -#include <sys/mman.h> -#include <sched.h> - -char unload_heads_path[64]; - -int set_unload_heads_path(char *device) -{ -	char devname[64]; - -	if (strlen(device) <= 5 || strncmp(device, "/dev/", 5) != 0) -		return -EINVAL; -	strncpy(devname, device + 5, sizeof(devname)); - -	snprintf(unload_heads_path, sizeof(unload_heads_path), -				"/sys/block/%s/device/unload_heads", devname); -	return 0; -} -int valid_disk(void) -{ -	int fd = open(unload_heads_path, O_RDONLY); -	if (fd < 0) { -		perror(unload_heads_path); -		return 0; -	} - -	close(fd); -	return 1; -} - -void write_int(char *path, int i) -{ -	char buf[1024]; -	int fd = open(path, O_RDWR); -	if (fd < 0) { -		perror("open"); -		exit(1); -	} -	sprintf(buf, "%d", i); -	if (write(fd, buf, strlen(buf)) != strlen(buf)) { -		perror("write"); -		exit(1); -	} -	close(fd); -} - -void set_led(int on) -{ -	write_int("/sys/class/leds/hp::hddprotect/brightness", on); -} - -void protect(int seconds) -{ -	write_int(unload_heads_path, seconds*1000); -} - -int on_ac(void) -{ -//	/sys/class/power_supply/AC0/online -} - -int lid_open(void) -{ -//	/proc/acpi/button/lid/LID/state -} - -void ignore_me(void) -{ -	protect(0); -	set_led(0); -} - -int main(int argc, char **argv) -{ -	int fd, ret; -	struct sched_param param; - -	if (argc == 1) -		ret = set_unload_heads_path("/dev/sda"); -	else if (argc == 2) -		ret = set_unload_heads_path(argv[1]); -	else -		ret = -EINVAL; - -	if (ret || !valid_disk()) { -		fprintf(stderr, "usage: %s <device> (default: /dev/sda)\n", -				argv[0]); -		exit(1); -	} - -	fd = open("/dev/freefall", O_RDONLY); -	if (fd < 0) { -		perror("/dev/freefall"); -		return EXIT_FAILURE; -	} - -	daemon(0, 0); -	param.sched_priority = sched_get_priority_max(SCHED_FIFO); -	sched_setscheduler(0, SCHED_FIFO, ¶m); -	mlockall(MCL_CURRENT|MCL_FUTURE); - -	signal(SIGALRM, ignore_me); - -	for (;;) { -		unsigned char count; - -		ret = read(fd, &count, sizeof(count)); -		alarm(0); -		if ((ret == -1) && (errno == EINTR)) { -			/* Alarm expired, time to unpark the heads */ -			continue; -		} - -		if (ret != sizeof(count)) { -			perror("read"); -			break; -		} - -		protect(21); -		set_led(1); -		if (1 || on_ac() || lid_open()) -			alarm(2); -		else -			alarm(20); -	} - -	close(fd); -	return EXIT_SUCCESS; -} diff --git a/Documentation/hwmon/htu21 b/Documentation/hwmon/htu21 new file mode 100644 index 00000000000..f39a215fb6a --- /dev/null +++ b/Documentation/hwmon/htu21 @@ -0,0 +1,46 @@ +Kernel driver htu21 +=================== + +Supported chips: +  * Measurement Specialties HTU21D +    Prefix: 'htu21' +    Addresses scanned: none +    Datasheet: Publicly available at the Measurement Specialties website +    http://www.meas-spec.com/downloads/HTU21D.pdf + + +Author: +  William Markezana <william.markezana@meas-spec.com> + +Description +----------- + +The HTU21D is a humidity and temperature sensor in a DFN package of +only 3 x 3 mm footprint and 0.9 mm height. + +The devices communicate with the I2C protocol. All sensors are set to the +same I2C address 0x40, so an entry with I2C_BOARD_INFO("htu21", 0x40) can +be used in the board setup code. + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices +for details. + +sysfs-Interface +--------------- + +temp1_input - temperature input +humidity1_input - humidity input + +Notes +----- + +The driver uses the default resolution settings of 12 bit for humidity and 14 +bit for temperature, which results in typical measurement times of 11 ms for +humidity and 44 ms for temperature. To keep self heating below 0.1 degree +Celsius, the device should not be active for more than 10% of the time. For +this reason, the driver performs no more than two measurements per second and +reports cached information if polled more frequently. + +Different resolutions, the on-chip heater, using the CRC checksum and reading +the serial number are not supported yet. diff --git a/Documentation/hwmon/hwmon-kernel-api.txt b/Documentation/hwmon/hwmon-kernel-api.txt new file mode 100644 index 00000000000..2ecdbfc85ec --- /dev/null +++ b/Documentation/hwmon/hwmon-kernel-api.txt @@ -0,0 +1,107 @@ +The Linux Hardware Monitoring kernel API. +========================================= + +Guenter Roeck + +Introduction +------------ + +This document describes the API that can be used by hardware monitoring +drivers that want to use the hardware monitoring framework. + +This document does not describe what a hardware monitoring (hwmon) Driver or +Device is. It also does not describe the API which can be used by user space +to communicate with a hardware monitoring device. If you want to know this +then please read the following file: Documentation/hwmon/sysfs-interface. + +For additional guidelines on how to write and improve hwmon drivers, please +also read Documentation/hwmon/submitting-patches. + +The API +------- +Each hardware monitoring driver must #include <linux/hwmon.h> and, in most +cases, <linux/hwmon-sysfs.h>. linux/hwmon.h declares the following +register/unregister functions: + +struct device *hwmon_device_register(struct device *dev); +struct device * +hwmon_device_register_with_groups(struct device *dev, const char *name, +				  void *drvdata, +				  const struct attribute_group **groups); + +struct device * +devm_hwmon_device_register_with_groups(struct device *dev, +				       const char *name, void *drvdata, +				       const struct attribute_group **groups); + +void hwmon_device_unregister(struct device *dev); +void devm_hwmon_device_unregister(struct device *dev); + +hwmon_device_register registers a hardware monitoring device. The parameter +of this function is a pointer to the parent device. +This function returns a pointer to the newly created hardware monitoring device +or PTR_ERR for failure. If this registration function is used, hardware +monitoring sysfs attributes are expected to have been created and attached to +the parent device prior to calling hwmon_device_register. A name attribute must +have been created by the caller. + +hwmon_device_register_with_groups is similar to hwmon_device_register. However, +it has additional parameters. The name parameter is a pointer to the hwmon +device name. The registration function wil create a name sysfs attribute +pointing to this name. The drvdata parameter is the pointer to the local +driver data.  hwmon_device_register_with_groups will attach this pointer +to the newly allocated hwmon device. The pointer can be retrieved by the driver +using dev_get_drvdata() on the hwmon device pointer. The groups parameter is +a pointer to a list of sysfs attribute groups. The list must be NULL terminated. +hwmon_device_register_with_groups creates the hwmon device with name attribute +as well as all sysfs attributes attached to the hwmon device. + +devm_hwmon_device_register_with_groups is similar to +hwmon_device_register_with_groups. However, it is device managed, meaning the +hwmon device does not have to be removed explicitly by the removal function. + +hwmon_device_unregister deregisters a registered hardware monitoring device. +The parameter of this function is the pointer to the registered hardware +monitoring device structure. This function must be called from the driver +remove function if the hardware monitoring device was registered with +hwmon_device_register or with hwmon_device_register_with_groups. + +devm_hwmon_device_unregister does not normally have to be called. It is only +needed for error handling, and only needed if the driver probe fails after +the call to devm_hwmon_device_register_with_groups. + +The header file linux/hwmon-sysfs.h provides a number of useful macros to +declare and use hardware monitoring sysfs attributes. + +In many cases, you can use the exsting define DEVICE_ATTR to declare such +attributes. This is feasible if an attribute has no additional context. However, +in many cases there will be additional information such as a sensor index which +will need to be passed to the sysfs attribute handling function. + +SENSOR_DEVICE_ATTR and SENSOR_DEVICE_ATTR_2 can be used to define attributes +which need such additional context information. SENSOR_DEVICE_ATTR requires +one additional argument, SENSOR_DEVICE_ATTR_2 requires two. + +SENSOR_DEVICE_ATTR defines a struct sensor_device_attribute variable. +This structure has the following fields. + +struct sensor_device_attribute { +	struct device_attribute dev_attr; +	int index; +}; + +You can use to_sensor_dev_attr to get the pointer to this structure from the +attribute read or write function. Its parameter is the device to which the +attribute is attached. + +SENSOR_DEVICE_ATTR_2 defines a struct sensor_device_attribute_2 variable, +which is defined as follows. + +struct sensor_device_attribute_2 { +	struct device_attribute dev_attr; +	u8 index; +	u8 nr; +}; + +Use to_sensor_dev_attr_2 to get the pointer to this structure. Its parameter +is the device to which the attribute is attached. diff --git a/Documentation/hwmon/ina209 b/Documentation/hwmon/ina209 new file mode 100644 index 00000000000..672501de450 --- /dev/null +++ b/Documentation/hwmon/ina209 @@ -0,0 +1,93 @@ +Kernel driver ina209 +===================== + +Supported chips: +  * Burr-Brown / Texas Instruments INA209 +    Prefix: 'ina209' +    Addresses scanned: - +    Datasheet: +        http://www.ti.com/lit/gpn/ina209 + +Author: Paul Hays <Paul.Hays@cattail.ca> +Author: Ira W. Snyder <iws@ovro.caltech.edu> +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +The TI / Burr-Brown INA209 monitors voltage, current, and power on the high side +of a D.C. power supply. It can perform measurements and calculations in the +background to supply readings at any time. It includes a programmable +calibration multiplier to scale the displayed current and power values. + + +Sysfs entries +------------- + +The INA209 chip is highly configurable both via hardwiring and via +the I2C bus. See the datasheet for details. + +This tries to expose most monitoring features of the hardware via +sysfs. It does not support every feature of this chip. + + +in0_input		shunt voltage (mV) +in0_input_highest	shunt voltage historical maximum reading (mV) +in0_input_lowest	shunt voltage historical minimum reading (mV) +in0_reset_history	reset shunt voltage history +in0_max			shunt voltage max alarm limit (mV) +in0_min			shunt voltage min alarm limit (mV) +in0_crit_max		shunt voltage crit max alarm limit (mV) +in0_crit_min		shunt voltage crit min alarm limit (mV) +in0_max_alarm		shunt voltage max alarm limit exceeded +in0_min_alarm		shunt voltage min alarm limit exceeded +in0_crit_max_alarm	shunt voltage crit max alarm limit exceeded +in0_crit_min_alarm	shunt voltage crit min alarm limit exceeded + +in1_input		bus voltage (mV) +in1_input_highest	bus voltage historical maximum reading (mV) +in1_input_lowest	bus voltage historical minimum reading (mV) +in1_reset_history	reset bus voltage history +in1_max			bus voltage max alarm limit (mV) +in1_min			bus voltage min alarm limit (mV) +in1_crit_max		bus voltage crit max alarm limit (mV) +in1_crit_min		bus voltage crit min alarm limit (mV) +in1_max_alarm		bus voltage max alarm limit exceeded +in1_min_alarm		bus voltage min alarm limit exceeded +in1_crit_max_alarm	bus voltage crit max alarm limit exceeded +in1_crit_min_alarm	bus voltage crit min alarm limit exceeded + +power1_input		power measurement (uW) +power1_input_highest	power historical maximum reading (uW) +power1_reset_history	reset power history +power1_max		power max alarm limit (uW) +power1_crit		power crit alarm limit (uW) +power1_max_alarm	power max alarm limit exceeded +power1_crit_alarm	power crit alarm limit exceeded + +curr1_input		current measurement (mA) + +update_interval		data conversion time; affects number of samples used +			to average results for shunt and bus voltages. + +General Remarks +--------------- + +The power and current registers in this chip require that the calibration +register is programmed correctly before they are used. Normally this is expected +to be done in the BIOS. In the absence of BIOS programming, the shunt resistor +voltage can be provided using platform data. The driver uses platform data from +the ina2xx driver for this purpose. If calibration register data is not provided +via platform data, the driver checks if the calibration register has been +programmed (ie has a value not equal to zero). If so, this value is retained. +Otherwise, a default value reflecting a shunt resistor value of 10 mOhm is +programmed into the calibration register. + + +Output Pins +----------- + +Output pin programming is a board feature which depends on the BIOS. It is +outside the scope of a hardware monitoring driver to enable or disable output +pins. diff --git a/Documentation/hwmon/ina2xx b/Documentation/hwmon/ina2xx new file mode 100644 index 00000000000..4223c2d3b50 --- /dev/null +++ b/Documentation/hwmon/ina2xx @@ -0,0 +1,49 @@ +Kernel driver ina2xx +==================== + +Supported chips: +  * Texas Instruments INA219 +    Prefix: 'ina219' +    Addresses: I2C 0x40 - 0x4f +    Datasheet: Publicly available at the Texas Instruments website +               http://www.ti.com/ + +  * Texas Instruments INA220 +    Prefix: 'ina220' +    Addresses: I2C 0x40 - 0x4f +    Datasheet: Publicly available at the Texas Instruments website +               http://www.ti.com/ + +  * Texas Instruments INA226 +    Prefix: 'ina226' +    Addresses: I2C 0x40 - 0x4f +    Datasheet: Publicly available at the Texas Instruments website +               http://www.ti.com/ + +  * Texas Instruments INA230 +    Prefix: 'ina230' +    Addresses: I2C 0x40 - 0x4f +    Datasheet: Publicly available at the Texas Instruments website +               http://www.ti.com/ + +Author: Lothar Felten <l-felten@ti.com> + +Description +----------- + +The INA219 is a high-side current shunt and power monitor with an I2C +interface. The INA219 monitors both shunt drop and supply voltage, with +programmable conversion times and filtering. + +The INA220 is a high or low side current shunt and power monitor with an I2C +interface. The INA220 monitors both shunt drop and supply voltage. + +The INA226 is a current shunt and power monitor with an I2C interface. +The INA226 monitors both a shunt voltage drop and bus supply voltage. + +The INA230 is a high or low side current shunt and power monitor with an I2C +interface. The INA230 monitors both a shunt voltage drop and bus supply voltage. + +The shunt value in micro-ohms can be set via platform data or device tree. +Please refer to the Documentation/devicetree/bindings/i2c/ina2xx.txt for bindings +if the device tree is used. diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87 index 38425f0f264..fe80e9adebf 100644 --- a/Documentation/hwmon/it87 +++ b/Documentation/hwmon/it87 @@ -2,6 +2,10 @@ Kernel driver it87  ==================  Supported chips: +  * IT8603E/IT8623E +    Prefix: 'it8603' +    Addresses scanned: from Super I/O config space (8 I/O ports) +    Datasheet: Not publicly available    * IT8705F      Prefix: 'it87'      Addresses scanned: from Super I/O config space (8 I/O ports) @@ -26,6 +30,26 @@ Supported chips:      Prefix: 'it8721'      Addresses scanned: from Super I/O config space (8 I/O ports)      Datasheet: Not publicly available +  * IT8728F +    Prefix: 'it8728' +    Addresses scanned: from Super I/O config space (8 I/O ports) +    Datasheet: Not publicly available +  * IT8771E +    Prefix: 'it8771' +    Addresses scanned: from Super I/O config space (8 I/O ports) +    Datasheet: Not publicly available +  * IT8772E +    Prefix: 'it8772' +    Addresses scanned: from Super I/O config space (8 I/O ports) +    Datasheet: Not publicly available +  * IT8782F +    Prefix: 'it8782' +    Addresses scanned: from Super I/O config space (8 I/O ports) +    Datasheet: Not publicly available +  * IT8783E/F +    Prefix: 'it8783' +    Addresses scanned: from Super I/O config space (8 I/O ports) +    Datasheet: Not publicly available    * SiS950   [clone of IT8705F]      Prefix: 'it87'      Addresses scanned: from Super I/O config space (8 I/O ports) @@ -33,7 +57,7 @@ Supported chips:  Authors:      Christophe Gauthron -    Jean Delvare <khali@linux-fr.org> +    Jean Delvare <jdelvare@suse.de>  Module Parameters @@ -59,7 +83,7 @@ Module Parameters  Hardware Interfaces  ------------------- -All the chips suported by this driver are LPC Super-I/O chips, accessed +All the chips supported by this driver are LPC Super-I/O chips, accessed  through the LPC bus (ISA-like I/O ports). The IT8712F additionally has an  SMBus interface to the hardware monitoring functions. This driver no  longer supports this interface though, as it is slower and less reliable @@ -70,13 +94,15 @@ motherboard models.  Description  ----------- -This driver implements support for the IT8705F, IT8712F, IT8716F, -IT8718F, IT8720F, IT8721F, IT8726F, IT8758E and SiS950 chips. +This driver implements support for the IT8603E, IT8623E, IT8705F, IT8712F, +IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8771E, +IT8772E, IT8782F, IT8783E/F, and SiS950 chips.  These chips are 'Super I/O chips', supporting floppy disks, infrared ports,  joysticks and other miscellaneous stuff. For hardware monitoring, they  include an 'environment controller' with 3 temperature sensors, 3 fan -rotation speed sensors, 8 voltage sensors, and associated alarms. +rotation speed sensors, 8 voltage sensors, associated alarms, and chassis +intrusion detection.  The IT8712F and IT8716F additionally feature VID inputs, used to report  the Vcore voltage of the processor. The early IT8712F have 5 VID pins, @@ -94,16 +120,23 @@ The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E and later IT8712F revisions  have support for 2 additional fans. The additional fans are supported by the  driver. -The IT8716F, IT8718F, IT8720F and IT8721F/IT8758E, and late IT8712F and -IT8705F also have optional 16-bit tachometer counters for fans 1 to 3. This -is better (no more fan clock divider mess) but not compatible with the older -chips and revisions. The 16-bit tachometer mode is enabled by the driver when -one of the above chips is detected. +The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E, IT8782F, IT8783E/F, and late +IT8712F and IT8705F also have optional 16-bit tachometer counters for fans 1 to +3. This is better (no more fan clock divider mess) but not compatible with the +older chips and revisions. The 16-bit tachometer mode is enabled by the driver +when one of the above chips is detected.  The IT8726F is just bit enhanced IT8716F with additional hardware  for AMD power sequencing. Therefore the chip will appear as IT8716F  to userspace applications. +The IT8728F, IT8771E, and IT8772E are considered compatible with the IT8721F, +until a datasheet becomes available (hopefully.) + +The IT8603E/IT8623E is a custom design, hardware monitoring part is similar to +IT8728F. It only supports 16-bit fan mode, the full speed mode of the +fan is not supported (value 0 of pwmX_enable). +  Temperatures are measured in degrees Celsius. An alarm is triggered once  when the Overtemperature Shutdown limit is crossed. @@ -120,12 +153,16 @@ 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 (except IT8721F/IT8758E: 0.012 volt.) The battery voltage in8 does -not have limit registers. +0.016 volt (except IT8603E, IT8721F/IT8758E and IT8728F: 0.012 volt.) The +battery voltage in8 does not have limit registers. -On the IT8721F/IT8758E, some voltage inputs are internal and scaled inside -the chip (in7, in8 and optionally in3). The driver handles this transparently -so user-space doesn't have to care. +On the IT8603E, IT8721F/IT8758E, IT8782F, and IT8783E/F, some voltage inputs +are internal and scaled inside the chip: +* in3 (optional) +* in7 (optional for IT8782F and IT8783E/F) +* in8 (always) +* in9 (relevant for IT8603E only) +The driver handles this transparently so user-space doesn't have to care.  The VID lines (IT8712F/IT8716F/IT8718F/IT8720F) encode the core voltage value:  the voltage level your processor should work with. This is hardcoded by @@ -191,3 +228,13 @@ doesn't use CPU cycles.  Trip points must be set properly before switching to automatic fan speed  control mode. The driver will perform basic integrity checks before  actually switching to automatic control mode. + + +Temperature offset attributes +----------------------------- + +The driver supports temp[1-3]_offset sysfs attributes to adjust the reported +temperature for thermal diodes or diode-connected thermal transistors. +If a temperature sensor is configured for thermistors, the attribute values +are ignored. If the thermal sensor type is Intel PECI, the temperature offset +must be programmed to the critical CPU temperature. diff --git a/Documentation/hwmon/jc42 b/Documentation/hwmon/jc42 index 0e76ef12e4c..f3893f7440d 100644 --- a/Documentation/hwmon/jc42 +++ b/Documentation/hwmon/jc42 @@ -3,64 +3,67 @@ Kernel driver jc42  Supported chips:    * Analog Devices ADT7408 -    Prefix: 'adt7408' -    Addresses scanned: I2C 0x18 - 0x1f      Datasheets:  	http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf -  * IDT TSE2002B3, TS3000B3 -    Prefix: 'tse2002b3', 'ts3000b3' -    Addresses scanned: I2C 0x18 - 0x1f +  * Atmel AT30TS00, AT30TS002A/B, AT30TSE004A      Datasheets: -	http://www.idt.com/products/getdoc.cfm?docid=18715691 -	http://www.idt.com/products/getdoc.cfm?docid=18715692 +	http://www.atmel.com/Images/doc8585.pdf +	http://www.atmel.com/Images/doc8711.pdf +	http://www.atmel.com/Images/Atmel-8852-SEEPROM-AT30TSE002A-Datasheet.pdf +	http://www.atmel.com/Images/Atmel-8868-DTS-AT30TSE004A-Datasheet.pdf +  * IDT TSE2002B3, TSE2002GB2, TS3000B3, TS3000GB2 +    Datasheets: +	http://www.idt.com/sites/default/files/documents/IDT_TSE2002B3C_DST_20100512_120303152056.pdf +	http://www.idt.com/sites/default/files/documents/IDT_TSE2002GB2A1_DST_20111107_120303145914.pdf +	http://www.idt.com/sites/default/files/documents/IDT_TS3000B3A_DST_20101129_120303152013.pdf +	http://www.idt.com/sites/default/files/documents/IDT_TS3000GB2A1_DST_20111104_120303151012.pdf    * Maxim MAX6604 -    Prefix: 'max6604' -    Addresses scanned: I2C 0x18 - 0x1f      Datasheets:  	http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf -  * Microchip MCP9805, MCP98242, MCP98243, MCP9843 -    Prefixes: 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843' -    Addresses scanned: I2C 0x18 - 0x1f +  * Microchip MCP9804, MCP9805, MCP98242, MCP98243, MCP98244, MCP9843      Datasheets: +	http://ww1.microchip.com/downloads/en/DeviceDoc/22203C.pdf  	http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf  	http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf  	http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf -  * NXP Semiconductors SE97, SE97B -    Prefix: 'se97' -    Addresses scanned: I2C 0x18 - 0x1f +	http://ww1.microchip.com/downloads/en/DeviceDoc/22327A.pdf +  * NXP Semiconductors SE97, SE97B, SE98, SE98A      Datasheets:  	http://www.nxp.com/documents/data_sheet/SE97.pdf  	http://www.nxp.com/documents/data_sheet/SE97B.pdf -  * NXP Semiconductors SE98 -    Prefix: 'se98' -    Addresses scanned: I2C 0x18 - 0x1f -    Datasheets:  	http://www.nxp.com/documents/data_sheet/SE98.pdf +	http://www.nxp.com/documents/data_sheet/SE98A.pdf    * ON Semiconductor CAT34TS02, CAT6095 -    Prefix: 'cat34ts02', 'cat6095' -    Addresses scanned: I2C 0x18 - 0x1f      Datasheet:  	http://www.onsemi.com/pub_link/Collateral/CAT34TS02-D.PDF  	http://www.onsemi.com/pub/Collateral/CAT6095-D.PDF -  * ST Microelectronics STTS424, STTS424E02 -    Prefix: 'stts424' -    Addresses scanned: I2C 0x18 - 0x1f +  * ST Microelectronics STTS424, STTS424E02, STTS2002, STTS2004, STTS3000      Datasheets: -	http://www.st.com/stonline/products/literature/ds/13447/stts424.pdf -	http://www.st.com/stonline/products/literature/ds/13448/stts424e02.pdf +	http://www.st.com/web/en/resource/technical/document/datasheet/CD00157556.pdf +	http://www.st.com/web/en/resource/technical/document/datasheet/CD00157558.pdf +	http://www.st.com/web/en/resource/technical/document/datasheet/CD00266638.pdf +	http://www.st.com/web/en/resource/technical/document/datasheet/CD00225278.pdf +	http://www.st.com/web/en/resource/technical/document/datasheet/DM00076709.pdf    * JEDEC JC 42.4 compliant temperature sensor chips +    Datasheet: +	http://www.jedec.org/sites/default/files/docs/4_01_04R19.pdf + +  Common for all chips:      Prefix: 'jc42'      Addresses scanned: I2C 0x18 - 0x1f -    Datasheet: -  Author: -	Guenter Roeck <guenter.roeck@ericsson.com> +	Guenter Roeck <linux@roeck-us.net>  Description  ----------- -This driver implements support for JEDEC JC 42.4 compliant temperature sensors. +This driver implements support for JEDEC JC 42.4 compliant temperature sensors, +which are used on many DDR3 memory modules for mobile devices and servers. Some +systems use the sensor to prevent memory overheating by automatically throttling +the memory controller. +  The driver auto-detects the chips listed above, but can be manually instantiated  to support other JC 42.4 compliant chips. @@ -81,15 +84,19 @@ limits. The chip supports only a single register to configure the hysteresis,  which applies to all limits. This register can be written by writing into  temp1_crit_hyst. Other hysteresis attributes are read-only. +If the BIOS has configured the sensor for automatic temperature management, it +is likely that it has locked the registers, i.e., that the temperature limits +cannot be changed. +  Sysfs entries  -------------  temp1_input		Temperature (RO) -temp1_min		Minimum temperature (RW) -temp1_max		Maximum temperature (RW) -temp1_crit		Critical high temperature (RW) +temp1_min		Minimum temperature (RO or RW) +temp1_max		Maximum temperature (RO or RW) +temp1_crit		Critical high temperature (RO or RW) -temp1_crit_hyst		Critical hysteresis temperature (RW) +temp1_crit_hyst		Critical hysteresis temperature (RO or RW)  temp1_max_hyst		Maximum hysteresis temperature (RO)  temp1_min_alarm		Temperature low alarm diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp index 6526eee525a..ee6d30ec152 100644 --- a/Documentation/hwmon/k10temp +++ b/Documentation/hwmon/k10temp @@ -9,6 +9,10 @@ Supported chips:    Socket S1G3: Athlon II, Sempron, Turion II  * AMD Family 11h processors:    Socket S1G2: Athlon (X2), Sempron (X2), Turion X2 (Ultra) +* AMD Family 12h processors: "Llano" (E2/A4/A6/A8-Series) +* AMD Family 14h processors: "Brazos" (C/E/G/Z-Series) +* AMD Family 15h processors: "Bulldozer" (FX-Series), "Trinity", "Kaveri" +* AMD Family 16h processors: "Kabini", "Mullins"    Prefix: 'k10temp'    Addresses scanned: PCI space @@ -17,10 +21,18 @@ Supported chips:      http://support.amd.com/us/Processor_TechDocs/31116.pdf    BIOS and Kernel Developer's Guide (BKDG) for AMD Family 11h Processors:      http://support.amd.com/us/Processor_TechDocs/41256.pdf +  BIOS and Kernel Developer's Guide (BKDG) for AMD Family 12h Processors: +    http://support.amd.com/us/Processor_TechDocs/41131.pdf +  BIOS and Kernel Developer's Guide (BKDG) for AMD Family 14h Models 00h-0Fh Processors: +    http://support.amd.com/us/Processor_TechDocs/43170.pdf    Revision Guide for AMD Family 10h Processors:      http://support.amd.com/us/Processor_TechDocs/41322.pdf    Revision Guide for AMD Family 11h Processors:      http://support.amd.com/us/Processor_TechDocs/41788.pdf +  Revision Guide for AMD Family 12h Processors: +    http://support.amd.com/us/Processor_TechDocs/44739.pdf +  Revision Guide for AMD Family 14h Models 00h-0Fh Processors: +    http://support.amd.com/us/Processor_TechDocs/47534.pdf    AMD Family 11h Processor Power and Thermal Data Sheet for Notebooks:      http://support.amd.com/us/Processor_TechDocs/43373.pdf    AMD Family 10h Server and Workstation Processor Power and Thermal Data Sheet: @@ -34,7 +46,7 @@ Description  -----------  This driver permits reading of the internal temperature sensor of AMD -Family 10h and 11h processors. +Family 10h/11h/12h/14h/15h/16h processors.  All these processors have a sensor, but on those for Socket F or AM2+,  the sensor may return inconsistent values (erratum 319).  The driver diff --git a/Documentation/hwmon/lineage-pem b/Documentation/hwmon/lineage-pem new file mode 100644 index 00000000000..83b2ddc160c --- /dev/null +++ b/Documentation/hwmon/lineage-pem @@ -0,0 +1,77 @@ +Kernel driver lineage-pem +========================= + +Supported devices: +  * Lineage Compact Power Line Power Entry Modules +    Prefix: 'lineage-pem' +    Addresses scanned: - +    Documentation: +        http://www.lineagepower.com/oem/pdf/CPLI2C.pdf + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +This driver supports various Lineage Compact Power Line DC/DC and AC/DC +converters such as CP1800, CP2000AC, CP2000DC, CP2100DC, and others. + +Lineage CPL power entry modules are nominally PMBus compliant. However, most +standard PMBus commands are not supported. Specifically, all hardware monitoring +and status reporting commands are non-standard. For this reason, a standard +PMBus driver can not be used. + + +Usage Notes +----------- + +This driver does not probe for Lineage CPL devices, since there is no register +which can be safely used to identify the chip. You will have to instantiate +the devices explicitly. + +Example: the following will load the driver for a Lineage PEM at address 0x40 +on I2C bus #1: +$ modprobe lineage-pem +$ echo lineage-pem 0x40 > /sys/bus/i2c/devices/i2c-1/new_device + +All Lineage CPL power entry modules have a built-in I2C bus master selector +(PCA9541). To ensure device access, this driver should only be used as client +driver to the pca9541 I2C master selector driver. + + +Sysfs entries +------------- + +All Lineage CPL devices report output voltage and device temperature as well as +alarms for output voltage, temperature, input voltage, input current, input power, +and fan status. + +Input voltage, input current, input power, and fan speed measurement is only +supported on newer devices. The driver detects if those attributes are supported, +and only creates respective sysfs entries if they are. + +in1_input		Output voltage (mV) +in1_min_alarm		Output undervoltage alarm +in1_max_alarm		Output overvoltage alarm +in1_crit		Output voltage critical alarm + +in2_input		Input voltage (mV, optional) +in2_alarm		Input voltage alarm + +curr1_input		Input current (mA, optional) +curr1_alarm		Input overcurrent alarm + +power1_input		Input power (uW, optional) +power1_alarm		Input power alarm + +fan1_input		Fan 1 speed (rpm, optional) +fan2_input		Fan 2 speed (rpm, optional) +fan3_input		Fan 3 speed (rpm, optional) + +temp1_input +temp1_max +temp1_crit +temp1_alarm +temp1_crit_alarm +temp1_fault diff --git a/Documentation/hwmon/lis3lv02d b/Documentation/hwmon/lis3lv02d deleted file mode 100644 index 06534f25e64..00000000000 --- a/Documentation/hwmon/lis3lv02d +++ /dev/null @@ -1,92 +0,0 @@ -Kernel driver lis3lv02d -======================= - -Supported chips: - -  * STMicroelectronics LIS3LV02DL, LIS3LV02DQ (12 bits precision) -  * STMicroelectronics LIS302DL, LIS3L02DQ, LIS331DL (8 bits) - -Authors: -        Yan Burman <burman.yan@gmail.com> -	Eric Piel <eric.piel@tremplin-utc.net> - - -Description ------------ - -This driver provides support for the accelerometer found in various HP laptops -sporting the feature officially called "HP Mobile Data Protection System 3D" or -"HP 3D DriveGuard". It detects automatically laptops with this sensor. Known -models (full list can be found in drivers/hwmon/hp_accel.c) will have their -axis automatically oriented on standard way (eg: you can directly play -neverball). The accelerometer data is readable via -/sys/devices/platform/lis3lv02d. Reported values are scaled -to mg values (1/1000th of earth gravity). - -Sysfs attributes under /sys/devices/platform/lis3lv02d/: -position - 3D position that the accelerometer reports. Format: "(x,y,z)" -rate - read reports the sampling rate of the accelerometer device in HZ. -	write changes sampling rate of the accelerometer device. -	Only values which are supported by HW are accepted. -selftest - performs selftest for the chip as specified by chip manufacturer. - -This driver also provides an absolute input class device, allowing -the laptop to act as a pinball machine-esque joystick. Joystick device can be -calibrated. Joystick device can be in two different modes. -By default output values are scaled between -32768 .. 32767. In joystick raw -mode, joystick and sysfs position entry have the same scale. There can be -small difference due to input system fuzziness feature. -Events are also available as input event device. - -Selftest is meant only for hardware diagnostic purposes. It is not meant to be -used during normal operations. Position data is not corrupted during selftest -but interrupt behaviour is not guaranteed to work reliably. In test mode, the -sensing element is internally moved little bit. Selftest measures difference -between normal mode and test mode. Chip specifications tell the acceptance -limit for each type of the chip. Limits are provided via platform data -to allow adjustment of the limits without a change to the actual driver. -Seltest returns either "OK x y z" or "FAIL x y z" where x, y and z are -measured difference between modes. Axes are not remapped in selftest mode. -Measurement values are provided to help HW diagnostic applications to make -final decision. - -On HP laptops, if the led infrastructure is activated, support for a led -indicating disk protection will be provided as /sys/class/leds/hp::hddprotect. - -Another feature of the driver is misc device called "freefall" that -acts similar to /dev/rtc and reacts on free-fall interrupts received -from the device. It supports blocking operations, poll/select and -fasync operation modes. You must read 1 bytes from the device.  The -result is number of free-fall interrupts since the last successful -read (or 255 if number of interrupts would not fit). See the hpfall.c -file for an example on using the device. - - -Axes orientation ----------------- - -For better compatibility between the various laptops. The values reported by -the accelerometer are converted into a "standard" organisation of the axes -(aka "can play neverball out of the box"): - * When the laptop is horizontal the position reported is about 0 for X and Y -	and a positive value for Z - * If the left side is elevated, X increases (becomes positive) - * If the front side (where the touchpad is) is elevated, Y decreases -	(becomes negative) - * If the laptop is put upside-down, Z becomes negative - -If your laptop model is not recognized (cf "dmesg"), you can send an -email to the maintainer to add it to the database.  When reporting a new -laptop, please include the output of "dmidecode" plus the value of -/sys/devices/platform/lis3lv02d/position in these four cases. - -Q&A ---- - -Q: How do I safely simulate freefall? I have an HP "portable -workstation" which has about 3.5kg and a plastic case, so letting it -fall to the ground is out of question... - -A: The sensor is pretty sensitive, so your hands can do it. Lift it -into free space, follow the fall with your hands for like 10 -centimeters. That should be enough to trigger the detection. diff --git a/Documentation/hwmon/lm25066 b/Documentation/hwmon/lm25066 new file mode 100644 index 00000000000..b34c3de5c1b --- /dev/null +++ b/Documentation/hwmon/lm25066 @@ -0,0 +1,120 @@ +Kernel driver lm25066 +===================== + +Supported chips: +  * TI LM25056 +    Prefix: 'lm25056' +    Addresses scanned: - +    Datasheets: +	http://www.ti.com/lit/gpn/lm25056 +	http://www.ti.com/lit/gpn/lm25056a +  * TI LM25063 +    Prefix: 'lm25063' +    Addresses scanned: - +    Datasheet: +	To be announced +  * National Semiconductor LM25066 +    Prefix: 'lm25066' +    Addresses scanned: - +    Datasheets: +	http://www.national.com/pf/LM/LM25066.html +	http://www.national.com/pf/LM/LM25066A.html +  * National Semiconductor LM5064 +    Prefix: 'lm5064' +    Addresses scanned: - +    Datasheet: +	http://www.national.com/pf/LM/LM5064.html +  * National Semiconductor LM5066 +    Prefix: 'lm5066' +    Addresses scanned: - +    Datasheet: +	http://www.national.com/pf/LM/LM5066.html + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +This driver supports hardware montoring for National Semiconductor / TI LM25056, +LM25063, LM25066, LM5064, and LM5066 Power Management, Monitoring, Control, and +Protection ICs. + +The driver is a client driver to the core PMBus driver. Please see +Documentation/hwmon/pmbus for details on PMBus client drivers. + + +Usage Notes +----------- + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. + + +Platform data support +--------------------- + +The driver supports standard PMBus driver platform data. + + +Sysfs entries +------------- + +The following attributes are supported. Limits are read-write; all other +attributes are read-only. + +in1_label		"vin" +in1_input		Measured input voltage. +in1_average		Average measured input voltage. +in1_min			Minimum input voltage. +in1_max			Maximum input voltage. +in1_crit		Critical high input voltage (LM25063 only). +in1_lcrit		Critical low input voltage (LM25063 only). +in1_min_alarm		Input voltage low alarm. +in1_max_alarm		Input voltage high alarm. +in1_lcrit_alarm		Input voltage critical low alarm (LM25063 only). +in1_crit_alarm		Input voltage critical high alarm. (LM25063 only). + +in2_label		"vmon" +in2_input		Measured voltage on VAUX pin +in2_min			Minimum VAUX voltage (LM25056 only). +in2_max			Maximum VAUX voltage (LM25056 only). +in2_min_alarm		VAUX voltage low alarm (LM25056 only). +in2_max_alarm		VAUX voltage high alarm (LM25056 only). + +in3_label		"vout1" +			Not supported on LM25056. +in3_input		Measured output voltage. +in3_average		Average measured output voltage. +in3_min			Minimum output voltage. +in3_min_alarm		Output voltage low alarm. +in3_highest		Historical minimum output voltage (LM25063 only). +in3_lowest		Historical maximum output voltage (LM25063 only). + +curr1_label		"iin" +curr1_input		Measured input current. +curr1_average		Average measured input current. +curr1_max		Maximum input current. +curr1_crit		Critical input current (LM25063 only). +curr1_max_alarm		Input current high alarm. +curr1_crit_alarm	Input current critical high alarm (LM25063 only). + +power1_label		"pin" +power1_input		Measured input power. +power1_average		Average measured input power. +power1_max		Maximum input power limit. +power1_alarm		Input power alarm +power1_input_highest	Historical maximum power. +power1_reset_history	Write any value to reset maximum power history. + +power2_label		"pout". LM25063 only. +power2_input		Measured output power. +power2_max		Maximum output power limit. +power2_crit		Critical output power limit. + +temp1_input		Measured temperature. +temp1_max		Maximum temperature. +temp1_crit		Critical high temperature. +temp1_max_alarm		Chip temperature high alarm. +temp1_crit_alarm	Chip temperature critical high alarm. diff --git a/Documentation/hwmon/lm63 b/Documentation/hwmon/lm63 index b9843eab1af..4a00461512a 100644 --- a/Documentation/hwmon/lm63 +++ b/Documentation/hwmon/lm63 @@ -12,8 +12,13 @@ Supported chips:      Addresses scanned: I2C 0x18 and 0x4e      Datasheet: Publicly available at the National Semiconductor website                 http://www.national.com/pf/LM/LM64.html +  * National Semiconductor LM96163 +    Prefix: 'lm96163' +    Addresses scanned: I2C 0x4c +    Datasheet: Publicly available at the National Semiconductor website +               http://www.national.com/pf/LM/LM96163.html -Author: Jean Delvare <khali@linux-fr.org> +Author: Jean Delvare <jdelvare@suse.de>  Thanks go to Tyan and especially Alex Buckingham for setting up a remote  access to their S4882 test platform for this driver. @@ -49,16 +54,24 @@ value for measuring the speed of the fan. It can measure fan speeds down to  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. +is left to the BIOS, and the driver will blindly trust it. Only the original +LM63 suffers from this limitation, the LM64 and LM96163 have separate pins +for fan monitoring and alert out. On the LM64, monitoring is always enabled; +on the LM96163 it can be disabled.  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. +The lm63 driver will not update its values more frequently than configured with +the update_interval sysfs attribute; reading them more often will do no harm, +but will return 'old' values. Values in the automatic fan control lookup table +(attributes pwm1_auto_*) have their own independent lifetime of 5 seconds.  The LM64 is effectively an LM63 with GPIO lines. The driver does not  support these GPIO lines at present. + +The LM96163 is an enhanced version of LM63 with improved temperature accuracy +and better PWM resolution. For LM96163, the external temperature sensor type is +configurable as CPU embedded diode(1) or 3904 transistor(2). diff --git a/Documentation/hwmon/lm70 b/Documentation/hwmon/lm70 index 0d240291e3c..1bb2db44067 100644 --- a/Documentation/hwmon/lm70 +++ b/Documentation/hwmon/lm70 @@ -6,6 +6,10 @@ Supported chips:      Datasheet: http://www.national.com/pf/LM/LM70.html    * Texas Instruments TMP121/TMP123      Information: http://focus.ti.com/docs/prod/folders/print/tmp121.html +  * National Semiconductor LM71 +    Datasheet: http://www.ti.com/product/LM71 +  * National Semiconductor LM74 +    Datasheet: http://www.ti.com/product/LM74  Author:          Kaiwan N Billimoria <kaiwan@designergraphix.com> @@ -31,11 +35,13 @@ As a real (in-tree) example of this "SPI protocol driver" interfacing  with a "SPI master controller driver", see drivers/spi/spi_lm70llp.c  and its associated documentation. -The TMP121/TMP123 are very similar; main differences are 4 wire SPI inter- -face (read only) and 13-bit temperature data (0.0625 degrees celsius reso- -lution). +The LM74 and TMP121/TMP123 are very similar; main difference is 13-bit +temperature data (0.0625 degrees celsius resolution). + +The LM71 is also very similar; main difference is 14-bit temperature +data (0.03125 degrees celsius resolution).  Thanks to  --------- -Jean Delvare <khali@linux-fr.org> for mentoring the hwmon-side driver +Jean Delvare <jdelvare@suse.de> for mentoring the hwmon-side driver  development. diff --git a/Documentation/hwmon/lm73 b/Documentation/hwmon/lm73 new file mode 100644 index 00000000000..8af059dcb64 --- /dev/null +++ b/Documentation/hwmon/lm73 @@ -0,0 +1,90 @@ +Kernel driver lm73 +================== + +Supported chips: +  * Texas Instruments LM73 +    Prefix: 'lm73' +    Addresses scanned: I2C 0x48, 0x49, 0x4a, 0x4c, 0x4d, and 0x4e +    Datasheet: Publicly available at the Texas Instruments website +               http://www.ti.com/product/lm73 + +Author: Guillaume Ligneul <guillaume.ligneul@gmail.com> +Documentation: Chris Verges <kg4ysn@gmail.com> + + +Description +----------- + +The LM73 is a digital temperature sensor.  All temperature values are +given in degrees Celsius. + +Measurement Resolution Support +------------------------------ + +The LM73 supports four resolutions, defined in terms of degrees C per +LSB: 0.25, 0.125, 0.0625, and 0.3125.  Changing the resolution mode +affects the conversion time of the LM73's analog-to-digital converter. +From userspace, the desired resolution can be specified as a function of +conversion time via the 'update_interval' sysfs attribute for the +device.  This attribute will normalize ranges of input values to the +maximum times defined for the resolution in the datasheet. + +    Resolution    Conv. Time    Input Range +    (C/LSB)       (msec)        (msec) +    -------------------------------------- +    0.25          14             0..14 +    0.125         28            15..28 +    0.0625        56            29..56 +    0.03125       112           57..infinity +    -------------------------------------- + +The following examples show how the 'update_interval' attribute can be +used to change the conversion time: + +    $ echo 0 > update_interval +    $ cat update_interval +    14 +    $ cat temp1_input +    24250 + +    $ echo 22 > update_interval +    $ cat update_interval +    28 +    $ cat temp1_input +    24125 + +    $ echo 56 > update_interval +    $ cat update_interval +    56 +    $ cat temp1_input +    24062 + +    $ echo 85 > update_interval +    $ cat update_interval +    112 +    $ cat temp1_input +    24031 + +As shown here, the lm73 driver automatically adjusts any user input for +'update_interval' via a step function.  Reading back the +'update_interval' value after a write operation will confirm the +conversion time actively in use. + +Mathematically, the resolution can be derived from the conversion time +via the following function: + +   g(x) = 0.250 * [log(x/14) / log(2)] + +where 'x' is the output from 'update_interval' and 'g(x)' is the +resolution in degrees C per LSB. + +Alarm Support +------------- + +The LM73 features a simple over-temperature alarm mechanism.  This +feature is exposed via the sysfs attributes. + +The attributes 'temp1_max_alarm' and 'temp1_min_alarm' are flags +provided by the LM73 that indicate whether the measured temperature has +passed the 'temp1_max' and 'temp1_min' thresholds, respectively.  These +values _must_ be read to clear the registers on the LM73. diff --git a/Documentation/hwmon/lm75 b/Documentation/hwmon/lm75 index 8e6356fe05d..2560a9c6d44 100644 --- a/Documentation/hwmon/lm75 +++ b/Documentation/hwmon/lm75 @@ -7,26 +7,51 @@ Supported chips:      Addresses scanned: I2C 0x48 - 0x4f      Datasheet: Publicly available at the National Semiconductor website                 http://www.national.com/ -  * Dallas Semiconductor DS75 -    Prefix: 'lm75' -    Addresses scanned: I2C 0x48 - 0x4f -    Datasheet: Publicly available at the Dallas Semiconductor website -               http://www.maxim-ic.com/ -  * Dallas Semiconductor DS1775 -    Prefix: 'lm75' +  * National Semiconductor LM75A +    Prefix: 'lm75a'      Addresses scanned: I2C 0x48 - 0x4f -    Datasheet: Publicly available at the Dallas Semiconductor website -               http://www.maxim-ic.com/ +    Datasheet: Publicly available at the National Semiconductor website +               http://www.national.com/ +  * Dallas Semiconductor (now Maxim) DS75, DS1775, DS7505 +    Prefixes: 'ds75', 'ds1775', 'ds7505' +    Addresses scanned: none +    Datasheet: Publicly available at the Maxim website +               http://www.maximintegrated.com/    * Maxim MAX6625, MAX6626 -    Prefix: 'lm75' -    Addresses scanned: I2C 0x48 - 0x4b +    Prefixes: 'max6625', 'max6626' +    Addresses scanned: none      Datasheet: Publicly available at the Maxim website                 http://www.maxim-ic.com/    * Microchip (TelCom) TCN75 -    Prefix: 'lm75' -    Addresses scanned: I2C 0x48 - 0x4f +    Prefix: 'tcn75' +    Addresses scanned: none      Datasheet: Publicly available at the Microchip website                 http://www.microchip.com/ +  * Microchip MCP9800, MCP9801, MCP9802, MCP9803 +    Prefix: 'mcp980x' +    Addresses scanned: none +    Datasheet: Publicly available at the Microchip website +               http://www.microchip.com/ +  * Analog Devices ADT75 +    Prefix: 'adt75' +    Addresses scanned: none +    Datasheet: Publicly available at the Analog Devices website +               http://www.analog.com/adt75 +  * ST Microelectronics STDS75 +    Prefix: 'stds75' +    Addresses scanned: none +    Datasheet: Publicly available at the ST website +               http://www.st.com/internet/analog/product/121769.jsp +  * Texas Instruments TMP100, TMP101, TMP105, TMP75, TMP175, TMP275 +    Prefixes: 'tmp100', 'tmp101', 'tmp105', 'tmp175', 'tmp75', 'tmp275' +    Addresses scanned: none +    Datasheet: Publicly available at the Texas Instruments website +               http://www.ti.com/product/tmp100 +               http://www.ti.com/product/tmp101 +               http://www.ti.com/product/tmp105 +               http://www.ti.com/product/tmp75 +               http://www.ti.com/product/tmp175 +               http://www.ti.com/product/tmp275  Author: Frodo Looijaard <frodol@dds.nl> @@ -42,24 +67,20 @@ the temperature falls below the Hysteresis value.  All temperatures are in degrees Celsius, 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 +The driver caches the values for a period varying between 1 second for the +slowest chips and 125 ms for the fastest chips; 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 original LM75 was typically used in combination with LM78-like chips +on PC motherboards, to measure the temperature of the processor(s). Clones +are now used in various embedded designs.  The LM75 is essentially an industry standard; there may be other  LM75 clones not listed here, with or without various enhancements, -that are supported. +that are supported. The clones are not detected by the driver, unless +they reproduce the exact register tricks of the original LM75, and must +therefore be instantiated explicitly. Higher resolution up to 12-bit +is supported by this driver, other specific enhancements are not.  The LM77 is not supported, contrary to what we pretended for a long time.  Both chips are simply not compatible, value encoding differs. diff --git a/Documentation/hwmon/lm77 b/Documentation/hwmon/lm77 index 57c3a46d637..bfc915fe363 100644 --- a/Documentation/hwmon/lm77 +++ b/Documentation/hwmon/lm77 @@ -18,5 +18,21 @@ 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. +The LM77 implements 3 limits: low (temp1_min), high (temp1_max) and +critical (temp1_crit.) It also implements an hysteresis mechanism which +applies to all 3 limits. The relative difference is stored in a single +register on the chip, which means that the relative difference between +the limit and its hysteresis is always the same for all 3 limits. + +This implementation detail implies the following: +* When setting a limit, its hysteresis will automatically follow, the +  difference staying unchanged. For example, if the old critical limit +  was 80 degrees C, and the hysteresis was 75 degrees C, and you change +  the critical limit to 90 degrees C, then the hysteresis will +  automatically change to 85 degrees C. +* All 3 hysteresis can't be set independently. We decided to make +  temp1_crit_hyst writable, while temp1_min_hyst and temp1_max_hyst are +  read-only. Setting temp1_crit_hyst writes the difference between +  temp1_crit_hyst and temp1_crit into the chip, and the same relative +  hysteresis applies automatically to the low and high limits. +* The limits should be set before the hysteresis. diff --git a/Documentation/hwmon/lm78 b/Documentation/hwmon/lm78 index 60932e26aba..4dd47731789 100644 --- a/Documentation/hwmon/lm78 +++ b/Documentation/hwmon/lm78 @@ -13,7 +13,8 @@ Supported chips:      Datasheet: Publicly available at the National Semiconductor website                 http://www.national.com/ -Author: Frodo Looijaard <frodol@dds.nl> +Authors: Frodo Looijaard <frodol@dds.nl> +         Jean Delvare <jdelvare@suse.de>  Description  ----------- diff --git a/Documentation/hwmon/lm80 b/Documentation/hwmon/lm80 index cb5b407ba3e..a60b43efc32 100644 --- a/Documentation/hwmon/lm80 +++ b/Documentation/hwmon/lm80 @@ -7,6 +7,11 @@ Supported chips:      Addresses scanned: I2C 0x28 - 0x2f      Datasheet: Publicly available at the National Semiconductor website                 http://www.national.com/ +  * National Semiconductor LM96080 +    Prefix: 'lm96080' +    Addresses scanned: I2C 0x28 - 0x2f +    Datasheet: Publicly available at the National Semiconductor website +               http://www.national.com/  Authors:          Frodo Looijaard <frodol@dds.nl>, @@ -17,7 +22,9 @@ Description  This driver implements support for the National Semiconductor LM80.  It is described as a 'Serial Interface ACPI-Compatible Microprocessor -System Hardware Monitor'. +System Hardware Monitor'. The LM96080 is a more recent incarnation, +it is pin and register compatible, with a few additional features not +yet supported by the driver.  The LM80 implements one temperature sensor, two fan rotation speed sensors,  seven voltage sensors, alarms, and some miscellaneous stuff. diff --git a/Documentation/hwmon/lm83 b/Documentation/hwmon/lm83 index a04d1fe9269..50be5cb26de 100644 --- a/Documentation/hwmon/lm83 +++ b/Documentation/hwmon/lm83 @@ -13,7 +13,7 @@ Supported chips:                 http://www.national.com/pf/LM/LM82.html -Author: Jean Delvare <khali@linux-fr.org> +Author: Jean Delvare <jdelvare@suse.de>  Description  ----------- diff --git a/Documentation/hwmon/lm85 b/Documentation/hwmon/lm85 index 239258a63c8..7c49feaa79d 100644 --- a/Documentation/hwmon/lm85 +++ b/Documentation/hwmon/lm85 @@ -26,6 +26,14 @@ Supported chips:      Prefix: 'emc6d102'      Addresses scanned: I2C 0x2c, 0x2d, 0x2e      Datasheet: http://www.smsc.com/main/catalog/emc6d102.html +  * SMSC EMC6D103 +    Prefix: 'emc6d103' +    Addresses scanned: I2C 0x2c, 0x2d, 0x2e +    Datasheet: http://www.smsc.com/main/catalog/emc6d103.html +  * SMSC EMC6D103S +    Prefix: 'emc6d103s' +    Addresses scanned: I2C 0x2c, 0x2d, 0x2e +    Datasheet: http://www.smsc.com/main/catalog/emc6d103s.html  Authors:          Philip Pokorny <ppokorny@penguincomputing.com>, @@ -122,9 +130,11 @@ to be register compatible. The EMC6D100 offers all the features of the  EMC6D101 plus additional voltage monitoring and system control features.  Unfortunately it is not possible to distinguish between the package  versions on register level so these additional voltage inputs may read -zero. The EMC6D102 features addtional ADC bits thus extending precision +zero. EMC6D102 and EMC6D103 feature additional ADC bits thus extending precision  of voltage and temperature channels. +SMSC EMC6D103S is similar to EMC6D103, but does not support pwm#_auto_pwm_minctl +and temp#_auto_temp_off.  Hardware Configurations  ----------------------- diff --git a/Documentation/hwmon/lm87 b/Documentation/hwmon/lm87 index 6b47b67fd96..a2339fd9acb 100644 --- a/Documentation/hwmon/lm87 +++ b/Documentation/hwmon/lm87 @@ -17,7 +17,7 @@ Authors:          Mark Studebaker <mdsxyz123@yahoo.com>,          Stephen Rousset <stephen.rousset@rocketlogix.com>,          Dan Eaton <dan.eaton@rocketlogix.com>, -        Jean Delvare <khali@linux-fr.org>, +        Jean Delvare <jdelvare@suse.de>,          Original 2.6 port Jeff Oliver  Description diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90 index fa475c0a48a..8122675d30f 100644 --- a/Documentation/hwmon/lm90 +++ b/Documentation/hwmon/lm90 @@ -32,6 +32,16 @@ Supported chips:      Addresses scanned: I2C 0x4c and 0x4d      Datasheet: Publicly available at the ON Semiconductor website                 http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461 +  * Analog Devices ADT7461A +    Prefix: 'adt7461a' +    Addresses scanned: I2C 0x4c and 0x4d +    Datasheet: Publicly available at the ON Semiconductor website +               http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461A +  * ON Semiconductor NCT1008 +    Prefix: 'nct1008' +    Addresses scanned: I2C 0x4c and 0x4d +    Datasheet: Publicly available at the ON Semiconductor website +               http://www.onsemi.com/PowerSolutions/product.do?id=NCT1008    * Maxim MAX6646      Prefix: 'max6646'      Addresses scanned: I2C 0x4d @@ -103,9 +113,23 @@ Supported chips:      Prefix: 'w83l771'      Addresses scanned: I2C 0x4c      Datasheet: Not publicly available, can be requested from Nuvoton +  * Philips/NXP SA56004X +    Prefix: 'sa56004' +    Addresses scanned: I2C 0x48 through 0x4F +    Datasheet: Publicly available at NXP website +               http://ics.nxp.com/products/interface/datasheet/sa56004x.pdf +  * GMT G781 +    Prefix: 'g781' +    Addresses scanned: I2C 0x4c, 0x4d +    Datasheet: Not publicly available from GMT +  * Texas Instruments TMP451 +    Prefix: 'tmp451' +    Addresses scanned: I2C 0x4c +    Datasheet: Publicly available at TI website +               http://www.ti.com/litv/pdf/sbos686 -Author: Jean Delvare <khali@linux-fr.org> +Author: Jean Delvare <jdelvare@suse.de>  Description @@ -149,7 +173,7 @@ ADM1032:    * ALERT is triggered by open remote sensor.    * SMBus PEC support for Write Byte and Receive Byte transactions. -ADT7461: +ADT7461, ADT7461A, NCT1008:    * Extended temperature range (breaks compatibility)    * Lower resolution for remote temperature @@ -183,6 +207,9 @@ W83L771AWG/ASG    * The AWG and ASG variants only differ in package format.    * Diode ideality factor configuration (remote sensor) at 0xE3 +SA56004X: +  * Better local resolution +  All temperature values are given in degrees Celsius. Resolution  is 1.0 degree for the local temperature, 0.125 degree for the remote  temperature, except for the MAX6657, MAX6658 and MAX6659 which have a @@ -195,9 +222,9 @@ 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. +The lm90 driver will not update its values more frequently than configured with +the update_interval attribute; reading them more often will do no harm, but will +return 'old' values.  SMBus Alert Support  ------------------- @@ -205,11 +232,12 @@ SMBus Alert Support  This driver has basic support for SMBus alert. When an alert is received,  the status register is read and the faulty temperature channel is logged. -The Analog Devices chips (ADM1032 and ADT7461) do not implement the SMBus -alert protocol properly so additional care is needed: the ALERT output is -disabled when an alert is received, and is re-enabled only when the alarm -is gone. Otherwise the chip would block alerts from other chips in the bus -as long as the alarm is active. +The Analog Devices chips (ADM1032, ADT7461 and ADT7461A) and ON +Semiconductor chips (NCT1008) do not implement the SMBus alert protocol +properly so additional care is needed: the ALERT output is disabled when +an alert is received, and is re-enabled only when the alarm is gone. +Otherwise the chip would block alerts from other chips in the bus as long +as the alarm is active.  PEC Support  ----------- diff --git a/Documentation/hwmon/lm92 b/Documentation/hwmon/lm92 index 7705bfaa070..22f68ad032c 100644 --- a/Documentation/hwmon/lm92 +++ b/Documentation/hwmon/lm92 @@ -19,7 +19,7 @@ Supported chips:  Authors:          Abraham van der Merwe <abraham@2d3d.co.za> -        Jean Delvare <khali@linux-fr.org> +        Jean Delvare <jdelvare@suse.de>  Description diff --git a/Documentation/hwmon/lm93 b/Documentation/hwmon/lm93 index ac711f357fa..f3b2ad2ceb0 100644 --- a/Documentation/hwmon/lm93 +++ b/Documentation/hwmon/lm93 @@ -6,12 +6,16 @@ Supported chips:      Prefix 'lm93'      Addresses scanned: I2C 0x2c-0x2e      Datasheet: http://www.national.com/ds.cgi/LM/LM93.pdf +  * National Semiconductor LM94 +    Prefix 'lm94' +    Addresses scanned: I2C 0x2c-0x2e +    Datasheet: http://www.national.com/ds.cgi/LM/LM94.pdf  Authors:  	Mark M. Hoffman <mhoffman@lightlink.com>  	Ported to 2.6 by Eric J. Bowersox <ericb@aspsys.com>  	Adapted to 2.6.20 by Carsten Emde <ce@osadl.org> -	Modified for mainline integration by Hans J. Koch <hjk@linutronix.de> +	Modified for mainline integration by Hans J. Koch <hjk@hansjkoch.de>  Module Parameters  ----------------- @@ -56,6 +60,9 @@ previous motherboard management ASICs and uses some of the LM85's features  for dynamic Vccp monitoring and PROCHOT. It is designed to monitor a dual  processor Xeon class motherboard with a minimum of external components. +LM94 is also supported in LM93 compatible mode. Extra sensors and features of +LM94 are not supported. +  User Interface  -------------- diff --git a/Documentation/hwmon/lm95234 b/Documentation/hwmon/lm95234 new file mode 100644 index 00000000000..a0e95ddfd37 --- /dev/null +++ b/Documentation/hwmon/lm95234 @@ -0,0 +1,36 @@ +Kernel driver lm95234 +===================== + +Supported chips: +  * National Semiconductor / Texas Instruments LM95234 +    Addresses scanned: I2C 0x18, 0x4d, 0x4e +    Datasheet: Publicly available at the Texas Instruments website +               http://www.ti.com/product/lm95234 + + +Author: Guenter Roeck <linux@roeck-us.net> + +Description +----------- + +LM95234 is an 11-bit digital temperature sensor with a 2-wire System Management +Bus (SMBus) interface and TrueTherm technology that can very accurately monitor +the temperature of four remote diodes as well as its own temperature. +The four remote diodes can be external devices such as microprocessors, +graphics processors or diode-connected 2N3904s. The LM95234's TruTherm +beta compensation technology allows sensing of 90 nm or 65 nm process +thermal diodes accurately. + +All temperature values are given in millidegrees Celsius. Temperature +is provided within a range of -127 to +255 degrees (+127.875 degrees for +the internal sensor). Resolution depends on temperature input and range. + +Each sensor has its own maximum limit, but the hysteresis is common to all +channels. The hysteresis is configurable with the tem1_max_hyst attribute and +affects the hysteresis on all channels. The first two external sensors also +have a critical limit. + +The lm95234 driver can change its update interval to a fixed set of values. +It will round up to the next selectable interval. See the datasheet for exact +values. Reading sensor values more often will do no harm, but will return +'old' values. diff --git a/Documentation/hwmon/lm95245 b/Documentation/hwmon/lm95245 new file mode 100644 index 00000000000..77eaf2812d2 --- /dev/null +++ b/Documentation/hwmon/lm95245 @@ -0,0 +1,37 @@ +Kernel driver lm95245 +================== + +Supported chips: +  * National Semiconductor LM95245 +    Addresses scanned: I2C 0x18, 0x19, 0x29, 0x4c, 0x4d +    Datasheet: Publicly available at the National Semiconductor website +               http://www.national.com/mpf/LM/LM95245.html + + +Author: Alexander Stein <alexander.stein@systec-electronic.com> + +Description +----------- + +The LM95245 is an 11-bit digital temperature sensor with a 2-wire System +Management Bus (SMBus) interface and TruTherm technology that can monitor +the temperature of a remote diode as well as its own temperature. +The LM95245 can be used to very accurately monitor the temperature of +external devices such as microprocessors. + +All temperature values are given in millidegrees Celsius. Local temperature +is given within a range of -127 to +127.875 degrees. Remote temperatures are +given within a range of -127 to +255 degrees. Resolution depends on +temperature input and range. + +Each sensor has its own critical limit. Additionally, there is a relative +hysteresis value common to both critical limits. 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 lm95245 driver can change its update interval to a fixed set of values. +It will round up to the next selectable interval. See the datasheet for exact +values. Reading sensor values more often will do no harm, but will return +'old' values. diff --git a/Documentation/hwmon/ltc2945 b/Documentation/hwmon/ltc2945 new file mode 100644 index 00000000000..f8d0f7f19ad --- /dev/null +++ b/Documentation/hwmon/ltc2945 @@ -0,0 +1,84 @@ +Kernel driver ltc2945 +===================== + +Supported chips: +  * Linear Technology LTC2945 +    Prefix: 'ltc2945' +    Addresses scanned: - +    Datasheet: +        http://cds.linear.com/docs/en/datasheet/2945fa.pdf + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +The LTC2945  is a rail-to-rail system monitor that measures current, voltage, +and power consumption. + + +Usage Notes +----------- + +This driver does not probe for LTC2945 devices, since there is no register +which can be safely used to identify the chip. You will have to instantiate +the devices explicitly. + +Example: the following will load the driver for an LTC2945 at address 0x10 +on I2C bus #1: +$ modprobe ltc2945 +$ echo ltc2945 0x10 > /sys/bus/i2c/devices/i2c-1/new_device + + +Sysfs entries +------------- + +Voltage readings provided by this driver are reported as obtained from the ADC +registers. If a set of voltage divider resistors is installed, calculate the +real voltage by multiplying the reported value with (R1+R2)/R2, where R1 is the +value of the divider resistor against the measured voltage and R2 is the value +of the divider resistor against Ground. + +Current reading provided by this driver is reported as obtained from the ADC +Current Sense register. The reported value assumes that a 1 mOhm sense resistor +is installed. If a different sense resistor is installed, calculate the real +current by dividing the reported value by the sense resistor value in mOhm. + +in1_input		VIN voltage (mV). Voltage is measured either at +			SENSE+ or VDD pin depending on chip configuration. +in1_min			Undervoltage threshold +in1_max			Overvoltage threshold +in1_lowest		Lowest measured voltage +in1_highest		Highest measured voltage +in1_reset_history	Write 1 to reset in1 history +in1_min_alarm		Undervoltage alarm +in1_max_alarm		Overvoltage alarm + +in2_input		ADIN voltage (mV) +in2_min			Undervoltage threshold +in2_max			Overvoltage threshold +in2_lowest		Lowest measured voltage +in2_highest		Highest measured voltage +in2_reset_history	Write 1 to reset in2 history +in2_min_alarm		Undervoltage alarm +in2_max_alarm		Overvoltage alarm + +curr1_input		SENSE current (mA) +curr1_min		Undercurrent threshold +curr1_max		Overcurrent threshold +curr1_lowest		Lowest measured current +curr1_highest		Highest measured current +curr1_reset_history	Write 1 to reset curr1 history +curr1_min_alarm		Undercurrent alarm +curr1_max_alarm		Overcurrent alarm + +power1_input		Power (in uW). Power is calculated based on SENSE+/VDD +			voltage or ADIN voltage depending on chip configuration. +power1_min		Low lower threshold +power1_max		High power threshold +power1_input_lowest	Historical minimum power use +power1_input_highest	Historical maximum power use +power1_reset_history	Write 1 to reset power1 history +power1_min_alarm	Low power alarm +power1_max_alarm	High power alarm diff --git a/Documentation/hwmon/ltc2978 b/Documentation/hwmon/ltc2978 new file mode 100644 index 00000000000..686c078bb0e --- /dev/null +++ b/Documentation/hwmon/ltc2978 @@ -0,0 +1,157 @@ +Kernel driver ltc2978 +===================== + +Supported chips: +  * Linear Technology LTC2974 +    Prefix: 'ltc2974' +    Addresses scanned: - +    Datasheet: http://www.linear.com/product/ltc2974 +  * Linear Technology LTC2977 +    Prefix: 'ltc2977' +    Addresses scanned: - +    Datasheet: http://www.linear.com/product/ltc2977 +  * Linear Technology LTC2978, LTC2978A +    Prefix: 'ltc2978' +    Addresses scanned: - +    Datasheet: http://www.linear.com/product/ltc2978 +    	       http://www.linear.com/product/ltc2978a +  * Linear Technology LTC3880 +    Prefix: 'ltc3880' +    Addresses scanned: - +    Datasheet: http://www.linear.com/product/ltc3880 +  * Linear Technology LTC3883 +    Prefix: 'ltc3883' +    Addresses scanned: - +    Datasheet: http://www.linear.com/product/ltc3883 +  * Linear Technology LTM4676 +    Prefix: 'ltm4676' +    Addresses scanned: - +    Datasheet: http://www.linear.com/product/ltm4676 + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +LTC2974 is a quad digital power supply manager. LTC2978 is an octal power supply +monitor. LTC2977 is a pin compatible replacement for LTC2978. LTC3880 is a dual +output poly-phase step-down DC/DC controller. LTC3883 is a single phase +step-down DC/DC controller. LTM4676 is a dual 13A or single 26A uModule +regulator. + + +Usage Notes +----------- + +This driver does not probe for PMBus devices. You will have to instantiate +devices explicitly. + +Example: the following commands will load the driver for an LTC2978 at address +0x60 on I2C bus #1: + +# modprobe ltc2978 +# echo ltc2978 0x60 > /sys/bus/i2c/devices/i2c-1/new_device + + +Sysfs attributes +---------------- + +in1_label		"vin" +in1_input		Measured input voltage. +in1_min			Minimum input voltage. +in1_max			Maximum input voltage. +			LTC2974, LTC2977, and LTC2978 only. +in1_lcrit		Critical minimum input voltage. +			LTC2974, LTC2977, and LTC2978 only. +in1_crit		Critical maximum input voltage. +in1_min_alarm		Input voltage low alarm. +in1_max_alarm		Input voltage high alarm. +			LTC2974, LTC2977, and LTC2978 only. +in1_lcrit_alarm		Input voltage critical low alarm. +			LTC2974, LTC2977, and LTC2978 only. +in1_crit_alarm		Input voltage critical high alarm. +in1_lowest		Lowest input voltage. +			LTC2974, LTC2977, and LTC2978 only. +in1_highest		Highest input voltage. +in1_reset_history	Reset input voltage history. + +in[N]_label		"vout[1-8]". +			LTC2974: N=2-5 +			LTC2977: N=2-9 +			LTC2978: N=2-9 +			LTC3880, LTM4676: N=2-3 +			LTC3883: N=2 +in[N]_input		Measured output voltage. +in[N]_min		Minimum output voltage. +in[N]_max		Maximum output voltage. +in[N]_lcrit		Critical minimum output voltage. +in[N]_crit		Critical maximum output voltage. +in[N]_min_alarm		Output voltage low alarm. +in[N]_max_alarm		Output voltage high alarm. +in[N]_lcrit_alarm	Output voltage critical low alarm. +in[N]_crit_alarm	Output voltage critical high alarm. +in[N]_lowest		Lowest output voltage. LTC2974 and LTC2978 only. +in[N]_highest		Highest output voltage. +in[N]_reset_history	Reset output voltage history. + +temp[N]_input		Measured temperature. +			On LTC2974, temp[1-4] report external temperatures, +			and temp5 reports the chip temperature. +			On LTC2977 and LTC2978, only one temperature measurement +			is supported and reports the chip temperature. +			On LTC3880 and LTM4676, temp1 and temp2 report external +			temperatures, and temp3 reports the chip temperature. +			On LTC3883, temp1 reports an external temperature, +			and temp2 reports the chip temperature. +temp[N]_min		Mimimum temperature. LTC2974, LCT2977, and LTC2978 only. +temp[N]_max		Maximum temperature. +temp[N]_lcrit		Critical low temperature. +temp[N]_crit		Critical high temperature. +temp[N]_min_alarm	Temperature low alarm. +			LTC2974, LTC2977, and LTC2978 only. +temp[N]_max_alarm	Temperature high alarm. +temp[N]_lcrit_alarm	Temperature critical low alarm. +temp[N]_crit_alarm	Temperature critical high alarm. +temp[N]_lowest		Lowest measured temperature. +			LTC2974, LTC2977, and LTC2978 only. +			Not supported for chip temperature sensor on LTC2974. +temp[N]_highest		Highest measured temperature. Not supported for chip +			temperature sensor on LTC2974. +temp[N]_reset_history	Reset temperature history. Not supported for chip +			temperature sensor on LTC2974. + +power1_label		"pin". LTC3883 only. +power1_input		Measured input power. + +power[N]_label		"pout[1-4]". +			LTC2974: N=1-4 +			LTC2977: Not supported +			LTC2978: Not supported +			LTC3880, LTM4676: N=1-2 +			LTC3883: N=2 +power[N]_input		Measured output power. + +curr1_label		"iin". LTC3880, LTC3883, and LTM4676 only. +curr1_input		Measured input current. +curr1_max		Maximum input current. +curr1_max_alarm		Input current high alarm. +curr1_highest		Highest input current. LTC3883 only. +curr1_reset_history	Reset input current history. LTC3883 only. + +curr[N]_label		"iout[1-4]". +			LTC2974: N=1-4 +			LTC2977: not supported +			LTC2978: not supported +			LTC3880, LTM4676: N=2-3 +			LTC3883: N=2 +curr[N]_input		Measured output current. +curr[N]_max		Maximum output current. +curr[N]_crit		Critical high output current. +curr[N]_lcrit		Critical low output current. LTC2974 only. +curr[N]_max_alarm	Output current high alarm. +curr[N]_crit_alarm	Output current critical high alarm. +curr[N]_lcrit_alarm	Output current critical low alarm. LTC2974 only. +curr[N]_lowest		Lowest output current. LTC2974 only. +curr[N]_highest		Highest output current. +curr[N]_reset_history	Reset output current history. diff --git a/Documentation/hwmon/ltc4151 b/Documentation/hwmon/ltc4151 new file mode 100644 index 00000000000..43c667e6677 --- /dev/null +++ b/Documentation/hwmon/ltc4151 @@ -0,0 +1,47 @@ +Kernel driver ltc4151 +===================== + +Supported chips: +  * Linear Technology LTC4151 +    Prefix: 'ltc4151' +    Addresses scanned: - +    Datasheet: +        http://www.linear.com/docs/Datasheet/4151fc.pdf + +Author: Per Dalen <per.dalen@appeartv.com> + + +Description +----------- + +The LTC4151 is a High Voltage I2C Current and Voltage Monitor. + + +Usage Notes +----------- + +This driver does not probe for LTC4151 devices, since there is no register +which can be safely used to identify the chip. You will have to instantiate +the devices explicitly. + +Example: the following will load the driver for an LTC4151 at address 0x6f +on I2C bus #0: +# modprobe ltc4151 +# echo ltc4151 0x6f > /sys/bus/i2c/devices/i2c-0/new_device + + +Sysfs entries +------------- + +Voltage readings provided by this driver are reported as obtained from the ADIN +and VIN registers. + +Current reading provided by this driver is reported as obtained from the Current +Sense register. The reported value assumes that a 1 mOhm sense resistor is +installed. + +in1_input		VDIN voltage (mV) + +in2_input		ADIN voltage (mV) + +curr1_input		SENSE current (mA) diff --git a/Documentation/hwmon/ltc4260 b/Documentation/hwmon/ltc4260 new file mode 100644 index 00000000000..c4ff4ad998b --- /dev/null +++ b/Documentation/hwmon/ltc4260 @@ -0,0 +1,56 @@ +Kernel driver ltc4260 +===================== + +Supported chips: +  * Linear Technology LTC4260 +    Prefix: 'ltc4260' +    Addresses scanned: - +    Datasheet: +        http://cds.linear.com/docs/en/datasheet/4260fc.pdf + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +The LTC4260 Hot Swap controller allows a board to be safely inserted +and removed from a live backplane. + + +Usage Notes +----------- + +This driver does not probe for LTC4260 devices, since there is no register +which can be safely used to identify the chip. You will have to instantiate +the devices explicitly. + +Example: the following will load the driver for an LTC4260 at address 0x10 +on I2C bus #1: +$ modprobe ltc4260 +$ echo ltc4260 0x10 > /sys/bus/i2c/devices/i2c-1/new_device + + +Sysfs entries +------------- + +Voltage readings provided by this driver are reported as obtained from the ADC +registers. If a set of voltage divider resistors is installed, calculate the +real voltage by multiplying the reported value with (R1+R2)/R2, where R1 is the +value of the divider resistor against the measured voltage and R2 is the value +of the divider resistor against Ground. + +Current reading provided by this driver is reported as obtained from the ADC +Current Sense register. The reported value assumes that a 1 mOhm sense resistor +is installed. If a different sense resistor is installed, calculate the real +current by dividing the reported value by the sense resistor value in mOhm. + +in1_input		SOURCE voltage (mV) +in1_min_alarm		Undervoltage alarm +in1_max_alarm		Overvoltage alarm + +in2_input		ADIN voltage (mV) +in2_alarm		Power bad alarm + +curr1_input		SENSE current (mA) +curr1_alarm		SENSE overcurrent alarm diff --git a/Documentation/hwmon/ltc4261 b/Documentation/hwmon/ltc4261 index eba2e2c4b94..9378a75c613 100644 --- a/Documentation/hwmon/ltc4261 +++ b/Documentation/hwmon/ltc4261 @@ -8,7 +8,7 @@ Supported chips:      Datasheet:          http://cds.linear.com/docs/Datasheet/42612fb.pdf -Author: Guenter Roeck <guenter.roeck@ericsson.com> +Author: Guenter Roeck <linux@roeck-us.net>  Description diff --git a/Documentation/hwmon/max16064 b/Documentation/hwmon/max16064 new file mode 100644 index 00000000000..d59cc7829be --- /dev/null +++ b/Documentation/hwmon/max16064 @@ -0,0 +1,66 @@ +Kernel driver max16064 +====================== + +Supported chips: +  * Maxim MAX16064 +    Prefix: 'max16064' +    Addresses scanned: - +    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX16064.pdf + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +This driver supports hardware montoring for Maxim MAX16064 Quad Power-Supply +Controller with Active-Voltage Output Control and PMBus Interface. + +The driver is a client driver to the core PMBus driver. +Please see Documentation/hwmon/pmbus for details on PMBus client drivers. + + +Usage Notes +----------- + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. + + +Platform data support +--------------------- + +The driver supports standard PMBus driver platform data. + + +Sysfs entries +------------- + +The following attributes are supported. Limits are read-write; all other +attributes are read-only. + +in[1-4]_label		"vout[1-4]" +in[1-4]_input		Measured voltage. From READ_VOUT register. +in[1-4]_min		Minimum Voltage. From VOUT_UV_WARN_LIMIT register. +in[1-4]_max		Maximum voltage. From VOUT_OV_WARN_LIMIT register. +in[1-4]_lcrit		Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register. +in[1-4]_crit		Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. +in[1-4]_min_alarm	Voltage low alarm. From VOLTAGE_UV_WARNING status. +in[1-4]_max_alarm	Voltage high alarm. From VOLTAGE_OV_WARNING status. +in[1-4]_lcrit_alarm	Voltage critical low alarm. From VOLTAGE_UV_FAULT status. +in[1-4]_crit_alarm	Voltage critical high alarm. From VOLTAGE_OV_FAULT status. +in[1-4]_highest		Historical maximum voltage. +in[1-4]_reset_history	Write any value to reset history. + +temp1_input		Measured temperature. From READ_TEMPERATURE_1 register. +temp1_max		Maximum temperature. From OT_WARN_LIMIT register. +temp1_crit		Critical high temperature. From OT_FAULT_LIMIT register. +temp1_max_alarm		Chip temperature high alarm. Set by comparing +			READ_TEMPERATURE_1 with OT_WARN_LIMIT if TEMP_OT_WARNING +			status is set. +temp1_crit_alarm	Chip temperature critical high alarm. Set by comparing +			READ_TEMPERATURE_1 with OT_FAULT_LIMIT if TEMP_OT_FAULT +			status is set. +temp1_highest		Historical maximum temperature. +temp1_reset_history	Write any value to reset history. diff --git a/Documentation/hwmon/max16065 b/Documentation/hwmon/max16065 new file mode 100644 index 00000000000..208a29e4301 --- /dev/null +++ b/Documentation/hwmon/max16065 @@ -0,0 +1,105 @@ +Kernel driver max16065 +====================== + +Supported chips: +  * Maxim MAX16065, MAX16066 +    Prefixes: 'max16065', 'max16066' +    Addresses scanned: - +    Datasheet: +	http://datasheets.maxim-ic.com/en/ds/MAX16065-MAX16066.pdf + *  Maxim MAX16067 +    Prefix: 'max16067' +    Addresses scanned: - +    Datasheet: +	http://datasheets.maxim-ic.com/en/ds/MAX16067.pdf + *  Maxim MAX16068 +    Prefix: 'max16068' +    Addresses scanned: - +    Datasheet: +	http://datasheets.maxim-ic.com/en/ds/MAX16068.pdf + *  Maxim MAX16070/MAX16071 +    Prefixes: 'max16070', 'max16071' +    Addresses scanned: - +    Datasheet: +	http://datasheets.maxim-ic.com/en/ds/MAX16070-MAX16071.pdf + + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +[From datasheets] The MAX16065/MAX16066 flash-configurable system managers +monitor and sequence multiple system voltages. The MAX16065/MAX16066 can also +accurately monitor (+/-2.5%) one current channel using a dedicated high-side +current-sense amplifier. The MAX16065 manages up to twelve system voltages +simultaneously, and the MAX16066 manages up to eight supply voltages. + +The MAX16067 flash-configurable system manager monitors and sequences multiple +system voltages. The MAX16067 manages up to six system voltages simultaneously. + +The MAX16068 flash-configurable system manager monitors and manages up to six +system voltages simultaneously. + +The MAX16070/MAX16071 flash-configurable system monitors supervise multiple +system voltages. The MAX16070/MAX16071 can also accurately monitor (+/-2.5%) +one current channel using a dedicated high-side current-sense amplifier. The +MAX16070 monitors up to twelve system voltages simultaneously, and the MAX16071 +monitors up to eight supply voltages. + +Each monitored channel has its own low and high critical limits. MAX16065, +MAX16066, MAX16070, and MAX16071 support an additional limit which is +configurable as either low or high secondary limit. MAX16065, MAX16066, +MAX16070, and MAX16071 also support supply current monitoring. + + +Usage Notes +----------- + +This driver does not probe for devices, since there is no register which +can be safely used to identify the chip. You will have to instantiate +the devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. + +WARNING: Do not access chip registers using the i2cdump command, and do not use +any of the i2ctools commands on a command register (0xa5 to 0xac). The chips +supported by this driver interpret any access to a command register (including +read commands) as request to execute the command in question. This may result in +power loss, board resets, and/or Flash corruption. Worst case, your board may +turn into a brick. + + +Sysfs entries +------------- + +in[0-11]_input		Input voltage measurements. + +in12_input		Voltage on CSP (Current Sense Positive) pin. +			Only if the chip supports current sensing and if +			current sensing is enabled. + +in[0-11]_min		Low warning limit. +			Supported on MAX16065, MAX16066, MAX16070, and MAX16071 +			only. + +in[0-11]_max		High warning limit. +			Supported on MAX16065, MAX16066, MAX16070, and MAX16071 +			only. + +			Either low or high warning limits are supported +			(depending on chip configuration), but not both. + +in[0-11]_lcrit		Low critical limit. + +in[0-11]_crit		High critical limit. + +in[0-11]_alarm		Input voltage alarm. + +curr1_input		Current sense input; only if the chip supports current +			sensing and if current sensing is enabled. +			Displayed current assumes 0.001 Ohm current sense +			resistor. + +curr1_alarm		Overcurrent alarm; only if the chip supports current +			sensing and if current sensing is enabled. diff --git a/Documentation/hwmon/max1619 b/Documentation/hwmon/max1619 index d6f8d9cd7d7..518bae3a80c 100644 --- a/Documentation/hwmon/max1619 +++ b/Documentation/hwmon/max1619 @@ -9,8 +9,8 @@ Supported chips:                 http://pdfserv.maxim-ic.com/en/ds/MAX1619.pdf  Authors: -        Alexey Fisher <fishor@mail.ru>, -        Jean Delvare <khali@linux-fr.org> +        Oleksij Rempel <bug-track@fisher-privat.net>, +        Jean Delvare <jdelvare@suse.de>  Description  ----------- diff --git a/Documentation/hwmon/max1668 b/Documentation/hwmon/max1668 new file mode 100644 index 00000000000..0616ed9758d --- /dev/null +++ b/Documentation/hwmon/max1668 @@ -0,0 +1,60 @@ +Kernel driver max1668 +===================== + +Supported chips: +  * Maxim MAX1668, MAX1805 and MAX1989 +    Prefix: 'max1668' +    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e +    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX1668-MAX1989.pdf + +Author: +    David George <david.george@ska.ac.za> + +Description +----------- + +This driver implements support for the Maxim MAX1668, MAX1805 and MAX1989 +chips. + +The three devices are very similar, but the MAX1805 has a reduced feature +set; only two remote temperature inputs vs the four avaible on the other +two ICs. + +The driver is able to distinguish between the devices and creates sysfs +entries as follows: + +MAX1805, MAX1668 and MAX1989: + +temp1_input     ro local (ambient) temperature +temp1_max       rw local temperature maximum threshold for alarm +temp1_max_alarm ro local temperature maximum threshold alarm +temp1_min       rw local temperature minimum threshold for alarm +temp1_min_alarm ro local temperature minimum threshold alarm +temp2_input     ro remote temperature 1 +temp2_max       rw remote temperature 1 maximum threshold for alarm +temp2_max_alarm ro remote temperature 1 maximum threshold alarm +temp2_min       rw remote temperature 1 minimum threshold for alarm +temp2_min_alarm ro remote temperature 1 minimum threshold alarm +temp3_input     ro remote temperature 2 +temp3_max       rw remote temperature 2 maximum threshold for alarm +temp3_max_alarm ro remote temperature 2 maximum threshold alarm +temp3_min       rw remote temperature 2 minimum threshold for alarm +temp3_min_alarm ro remote temperature 2 minimum threshold alarm + +MAX1668 and MAX1989 only: +temp4_input     ro remote temperature 3 +temp4_max       rw remote temperature 3 maximum threshold for alarm +temp4_max_alarm ro remote temperature 3 maximum threshold alarm +temp4_min       rw remote temperature 3 minimum threshold for alarm +temp4_min_alarm ro remote temperature 3 minimum threshold alarm +temp5_input     ro remote temperature 4 +temp5_max       rw remote temperature 4 maximum threshold for alarm +temp5_max_alarm ro remote temperature 4 maximum threshold alarm +temp5_min       rw remote temperature 4 minimum threshold for alarm +temp5_min_alarm ro remote temperature 4 minimum threshold alarm + +Module Parameters +----------------- + +* read_only: int +  Set to non-zero if you wish to prevent write access to alarm thresholds. diff --git a/Documentation/hwmon/max197 b/Documentation/hwmon/max197 new file mode 100644 index 00000000000..8d89b9009df --- /dev/null +++ b/Documentation/hwmon/max197 @@ -0,0 +1,60 @@ +Maxim MAX197 driver +=================== + +Author: +  * Vivien Didelot <vivien.didelot@savoirfairelinux.com> + +Supported chips: +  * Maxim MAX197 +    Prefix: 'max197' +    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX197.pdf + +  * Maxim MAX199 +    Prefix: 'max199' +    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX199.pdf + +Description +----------- + +The A/D converters MAX197, and MAX199 are both 8-Channel, Multi-Range, 5V, +12-Bit DAS with 8+4 Bus Interface and Fault Protection. + +The available ranges for the MAX197 are {0,-5V} to 5V, and {0,-10V} to 10V, +while they are {0,-2V} to 2V, and {0,-4V} to 4V on the MAX199. + +Platform data +------------- + +The MAX197 platform data (defined in linux/platform_data/max197.h) should be +filled with a pointer to a conversion function, defined like: + +    int convert(u8 ctrl); + +ctrl is the control byte to write to start a new conversion. +On success, the function must return the 12-bit raw value read from the chip, +or a negative error code otherwise. + +Control byte format: + +Bit     Name       Description +7,6     PD1,PD0    Clock and Power-Down modes +5       ACQMOD     Internal or External Controlled Acquisition +4       RNG        Full-scale voltage magnitude at the input +3       BIP        Unipolar or Bipolar conversion mode +2,1,0   A2,A1,A0   Channel + +Sysfs interface +--------------- + +* in[0-7]_input: The conversion value for the corresponding channel. +                 RO + +* in[0-7]_min:   The lower limit (in mV) for the corresponding channel. +                 For the MAX197, it will be adjusted to -10000, -5000, or 0. +                 For the MAX199, it will be adjusted to -4000, -2000, or 0. +                 RW + +* in[0-7]_max:   The higher limit (in mV) for the corresponding channel. +                 For the MAX197, it will be adjusted to 0, 5000, or 10000. +                 For the MAX199, it will be adjusted to 0, 2000, or 4000. +                 RW diff --git a/Documentation/hwmon/max34440 b/Documentation/hwmon/max34440 new file mode 100644 index 00000000000..37cbf472a19 --- /dev/null +++ b/Documentation/hwmon/max34440 @@ -0,0 +1,127 @@ +Kernel driver max34440 +====================== + +Supported chips: +  * Maxim MAX34440 +    Prefixes: 'max34440' +    Addresses scanned: - +    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34440.pdf +  * Maxim MAX34441 +    PMBus 5-Channel Power-Supply Manager and Intelligent Fan Controller +    Prefixes: 'max34441' +    Addresses scanned: - +    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34441.pdf +  * Maxim MAX34446 +    PMBus Power-Supply Data Logger +    Prefixes: 'max34446' +    Addresses scanned: - +    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34446.pdf +  * Maxim MAX34460 +    PMBus 12-Channel Voltage Monitor & Sequencer +    Prefix: 'max34460' +    Addresses scanned: - +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX34460.pdf +  * Maxim MAX34461 +    PMBus 16-Channel Voltage Monitor & Sequencer +    Prefix: 'max34461' +    Addresses scanned: - +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX34461.pdf + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +This driver supports hardware montoring for Maxim MAX34440 PMBus 6-Channel +Power-Supply Manager, MAX34441 PMBus 5-Channel Power-Supply Manager +and Intelligent Fan Controller, and MAX34446 PMBus Power-Supply Data Logger. +It also supports the MAX34460 and MAX34461 PMBus Voltage Monitor & Sequencers. +The MAX34460 supports 12 voltage channels, and the MAX34461 supports 16 voltage +channels. + +The driver is a client driver to the core PMBus driver. Please see +Documentation/hwmon/pmbus for details on PMBus client drivers. + + +Usage Notes +----------- + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. + +For MAX34446, the value of the currX_crit attribute determines if current or +voltage measurement is enabled for a given channel. Voltage measurement is +enabled if currX_crit is set to 0; current measurement is enabled if the +attribute is set to a positive value. Power measurement is only enabled if +channel 1 (3) is configured for voltage measurement, and channel 2 (4) is +configured for current measurement. + + +Platform data support +--------------------- + +The driver supports standard PMBus driver platform data. + + +Sysfs entries +------------- + +The following attributes are supported. Limits are read-write; all other +attributes are read-only. + +in[1-6]_label		"vout[1-6]". +in[1-6]_input		Measured voltage. From READ_VOUT register. +in[1-6]_min		Minimum Voltage. From VOUT_UV_WARN_LIMIT register. +in[1-6]_max		Maximum voltage. From VOUT_OV_WARN_LIMIT register. +in[1-6]_lcrit		Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register. +in[1-6]_crit		Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. +in[1-6]_min_alarm	Voltage low alarm. From VOLTAGE_UV_WARNING status. +in[1-6]_max_alarm	Voltage high alarm. From VOLTAGE_OV_WARNING status. +in[1-6]_lcrit_alarm	Voltage critical low alarm. From VOLTAGE_UV_FAULT status. +in[1-6]_crit_alarm	Voltage critical high alarm. From VOLTAGE_OV_FAULT status. +in[1-6]_lowest		Historical minimum voltage. +in[1-6]_highest		Historical maximum voltage. +in[1-6]_reset_history	Write any value to reset history. + +			MAX34446 only supports in[1-4]. + +curr[1-6]_label		"iout[1-6]". +curr[1-6]_input		Measured current. From READ_IOUT register. +curr[1-6]_max		Maximum current. From IOUT_OC_WARN_LIMIT register. +curr[1-6]_crit		Critical maximum current. From IOUT_OC_FAULT_LIMIT register. +curr[1-6]_max_alarm	Current high alarm. From IOUT_OC_WARNING status. +curr[1-6]_crit_alarm	Current critical high alarm. From IOUT_OC_FAULT status. +curr[1-4]_average	Historical average current (MAX34446 only). +curr[1-6]_highest	Historical maximum current. +curr[1-6]_reset_history	Write any value to reset history. + +			in6 and curr6 attributes only exist for MAX34440. +			MAX34446 only supports curr[1-4]. + +power[1,3]_label	"pout[1,3]" +power[1,3]_input	Measured power. +power[1,3]_average	Historical average power. +power[1,3]_highest	Historical maximum power. + +			Power attributes only exist for MAX34446. + +temp[1-8]_input		Measured temperatures. From READ_TEMPERATURE_1 register. +			temp1 is the chip's internal temperature. temp2..temp5 +			are remote I2C temperature sensors. For MAX34441, temp6 +			is a remote thermal-diode sensor. For MAX34440, temp6..8 +			are remote I2C temperature sensors. +temp[1-8]_max		Maximum temperature. From OT_WARN_LIMIT register. +temp[1-8]_crit		Critical high temperature. From OT_FAULT_LIMIT register. +temp[1-8]_max_alarm	Temperature high alarm. +temp[1-8]_crit_alarm	Temperature critical high alarm. +temp[1-8]_average	Historical average temperature (MAX34446 only). +temp[1-8]_highest	Historical maximum temperature. +temp[1-8]_reset_history	Write any value to reset history. + +			temp7 and temp8 attributes only exist for MAX34440. +			MAX34446 only supports temp[1-3]. + +MAX34460 supports attribute groups in[1-12] and temp[1-5]. +MAX34461 supports attribute groups in[1-16] and temp[1-5]. diff --git a/Documentation/hwmon/max6639 b/Documentation/hwmon/max6639 new file mode 100644 index 00000000000..dc49f8be716 --- /dev/null +++ b/Documentation/hwmon/max6639 @@ -0,0 +1,49 @@ +Kernel driver max6639 +===================== + +Supported chips: +  * Maxim MAX6639 +    Prefix: 'max6639' +    Addresses scanned: I2C 0x2c, 0x2e, 0x2f +    Datasheet: http://pdfserv.maxim-ic.com/en/ds/MAX6639.pdf + +Authors: +    He Changqing <hechangqing@semptian.com> +    Roland Stigge <stigge@antcom.de> + +Description +----------- + +This driver implements support for the Maxim MAX6639. This chip is a 2-channel +temperature monitor with dual PWM fan speed controller. It can monitor its own +temperature and one external diode-connected transistor or two external +diode-connected transistors. + +The following device attributes are implemented via sysfs: + +Attribute              R/W  Contents +---------------------------------------------------------------------------- +temp1_input            R    Temperature channel 1 input (0..150 C) +temp2_input            R    Temperature channel 2 input (0..150 C) +temp1_fault            R    Temperature channel 1 diode fault +temp2_fault            R    Temperature channel 2 diode fault +temp1_max              RW   Set THERM temperature for input 1 +                            (in C, see datasheet) +temp2_max              RW   Set THERM temperature for input 2 +temp1_crit             RW   Set ALERT temperature for input 1 +temp2_crit             RW   Set ALERT temperature for input 2 +temp1_emergency        RW   Set OT temperature for input 1 +                            (in C, see datasheet) +temp2_emergency        RW   Set OT temperature for input 2 +pwm1                   RW   Fan 1 target duty cycle (0..255) +pwm2                   RW   Fan 2 target duty cycle (0..255) +fan1_input             R    TACH1 fan tachometer input (in RPM) +fan2_input             R    TACH2 fan tachometer input (in RPM) +fan1_fault             R    Fan 1 fault +fan2_fault             R    Fan 2 fault +temp1_max_alarm        R    Alarm on THERM temperature on channel 1 +temp2_max_alarm        R    Alarm on THERM temperature on channel 2 +temp1_crit_alarm       R    Alarm on ALERT temperature on channel 1 +temp2_crit_alarm       R    Alarm on ALERT temperature on channel 2 +temp1_emergency_alarm  R    Alarm on OT temperature on channel 1 +temp2_emergency_alarm  R    Alarm on OT temperature on channel 2 diff --git a/Documentation/hwmon/max6642 b/Documentation/hwmon/max6642 new file mode 100644 index 00000000000..afbd3e4942e --- /dev/null +++ b/Documentation/hwmon/max6642 @@ -0,0 +1,21 @@ +Kernel driver max6642 +===================== + +Supported chips: +  * Maxim MAX6642 +    Prefix: 'max6642' +    Addresses scanned: I2C 0x48-0x4f +    Datasheet: Publicly available at the Maxim website +               http://datasheets.maxim-ic.com/en/ds/MAX6642.pdf + +Authors: +        Per Dalen <per.dalen@appeartv.com> + +Description +----------- + +The MAX6642 is a digital temperature sensor. It senses its own temperature as +well as the temperature on one external diode. + +All temperature values are given in degrees Celsius. Resolution +is 0.25 degree for the local temperature and for the remote temperature. diff --git a/Documentation/hwmon/max6650 b/Documentation/hwmon/max6650 index 8be7beb9e3e..58d9644a2bd 100644 --- a/Documentation/hwmon/max6650 +++ b/Documentation/hwmon/max6650 @@ -2,23 +2,27 @@ Kernel driver max6650  =====================  Supported chips: -  * Maxim 6650 / 6651 +  * Maxim MAX6650      Prefix: 'max6650' -    Addresses scanned: I2C 0x1b, 0x1f, 0x48, 0x4b +    Addresses scanned: none +    Datasheet: http://pdfserv.maxim-ic.com/en/ds/MAX6650-MAX6651.pdf +  * Maxim MAX6651 +    Prefix: 'max6651' +    Addresses scanned: none      Datasheet: http://pdfserv.maxim-ic.com/en/ds/MAX6650-MAX6651.pdf  Authors: -    Hans J. Koch <hjk@linutronix.de> +    Hans J. Koch <hjk@hansjkoch.de>      John Morris <john.morris@spirentcom.com>      Claus Gindhart <claus.gindhart@kontron.com>  Description  ----------- -This driver implements support for the Maxim 6650/6651 +This driver implements support for the Maxim MAX6650 and MAX6651. -The 2 devices are very similar, but the Maxim 6550 has a reduced feature -set, e.g. only one fan-input, instead of 4 for the 6651. +The 2 devices are very similar, but the MAX6550 has a reduced feature +set, e.g. only one fan-input, instead of 4 for the MAX6651.  The driver is not able to distinguish between the 2 devices. @@ -36,6 +40,13 @@ fan1_div	rw	sets the speed range the inputs can handle. Legal  			values are 1, 2, 4, and 8. Use lower values for  			faster fans. +Usage notes +----------- + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. +  Module parameters  ----------------- diff --git a/Documentation/hwmon/max6697 b/Documentation/hwmon/max6697 new file mode 100644 index 00000000000..6594177eded --- /dev/null +++ b/Documentation/hwmon/max6697 @@ -0,0 +1,58 @@ +Kernel driver max6697 +===================== + +Supported chips: +  * Maxim MAX6581 +    Prefix: 'max6581' +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX6581.pdf +  * Maxim MAX6602 +    Prefix: 'max6602' +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX6602.pdf +  * Maxim MAX6622 +    Prefix: 'max6622' +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX6622.pdf +  * Maxim MAX6636 +    Prefix: 'max6636' +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX6636.pdf +  * Maxim MAX6689 +    Prefix: 'max6689' +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX6689.pdf +  * Maxim MAX6693 +    Prefix: 'max6693' +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX6693.pdf +  * Maxim MAX6694 +    Prefix: 'max6694' +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX6694.pdf +  * Maxim MAX6697 +    Prefix: 'max6697' +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX6697.pdf +  * Maxim MAX6698 +    Prefix: 'max6698' +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX6698.pdf +  * Maxim MAX6699 +    Prefix: 'max6699' +    Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX6699.pdf + +Author: +    Guenter Roeck <linux@roeck-us.net> + +Description +----------- + +This driver implements support for several MAX6697 compatible temperature sensor +chips. The chips support one local temperature sensor plus four, six, or seven +remote temperature sensors. Remote temperature sensors are diode-connected +thermal transitors, except for MAX6698 which supports three diode-connected +thermal transistors plus three thermistors in addition to the local temperature +sensor. + +The driver provides the following sysfs attributes. temp1 is the local (chip) +temperature, temp[2..n] are remote temperatures. The actually supported +per-channel attributes are chip type and channel dependent. + +tempX_input      RO temperature +tempX_max        RW temperature maximum threshold +tempX_max_alarm  RO temperature maximum threshold alarm +tempX_crit       RW temperature critical threshold +tempX_crit_alarm RO temperature critical threshold alarm +tempX_fault      RO temperature diode fault (remote sensors only) diff --git a/Documentation/hwmon/max8688 b/Documentation/hwmon/max8688 new file mode 100644 index 00000000000..e78078638b9 --- /dev/null +++ b/Documentation/hwmon/max8688 @@ -0,0 +1,75 @@ +Kernel driver max8688 +===================== + +Supported chips: +  * Maxim MAX8688 +    Prefix: 'max8688' +    Addresses scanned: - +    Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX8688.pdf + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +This driver supports hardware montoring for Maxim MAX8688 Digital Power-Supply +Controller/Monitor with PMBus Interface. + +The driver is a client driver to the core PMBus driver. Please see +Documentation/hwmon/pmbus for details on PMBus client drivers. + + +Usage Notes +----------- + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. + + +Platform data support +--------------------- + +The driver supports standard PMBus driver platform data. + + +Sysfs entries +------------- + +The following attributes are supported. Limits are read-write; all other +attributes are read-only. + +in1_label		"vout1" +in1_input		Measured voltage. From READ_VOUT register. +in1_min			Minimum Voltage. From VOUT_UV_WARN_LIMIT register. +in1_max			Maximum voltage. From VOUT_OV_WARN_LIMIT register. +in1_lcrit		Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register. +in1_crit		Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. +in1_min_alarm		Voltage low alarm. From VOLTAGE_UV_WARNING status. +in1_max_alarm		Voltage high alarm. From VOLTAGE_OV_WARNING status. +in1_lcrit_alarm		Voltage critical low alarm. From VOLTAGE_UV_FAULT status. +in1_crit_alarm		Voltage critical high alarm. From VOLTAGE_OV_FAULT status. +in1_highest		Historical maximum voltage. +in1_reset_history	Write any value to reset history. + +curr1_label		"iout1" +curr1_input		Measured current. From READ_IOUT register. +curr1_max		Maximum current. From IOUT_OC_WARN_LIMIT register. +curr1_crit		Critical maximum current. From IOUT_OC_FAULT_LIMIT register. +curr1_max_alarm		Current high alarm. From IOUT_OC_WARN_LIMIT register. +curr1_crit_alarm	Current critical high alarm. From IOUT_OC_FAULT status. +curr1_highest		Historical maximum current. +curr1_reset_history	Write any value to reset history. + +temp1_input		Measured temperature. From READ_TEMPERATURE_1 register. +temp1_max		Maximum temperature. From OT_WARN_LIMIT register. +temp1_crit		Critical high temperature. From OT_FAULT_LIMIT register. +temp1_max_alarm		Chip temperature high alarm. Set by comparing +			READ_TEMPERATURE_1 with OT_WARN_LIMIT if TEMP_OT_WARNING +			status is set. +temp1_crit_alarm	Chip temperature critical high alarm. Set by comparing +			READ_TEMPERATURE_1 with OT_FAULT_LIMIT if TEMP_OT_FAULT +			status is set. +temp1_highest		Historical maximum temperature. +temp1_reset_history	Write any value to reset history. diff --git a/Documentation/hwmon/mc13783-adc b/Documentation/hwmon/mc13783-adc index 044531a8640..d0e7b3fa9e7 100644 --- a/Documentation/hwmon/mc13783-adc +++ b/Documentation/hwmon/mc13783-adc @@ -3,8 +3,11 @@ Kernel driver mc13783-adc  Supported chips:    * Freescale Atlas MC13783 -    Prefix: 'mc13783_adc' +    Prefix: 'mc13783'      Datasheet: http://www.freescale.com/files/rf_if/doc/data_sheet/MC13783.pdf?fsrch=1 +  * Freescale Atlas MC13892 +    Prefix: 'mc13892' +    Datasheet: http://cache.freescale.com/files/analog/doc/data_sheet/MC13892.pdf?fsrch=1&sr=1  Authors:      Sascha Hauer <s.hauer@pengutronix.de> @@ -13,20 +16,21 @@ Authors:  Description  ----------- -The Freescale MC13783 is a Power Management and Audio Circuit. Among -other things it contains a 10-bit A/D converter. The converter has 16 -channels which can be used in different modes. -The A/D converter has a resolution of 2.25mV. Channels 0-4 have -a dedicated meaning with chip internal scaling applied. Channels 5-7 -can be used as general purpose inputs or alternatively in a dedicated -mode. Channels 12-15 are occupied by the touchscreen if it's active. +The Freescale MC13783 and MC13892 are Power Management and Audio Circuits. +Among other things they contain a 10-bit A/D converter. The converter has 16 +(MC13783) resp. 12 (MC13892) channels which can be used in different modes. The +A/D converter has a resolution of 2.25mV. -Currently the driver only supports channels 2 and 5-15 with no alternative -modes for channels 5-7. +Some channels can be used as General Purpose inputs or in a dedicated mode with +a chip internal scaling applied . -See this table for the meaning of the different channels and their chip -internal scaling: +Currently the driver only supports the Application Supply channel (BP / BPSNS), +the General Purpose inputs and touchscreen. +See the following tables for the meaning of the different channels and their +chip internal scaling: + +MC13783:  Channel	Signal						Input Range	Scaling  -------------------------------------------------------------------------------  0	Battery Voltage (BATT)				2.50 - 4.65V	-2.40V @@ -34,7 +38,7 @@ Channel	Signal						Input Range	Scaling  2	Application Supply (BP)				2.50 - 4.65V	-2.40V  3	Charger Voltage (CHRGRAW)			0 - 10V /	/5  							0 - 20V		/10 -4	Charger Current (CHRGISNSP-CHRGISNSN)		-0.25V - 0.25V	x4 +4	Charger Current (CHRGISNSP-CHRGISNSN)		-0.25 - 0.25V	x4  5	General Purpose ADIN5 / Battery Pack Thermistor	0 - 2.30V	No  6	General Purpose ADIN6 / Backup Voltage (LICELL)	0 - 2.30V /	No /  							1.50 - 3.50V	-1.20V @@ -48,3 +52,23 @@ Channel	Signal						Input Range	Scaling  13	General Purpose TSX2 / Touchscreen X-plate 2	0 - 2.30V	No  14	General Purpose TSY1 / Touchscreen Y-plate 1	0 - 2.30V	No  15	General Purpose TSY2 / Touchscreen Y-plate 2	0 - 2.30V	No + +MC13892: +Channel	Signal						Input Range	Scaling +------------------------------------------------------------------------------- +0	Battery Voltage (BATT)				0 - 4.8V	/2 +1	Battery Current (BATT - BATTISNSCC)		-60 - 60 mV	x20 +2	Application Supply (BPSNS)			0 - 4.8V	/2 +3	Charger Voltage (CHRGRAW)			0 - 12V /	/5 +							0 - 20V		/10 +4	Charger Current (CHRGISNS-BPSNS) /		-0.3 - 0.3V /	x4 / +	Touchscreen X-plate 1				0 - 2.4V	No +5	General Purpose ADIN5 /	Battery Pack Thermistor	0 - 2.4V	No +6	General Purpose ADIN6 / Backup Voltage (LICELL)	0 - 2.4V /	No +	Backup Voltage (LICELL)                        	0 - 3.6V	x2/3 +7	General Purpose ADIN7 / UID / Die Temperature	0 - 2.4V /	No / +							0 - 4.8V	/2 +12	General Purpose TSX1 / Touchscreen X-plate 1	0 - 2.4V	No +13	General Purpose TSX2 / Touchscreen X-plate 2	0 - 2.4V	No +14	General Purpose TSY1 / Touchscreen Y-plate 1	0 - 2.4V	No +15	General Purpose TSY2 / Touchscreen Y-plate 2	0 - 2.4V	No diff --git a/Documentation/hwmon/mcp3021 b/Documentation/hwmon/mcp3021 new file mode 100644 index 00000000000..74a6b72adf5 --- /dev/null +++ b/Documentation/hwmon/mcp3021 @@ -0,0 +1,29 @@ +Kernel driver MCP3021 +====================== + +Supported chips: +  * Microchip Technology MCP3021 +    Prefix: 'mcp3021' +    Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/21805a.pdf +  * Microchip Technology MCP3221 +    Prefix: 'mcp3221' +    Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/21732c.pdf + +Authors: +   Mingkai Hu +   Sven Schuchmann <schuchmann@schleissheimer.de> + +Description +----------- + +This driver implements support for the Microchip Technology MCP3021 and +MCP3221 chip. + +The Microchip Technology Inc. MCP3021 is a successive approximation A/D +converter (ADC) with 10-bit resolution. The MCP3221 has 12-bit resolution. + +These devices provide one single-ended input with very low power consumption. +Communication to the MCP3021/MCP3221  is performed using a 2-wire I2C +compatible interface. Standard (100 kHz) and Fast (400 kHz) I2C modes are +available. The default I2C device address is 0x4d (contact the Microchip +factory for additional address options). diff --git a/Documentation/hwmon/nct6683 b/Documentation/hwmon/nct6683 new file mode 100644 index 00000000000..c1301d4300c --- /dev/null +++ b/Documentation/hwmon/nct6683 @@ -0,0 +1,57 @@ +Kernel driver nct6683 +===================== + +Supported chips: +  * Nuvoton NCT6683D +    Prefix: 'nct6683' +    Addresses scanned: ISA address retrieved from Super I/O registers +    Datasheet: Available from Nuvoton upon request + +Authors: +        Guenter Roeck <linux@roeck-us.net> + +Description +----------- + +This driver implements support for the Nuvoton NCT6683D eSIO chip. + +The chips implement up to shared 32 temperature and voltage sensors. +It supports up to 16 fan rotation sensors and up to 8 fan control engines. + +Temperatures are measured in degrees Celsius. Measurement resolution is +0.5 degrees C. + +Voltage sensors (also known as IN sensors) report their values in millivolts. + +Fan rotation speeds are reported in RPM (rotations per minute). + +Usage Note +---------- + +Limit register locations on Intel boards with EC firmware version 1.0 +build date 04/03/13 do not match the register locations in the Nuvoton +datasheet. Nuvoton confirms that Intel uses a special firmware version +with different register addresses. The specification describing the Intel +firmware is held under NDA by Nuvoton and Intel and not available +to the public. + +Some of the register locations can be reverse engineered; others are too +well hidden. Given this, writing any values from the operating system is +considered too risky with this firmware and has been disabled. All limits +must all be written from the BIOS. + +The driver has only been tested with the Intel firmware, and by default +only instantiates on Intel boards. To enable it on non-Intel boards, +set the 'force' module parameter to 1. + +Tested Boards and Firmware Versions +----------------------------------- + +The driver has been reported to work with the following boards and +firmware versions. + +Board		Firmware version +--------------------------------------------------------------- +Intel DH87RL	NCT6683D EC firmware version 1.0 build 04/03/13 +Intel DH87MC	NCT6683D EC firmware version 1.0 build 04/03/13 +Intel DB85FL	NCT6683D EC firmware version 1.0 build 04/03/13 diff --git a/Documentation/hwmon/nct6775 b/Documentation/hwmon/nct6775 new file mode 100644 index 00000000000..4e9ef60e8c6 --- /dev/null +++ b/Documentation/hwmon/nct6775 @@ -0,0 +1,188 @@ +Note +==== + +This driver supersedes the NCT6775F and NCT6776F support in the W83627EHF +driver. + +Kernel driver NCT6775 +===================== + +Supported chips: +  * Nuvoton NCT5572D/NCT6771F/NCT6772F/NCT6775F/W83677HG-I +    Prefix: 'nct6775' +    Addresses scanned: ISA address retrieved from Super I/O registers +    Datasheet: Available from Nuvoton upon request +  * Nuvoton NCT5577D/NCT6776D/NCT6776F +    Prefix: 'nct6776' +    Addresses scanned: ISA address retrieved from Super I/O registers +    Datasheet: Available from Nuvoton upon request +  * Nuvoton NCT5532D/NCT6779D +    Prefix: 'nct6779' +    Addresses scanned: ISA address retrieved from Super I/O registers +    Datasheet: Available from Nuvoton upon request + +Authors: +        Guenter Roeck <linux@roeck-us.net> + +Description +----------- + +This driver implements support for the Nuvoton NCT6775F, NCT6776F, and NCT6779D +and compatible super I/O chips. + +The chips support up to 25 temperature monitoring sources. Up to 6 of those are +direct temperature sensor inputs, the others are special sources such as PECI, +PCH, and SMBUS. Depending on the chip type, 2 to 6 of the temperature sources +can be monitored and compared against minimum, maximum, and critical +temperatures. The driver reports up to 10 of the temperatures to the user. +There are 4 to 5 fan rotation speed sensors, 8 to 15 analog voltage sensors, +one VID, alarms with beep warnings (control unimplemented), and some automatic +fan regulation strategies (plus manual fan control mode). + +The temperature sensor sources on all chips are configurable. The configured +source for each of the temperature sensors is provided in tempX_label. + +Temperatures are measured in degrees Celsius and measurement resolution is +either 1 degC or 0.5 degC, depending on the temperature source and +configuration. An alarm is triggered when the temperature gets higher than +the high limit; it stays on until the temperature falls below the hysteresis +value. Alarms are only supported for temp1 to temp6, depending on the chip type. + +Fan rotation speeds are reported in RPM (rotations per minute). An alarm is +triggered if the rotation speed has dropped below a programmable limit. On +NCT6775F, fan readings can be divided by a programmable divider (1, 2, 4, 8, +16, 32, 64 or 128) to give the readings more range or accuracy; the other chips +do not have a fan speed divider. The driver sets the most suitable fan divisor +itself; specifically, it increases the divider value each time a fan speed +reading returns an invalid value, and it reduces it if the fan speed reading +is lower than optimal. Some fans might not be present because they share pins +with other functions. + +Voltage sensors (also known as IN sensors) report their values in millivolts. +An alarm is triggered if the voltage has crossed a programmable minimum +or maximum limit. + +The driver supports automatic fan control mode known as Thermal Cruise. +In this mode, the chip attempts to keep the measured temperature in a +predefined temperature range. If the temperature goes out of range, fan +is driven slower/faster to reach the predefined range again. + +The mode works for fan1-fan5. + +sysfs attributes +---------------- + +pwm[1-5] - this file stores PWM duty cycle or DC value (fan speed) in range: +	   0 (lowest speed) to 255 (full) + +pwm[1-5]_enable - this file controls mode of fan/temperature control: +	* 0 Fan control disabled (fans set to maximum speed) +	* 1 Manual mode, write to pwm[0-5] any value 0-255 +	* 2 "Thermal Cruise" mode +	* 3 "Fan Speed Cruise" mode +	* 4 "Smart Fan III" mode (NCT6775F only) +	* 5 "Smart Fan IV" mode + +pwm[1-5]_mode - controls if output is PWM or DC level +        * 0 DC output +        * 1 PWM output + +Common fan control attributes +----------------------------- + +pwm[1-5]_temp_sel	Temperature source. Value is temperature sensor index. +			For example, select '1' for temp1_input. +pwm[1-5]_weight_temp_sel +			Secondary temperature source. Value is temperature +			sensor index. For example, select '1' for temp1_input. +			Set to 0 to disable secondary temperature control. + +If secondary temperature functionality is enabled, it is controlled with the +following attributes. + +pwm[1-5]_weight_duty_step +			Duty step size. +pwm[1-5]_weight_temp_step +			Temperature step size. With each step over +			temp_step_base, the value of weight_duty_step is added +			to the current pwm value. +pwm[1-5]_weight_temp_step_base +			Temperature at which secondary temperature control kicks +			in. +pwm[1-5]_weight_temp_step_tol +			Temperature step tolerance. + +Thermal Cruise mode (2) +----------------------- + +If the temperature is in the range defined by: + +pwm[1-5]_target_temp	Target temperature, unit millidegree Celsius +			(range 0 - 127000) +pwm[1-5]_temp_tolerance +			Target temperature tolerance, unit millidegree Celsius + +there are no changes to fan speed. Once the temperature leaves the interval, fan +speed increases (if temperature is higher that desired) or decreases (if +temperature is lower than desired), using the following limits and time +intervals. + +pwm[1-5]_start		fan pwm start value (range 1 - 255), to start fan +			when the temperature is above defined range. +pwm[1-5]_floor		lowest fan pwm (range 0 - 255) if temperature is below +			the defined range. If set to 0, the fan is expected to +			stop if the temperature is below the defined range. +pwm[1-5]_step_up_time	milliseconds before fan speed is increased +pwm[1-5]_step_down_time	milliseconds before fan speed is decreased +pwm[1-5]_stop_time	how many milliseconds must elapse to switch +			corresponding fan off (when the temperature was below +			defined range). + +Speed Cruise mode (3) +--------------------- + +This modes tries to keep the fan speed constant. + +fan[1-5]_target		Target fan speed +fan[1-5]_tolerance +			Target speed tolerance + + +Untested; use at your own risk. + +Smart Fan IV mode (5) +--------------------- + +This mode offers multiple slopes to control the fan speed. The slopes can be +controlled by setting the pwm and temperature attributes. When the temperature +rises, the chip will calculate the DC/PWM output based on the current slope. +There are up to seven data points depending on the chip type. Subsequent data +points should be set to higher temperatures and higher pwm values to achieve +higher fan speeds with increasing temperature. The last data point reflects +critical temperature mode, in which the fans should run at full speed. + +pwm[1-5]_auto_point[1-7]_pwm +			pwm value to be set if temperature reaches matching +			temperature range. +pwm[1-5]_auto_point[1-7]_temp +			Temperature over which the matching pwm is enabled. +pwm[1-5]_temp_tolerance +			Temperature tolerance, unit millidegree Celsius +pwm[1-5]_crit_temp_tolerance +			Temperature tolerance for critical temperature, +			unit millidegree Celsius + +pwm[1-5]_step_up_time	milliseconds before fan speed is increased +pwm[1-5]_step_down_time	milliseconds before fan speed is decreased + +Usage Notes +----------- + +On various ASUS boards with NCT6776F, it appears that CPUTIN is not really +connected to anything and floats, or that it is connected to some non-standard +temperature measurement device. As a result, the temperature reported on CPUTIN +will not reflect a usable value. It often reports unreasonably high +temperatures, and in some cases the reported temperature declines if the actual +temperature increases (similar to the raw PECI temperature value - see PECI +specification for details). CPUTIN should therefore be be ignored on ASUS +boards. The CPU temperature on ASUS boards is reported from PECI 0. diff --git a/Documentation/hwmon/ntc_thermistor b/Documentation/hwmon/ntc_thermistor new file mode 100644 index 00000000000..057b77029f2 --- /dev/null +++ b/Documentation/hwmon/ntc_thermistor @@ -0,0 +1,93 @@ +Kernel driver ntc_thermistor +================= + +Supported thermistors from Murata: +* Murata NTC Thermistors NCP15WB473, NCP18WB473, NCP21WB473, NCP03WB473, NCP15WL333 +  Prefixes: 'ncp15wb473', 'ncp18wb473', 'ncp21wb473', 'ncp03wb473', 'ncp15wl333' +  Datasheet: Publicly available at Murata + +Other NTC thermistors can be supported simply by adding compensation +tables; e.g., NCP15WL333 support is added by the table ncpXXwl333. + +Authors: +	MyungJoo Ham <myungjoo.ham@samsung.com> + +Description +----------- + +The NTC (Negative Temperature Coefficient) thermistor is a simple thermistor +that requires users to provide the resistance and lookup the corresponding +compensation table to get the temperature input. + +The NTC driver provides lookup tables with a linear approximation function +and four circuit models with an option not to use any of the four models. + +The four circuit models provided are: + +	$: resister, [TH]: the thermistor + + 1. connect = NTC_CONNECTED_POSITIVE, pullup_ohm > 0 + +   [pullup_uV] +       |    | +      [TH]  $ (pullup_ohm) +       |    | +       +----+-----------------------[read_uV] +       | +       $ (pulldown_ohm) +       | +      --- (ground) + + 2. connect = NTC_CONNECTED_POSITIVE, pullup_ohm = 0 (not-connected) + +   [pullup_uV] +       | +      [TH] +       | +       +----------------------------[read_uV] +       | +       $ (pulldown_ohm) +       | +      --- (ground) + + 3. connect = NTC_CONNECTED_GROUND, pulldown_ohm > 0 + +   [pullup_uV] +       | +       $ (pullup_ohm) +       | +       +----+-----------------------[read_uV] +       |    | +      [TH]  $ (pulldown_ohm) +       |    | +      -------- (ground) + + 4. connect = NTC_CONNECTED_GROUND, pulldown_ohm = 0 (not-connected) + +   [pullup_uV] +       | +       $ (pullup_ohm) +       | +       +----------------------------[read_uV] +       | +      [TH] +       | +      --- (ground) + +When one of the four circuit models is used, read_uV, pullup_uV, pullup_ohm, +pulldown_ohm, and connect should be provided. When none of the four models +are suitable or the user can get the resistance directly, the user should +provide read_ohm and _not_ provide the others. + +Sysfs Interface +--------------- +name		the mandatory global attribute, the thermistor name. + +temp1_type	always 4 (thermistor) +		RO + +temp1_input	measure the temperature and provide the measured value. +		(reading this file initiates the reading procedure.) +		RO + +Note that each NTC thermistor has only _one_ thermistor; thus, only temp1 exists. diff --git a/Documentation/hwmon/pc87360 b/Documentation/hwmon/pc87360 index cbac32b59c8..d5f5cf16ce5 100644 --- a/Documentation/hwmon/pc87360 +++ b/Documentation/hwmon/pc87360 @@ -7,7 +7,7 @@ Supported chips:      Addresses scanned: none, address read from Super I/O config space      Datasheets: No longer available -Authors: Jean Delvare <khali@linux-fr.org> +Authors: Jean Delvare <jdelvare@suse.de>  Thanks to Sandeep Mehta, Tonko de Rooy and Daniel Ceregatti for testing.  Thanks to Rudolf Marek for helping me investigate conversion issues. diff --git a/Documentation/hwmon/pc87427 b/Documentation/hwmon/pc87427 index 8fdd08c9e48..c313eb66e08 100644 --- a/Documentation/hwmon/pc87427 +++ b/Documentation/hwmon/pc87427 @@ -7,7 +7,7 @@ Supported chips:      Addresses scanned: none, address read from Super I/O config space      Datasheet: No longer available -Author: Jean Delvare <khali@linux-fr.org> +Author: Jean Delvare <jdelvare@suse.de>  Thanks to Amir Habibi at Candelis for setting up a test system, and to  Michael Kress for testing several iterations of this driver. diff --git a/Documentation/hwmon/pcf8591 b/Documentation/hwmon/pcf8591 index ac020b3bb7b..447c0702c0e 100644 --- a/Documentation/hwmon/pcf8591 +++ b/Documentation/hwmon/pcf8591 @@ -11,7 +11,7 @@ Supported chips:  Authors:          Aurelien Jarno <aurelien@aurel32.net>          valuable contributions by Jan M. Sendler <sendler@sendler.de>, -        Jean Delvare <khali@linux-fr.org> +        Jean Delvare <jdelvare@suse.de>  Description diff --git a/Documentation/hwmon/pkgtemp b/Documentation/hwmon/pkgtemp deleted file mode 100644 index c8e1fb0fadd..00000000000 --- a/Documentation/hwmon/pkgtemp +++ /dev/null @@ -1,36 +0,0 @@ -Kernel driver pkgtemp -====================== - -Supported chips: -  * Intel family -    Prefix: 'pkgtemp' -    CPUID: -    Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual -               Volume 3A: System Programming Guide - -Author: Fenghua Yu - -Description ------------ - -This driver permits reading package level temperature sensor embedded inside -Intel CPU package. The sensors can be in core, uncore, memory controller, or -other components in a package. The feature is first implemented in Intel Sandy -Bridge platform. - -Temperature is measured in degrees Celsius and measurement resolution is -1 degree C. Valid temperatures are from 0 to TjMax degrees C, because the actual -value of temperature register is in fact a delta from TjMax. - -Temperature known as TjMax is the maximum junction temperature of package. -We get this from MSR_IA32_TEMPERATURE_TARGET. If the MSR is not accessible, -we define TjMax as 100 degrees Celsius. At this temperature, protection -mechanism will perform actions to forcibly cool down the package. Alarm -may be raised, if the temperature grows enough (more than TjMax) to trigger -the Out-Of-Spec bit. Following table summarizes the exported sysfs files: - -temp1_input	  - Package temperature (in millidegrees Celsius). -temp1_max        - All cooling devices should be turned on. -temp1_crit	  - Maximum junction temperature (in millidegrees Celsius). -temp1_crit_alarm - Set when Out-of-spec bit is set, never clears. -		    Correct CPU operation is no longer guaranteed. diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus new file mode 100644 index 00000000000..cf756ed48ff --- /dev/null +++ b/Documentation/hwmon/pmbus @@ -0,0 +1,213 @@ +Kernel driver pmbus +==================== + +Supported chips: +  * Ericsson BMR453, BMR454 +    Prefixes: 'bmr453', 'bmr454' +    Addresses scanned: - +    Datasheet: + http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146395 +  * ON Semiconductor ADP4000, NCP4200, NCP4208 +    Prefixes: 'adp4000', 'ncp4200', 'ncp4208' +    Addresses scanned: - +    Datasheets: +	http://www.onsemi.com/pub_link/Collateral/ADP4000-D.PDF +	http://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDF +	http://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDF +  * Lineage Power +    Prefixes: 'mdt040', 'pdt003', 'pdt006', 'pdt012', 'udt020' +    Addresses scanned: - +    Datasheets: +	http://www.lineagepower.com/oem/pdf/PDT003A0X.pdf +	http://www.lineagepower.com/oem/pdf/PDT006A0X.pdf +	http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf +	http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf +	http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf +  * Texas Instruments TPS40400, TPS40422 +    Prefixes: 'tps40400', 'tps40422' +    Addresses scanned: - +    Datasheets: +	http://www.ti.com/lit/gpn/tps40400 +	http://www.ti.com/lit/gpn/tps40422 +  * Generic PMBus devices +    Prefix: 'pmbus' +    Addresses scanned: - +    Datasheet: n.a. + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +This driver supports hardware montoring for various PMBus compliant devices. +It supports voltage, current, power, and temperature sensors as supported +by the device. + +Each monitored channel has its own high and low limits, plus a critical +limit. + +Fan support will be added in a later version of this driver. + + +Usage Notes +----------- + +This driver does not probe for PMBus devices, since there is no register +which can be safely used to identify the chip (The MFG_ID register is not +supported by all chips), and since there is no well defined address range for +PMBus devices. You will have to instantiate the devices explicitly. + +Example: the following will load the driver for an LTC2978 at address 0x60 +on I2C bus #1: +$ modprobe pmbus +$ echo ltc2978 0x60 > /sys/bus/i2c/devices/i2c-1/new_device + + +Platform data support +--------------------- + +Support for additional PMBus chips can be added by defining chip parameters in +a new chip specific driver file. For example, (untested) code to add support for +Emerson DS1200 power modules might look as follows. + +static struct pmbus_driver_info ds1200_info = { +	.pages = 1, +	/* Note: All other sensors are in linear mode */ +	.direct[PSC_VOLTAGE_OUT] = true, +	.direct[PSC_TEMPERATURE] = true, +	.direct[PSC_CURRENT_OUT] = true, +	.m[PSC_VOLTAGE_IN] = 1, +	.b[PSC_VOLTAGE_IN] = 0, +	.R[PSC_VOLTAGE_IN] = 3, +	.m[PSC_VOLTAGE_OUT] = 1, +	.b[PSC_VOLTAGE_OUT] = 0, +	.R[PSC_VOLTAGE_OUT] = 3, +	.m[PSC_TEMPERATURE] = 1, +	.b[PSC_TEMPERATURE] = 0, +	.R[PSC_TEMPERATURE] = 3, +	.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT +		   | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT +		   | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT +		   | PMBUS_HAVE_PIN | PMBUS_HAVE_POUT +		   | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP +		   | PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12, +}; + +static int ds1200_probe(struct i2c_client *client, +			const struct i2c_device_id *id) +{ +	return pmbus_do_probe(client, id, &ds1200_info); +} + +static int ds1200_remove(struct i2c_client *client) +{ +	return pmbus_do_remove(client); +} + +static const struct i2c_device_id ds1200_id[] = { +	{"ds1200", 0}, +	{} +}; + +MODULE_DEVICE_TABLE(i2c, ds1200_id); + +/* This is the driver that will be inserted */ +static struct i2c_driver ds1200_driver = { +	.driver = { +		   .name = "ds1200", +		   }, +	.probe = ds1200_probe, +	.remove = ds1200_remove, +	.id_table = ds1200_id, +}; + +static int __init ds1200_init(void) +{ +	return i2c_add_driver(&ds1200_driver); +} + +static void __exit ds1200_exit(void) +{ +	i2c_del_driver(&ds1200_driver); +} + + +Sysfs entries +------------- + +When probing the chip, the driver identifies which PMBus registers are +supported, and determines available sensors from this information. +Attribute files only exist if respective sensors are supported by the chip. +Labels are provided to inform the user about the sensor associated with +a given sysfs entry. + +The following attributes are supported. Limits are read-write; all other +attributes are read-only. + +inX_input		Measured voltage. From READ_VIN or READ_VOUT register. +inX_min			Minimum Voltage. +			From VIN_UV_WARN_LIMIT or VOUT_UV_WARN_LIMIT register. +inX_max			Maximum voltage. +			From VIN_OV_WARN_LIMIT or VOUT_OV_WARN_LIMIT register. +inX_lcrit		Critical minimum Voltage. +			From VIN_UV_FAULT_LIMIT or VOUT_UV_FAULT_LIMIT register. +inX_crit		Critical maximum voltage. +			From VIN_OV_FAULT_LIMIT or VOUT_OV_FAULT_LIMIT register. +inX_min_alarm		Voltage low alarm. From VOLTAGE_UV_WARNING status. +inX_max_alarm		Voltage high alarm. From VOLTAGE_OV_WARNING status. +inX_lcrit_alarm		Voltage critical low alarm. +			From VOLTAGE_UV_FAULT status. +inX_crit_alarm		Voltage critical high alarm. +			From VOLTAGE_OV_FAULT status. +inX_label		"vin", "vcap", or "voutY" + +currX_input		Measured current. From READ_IIN or READ_IOUT register. +currX_max		Maximum current. +			From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT register. +currX_lcrit		Critical minimum output current. +			From IOUT_UC_FAULT_LIMIT register. +currX_crit		Critical maximum current. +			From IIN_OC_FAULT_LIMIT or IOUT_OC_FAULT_LIMIT register. +currX_alarm		Current high alarm. +			From IIN_OC_WARNING or IOUT_OC_WARNING status. +currX_max_alarm		Current high alarm. +			From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT status. +currX_lcrit_alarm	Output current critical low alarm. +			From IOUT_UC_FAULT status. +currX_crit_alarm	Current critical high alarm. +			From IIN_OC_FAULT or IOUT_OC_FAULT status. +currX_label		"iin" or "ioutY" + +powerX_input		Measured power. From READ_PIN or READ_POUT register. +powerX_cap		Output power cap. From POUT_MAX register. +powerX_max		Power limit. From PIN_OP_WARN_LIMIT or +			POUT_OP_WARN_LIMIT register. +powerX_crit		Critical output power limit. +			From POUT_OP_FAULT_LIMIT register. +powerX_alarm		Power high alarm. +			From PIN_OP_WARNING or POUT_OP_WARNING status. +powerX_crit_alarm	Output power critical high alarm. +			From POUT_OP_FAULT status. +powerX_label		"pin" or "poutY" + +tempX_input		Measured temperature. +			From READ_TEMPERATURE_X register. +tempX_min		Mimimum temperature. From UT_WARN_LIMIT register. +tempX_max		Maximum temperature. From OT_WARN_LIMIT register. +tempX_lcrit		Critical low temperature. +			From UT_FAULT_LIMIT register. +tempX_crit		Critical high temperature. +			From OT_FAULT_LIMIT register. +tempX_min_alarm		Chip temperature low alarm. Set by comparing +			READ_TEMPERATURE_X with UT_WARN_LIMIT if +			TEMP_UT_WARNING status is set. +tempX_max_alarm		Chip temperature high alarm. Set by comparing +			READ_TEMPERATURE_X with OT_WARN_LIMIT if +			TEMP_OT_WARNING status is set. +tempX_lcrit_alarm	Chip temperature critical low alarm. Set by comparing +			READ_TEMPERATURE_X with UT_FAULT_LIMIT if +			TEMP_UT_FAULT status is set. +tempX_crit_alarm	Chip temperature critical high alarm. Set by comparing +			READ_TEMPERATURE_X with OT_FAULT_LIMIT if +			TEMP_OT_FAULT status is set. diff --git a/Documentation/hwmon/pmbus-core b/Documentation/hwmon/pmbus-core new file mode 100644 index 00000000000..31e4720fed1 --- /dev/null +++ b/Documentation/hwmon/pmbus-core @@ -0,0 +1,283 @@ +PMBus core driver and internal API +================================== + +Introduction +============ + +[from pmbus.org] The Power Management Bus (PMBus) is an open standard +power-management protocol with a fully defined command language that facilitates +communication with power converters and other devices in a power system. The +protocol is implemented over the industry-standard SMBus serial interface and +enables programming, control, and real-time monitoring of compliant power +conversion products. This flexible and highly versatile standard allows for +communication between devices based on both analog and digital technologies, and +provides true interoperability which will reduce design complexity and shorten +time to market for power system designers. Pioneered by leading power supply and +semiconductor companies, this open power system standard is maintained and +promoted by the PMBus Implementers Forum (PMBus-IF), comprising 30+ adopters +with the objective to provide support to, and facilitate adoption among, users. + +Unfortunately, while PMBus commands are standardized, there are no mandatory +commands, and manufacturers can add as many non-standard commands as they like. +Also, different PMBUs devices act differently if non-supported commands are +executed. Some devices return an error, some devices return 0xff or 0xffff and +set a status error flag, and some devices may simply hang up. + +Despite all those difficulties, a generic PMBus device driver is still useful +and supported since kernel version 2.6.39. However, it was necessary to support +device specific extensions in addition to the core PMBus driver, since it is +simply unknown what new device specific functionality PMBus device developers +come up with next. + +To make device specific extensions as scalable as possible, and to avoid having +to modify the core PMBus driver repeatedly for new devices, the PMBus driver was +split into core, generic, and device specific code. The core code (in +pmbus_core.c) provides generic functionality. The generic code (in pmbus.c) +provides support for generic PMBus devices. Device specific code is responsible +for device specific initialization and, if needed, maps device specific +functionality into generic functionality. This is to some degree comparable +to PCI code, where generic code is augmented as needed with quirks for all kinds +of devices. + +PMBus device capabilities auto-detection +======================================== + +For generic PMBus devices, code in pmbus.c attempts to auto-detect all supported +PMBus commands. Auto-detection is somewhat limited, since there are simply too +many variables to consider. For example, it is almost impossible to autodetect +which PMBus commands are paged and which commands are replicated across all +pages (see the PMBus specification for details on multi-page PMBus devices). + +For this reason, it often makes sense to provide a device specific driver if not +all commands can be auto-detected. The data structures in this driver can be +used to inform the core driver about functionality supported by individual +chips. + +Some commands are always auto-detected. This applies to all limit commands +(lcrit, min, max, and crit attributes) as well as associated alarm attributes. +Limits and alarm attributes are auto-detected because there are simply too many +possible combinations to provide a manual configuration interface. + +PMBus internal API +================== + +The API between core and device specific PMBus code is defined in +drivers/hwmon/pmbus/pmbus.h. In addition to the internal API, pmbus.h defines +standard PMBus commands and virtual PMBus commands. + +Standard PMBus commands +----------------------- + +Standard PMBus commands (commands values 0x00 to 0xff) are defined in the PMBUs +specification. + +Virtual PMBus commands +---------------------- + +Virtual PMBus commands are provided to enable support for non-standard +functionality which has been implemented by several chip vendors and is thus +desirable to support. + +Virtual PMBus commands start with command value 0x100 and can thus easily be +distinguished from standard PMBus commands (which can not have values larger +than 0xff). Support for virtual PMBus commands is device specific and thus has +to be implemented in device specific code. + +Virtual commands are named PMBUS_VIRT_xxx and start with PMBUS_VIRT_BASE. All +virtual commands are word sized. + +There are currently two types of virtual commands. + +- READ commands are read-only; writes are either ignored or return an error. +- RESET commands are read/write. Reading reset registers returns zero +  (used for detection), writing any value causes the associated history to be +  reset. + +Virtual commands have to be handled in device specific driver code. Chip driver +code returns non-negative values if a virtual command is supported, or a +negative error code if not. The chip driver may return -ENODATA or any other +Linux error code in this case, though an error code other than -ENODATA is +handled more efficiently and thus preferred. Either case, the calling PMBus +core code will abort if the chip driver returns an error code when reading +or writing virtual registers (in other words, the PMBus core code will never +send a virtual command to a chip). + +PMBus driver information +------------------------ + +PMBus driver information, defined in struct pmbus_driver_info, is the main means +for device specific drivers to pass information to the core PMBus driver. +Specifically, it provides the following information. + +- For devices supporting its data in Direct Data Format, it provides coefficients +  for converting register values into normalized data. This data is usually +  provided by chip manufacturers in device datasheets. +- Supported chip functionality can be provided to the core driver. This may be +  necessary for chips which react badly if non-supported commands are executed, +  and/or to speed up device detection and initialization. +- Several function entry points are provided to support overriding and/or +  augmenting generic command execution. This functionality can be used to map +  non-standard PMBus commands to standard commands, or to augment standard +  command return values with device specific information. + +  API functions +  ------------- + +  Functions provided by chip driver +  --------------------------------- + +  All functions return the command return value (read) or zero (write) if +  successful. A return value of -ENODATA indicates that there is no manufacturer +  specific command, but that a standard PMBus command may exist. Any other +  negative return value indicates that the commands does not exist for this +  chip, and that no attempt should be made to read or write the standard +  command. + +  As mentioned above, an exception to this rule applies to virtual commands, +  which  _must_ be handled in driver specific code. See "Virtual PMBus Commands" +  above for more details. + +  Command execution in the core PMBus driver code is as follows. + +	if (chip_access_function) { +		status = chip_access_function(); +		if (status != -ENODATA) +			return status; +	} +	if (command >= PMBUS_VIRT_BASE)	/* For word commands/registers only */ +		return -EINVAL; +	return generic_access(); + +  Chip drivers may provide pointers to the following functions in struct +  pmbus_driver_info. All functions are optional. + +  int (*read_byte_data)(struct i2c_client *client, int page, int reg); + +  Read byte from page <page>, register <reg>. +  <page> may be -1, which means "current page". + +  int (*read_word_data)(struct i2c_client *client, int page, int reg); + +  Read word from page <page>, register <reg>. + +  int (*write_word_data)(struct i2c_client *client, int page, int reg, +		         u16 word); + +  Write word to page <page>, register <reg>. + +  int (*write_byte)(struct i2c_client *client, int page, u8 value); + +  Write byte to page <page>, register <reg>. +  <page> may be -1, which means "current page". + +  int (*identify)(struct i2c_client *client, struct pmbus_driver_info *info); + +  Determine supported PMBus functionality. This function is only necessary +  if a chip driver supports multiple chips, and the chip functionality is not +  pre-determined. It is currently only used by the generic pmbus driver +  (pmbus.c). + +  Functions exported by core driver +  --------------------------------- + +  Chip drivers are expected to use the following functions to read or write +  PMBus registers. Chip drivers may also use direct I2C commands. If direct I2C +  commands are used, the chip driver code must not directly modify the current +  page, since the selected page is cached in the core driver and the core driver +  will assume that it is selected. Using pmbus_set_page() to select a new page +  is mandatory. + +  int pmbus_set_page(struct i2c_client *client, u8 page); + +  Set PMBus page register to <page> for subsequent commands. + +  int pmbus_read_word_data(struct i2c_client *client, u8 page, u8 reg); + +  Read word data from <page>, <reg>. Similar to i2c_smbus_read_word_data(), but +  selects page first. + +  int pmbus_write_word_data(struct i2c_client *client, u8 page, u8 reg, +			    u16 word); + +  Write word data to <page>, <reg>. Similar to i2c_smbus_write_word_data(), but +  selects page first. + +  int pmbus_read_byte_data(struct i2c_client *client, int page, u8 reg); + +  Read byte data from <page>, <reg>. Similar to i2c_smbus_read_byte_data(), but +  selects page first. <page> may be -1, which means "current page". + +  int pmbus_write_byte(struct i2c_client *client, int page, u8 value); + +  Write byte data to <page>, <reg>. Similar to i2c_smbus_write_byte(), but +  selects page first. <page> may be -1, which means "current page". + +  void pmbus_clear_faults(struct i2c_client *client); + +  Execute PMBus "Clear Fault" command on all chip pages. +  This function calls the device specific write_byte function if defined. +  Therefore, it must _not_ be called from that function. + +  bool pmbus_check_byte_register(struct i2c_client *client, int page, int reg); + +  Check if byte register exists. Return true if the register exists, false +  otherwise. +  This function calls the device specific write_byte function if defined to +  obtain the chip status. Therefore, it must _not_ be called from that function. + +  bool pmbus_check_word_register(struct i2c_client *client, int page, int reg); + +  Check if word register exists. Return true if the register exists, false +  otherwise. +  This function calls the device specific write_byte function if defined to +  obtain the chip status. Therefore, it must _not_ be called from that function. + +  int pmbus_do_probe(struct i2c_client *client, const struct i2c_device_id *id, +                     struct pmbus_driver_info *info); + +  Execute probe function. Similar to standard probe function for other drivers, +  with the pointer to struct pmbus_driver_info as additional argument. Calls +  identify function if supported. Must only be called from device probe +  function. + +  void pmbus_do_remove(struct i2c_client *client); + +  Execute driver remove function. Similar to standard driver remove function. + +  const struct pmbus_driver_info +	*pmbus_get_driver_info(struct i2c_client *client); + +  Return pointer to struct pmbus_driver_info as passed to pmbus_do_probe(). + + +PMBus driver platform data +========================== + +PMBus platform data is defined in include/linux/i2c/pmbus.h. Platform data +currently only provides a flag field with a single bit used. + +#define PMBUS_SKIP_STATUS_CHECK (1 << 0) + +struct pmbus_platform_data { +        u32 flags;              /* Device specific flags */ +}; + + +Flags +----- + +PMBUS_SKIP_STATUS_CHECK + +During register detection, skip checking the status register for +communication or command errors. + +Some PMBus chips respond with valid data when trying to read an unsupported +register. For such chips, checking the status register is mandatory when +trying to determine if a chip register exists or not. +Other PMBus chips don't support the STATUS_CML register, or report +communication errors for no explicable reason. For such chips, checking the +status register must be disabled. + +Some i2c controllers do not support single-byte commands (write commands with +no data, i2c_smbus_write_byte()). With such controllers, clearing the status +register is impossible, and the PMBUS_SKIP_STATUS_CHECK flag must be set. diff --git a/Documentation/hwmon/sch5627 b/Documentation/hwmon/sch5627 new file mode 100644 index 00000000000..0551d266c51 --- /dev/null +++ b/Documentation/hwmon/sch5627 @@ -0,0 +1,27 @@ +Kernel driver sch5627 +===================== + +Supported chips: +  * SMSC SCH5627 +    Prefix: 'sch5627' +    Addresses scanned: none, address read from Super I/O config space +    Datasheet: Application Note available upon request + +Author: Hans de Goede <hdegoede@redhat.com> + + +Description +----------- + +SMSC SCH5627 Super I/O chips include complete hardware monitoring +capabilities. They can monitor up to 5 voltages, 4 fans and 8 temperatures. + +The SMSC SCH5627 hardware monitoring part also contains an integrated +watchdog. In order for this watchdog to function some motherboard specific +initialization most be done by the BIOS, so if the watchdog is not enabled +by the BIOS the sch5627 driver will not register a watchdog device. + +The hardware monitoring part of the SMSC SCH5627 is accessed by talking +through an embedded microcontroller. An application note describing the +protocol for communicating with the microcontroller is available upon +request. Please mail me if you want a copy. diff --git a/Documentation/hwmon/sch5636 b/Documentation/hwmon/sch5636 new file mode 100644 index 00000000000..7b0a01da071 --- /dev/null +++ b/Documentation/hwmon/sch5636 @@ -0,0 +1,34 @@ +Kernel driver sch5636 +===================== + +Supported chips: +  * SMSC SCH5636 +    Prefix: 'sch5636' +    Addresses scanned: none, address read from Super I/O config space + +Author: Hans de Goede <hdegoede@redhat.com> + + +Description +----------- + +SMSC SCH5636 Super I/O chips include an embedded microcontroller for +hardware monitoring solutions, allowing motherboard manufacturers to create +their own custom hwmon solution based upon the SCH5636. + +Currently the sch5636 driver only supports the Fujitsu Theseus SCH5636 based +hwmon solution. The sch5636 driver runs a sanity check on loading to ensure +it is dealing with a Fujitsu Theseus and not with another custom SCH5636 based +hwmon solution. + +The Fujitsu Theseus can monitor up to 5 voltages, 8 fans and 16 +temperatures. Note that the driver detects how many fan headers / +temperature sensors are actually implemented on the motherboard, so you will +likely see fewer temperature and fan inputs. + +The Fujitsu Theseus hwmon solution also contains an integrated watchdog. +This watchdog is fully supported by the sch5636 driver. + +An application note describing the Theseus' registers, as well as an +application note describing the protocol for communicating with the +microcontroller is available upon request. Please mail me if you want a copy. diff --git a/Documentation/hwmon/sht15 b/Documentation/hwmon/sht15 new file mode 100644 index 00000000000..778987d1856 --- /dev/null +++ b/Documentation/hwmon/sht15 @@ -0,0 +1,74 @@ +Kernel driver sht15 +=================== + +Authors: +  * Wouter Horre +  * Jonathan Cameron +  * Vivien Didelot <vivien.didelot@savoirfairelinux.com> +  * Jerome Oufella <jerome.oufella@savoirfairelinux.com> + +Supported chips: +  * Sensirion SHT10 +    Prefix: 'sht10' + +  * Sensirion SHT11 +    Prefix: 'sht11' + +  * Sensirion SHT15 +    Prefix: 'sht15' + +  * Sensirion SHT71 +    Prefix: 'sht71' + +  * Sensirion SHT75 +    Prefix: 'sht75' + +Datasheet: Publicly available at the Sensirion website +http://www.sensirion.ch/en/pdf/product_information/Datasheet-humidity-sensor-SHT1x.pdf + +Description +----------- + +The SHT10, SHT11, SHT15, SHT71, and SHT75 are humidity and temperature +sensors. + +The devices communicate using two GPIO lines. + +Supported resolutions for the measurements are 14 bits for temperature and 12 +bits for humidity, or 12 bits for temperature and 8 bits for humidity. + +The humidity calibration coefficients are programmed into an OTP memory on the +chip. These coefficients are used to internally calibrate the signals from the +sensors. Disabling the reload of those coefficients allows saving 10ms for each +measurement and decrease power consumption, while losing on precision. + +Some options may be set directly in the sht15_platform_data structure +or via sysfs attributes. + +Notes: +  * The regulator supply name is set to "vcc". +  * If a CRC validation fails, a soft reset command is sent, which resets +    status register to its hardware default value, but the driver will try to +    restore the previous device configuration. + +Platform data +------------- + +* checksum: +  set it to true to enable CRC validation of the readings (default to false). +* no_otp_reload: +  flag to indicate not to reload from OTP (default to false). +* low_resolution: +  flag to indicate the temp/humidity resolution to use (default to false). + +Sysfs interface +--------------- + +* temp1_input:     temperature input +* humidity1_input: humidity input +* heater_enable:   write 1 in this attribute to enable the on-chip heater, +                   0 to disable it. Be careful not to enable the heater +                   for too long. +* temp1_fault:     if 1, this means that the voltage is low (below 2.47V) and +                   measurement may be invalid. +* humidity1_fault: same as temp1_fault. diff --git a/Documentation/hwmon/sht21 b/Documentation/hwmon/sht21 new file mode 100644 index 00000000000..db17fda45c3 --- /dev/null +++ b/Documentation/hwmon/sht21 @@ -0,0 +1,49 @@ +Kernel driver sht21 +=================== + +Supported chips: +  * Sensirion SHT21 +    Prefix: 'sht21' +    Addresses scanned: none +    Datasheet: Publicly available at the Sensirion website +    http://www.sensirion.com/en/pdf/product_information/Datasheet-humidity-sensor-SHT21.pdf + +  * Sensirion SHT25 +    Prefix: 'sht21' +    Addresses scanned: none +    Datasheet: Publicly available at the Sensirion website +    http://www.sensirion.com/en/pdf/product_information/Datasheet-humidity-sensor-SHT25.pdf + +Author: +  Urs Fleisch <urs.fleisch@sensirion.com> + +Description +----------- + +The SHT21 and SHT25 are humidity and temperature sensors in a DFN package of +only 3 x 3 mm footprint and 1.1 mm height. The difference between the two +devices is the higher level of precision of the SHT25 (1.8% relative humidity, +0.2 degree Celsius) compared with the SHT21 (2.0% relative humidity, +0.3 degree Celsius). + +The devices communicate with the I2C protocol. All sensors are set to the same +I2C address 0x40, so an entry with I2C_BOARD_INFO("sht21", 0x40) can be used +in the board setup code. + +sysfs-Interface +--------------- + +temp1_input - temperature input +humidity1_input - humidity input + +Notes +----- + +The driver uses the default resolution settings of 12 bit for humidity and 14 +bit for temperature, which results in typical measurement times of 22 ms for +humidity and 66 ms for temperature. To keep self heating below 0.1 degree +Celsius, the device should not be active for more than 10% of the time, +e.g. maximum two measurements per second at the given resolution. + +Different resolutions, the on-chip heater, using the CRC checksum and reading +the serial number are not supported yet. diff --git a/Documentation/hwmon/shtc1 b/Documentation/hwmon/shtc1 new file mode 100644 index 00000000000..6b1e05458f0 --- /dev/null +++ b/Documentation/hwmon/shtc1 @@ -0,0 +1,43 @@ +Kernel driver shtc1 +=================== + +Supported chips: +  * Sensirion SHTC1 +    Prefix: 'shtc1' +    Addresses scanned: none +    Datasheet: http://www.sensirion.com/file/datasheet_shtc1 + +  * Sensirion SHTW1 +    Prefix: 'shtw1' +    Addresses scanned: none +    Datasheet: Not publicly available + +Author: +  Johannes Winkelmann <johannes.winkelmann@sensirion.com> + +Description +----------- + +This driver implements support for the Sensirion SHTC1 chip, a humidity and +temperature sensor. Temperature is measured in degrees celsius, relative +humidity is expressed as a percentage. Driver can be used as well for SHTW1 +chip, which has the same electrical interface. + +The device communicates with the I2C protocol. All sensors are set to I2C +address 0x70. See Documentation/i2c/instantiating-devices for methods to +instantiate the device. + +There are two options configurable by means of shtc1_platform_data: +1. blocking (pull the I2C clock line down while performing the measurement) or +   non-blocking mode. Blocking mode will guarantee the fastest result but +   the I2C bus will be busy during that time. By default, non-blocking mode +   is used. Make sure clock-stretching works properly on your device if you +   want to use blocking mode. +2. high or low accuracy. High accuracy is used by default and using it is +   strongly recommended. + +sysfs-Interface +--------------- + +temp1_input - temperature input +humidity1_input - humidity input diff --git a/Documentation/hwmon/smm665 b/Documentation/hwmon/smm665 index 3820fc9ca52..a341eeedab7 100644 --- a/Documentation/hwmon/smm665 +++ b/Documentation/hwmon/smm665 @@ -29,7 +29,7 @@ Supported chips:        http://www.summitmicro.com/prod_select/summary/SMM766/SMM766_2086.pdf        http://www.summitmicro.com/prod_select/summary/SMM766B/SMM766B_2122.pdf -Author: Guenter Roeck <guenter.roeck@ericsson.com> +Author: Guenter Roeck <linux@roeck-us.net>  Module Parameters @@ -150,8 +150,8 @@ in8_crit_alarm		Channel F critical alarm  in9_crit_alarm		AIN1 critical alarm  in10_crit_alarm		AIN2 critical alarm -temp1_input		Chip tempererature -temp1_min		Mimimum chip tempererature -temp1_max		Maximum chip tempererature -temp1_crit		Critical chip tempererature +temp1_input		Chip temperature +temp1_min		Mimimum chip temperature +temp1_max		Maximum chip temperature +temp1_crit		Critical chip temperature  temp1_crit_alarm	Temperature critical alarm diff --git a/Documentation/hwmon/smsc47m1 b/Documentation/hwmon/smsc47m1 index 2a13378dcf2..10a24b42068 100644 --- a/Documentation/hwmon/smsc47m1 +++ b/Documentation/hwmon/smsc47m1 @@ -25,7 +25,7 @@ Authors:          With assistance from Bruce Allen <ballen@uwm.edu>, and his          fan.c program: http://www.lsc-group.phys.uwm.edu/%7Eballen/driver/          Gabriele Gorla <gorlik@yahoo.com>, -        Jean Delvare <khali@linux-fr.org> +        Jean Delvare <jdelvare@suse.de>  Description  ----------- diff --git a/Documentation/hwmon/submitting-patches b/Documentation/hwmon/submitting-patches new file mode 100644 index 00000000000..3d1bac399a2 --- /dev/null +++ b/Documentation/hwmon/submitting-patches @@ -0,0 +1,110 @@ +	How to Get Your Patch Accepted Into the Hwmon Subsystem +	------------------------------------------------------- + +This text is a collection of suggestions for people writing patches or +drivers for the hwmon subsystem. Following these suggestions will greatly +increase the chances of your change being accepted. + + +1. General +---------- + +* It should be unnecessary to mention, but please read and follow +    Documentation/SubmitChecklist +    Documentation/SubmittingDrivers +    Documentation/SubmittingPatches +    Documentation/CodingStyle + +* If your patch generates checkpatch warnings, please refrain from explanations +  such as "I don't like that coding style". Keep in mind that each unnecessary +  warning helps hiding a real problem. If you don't like the kernel coding +  style, don't write kernel drivers. + +* Please test your patch thoroughly. We are not your test group. +  Sometimes a patch can not or not completely be tested because of missing +  hardware. In such cases, you should test-build the code on at least one +  architecture. If run-time testing was not achieved, it should be written +  explicitly below the patch header. + +* If your patch (or the driver) is affected by configuration options such as +  CONFIG_SMP, make sure it compiles for all configuration variants. + + +2. Adding functionality to existing drivers +------------------------------------------- + +* Make sure the documentation in Documentation/hwmon/<driver_name> is up to +  date. + +* Make sure the information in Kconfig is up to date. + +* If the added functionality requires some cleanup or structural changes, split +  your patch into a cleanup part and the actual addition. This makes it easier +  to review your changes, and to bisect any resulting problems. + +* Never mix bug fixes, cleanup, and functional enhancements in a single patch. + + +3. New drivers +-------------- + +* Running your patch or driver file(s) through checkpatch does not mean its +  formatting is clean. If unsure about formatting in your new driver, run it +  through Lindent. Lindent is not perfect, and you may have to do some minor +  cleanup, but it is a good start. + +* Consider adding yourself to MAINTAINERS. + +* Document the driver in Documentation/hwmon/<driver_name>. + +* Add the driver to Kconfig and Makefile in alphabetical order. + +* Make sure that all dependencies are listed in Kconfig. + +* Avoid forward declarations if you can. Rearrange the code if necessary. + +* Avoid calculations in macros and macro-generated functions. While such macros +  may save a line or so in the source, it obfuscates the code and makes code +  review more difficult. It may also result in code which is more complicated +  than necessary. Use inline functions or just regular functions instead. + +* Use devres functions whenever possible to allocate resources. For rationale +  and supported functions, please see Documentation/driver-model/devres.txt. + +* If the driver has a detect function, make sure it is silent. Debug messages +  and messages printed after a successful detection are acceptable, but it +  must not print messages such as "Chip XXX not found/supported". + +  Keep in mind that the detect function will run for all drivers supporting an +  address if a chip is detected on that address. Unnecessary messages will just +  pollute the kernel log and not provide any value. + +* Provide a detect function if and only if a chip can be detected reliably. + +* Avoid writing to chip registers in the detect function. If you have to write, +  only do it after you have already gathered enough data to be certain that the +  detection is going to be successful. + +  Keep in mind that the chip might not be what your driver believes it is, and +  writing to it might cause a bad misconfiguration. + +* Make sure there are no race conditions in the probe function. Specifically, +  completely initialize your chip first, then create sysfs entries and register +  with the hwmon subsystem. + +* Do not provide support for deprecated sysfs attributes. + +* Do not create non-standard attributes unless really needed. If you have to use +  non-standard attributes, or you believe you do, discuss it on the mailing list +  first. Either case, provide a detailed explanation why you need the +  non-standard attribute(s). +  Standard attributes are specified in Documentation/hwmon/sysfs-interface. + +* When deciding which sysfs attributes to support, look at the chip's +  capabilities. While we do not expect your driver to support everything the +  chip may offer, it should at least support all limits and alarms. + +* Last but not least, please check if a driver for your chip already exists +  before starting to write a new driver. Especially for temperature sensors, +  new chips are often variants of previously released chips. In some cases, +  a presumably new chip may simply have been relabeled. diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface index 64569901055..2cc95ad4660 100644 --- a/Documentation/hwmon/sysfs-interface +++ b/Documentation/hwmon/sysfs-interface @@ -139,6 +139,29 @@ in[0-*]_input	Voltage input value.  		thumb: drivers should report the voltage values at the  		"pins" of the chip. +in[0-*]_average +		Average voltage +		Unit: millivolt +		RO + +in[0-*]_lowest +		Historical minimum voltage +		Unit: millivolt +		RO + +in[0-*]_highest +		Historical maximum voltage +		Unit: millivolt +		RO + +in[0-*]_reset_history +		Reset inX_lowest and inX_highest +		WO + +in_reset_history +		Reset inX_lowest and inX_highest for all sensors +		WO +  in[0-*]_label	Suggested voltage channel label.  		Text string  		Should only be created if the driver has hints about what @@ -187,6 +210,17 @@ fan[1-*]_div	Fan divisor.  		Note that this is actually an internal clock divisor, which  		affects the measurable speed range, not the read value. +fan[1-*]_pulses	Number of tachometer pulses per fan revolution. +		Integer value, typically between 1 and 4. +		RW +		This value is a characteristic of the fan connected to the +		device's input, so it has to be set in accordance with the fan +		model. +		Should only be created if the chip has a register to configure +		the number of pulses. In the absence of such a register (and +		thus attribute) the value assumed by all devices is 2 pulses +		per fan revolution. +  fan[1-*]_target  		Desired fan speed  		Unit: revolution/min (RPM) @@ -270,7 +304,7 @@ value (fastest fan speed) wins.  temp[1-*]_type	Sensor type selection.  		Integers 1 to 6  		RW -		1: PII/Celeron Diode +		1: CPU embedded diode  		2: 3904 transistor  		3: thermal diode  		4: thermistor @@ -293,6 +327,13 @@ temp[1-*]_max_hyst  		from the max value.  		RW +temp[1-*]_min_hyst +		Temperature hysteresis value for min limit. +		Unit: millidegree Celsius +		Must be reported as an absolute temperature, NOT a delta +		from the min value. +		RW +  temp[1-*]_input Temperature input value.  		Unit: millidegree Celsius  		RO @@ -328,6 +369,13 @@ temp[1-*]_lcrit	Temperature critical min value, typically lower than  		Unit: millidegree Celsius  		RW +temp[1-*]_lcrit_hyst +		Temperature hysteresis value for critical min limit. +		Unit: millidegree Celsius +		Must be reported as an absolute temperature, NOT a delta +		from the critical min value. +		RW +  temp[1-*]_offset  		Temperature offset which is added to the temperature reading  		by the chip. @@ -384,10 +432,43 @@ curr[1-*]_min	Current min value.  		Unit: milliampere  		RW +curr[1-*]_lcrit	Current critical low value +		Unit: milliampere +		RW + +curr[1-*]_crit	Current critical high value. +		Unit: milliampere +		RW +  curr[1-*]_input	Current input value  		Unit: milliampere  		RO +curr[1-*]_average +		Average current use +		Unit: milliampere +		RO + +curr[1-*]_lowest +		Historical minimum current +		Unit: milliampere +		RO + +curr[1-*]_highest +		Historical maximum current +		Unit: milliampere +		RO + +curr[1-*]_reset_history +		Reset currX_lowest and currX_highest +		WO + +curr_reset_history +		Reset currX_lowest and currX_highest for all sensors +		WO + +Also see the Alarms section for status flags associated with currents. +  *********  * Power *  ********* @@ -450,13 +531,6 @@ power[1-*]_accuracy		Accuracy of the power meter.  				Unit: Percent  				RO -power[1-*]_alarm		1 if the system is drawing more power than the -				cap allows; 0 otherwise.  A poll notification is -				sent to this file when the power use exceeds the -				cap.  This file only appears if the cap is known -				to be enforced by hardware. -				RO -  power[1-*]_cap			If power use rises above this limit, the  				system should take action to reduce power use.  				A poll notification is sent to this file if the @@ -479,6 +553,20 @@ power[1-*]_cap_min		Minimum cap that can be set.  				Unit: microWatt  				RO +power[1-*]_max			Maximum power. +				Unit: microWatt +				RW + +power[1-*]_crit			Critical maximum power. +				If power rises to or above this limit, the +				system is expected take drastic action to reduce +				power consumption, such as a system shutdown or +				a forced powerdown of some devices. +				Unit: microWatt +				RW + +Also see the Alarms section for status flags associated with power readings. +  **********  * Energy *  ********** @@ -488,6 +576,15 @@ energy[1-*]_input		Cumulative energy use  				RO +************ +* Humidity * +************ + +humidity[1-*]_input		Humidity +				Unit: milli-percent (per cent mille, pcm) +				RO + +  **********  * Alarms *  ********** @@ -501,6 +598,7 @@ implementation.  in[0-*]_alarm  curr[1-*]_alarm +power[1-*]_alarm  fan[1-*]_alarm  temp[1-*]_alarm  		Channel alarm @@ -512,12 +610,20 @@ OR  in[0-*]_min_alarm  in[0-*]_max_alarm +in[0-*]_lcrit_alarm +in[0-*]_crit_alarm  curr[1-*]_min_alarm  curr[1-*]_max_alarm +curr[1-*]_lcrit_alarm +curr[1-*]_crit_alarm +power[1-*]_cap_alarm +power[1-*]_max_alarm +power[1-*]_crit_alarm  fan[1-*]_min_alarm  fan[1-*]_max_alarm  temp[1-*]_min_alarm  temp[1-*]_max_alarm +temp[1-*]_lcrit_alarm  temp[1-*]_crit_alarm  temp[1-*]_emergency_alarm  		Limit alarm @@ -533,7 +639,7 @@ channel should not be trusted.  fan[1-*]_fault  temp[1-*]_fault  		Input fault condition -		0: no fault occured +		0: no fault occurred  		1: fault condition  		RO @@ -630,14 +736,14 @@ add/subtract if it has been divided before the add/subtract.  What to do if a value is found to be invalid, depends on the type of the  sysfs attribute that is being set. If it is a continuous setting like a  tempX_max or inX_max attribute, then the value should be clamped to its -limits using SENSORS_LIMIT(value, min_limit, max_limit). If it is not -continuous like for example a tempX_type, then when an invalid value is -written, -EINVAL should be returned. +limits using clamp_val(value, min_limit, max_limit). If it is not continuous +like for example a tempX_type, then when an invalid value is written, +-EINVAL should be returned.  Example1, temp1_max, register is a signed 8 bit value (-128 - 127 degrees):  	long v = simple_strtol(buf, NULL, 10) / 1000; -	v = SENSORS_LIMIT(v, -128, 127); +	v = clamp_val(v, -128, 127);  	/* write v to register */  Example2, fan divider setting, valid values 2, 4 and 8: diff --git a/Documentation/hwmon/tmp401 b/Documentation/hwmon/tmp401 index 9fc44724921..f91e3fa7e5e 100644 --- a/Documentation/hwmon/tmp401 +++ b/Documentation/hwmon/tmp401 @@ -8,8 +8,16 @@ Supported chips:      Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp401.html    * Texas Instruments TMP411      Prefix: 'tmp411' -    Addresses scanned: I2C 0x4c +    Addresses scanned: I2C 0x4c, 0x4d, 0x4e      Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp411.html +  * Texas Instruments TMP431 +    Prefix: 'tmp431' +    Addresses scanned: I2C 0x4c, 0x4d +    Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp431.html +  * Texas Instruments TMP432 +    Prefix: 'tmp432' +    Addresses scanned: I2C 0x4c, 0x4d +    Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp432.html  Authors:           Hans de Goede <hdegoede@redhat.com> @@ -18,19 +26,19 @@ Authors:  Description  ----------- -This driver implements support for Texas Instruments TMP401 and -TMP411 chips. These chips implements one remote and one local -temperature sensor. Temperature is measured in degrees +This driver implements support for Texas Instruments TMP401, TMP411, +TMP431, and TMP432 chips. These chips implement one or two remote and +one local temperature sensors. Temperature is measured in degrees  Celsius. Resolution of the remote sensor is 0.0625 degree. Local  sensor resolution can be set to 0.5, 0.25, 0.125 or 0.0625 degree (not  supported by the driver so far, so using the default resolution of 0.5  degree).  The driver provides the common sysfs-interface for temperatures (see -/Documentation/hwmon/sysfs-interface under Temperatures). +Documentation/hwmon/sysfs-interface under Temperatures). -The TMP411 chip is compatible with TMP401. It provides some additional -features. +The TMP411 and TMP431 chips are compatible with TMP401. TMP411 provides +some additional features.  * Minimum and Maximum temperature measured since power-on, chip-reset @@ -40,3 +48,6 @@ features.    Exported via sysfs attribute temp_reset_history. Writing 1 to this    file triggers a reset. + +TMP432 is compatible with TMP401 and TMP431. It supports two external +temperature sensors. diff --git a/Documentation/hwmon/twl4030-madc-hwmon b/Documentation/hwmon/twl4030-madc-hwmon new file mode 100644 index 00000000000..c3a3a5be10a --- /dev/null +++ b/Documentation/hwmon/twl4030-madc-hwmon @@ -0,0 +1,45 @@ +Kernel driver twl4030-madc +========================= + +Supported chips: +	* Texas Instruments TWL4030 +	Prefix: 'twl4030-madc' + + +Authors: +	J Keerthy <j-keerthy@ti.com> + +Description +----------- + +The Texas Instruments TWL4030 is a Power Management and Audio Circuit. Among +other things it contains a 10-bit A/D converter MADC. The converter has 16 +channels which can be used in different modes. + + +See this table for the meaning of the different channels + +Channel Signal +------------------------------------------ +0	Battery type(BTYPE) +1	BCI: Battery temperature (BTEMP) +2	GP analog input +3	GP analog input +4	GP analog input +5	GP analog input +6	GP analog input +7	GP analog input +8	BCI: VBUS voltage(VBUS) +9	Backup Battery voltage (VBKP) +10	BCI: Battery charger current (ICHG) +11	BCI: Battery charger voltage (VCHG) +12	BCI: Main battery voltage (VBAT) +13	Reserved +14	Reserved +15	VRUSB Supply/Speaker left/Speaker right polarization level + + +The Sysfs nodes will represent the voltage in the units of mV, +the temperature channel shows the converted temperature in +degree Celsius. The Battery charging current channel represents +battery charging current in mA. diff --git a/Documentation/hwmon/ucd9000 b/Documentation/hwmon/ucd9000 new file mode 100644 index 00000000000..805e33edb97 --- /dev/null +++ b/Documentation/hwmon/ucd9000 @@ -0,0 +1,110 @@ +Kernel driver ucd9000 +===================== + +Supported chips: +  * TI UCD90120, UCD90124, UCD9090, and UCD90910 +    Prefixes: 'ucd90120', 'ucd90124', 'ucd9090', 'ucd90910' +    Addresses scanned: - +    Datasheets: +	http://focus.ti.com/lit/ds/symlink/ucd90120.pdf +	http://focus.ti.com/lit/ds/symlink/ucd90124.pdf +	http://focus.ti.com/lit/ds/symlink/ucd9090.pdf +	http://focus.ti.com/lit/ds/symlink/ucd90910.pdf + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +From datasheets: + +The UCD90120 Power Supply Sequencer and System Health Monitor monitors and +sequences up to 12 independent voltage rails. The device integrates a 12-bit +ADC with a 2.5V internal reference for monitoring up to 13 power supply voltage, +current, or temperature inputs. + +The UCD90124 is a 12-rail PMBus/I2C addressable power-supply sequencer and +system-health monitor. The device integrates a 12-bit ADC for monitoring up to +13 power-supply voltage, current, or temperature inputs. Twenty-six GPIO pins +can be used for power supply enables, power-on reset signals, external +interrupts, cascading, or other system functions. Twelve of these pins offer PWM +functionality. Using these pins, the UCD90124 offers support for fan control, +margining, and general-purpose PWM functions. + +The UCD9090 is a 10-rail PMBus/I2C addressable power-supply sequencer and +monitor. The device integrates a 12-bit ADC for monitoring up to 10 power-supply +voltage inputs. Twenty-three GPIO pins can be used for power supply enables, +power-on reset signals, external interrupts, cascading, or other system +functions. Ten of these pins offer PWM functionality. Using these pins, the +UCD9090 offers support for margining, and general-purpose PWM functions. + +The UCD90910 is a ten-rail I2C / PMBus addressable power-supply sequencer and +system-health monitor. The device integrates a 12-bit ADC for monitoring up to +13 power-supply voltage, current, or temperature inputs. + +This driver is a client driver to the core PMBus driver. Please see +Documentation/hwmon/pmbus for details on PMBus client drivers. + + +Usage Notes +----------- + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. + + +Platform data support +--------------------- + +The driver supports standard PMBus driver platform data. Please see +Documentation/hwmon/pmbus for details. + + +Sysfs entries +------------- + +The following attributes are supported. Limits are read-write; all other +attributes are read-only. + +in[1-12]_label		"vout[1-12]". +in[1-12]_input		Measured voltage. From READ_VOUT register. +in[1-12]_min		Minimum Voltage. From VOUT_UV_WARN_LIMIT register. +in[1-12]_max		Maximum voltage. From VOUT_OV_WARN_LIMIT register. +in[1-12]_lcrit		Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register. +in[1-12]_crit		Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. +in[1-12]_min_alarm	Voltage low alarm. From VOLTAGE_UV_WARNING status. +in[1-12]_max_alarm	Voltage high alarm. From VOLTAGE_OV_WARNING status. +in[1-12]_lcrit_alarm	Voltage critical low alarm. From VOLTAGE_UV_FAULT status. +in[1-12]_crit_alarm	Voltage critical high alarm. From VOLTAGE_OV_FAULT status. + +curr[1-12]_label	"iout[1-12]". +curr[1-12]_input	Measured current. From READ_IOUT register. +curr[1-12]_max		Maximum current. From IOUT_OC_WARN_LIMIT register. +curr[1-12]_lcrit	Critical minimum output current. From IOUT_UC_FAULT_LIMIT +			register. +curr[1-12]_crit		Critical maximum current. From IOUT_OC_FAULT_LIMIT register. +curr[1-12]_max_alarm	Current high alarm. From IOUT_OC_WARNING status. +curr[1-12]_crit_alarm	Current critical high alarm. From IOUT_OC_FAULT status. + +			For each attribute index, either voltage or current is +			reported, but not both. If voltage or current is +			reported depends on the chip configuration. + +temp[1-2]_input		Measured temperatures. From READ_TEMPERATURE_1 and +			READ_TEMPERATURE_2 registers. +temp[1-2]_max		Maximum temperature. From OT_WARN_LIMIT register. +temp[1-2]_crit		Critical high temperature. From OT_FAULT_LIMIT register. +temp[1-2]_max_alarm	Temperature high alarm. +temp[1-2]_crit_alarm	Temperature critical high alarm. + +fan[1-4]_input		Fan RPM. +fan[1-4]_alarm		Fan alarm. +fan[1-4]_fault		Fan fault. + +			Fan attributes are only available on chips supporting +			fan control (UCD90124, UCD90910). Attribute files are +			created only for enabled fans. +			Note that even though UCD90910 supports up to 10 fans, +			only up to four fans are currently supported. diff --git a/Documentation/hwmon/ucd9200 b/Documentation/hwmon/ucd9200 new file mode 100644 index 00000000000..1e8060e631b --- /dev/null +++ b/Documentation/hwmon/ucd9200 @@ -0,0 +1,112 @@ +Kernel driver ucd9200 +===================== + +Supported chips: +  * TI UCD9220, UCD9222, UCD9224, UCD9240, UCD9244, UCD9246, and UCD9248 +    Prefixes: 'ucd9220', 'ucd9222', 'ucd9224', 'ucd9240', 'ucd9244', 'ucd9246', +	'ucd9248' +    Addresses scanned: - +    Datasheets: +	http://focus.ti.com/lit/ds/symlink/ucd9220.pdf +	http://focus.ti.com/lit/ds/symlink/ucd9222.pdf +	http://focus.ti.com/lit/ds/symlink/ucd9224.pdf +	http://focus.ti.com/lit/ds/symlink/ucd9240.pdf +	http://focus.ti.com/lit/ds/symlink/ucd9244.pdf +	http://focus.ti.com/lit/ds/symlink/ucd9246.pdf +	http://focus.ti.com/lit/ds/symlink/ucd9248.pdf + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +[From datasheets] UCD9220, UCD9222, UCD9224, UCD9240, UCD9244, UCD9246, and +UCD9248 are multi-rail, multi-phase synchronous buck digital PWM controllers +designed for non-isolated DC/DC power applications. The devices integrate +dedicated circuitry for DC/DC loop management with flash memory and a serial +interface to support configuration, monitoring and management. + +This driver is a client driver to the core PMBus driver. Please see +Documentation/hwmon/pmbus for details on PMBus client drivers. + + +Usage Notes +----------- + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. + + +Platform data support +--------------------- + +The driver supports standard PMBus driver platform data. Please see +Documentation/hwmon/pmbus for details. + + +Sysfs entries +------------- + +The following attributes are supported. Limits are read-write; all other +attributes are read-only. + +in1_label		"vin". +in1_input		Measured voltage. From READ_VIN register. +in1_min			Minimum Voltage. From VIN_UV_WARN_LIMIT register. +in1_max			Maximum voltage. From VIN_OV_WARN_LIMIT register. +in1_lcrit		Critical minimum Voltage. VIN_UV_FAULT_LIMIT register. +in1_crit		Critical maximum voltage. From VIN_OV_FAULT_LIMIT register. +in1_min_alarm		Voltage low alarm. From VIN_UV_WARNING status. +in1_max_alarm		Voltage high alarm. From VIN_OV_WARNING status. +in1_lcrit_alarm		Voltage critical low alarm. From VIN_UV_FAULT status. +in1_crit_alarm		Voltage critical high alarm. From VIN_OV_FAULT status. + +in[2-5]_label		"vout[1-4]". +in[2-5]_input		Measured voltage. From READ_VOUT register. +in[2-5]_min		Minimum Voltage. From VOUT_UV_WARN_LIMIT register. +in[2-5]_max		Maximum voltage. From VOUT_OV_WARN_LIMIT register. +in[2-5]_lcrit		Critical minimum Voltage. VOUT_UV_FAULT_LIMIT register. +in[2-5]_crit		Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register. +in[2-5]_min_alarm	Voltage low alarm. From VOLTAGE_UV_WARNING status. +in[2-5]_max_alarm	Voltage high alarm. From VOLTAGE_OV_WARNING status. +in[2-5]_lcrit_alarm	Voltage critical low alarm. From VOLTAGE_UV_FAULT status. +in[2-5]_crit_alarm	Voltage critical high alarm. From VOLTAGE_OV_FAULT status. + +curr1_label		"iin". +curr1_input		Measured current. From READ_IIN register. + +curr[2-5]_label		"iout[1-4]". +curr[2-5]_input		Measured current. From READ_IOUT register. +curr[2-5]_max		Maximum current. From IOUT_OC_WARN_LIMIT register. +curr[2-5]_lcrit		Critical minimum output current. From IOUT_UC_FAULT_LIMIT +			register. +curr[2-5]_crit		Critical maximum current. From IOUT_OC_FAULT_LIMIT register. +curr[2-5]_max_alarm	Current high alarm. From IOUT_OC_WARNING status. +curr[2-5]_crit_alarm	Current critical high alarm. From IOUT_OC_FAULT status. + +power1_input		Measured input power. From READ_PIN register. +power1_label		"pin" + +power[2-5]_input	Measured output power. From READ_POUT register. +power[2-5]_label	"pout[1-4]" + +			The number of output voltage, current, and power +			attribute sets is determined by the number of enabled +			rails. See chip datasheets for details. + +temp[1-5]_input		Measured temperatures. From READ_TEMPERATURE_1 and +		        READ_TEMPERATURE_2 registers. +			temp1 is the chip internal temperature. temp[2-5] are +			rail temperatures.  temp[2-5] attributes are only +			created for enabled rails. See chip datasheets for +			details. +temp[1-5]_max		Maximum temperature. From OT_WARN_LIMIT register. +temp[1-5]_crit		Critical high temperature. From OT_FAULT_LIMIT register. +temp[1-5]_max_alarm	Temperature high alarm. +temp[1-5]_crit_alarm	Temperature critical high alarm. + +fan1_input		Fan RPM. ucd9240 only. +fan1_alarm		Fan alarm. ucd9240 only. +fan1_fault		Fan fault. ucd9240 only. diff --git a/Documentation/hwmon/vexpress b/Documentation/hwmon/vexpress new file mode 100644 index 00000000000..557d6d5ad90 --- /dev/null +++ b/Documentation/hwmon/vexpress @@ -0,0 +1,34 @@ +Kernel driver vexpress +====================== + +Supported systems: +  * ARM Ltd. Versatile Express platform +    Prefix: 'vexpress' +    Datasheets: +      * "Hardware Description" sections of the Technical Reference Manuals +        for the Versatile Express boards: +        http://infocenter.arm.com/help/topic/com.arm.doc.subset.boards.express/index.html +      * Section "4.4.14. System Configuration registers" of the V2M-P1 TRM: +        http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0447-/index.html + +Author: Pawel Moll + +Description +----------- + +Versatile Express platform (http://www.arm.com/versatileexpress/) is a +reference & prototyping system for ARM Ltd. processors. It can be set up +from a wide range of boards, each of them containing (apart of the main +chip/FPGA) a number of microcontrollers responsible for platform +configuration and control. Theses microcontrollers can also monitor the +board and its environment by a number of internal and external sensors, +providing information about power lines voltages and currents, board +temperature and power usage. Some of them also calculate consumed energy +and provide a cumulative use counter. + +The configuration devices are _not_ memory mapped and must be accessed +via a custom interface, abstracted by the "vexpress_config" API. + +As these devices are non-discoverable, they must be described in a Device +Tree passed to the kernel. Details of the DT binding for them can be found +in Documentation/devicetree/bindings/hwmon/vexpress.txt. diff --git a/Documentation/hwmon/w83627ehf b/Documentation/hwmon/w83627ehf index 13d556112fc..735c42a85ea 100644 --- a/Documentation/hwmon/w83627ehf +++ b/Documentation/hwmon/w83627ehf @@ -5,17 +5,19 @@ Supported chips:    * Winbond W83627EHF/EHG (ISA access ONLY)      Prefix: 'w83627ehf'      Addresses scanned: ISA address retrieved from Super I/O registers -    Datasheet: -        http://www.nuvoton.com.tw/NR/rdonlyres/A6A258F0-F0C9-4F97-81C0-C4D29E7E943E/0/W83627EHF.pdf +    Datasheet: not available    * Winbond W83627DHG      Prefix: 'w83627dhg'      Addresses scanned: ISA address retrieved from Super I/O registers -    Datasheet: -        http://www.nuvoton.com.tw/NR/rdonlyres/7885623D-A487-4CF9-A47F-30C5F73D6FE6/0/W83627DHG.pdf +    Datasheet: not available    * Winbond W83627DHG-P      Prefix: 'w83627dhg'      Addresses scanned: ISA address retrieved from Super I/O registers      Datasheet: not available +  * Winbond W83627UHG +    Prefix: 'w83627uhg' +    Addresses scanned: ISA address retrieved from Super I/O registers +    Datasheet: available from www.nuvoton.com    * Winbond W83667HG      Prefix: 'w83667hg'      Addresses scanned: ISA address retrieved from Super I/O registers @@ -24,9 +26,17 @@ Supported chips:      Prefix: 'w83667hg'      Addresses scanned: ISA address retrieved from Super I/O registers      Datasheet: Available from Nuvoton upon request +  * Nuvoton NCT6775F/W83667HG-I +    Prefix: 'nct6775' +    Addresses scanned: ISA address retrieved from Super I/O registers +    Datasheet: Available from Nuvoton upon request +  * Nuvoton NCT6776F +    Prefix: 'nct6776' +    Addresses scanned: ISA address retrieved from Super I/O registers +    Datasheet: Available from Nuvoton upon request  Authors: -        Jean Delvare <khali@linux-fr.org> +        Jean Delvare <jdelvare@suse.de>          Yuan Mu (Winbond)          Rudolf Marek <r.marek@assembler.cz>          David Hubbard <david.c.hubbard@gmail.com> @@ -36,19 +46,27 @@ Description  -----------  This driver implements support for the Winbond W83627EHF, W83627EHG, -W83627DHG, W83627DHG-P, W83667HG and W83667HG-B super I/O chips. -We will refer to them collectively as Winbond chips. +W83627DHG, W83627DHG-P, W83627UHG, W83667HG, W83667HG-B, W83667HG-I +(NCT6775F), and NCT6776F super I/O chips. We will refer to them collectively +as Winbond chips. + +The chips implement 3 to 4 temperature sensors (9 for NCT6775F and NCT6776F), +2 to 5 fan rotation speed sensors, 8 to 10 analog voltage sensors, one VID +(except for 627UHG), alarms with beep warnings (control unimplemented), +and some automatic fan regulation strategies (plus manual fan control mode). -The chips implement three temperature sensors, five fan rotation -speed sensors, ten analog voltage sensors (only nine for the 627DHG), one -VID (6 pins for the 627EHF/EHG, 8 pins for the 627DHG and 667HG), alarms -with beep warnings (control unimplemented), and some automatic fan -regulation strategies (plus manual fan control mode). +The temperature sensor sources on W82677HG-B, NCT6775F, and NCT6776F are +configurable. temp4 and higher attributes are only reported if its temperature +source differs from the temperature sources of the already reported temperature +sensors. The configured source for each of the temperature sensors is provided +in tempX_label.  Temperatures are measured in degrees Celsius and measurement resolution is 1 -degC for temp1 and 0.5 degC for temp2 and temp3. An alarm is triggered when -the temperature gets higher than high limit; it stays on until the temperature -falls below the hysteresis value. +degC for temp1 and and 0.5 degC for temp2 and temp3. For temp4 and higher, +resolution is 1 degC for W83667HG-B and 0.0 degC for NCT6775F and NCT6776F. +An alarm is triggered when the temperature gets higher than high limit; +it stays on until the temperature falls below the hysteresis value. +Alarms are only supported for temp1, temp2, and temp3.  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 @@ -71,16 +89,16 @@ follows:  temp1 -> pwm1  temp2 -> pwm2 -temp3 -> pwm3 +temp3 -> pwm3 (not on 627UHG)  prog  -> pwm4 (not on 667HG and 667HG-B; the programmable setting is not  	       supported by the driver)  /sys files  ---------- -name - this is a standard hwmon device entry. For the W83627EHF and W83627EHG, -       it is set to "w83627ehf", for the W83627DHG it is set to "w83627dhg", -       and for the W83667HG it is set to "w83667hg". +name - this is a standard hwmon device entry, it contains the name of +       the device (see the prefix in the list of supported devices at +       the top of this file)  pwm[1-4] - this file stores PWM duty cycle or DC value (fan speed) in range:  	   0 (stop) to 255 (full) @@ -90,6 +108,18 @@ pwm[1-4]_enable - this file controls mode of fan/temperature control:  	* 2 "Thermal Cruise" mode  	* 3 "Fan Speed Cruise" mode  	* 4 "Smart Fan III" mode +	* 5 "Smart Fan IV" mode + +	SmartFan III mode is not supported on NCT6776F. + +	SmartFan IV mode is configurable only if it was configured at system +	startup, and is only supported for W83677HG-B, NCT6775F, and NCT6776F. +	SmartFan IV operational parameters can not be configured at this time, +	and the various pwm attributes are not used in SmartFan IV mode. +	The attributes can be written to, which is useful if you plan to +	configure the system for a different pwm mode. However, the information +	returned when reading pwm attributes is unrelated to SmartFan IV +	operation.  pwm[1-4]_mode - controls if output is PWM or DC level          * 0 DC output (0 - 12v) @@ -113,8 +143,13 @@ pwm[1-4]_min_output - minimum fan speed (range 1 - 255), when the temperature  pwm[1-4]_stop_time  - how many milliseconds [ms] must elapse to switch                        corresponding fan off. (when the temperature was below                        defined range). +pwm[1-4]_start_output-minimum fan speed (range 1 - 255) when spinning up +pwm[1-4]_step_output- rate of fan speed change (1 - 255) +pwm[1-4]_stop_output- minimum fan speed (range 1 - 255) when spinning down +pwm[1-4]_max_output - maximum fan speed (range 1 - 255), when the temperature +                      is above defined range. -Note: last two functions are influenced by other control bits, not yet exported +Note: last six functions are influenced by other control bits, not yet exported        by the driver, so a change might not have any effect.  Implementation Details diff --git a/Documentation/hwmon/w83627hf b/Documentation/hwmon/w83627hf index fb145e5e722..8432e111817 100644 --- a/Documentation/hwmon/w83627hf +++ b/Documentation/hwmon/w83627hf @@ -91,3 +91,25 @@ isaset -y -f 0x2e 0xaa  The above sequence assumes a Super-I/O config space at 0x2e/0x2f, but  0x4e/0x4f is also possible. + +Voltage pin mapping +------------------- + +Here is a summary of the voltage pin mapping for the W83627THF. This +can be useful to convert data provided by board manufacturers into +working libsensors configuration statements. + +    W83627THF		| +  Pin	| Name		| Register	| Sysfs attribute +----------------------------------------------------- +  100	| CPUVCORE	| 20h		| in0 +   99	| VIN0		| 21h		| in1 +   98	| VIN1		| 22h		| in2 +   97	| VIN2		| 24h		| in4 +  114	| AVCC		| 23h		| in3 +   61	| 5VSB		| 50h (bank 5)	| in7 +   74	| VBAT		| 51h (bank 5)	| in8 + +For other supported devices, you'll have to take the hard path and +look up the information in the datasheet yourself (and then add it +to this document please.) diff --git a/Documentation/hwmon/w83781d b/Documentation/hwmon/w83781d index ecbc1e4574b..129b0a3b555 100644 --- a/Documentation/hwmon/w83781d +++ b/Documentation/hwmon/w83781d @@ -403,7 +403,7 @@ 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 +old ASUS, it isn't marketed as Qfan. Maybe some beta pre-attempt 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 diff --git a/Documentation/hwmon/w83791d b/Documentation/hwmon/w83791d index 5663e491655..f4021a28546 100644 --- a/Documentation/hwmon/w83791d +++ b/Documentation/hwmon/w83791d @@ -17,7 +17,7 @@ Credits:      Philip Edelbrock <phil@netroedge.com>,      and Mark Studebaker <mdsxyz123@yahoo.com>    w83792d.c: -    Chunhao Huang <DZShen@Winbond.com.tw>, +    Shane Huang (Winbond),      Rudolf Marek <r.marek@assembler.cz>  Additional contributors: @@ -93,7 +93,7 @@ The sysfs interface to the beep bitmask has migrated from the original legacy  method of a single sysfs beep_mask file to a newer method using multiple  *_beep files as described in .../Documentation/hwmon/sysfs-interface. -A similar change has occured for the bitmap corresponding to the alarms. The +A similar change has occurred for the bitmap corresponding to the alarms. The  original legacy method used a single sysfs alarms file containing a bitmap  of triggered alarms. The newer method uses multiple sysfs *_alarm files  (again following the pattern described in sysfs-interface). diff --git a/Documentation/hwmon/w83792d b/Documentation/hwmon/w83792d index 8a023ce0b72..53f7b6866fe 100644 --- a/Documentation/hwmon/w83792d +++ b/Documentation/hwmon/w83792d @@ -7,8 +7,7 @@ Supported chips:      Addresses scanned: I2C 0x2c - 0x2f      Datasheet: http://www.winbond.com.tw -Author: Chunhao Huang -Contact: DZShen <DZShen@Winbond.com.tw> +Author: Shane Huang (Winbond)  Module Parameters diff --git a/Documentation/hwmon/w83793 b/Documentation/hwmon/w83793 index 51171a83165..6cc5f639b72 100644 --- a/Documentation/hwmon/w83793 +++ b/Documentation/hwmon/w83793 @@ -92,7 +92,7 @@ This driver implements support for Winbond W83793G/W83793R chips.  * Chassis    If the case open alarm triggers, it will stay in this state unless cleared -  by any write to the sysfs file "chassis". +  by writing 0 to the sysfs file "intrusion0_alarm".  * VID and VRM    The VRM version is detected automatically, don't modify the it unless you diff --git a/Documentation/hwmon/w83795 b/Documentation/hwmon/w83795 new file mode 100644 index 00000000000..d3e678216b9 --- /dev/null +++ b/Documentation/hwmon/w83795 @@ -0,0 +1,127 @@ +Kernel driver w83795 +==================== + +Supported chips: +  * Winbond/Nuvoton W83795G +    Prefix: 'w83795g' +    Addresses scanned: I2C 0x2c - 0x2f +    Datasheet: Available for download on nuvoton.com +  * Winbond/Nuvoton W83795ADG +    Prefix: 'w83795adg' +    Addresses scanned: I2C 0x2c - 0x2f +    Datasheet: Available for download on nuvoton.com + +Authors: +    Wei Song (Nuvoton) +    Jean Delvare <jdelvare@suse.de> + + +Pin mapping +----------- + +Here is a summary of the pin mapping for the W83795G and W83795ADG. +This can be useful to convert data provided by board manufacturers +into working libsensors configuration statements. + +    W83795G			| +  Pin	| Name			| Register	| Sysfs attribute +------------------------------------------------------------------ +   13	| VSEN1 (VCORE1)	| 10h		| in0 +   14	| VSEN2 (VCORE2)	| 11h		| in1 +   15	| VSEN3 (VCORE3)	| 12h		| in2 +   16	| VSEN4			| 13h		| in3 +   17	| VSEN5			| 14h		| in4 +   18	| VSEN6			| 15h		| in5 +   19	| VSEN7			| 16h		| in6 +   20	| VSEN8			| 17h		| in7 +   21	| VSEN9			| 18h		| in8 +   22	| VSEN10		| 19h		| in9 +   23	| VSEN11		| 1Ah		| in10 +   28	| VTT			| 1Bh		| in11 +   24	| 3VDD			| 1Ch		| in12 +   25	| 3VSB			| 1Dh		| in13 +   26	| VBAT			| 1Eh		| in14 +    3	| VSEN12/TR5		| 1Fh		| in15/temp5 +    4	| VSEN13/TR5		| 20h		| in16/temp6 +  5/  6	| VDSEN14/TR1/TD1	| 21h		| in17/temp1 +  7/  8	| VDSEN15/TR2/TD2	| 22h		| in18/temp2 +  9/ 10	| VDSEN16/TR3/TD3	| 23h		| in19/temp3 + 11/ 12	| VDSEN17/TR4/TD4	| 24h		| in20/temp4 +   40	| FANIN1		| 2Eh		| fan1 +   42	| FANIN2		| 2Fh		| fan2 +   44	| FANIN3		| 30h		| fan3 +   46	| FANIN4		| 31h		| fan4 +   48	| FANIN5		| 32h		| fan5 +   50	| FANIN6		| 33h		| fan6 +   52	| FANIN7		| 34h		| fan7 +   54	| FANIN8		| 35h		| fan8 +   57	| FANIN9		| 36h		| fan9 +   58	| FANIN10		| 37h		| fan10 +   59	| FANIN11		| 38h		| fan11 +   60	| FANIN12		| 39h		| fan12 +   31	| FANIN13		| 3Ah		| fan13 +   35	| FANIN14		| 3Bh		| fan14 +   41	| FANCTL1		| 10h (bank 2)	| pwm1 +   43	| FANCTL2		| 11h (bank 2)	| pwm2 +   45	| FANCTL3		| 12h (bank 2)	| pwm3 +   47	| FANCTL4		| 13h (bank 2)	| pwm4 +   49	| FANCTL5		| 14h (bank 2)	| pwm5 +   51	| FANCTL6		| 15h (bank 2)	| pwm6 +   53	| FANCTL7		| 16h (bank 2)	| pwm7 +   55	| FANCTL8		| 17h (bank 2)	| pwm8 + 29/ 30	| PECI/TSI (DTS1)	| 26h		| temp7 + 29/ 30	| PECI/TSI (DTS2)	| 27h		| temp8 + 29/ 30	| PECI/TSI (DTS3)	| 28h		| temp9 + 29/ 30	| PECI/TSI (DTS4)	| 29h		| temp10 + 29/ 30	| PECI/TSI (DTS5)	| 2Ah		| temp11 + 29/ 30	| PECI/TSI (DTS6)	| 2Bh		| temp12 + 29/ 30	| PECI/TSI (DTS7)	| 2Ch		| temp13 + 29/ 30	| PECI/TSI (DTS8)	| 2Dh		| temp14 +   27	| CASEOPEN#		| 46h		| intrusion0 + +    W83795ADG			| +  Pin	| Name			| Register	| Sysfs attribute +------------------------------------------------------------------ +   10	| VSEN1 (VCORE1)	| 10h		| in0 +   11	| VSEN2 (VCORE2)	| 11h		| in1 +   12	| VSEN3 (VCORE3)	| 12h		| in2 +   13	| VSEN4			| 13h		| in3 +   14	| VSEN5			| 14h		| in4 +   15	| VSEN6			| 15h		| in5 +   16	| VSEN7			| 16h		| in6 +   17	| VSEN8			| 17h		| in7 +   22	| VTT			| 1Bh		| in11 +   18	| 3VDD			| 1Ch		| in12 +   19	| 3VSB			| 1Dh		| in13 +   20	| VBAT			| 1Eh		| in14 +   48	| VSEN12/TR5		| 1Fh		| in15/temp5 +    1	| VSEN13/TR5		| 20h		| in16/temp6 +  2/  3	| VDSEN14/TR1/TD1	| 21h		| in17/temp1 +  4/  5	| VDSEN15/TR2/TD2	| 22h		| in18/temp2 +  6/  7	| VDSEN16/TR3/TD3	| 23h		| in19/temp3 +  8/  9	| VDSEN17/TR4/TD4	| 24h		| in20/temp4 +   32	| FANIN1		| 2Eh		| fan1 +   34	| FANIN2		| 2Fh		| fan2 +   36	| FANIN3		| 30h		| fan3 +   37	| FANIN4		| 31h		| fan4 +   38	| FANIN5		| 32h		| fan5 +   39	| FANIN6		| 33h		| fan6 +   40	| FANIN7		| 34h		| fan7 +   41	| FANIN8		| 35h		| fan8 +   43	| FANIN9		| 36h		| fan9 +   44	| FANIN10		| 37h		| fan10 +   45	| FANIN11		| 38h		| fan11 +   46	| FANIN12		| 39h		| fan12 +   24	| FANIN13		| 3Ah		| fan13 +   28	| FANIN14		| 3Bh		| fan14 +   33	| FANCTL1		| 10h (bank 2)	| pwm1 +   35	| FANCTL2		| 11h (bank 2)	| pwm2 +   23	| PECI (DTS1)		| 26h		| temp7 +   23	| PECI (DTS2)		| 27h		| temp8 +   23	| PECI (DTS3)		| 28h		| temp9 +   23	| PECI (DTS4)		| 29h		| temp10 +   23	| PECI (DTS5)		| 2Ah		| temp11 +   23	| PECI (DTS6)		| 2Bh		| temp12 +   23	| PECI (DTS7)		| 2Ch		| temp13 +   23	| PECI (DTS8)		| 2Dh		| temp14 +   21	| CASEOPEN#		| 46h		| intrusion0 diff --git a/Documentation/hwmon/w83l785ts b/Documentation/hwmon/w83l785ts index bd1fa9d4468..c8978478871 100644 --- a/Documentation/hwmon/w83l785ts +++ b/Documentation/hwmon/w83l785ts @@ -9,7 +9,7 @@ Supported chips:                 http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83L785TS-S.pdf  Authors: -        Jean Delvare <khali@linux-fr.org> +        Jean Delvare <jdelvare@suse.de>  Description  ----------- diff --git a/Documentation/hwmon/wm831x b/Documentation/hwmon/wm831x index 24f47d8f6a4..11446757c8c 100644 --- a/Documentation/hwmon/wm831x +++ b/Documentation/hwmon/wm831x @@ -22,7 +22,7 @@ reporting of all the input values but does not provide any alarms.  Voltage Monitoring  ------------------ -Voltages are sampled by a 12 bit ADC.  Voltages in milivolts are 1.465 +Voltages are sampled by a 12 bit ADC.  Voltages in millivolts are 1.465  times the ADC value.  Temperature Monitoring diff --git a/Documentation/hwmon/zl6100 b/Documentation/hwmon/zl6100 new file mode 100644 index 00000000000..33908a4d68f --- /dev/null +++ b/Documentation/hwmon/zl6100 @@ -0,0 +1,160 @@ +Kernel driver zl6100 +==================== + +Supported chips: +  * Intersil / Zilker Labs ZL2004 +    Prefix: 'zl2004' +    Addresses scanned: - +    Datasheet: http://www.intersil.com/data/fn/fn6847.pdf +  * Intersil / Zilker Labs ZL2005 +    Prefix: 'zl2005' +    Addresses scanned: - +    Datasheet: http://www.intersil.com/data/fn/fn6848.pdf +  * Intersil / Zilker Labs ZL2006 +    Prefix: 'zl2006' +    Addresses scanned: - +    Datasheet: http://www.intersil.com/data/fn/fn6850.pdf +  * Intersil / Zilker Labs ZL2008 +    Prefix: 'zl2008' +    Addresses scanned: - +    Datasheet: http://www.intersil.com/data/fn/fn6859.pdf +  * Intersil / Zilker Labs ZL2105 +    Prefix: 'zl2105' +    Addresses scanned: - +    Datasheet: http://www.intersil.com/data/fn/fn6851.pdf +  * Intersil / Zilker Labs ZL2106 +    Prefix: 'zl2106' +    Addresses scanned: - +    Datasheet: http://www.intersil.com/data/fn/fn6852.pdf +  * Intersil / Zilker Labs ZL6100 +    Prefix: 'zl6100' +    Addresses scanned: - +    Datasheet: http://www.intersil.com/data/fn/fn6876.pdf +  * Intersil / Zilker Labs ZL6105 +    Prefix: 'zl6105' +    Addresses scanned: - +    Datasheet: http://www.intersil.com/data/fn/fn6906.pdf +  * Intersil / Zilker Labs ZL9101M +    Prefix: 'zl9101' +    Addresses scanned: - +    Datasheet: http://www.intersil.com/data/fn/fn7669.pdf +  * Intersil / Zilker Labs ZL9117M +    Prefix: 'zl9117' +    Addresses scanned: - +    Datasheet: http://www.intersil.com/data/fn/fn7914.pdf +  * Ericsson BMR450, BMR451 +    Prefix: 'bmr450', 'bmr451' +    Addresses scanned: - +    Datasheet: +http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146401 +  * Ericsson BMR462, BMR463, BMR464 +    Prefixes: 'bmr462', 'bmr463', 'bmr464' +    Addresses scanned: - +    Datasheet: +http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146256 + + +Author: Guenter Roeck <linux@roeck-us.net> + + +Description +----------- + +This driver supports hardware montoring for Intersil / Zilker Labs ZL6100 and +compatible digital DC-DC controllers. + +The driver is a client driver to the core PMBus driver. Please see +Documentation/hwmon/pmbus and Documentation.hwmon/pmbus-core for details +on PMBus client drivers. + + +Usage Notes +----------- + +This driver does not auto-detect devices. You will have to instantiate the +devices explicitly. Please see Documentation/i2c/instantiating-devices for +details. + +WARNING: Do not access chip registers using the i2cdump command, and do not use +any of the i2ctools commands on a command register used to save and restore +configuration data (0x11, 0x12, 0x15, 0x16, and 0xf4). The chips supported by +this driver interpret any access to those command registers (including read +commands) as request to execute the command in question. Unless write accesses +to those registers are protected, this may result in power loss, board resets, +and/or Flash corruption. Worst case, your board may turn into a brick. + + +Platform data support +--------------------- + +The driver supports standard PMBus driver platform data. + + +Module parameters +----------------- + +delay +----- + +Intersil/Zilker Labs DC-DC controllers require a minimum interval between I2C +bus accesses. According to Intersil, the minimum interval is 2 ms, though 1 ms +appears to be sufficient and has not caused any problems in testing. The problem +is known to affect all currently supported chips. For manual override, the +driver provides a writeable module parameter, 'delay', which can be used to set +the interval to a value between 0 and 65,535 microseconds. + + +Sysfs entries +------------- + +The following attributes are supported. Limits are read-write; all other +attributes are read-only. + +in1_label		"vin" +in1_input		Measured input voltage. +in1_min			Minimum input voltage. +in1_max			Maximum input voltage. +in1_lcrit		Critical minimum input voltage. +in1_crit		Critical maximum input voltage. +in1_min_alarm		Input voltage low alarm. +in1_max_alarm		Input voltage high alarm. +in1_lcrit_alarm		Input voltage critical low alarm. +in1_crit_alarm		Input voltage critical high alarm. + +in2_label		"vmon" +in2_input		Measured voltage on VMON (ZL2004) or VDRV (ZL9101M, +			ZL9117M) pin. Reported voltage is 16x the voltage on the +			pin (adjusted internally by the chip). +in2_lcrit		Critical minimum VMON/VDRV Voltage. +in2_crit		Critical maximum VMON/VDRV voltage. +in2_lcrit_alarm		VMON/VDRV voltage critical low alarm. +in2_crit_alarm		VMON/VDRV voltage critical high alarm. + +			vmon attributes are supported on ZL2004, ZL9101M, +			and ZL9117M only. + +inX_label		"vout1" +inX_input		Measured output voltage. +inX_lcrit		Critical minimum output Voltage. +inX_crit		Critical maximum output voltage. +inX_lcrit_alarm		Critical output voltage critical low alarm. +inX_crit_alarm		Critical output voltage critical high alarm. + +			X is 3 for ZL2004, ZL9101M, and ZL9117M, 2 otherwise. + +curr1_label		"iout1" +curr1_input		Measured output current. +curr1_lcrit		Critical minimum output current. +curr1_crit		Critical maximum output current. +curr1_lcrit_alarm	Output current critical low alarm. +curr1_crit_alarm	Output current critical high alarm. + +temp[12]_input		Measured temperature. +temp[12]_min		Minimum temperature. +temp[12]_max		Maximum temperature. +temp[12]_lcrit		Critical low temperature. +temp[12]_crit		Critical high temperature. +temp[12]_min_alarm	Chip temperature low alarm. +temp[12]_max_alarm	Chip temperature high alarm. +temp[12]_lcrit_alarm	Chip temperature critical low alarm. +temp[12]_crit_alarm	Chip temperature critical high alarm.  | 
