forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/ker…
…nel/git/groeck/linux-staging Pull hwmon updates from Guenter Roeck: - new driver to support GMT G762/G763 pwm fan controllers - add support for DS1631, DS1721, and DS1731 to ds1621 driver - remove detect function from ds1621 driver as unreliable - bug fixes in nct6775, iio_hwmon, and adm1021 drivers - remove redundant platform_set_drvdata in various drivers - add device tree support to ina2xx driver * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: hwmon: (ds1621) Fix temperature rounding operations hwmon: (nct6775) Drop unsupported fan alarm attributes for NCT6775 hwmon: (nct6775) Fix temperature alarm attributes Add support for GMT G762/G763 PWM fan controllers hwmon: (ina2xx) Add device tree support to pass the shunt resistor hwmon: (ds1621) Update documentation hwmon: (ds1621) Add DS1731 chip support to ds1621 driver hwmon: (iio_hwmon) add alias table hwmon: (adm1021) Do not create min sysfs attributes for LM84 hwmon: (ds1621) Remove detect function hwmon: (ds1621) Add ds1631 chip support to ds1621 driver and documentation hwmon: (ds1621) Add ds1721 update interval sysfs attribute hwmon: (ds1621) Add ds1721 chip support hwmon: (w83627ehf) Remove redundant platform_set_drvdata() hwmon: (ntc_thermistor) Remove redundant platform_set_drvdata() hwmon: (i5k_amb) Remove redundant platform_set_drvdata() hwmon: (coretemp) Remove redundant platform_set_drvdata() hwmon: (abituguru3) Remove redundant platform_set_drvdata()
- Loading branch information
Showing
19 changed files
with
1,743 additions
and
111 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
GMT G762/G763 PWM Fan controller | ||
|
||
Required node properties: | ||
|
||
- "compatible": must be either "gmt,g762" or "gmt,g763" | ||
- "reg": I2C bus address of the device | ||
- "clocks": a fixed clock providing input clock frequency | ||
on CLK pin of the chip. | ||
|
||
Optional properties: | ||
|
||
- "fan_startv": fan startup voltage. Accepted values are 0, 1, 2 and 3. | ||
The higher the more. | ||
|
||
- "pwm_polarity": pwm polarity. Accepted values are 0 (positive duty) | ||
and 1 (negative duty). | ||
|
||
- "fan_gear_mode": fan gear mode. Supported values are 0, 1 and 2. | ||
|
||
If an optional property is not set in .dts file, then current value is kept | ||
unmodified (e.g. u-boot installed value). | ||
|
||
Additional information on operational parameters for the device is available | ||
in Documentation/hwmon/g762. A detailed datasheet for the device is available | ||
at http://natisbad.org/NAS/refs/GMT_EDS-762_763-080710-0.2.pdf. | ||
|
||
Example g762 node: | ||
|
||
clocks { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
|
||
g762_clk: fixedclk { | ||
compatible = "fixed-clock"; | ||
#clock-cells = <0>; | ||
clock-frequency = <8192>; | ||
} | ||
} | ||
|
||
g762: g762@3e { | ||
compatible = "gmt,g762"; | ||
reg = <0x3e>; | ||
clocks = <&g762_clk> | ||
fan_gear_mode = <0>; /* chip default */ | ||
fan_startv = <1>; /* chip default */ | ||
pwm_polarity = <0>; /* chip default */ | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
ina2xx properties | ||
|
||
Required properties: | ||
- compatible: Must be one of the following: | ||
- "ti,ina219" for ina219 | ||
- "ti,ina220" for ina220 | ||
- "ti,ina226" for ina226 | ||
- "ti,ina230" for ina230 | ||
- reg: I2C address | ||
|
||
Optional properties: | ||
|
||
- shunt-resistor | ||
Shunt resistor value in micro-Ohm | ||
|
||
Example: | ||
|
||
ina220@44 { | ||
compatible = "ti,ina220"; | ||
reg = <0x44>; | ||
shunt-resistor = <1000>; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,16 +2,30 @@ 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 <[email protected]> | ||
|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.