Skip to content

Commit ddcf660

Browse files
committed
Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/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()
2 parents c16bfeb + a50d9a4 commit ddcf660

File tree

19 files changed

+1743
-111
lines changed

19 files changed

+1743
-111
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
GMT G762/G763 PWM Fan controller
2+
3+
Required node properties:
4+
5+
- "compatible": must be either "gmt,g762" or "gmt,g763"
6+
- "reg": I2C bus address of the device
7+
- "clocks": a fixed clock providing input clock frequency
8+
on CLK pin of the chip.
9+
10+
Optional properties:
11+
12+
- "fan_startv": fan startup voltage. Accepted values are 0, 1, 2 and 3.
13+
The higher the more.
14+
15+
- "pwm_polarity": pwm polarity. Accepted values are 0 (positive duty)
16+
and 1 (negative duty).
17+
18+
- "fan_gear_mode": fan gear mode. Supported values are 0, 1 and 2.
19+
20+
If an optional property is not set in .dts file, then current value is kept
21+
unmodified (e.g. u-boot installed value).
22+
23+
Additional information on operational parameters for the device is available
24+
in Documentation/hwmon/g762. A detailed datasheet for the device is available
25+
at http://natisbad.org/NAS/refs/GMT_EDS-762_763-080710-0.2.pdf.
26+
27+
Example g762 node:
28+
29+
clocks {
30+
#address-cells = <1>;
31+
#size-cells = <0>;
32+
33+
g762_clk: fixedclk {
34+
compatible = "fixed-clock";
35+
#clock-cells = <0>;
36+
clock-frequency = <8192>;
37+
}
38+
}
39+
40+
g762: g762@3e {
41+
compatible = "gmt,g762";
42+
reg = <0x3e>;
43+
clocks = <&g762_clk>
44+
fan_gear_mode = <0>; /* chip default */
45+
fan_startv = <1>; /* chip default */
46+
pwm_polarity = <0>; /* chip default */
47+
};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
ina2xx properties
2+
3+
Required properties:
4+
- compatible: Must be one of the following:
5+
- "ti,ina219" for ina219
6+
- "ti,ina220" for ina220
7+
- "ti,ina226" for ina226
8+
- "ti,ina230" for ina230
9+
- reg: I2C address
10+
11+
Optional properties:
12+
13+
- shunt-resistor
14+
Shunt resistor value in micro-Ohm
15+
16+
Example:
17+
18+
ina220@44 {
19+
compatible = "ti,ina220";
20+
reg = <0x44>;
21+
shunt-resistor = <1000>;
22+
};

Documentation/hwmon/ds1621

Lines changed: 134 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,30 @@ Kernel driver ds1621
22
====================
33

44
Supported chips:
5-
* Dallas Semiconductor DS1621
5+
* Dallas Semiconductor / Maxim Integrated DS1621
66
Prefix: 'ds1621'
7-
Addresses scanned: I2C 0x48 - 0x4f
8-
Datasheet: Publicly available at the Dallas Semiconductor website
9-
http://www.dalsemi.com/
7+
Addresses scanned: none
8+
Datasheet: Publicly available from www.maximintegrated.com
9+
1010
* Dallas Semiconductor DS1625
11-
Prefix: 'ds1621'
12-
Addresses scanned: I2C 0x48 - 0x4f
13-
Datasheet: Publicly available at the Dallas Semiconductor website
14-
http://www.dalsemi.com/
11+
Prefix: 'ds1625'
12+
Addresses scanned: none
13+
Datasheet: Publicly available from www.datasheetarchive.com
14+
15+
* Maxim Integrated DS1631
16+
Prefix: 'ds1631'
17+
Addresses scanned: none
18+
Datasheet: Publicly available from www.maximintegrated.com
19+
20+
* Maxim Integrated DS1721
21+
Prefix: 'ds1721'
22+
Addresses scanned: none
23+
Datasheet: Publicly available from www.maximintegrated.com
24+
25+
* Maxim Integrated DS1731
26+
Prefix: 'ds1731'
27+
Addresses scanned: none
28+
Datasheet: Publicly available from www.maximintegrated.com
1529

1630
Authors:
1731
Christian W. Zuckschwerdt <[email protected]>
@@ -59,5 +73,115 @@ any of the limits have ever been met or exceeded since last power-up or
5973
reset. Be aware: When testing, it showed that the status of Tout can change
6074
with neither of the alarms set.
6175

62-
Temperature conversion of the DS1621 takes up to 1000ms; internal access to
63-
non-volatile registers may last for 10ms or below.
76+
Since there is no version or vendor identification register, there is
77+
no unique identification for these devices. Therefore, explicit device
78+
instantiation is required for correct device identification and functionality
79+
(one device per address in this address range: 0x48..0x4f).
80+
81+
The DS1625 is pin compatible and functionally equivalent with the DS1621,
82+
but the DS1621 is meant to replace it. The DS1631, DS1721, and DS1731 are
83+
also pin compatible with the DS1621 and provide multi-resolution support.
84+
85+
Additionally, the DS1721 data sheet says the temperature flags (THF and TLF)
86+
are used internally, however, these flags do get set and cleared as the actual
87+
temperature crosses the min or max settings (which by default are set to 75
88+
and 80 degrees respectively).
89+
90+
Temperature Conversion:
91+
-----------------------
92+
DS1621 - 750ms (older devices may take up to 1000ms)
93+
DS1625 - 500ms
94+
DS1631 - 93ms..750ms for 9..12 bits resolution, respectively.
95+
DS1721 - 93ms..750ms for 9..12 bits resolution, respectively.
96+
DS1731 - 93ms..750ms for 9..12 bits resolution, respectively.
97+
98+
Note:
99+
On the DS1621, internal access to non-volatile registers may last for 10ms
100+
or less (unverified on the other devices).
101+
102+
Temperature Accuracy:
103+
---------------------
104+
DS1621: +/- 0.5 degree Celsius (from 0 to +70 degrees)
105+
DS1625: +/- 0.5 degree Celsius (from 0 to +70 degrees)
106+
DS1631: +/- 0.5 degree Celsius (from 0 to +70 degrees)
107+
DS1721: +/- 1.0 degree Celsius (from -10 to +85 degrees)
108+
DS1731: +/- 1.0 degree Celsius (from -10 to +85 degrees)
109+
110+
Note:
111+
Please refer to the device datasheets for accuracy at other temperatures.
112+
113+
Temperature Resolution:
114+
-----------------------
115+
As mentioned above, the DS1631, DS1721, and DS1731 provide multi-resolution
116+
support, which is achieved via the R0 and R1 config register bits, where:
117+
118+
R0..R1
119+
------
120+
0 0 => 9 bits, 0.5 degrees Celcius
121+
1 0 => 10 bits, 0.25 degrees Celcius
122+
0 1 => 11 bits, 0.125 degrees Celcius
123+
1 1 => 12 bits, 0.0625 degrees Celcius
124+
125+
Note:
126+
At initial device power-on, the default resolution is set to 12-bits.
127+
128+
The resolution mode for the DS1631, DS1721, or DS1731 can be changed from
129+
userspace, via the device 'update_interval' sysfs attribute. This attribute
130+
will normalize the range of input values to the device maximum resolution
131+
values defined in the datasheet as follows:
132+
133+
Resolution Conversion Time Input Range
134+
(C/LSB) (msec) (msec)
135+
------------------------------------------------
136+
0.5 93.75 0....94
137+
0.25 187.5 95...187
138+
0.125 375 188..375
139+
0.0625 750 376..infinity
140+
------------------------------------------------
141+
142+
The following examples show how the 'update_interval' attribute can be
143+
used to change the conversion time:
144+
145+
$ cat update_interval
146+
750
147+
$ cat temp1_input
148+
22062
149+
$
150+
$ echo 300 > update_interval
151+
$ cat update_interval
152+
375
153+
$ cat temp1_input
154+
22125
155+
$
156+
$ echo 150 > update_interval
157+
$ cat update_interval
158+
188
159+
$ cat temp1_input
160+
22250
161+
$
162+
$ echo 1 > update_interval
163+
$ cat update_interval
164+
94
165+
$ cat temp1_input
166+
22000
167+
$
168+
$ echo 1000 > update_interval
169+
$ cat update_interval
170+
750
171+
$ cat temp1_input
172+
22062
173+
$
174+
175+
As shown, the ds1621 driver automatically adjusts the 'update_interval'
176+
user input, via a step function. Reading back the 'update_interval' value
177+
after a write operation provides the conversion time used by the device.
178+
179+
Mathematically, the resolution can be derived from the conversion time
180+
via the following function:
181+
182+
g(x) = 0.5 * [minimum_conversion_time/x]
183+
184+
where:
185+
-> 'x' = the output from 'update_interval'
186+
-> 'g(x)' = the resolution in degrees C per LSB.
187+
-> 93.75ms = minimum conversion time

Documentation/hwmon/g762

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
Kernel driver g762
2+
==================
3+
4+
The GMT G762 Fan Speed PWM Controller is connected directly to a fan
5+
and performs closed-loop or open-loop control of the fan speed. Two
6+
modes - PWM or DC - are supported by the device.
7+
8+
For additional information, a detailed datasheet is available at
9+
http://natisbad.org/NAS/ref/GMT_EDS-762_763-080710-0.2.pdf. sysfs
10+
bindings are described in Documentation/hwmon/sysfs-interface.
11+
12+
The following entries are available to the user in a subdirectory of
13+
/sys/bus/i2c/drivers/g762/ to control the operation of the device.
14+
This can be done manually using the following entries but is usually
15+
done via a userland daemon like fancontrol.
16+
17+
Note that those entries do not provide ways to setup the specific
18+
hardware characteristics of the system (reference clock, pulses per
19+
fan revolution, ...); Those can be modified via devicetree bindings
20+
documented in Documentation/devicetree/bindings/hwmon/g762.txt or
21+
using a specific platform_data structure in board initialization
22+
file (see include/linux/platform_data/g762.h).
23+
24+
fan1_target: set desired fan speed. This only makes sense in closed-loop
25+
fan speed control (i.e. when pwm1_enable is set to 2).
26+
27+
fan1_input: provide current fan rotation value in RPM as reported by
28+
the fan to the device.
29+
30+
fan1_div: fan clock divisor. Supported value are 1, 2, 4 and 8.
31+
32+
fan1_pulses: number of pulses per fan revolution. Supported values
33+
are 2 and 4.
34+
35+
fan1_fault: reports fan failure, i.e. no transition on fan gear pin for
36+
about 0.7s (if the fan is not voluntarily set off).
37+
38+
fan1_alarm: in closed-loop control mode, if fan RPM value is 25% out
39+
of the programmed value for over 6 seconds 'fan1_alarm' is
40+
set to 1.
41+
42+
pwm1_enable: set current fan speed control mode i.e. 1 for manual fan
43+
speed control (open-loop) via pwm1 described below, 2 for
44+
automatic fan speed control (closed-loop) via fan1_target
45+
above.
46+
47+
pwm1_mode: set or get fan driving mode: 1 for PWM mode, 0 for DC mode.
48+
49+
pwm1: get or set PWM fan control value in open-loop mode. This is an
50+
integer value between 0 and 255. 0 stops the fan, 255 makes
51+
it run at full speed.
52+
53+
Both in PWM mode ('pwm1_mode' set to 1) and DC mode ('pwm1_mode' set to 0),
54+
when current fan speed control mode is open-loop ('pwm1_enable' set to 1),
55+
the fan speed is programmed by setting a value between 0 and 255 via 'pwm1'
56+
entry (0 stops the fan, 255 makes it run at full speed). In closed-loop mode
57+
('pwm1_enable' set to 2), the expected rotation speed in RPM can be passed to
58+
the chip via 'fan1_target'. In closed-loop mode, the target speed is compared
59+
with current speed (available via 'fan1_input') by the device and a feedback
60+
is performed to match that target value. The fan speed value is computed
61+
based on the parameters associated with the physical characteristics of the
62+
system: a reference clock source frequency, a number of pulses per fan
63+
revolution, etc.
64+
65+
Note that the driver will update its values at most once per second.

Documentation/hwmon/ina2xx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,6 @@ The INA226 monitors both a shunt voltage drop and bus supply voltage.
4444
The INA230 is a high or low side current shunt and power monitor with an I2C
4545
interface. The INA230 monitors both a shunt voltage drop and bus supply voltage.
4646

47-
The shunt value in micro-ohms can be set via platform data.
47+
The shunt value in micro-ohms can be set via platform data or device tree.
48+
Please refer to the Documentation/devicetree/bindings/i2c/ina2xx.txt for bindings
49+
if the device tree is used.

drivers/hwmon/Kconfig

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -348,11 +348,16 @@ config SENSORS_DS620
348348
will be called ds620.
349349

350350
config SENSORS_DS1621
351-
tristate "Dallas Semiconductor DS1621 and DS1625"
351+
tristate "Dallas Semiconductor DS1621 and compatibles"
352352
depends on I2C
353353
help
354-
If you say yes here you get support for Dallas Semiconductor
355-
DS1621 and DS1625 sensor chips.
354+
If you say yes here you get support for Dallas Semiconductor/Maxim
355+
Integrated DS1621 sensor chips and compatible models including:
356+
357+
- Dallas Semiconductor DS1625
358+
- Maxim Integrated DS1631
359+
- Maxim Integrated DS1721
360+
- Maxim Integrated DS1731
356361

357362
This driver can also be built as a module. If so, the module
358363
will be called ds1621.
@@ -456,6 +461,16 @@ config SENSORS_G760A
456461
This driver can also be built as a module. If so, the module
457462
will be called g760a.
458463

464+
config SENSORS_G762
465+
tristate "GMT G762 and G763"
466+
depends on I2C
467+
help
468+
If you say yes here you get support for Global Mixed-mode
469+
Technology Inc G762 and G763 fan speed PWM controller chips.
470+
471+
This driver can also be built as a module. If so, the module
472+
will be called g762.
473+
459474
config SENSORS_GL518SM
460475
tristate "Genesys Logic GL518SM"
461476
depends on I2C

drivers/hwmon/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ obj-$(CONFIG_SENSORS_F75375S) += f75375s.o
6060
obj-$(CONFIG_SENSORS_FAM15H_POWER) += fam15h_power.o
6161
obj-$(CONFIG_SENSORS_FSCHMD) += fschmd.o
6262
obj-$(CONFIG_SENSORS_G760A) += g760a.o
63+
obj-$(CONFIG_SENSORS_G762) += g762.o
6364
obj-$(CONFIG_SENSORS_GL518SM) += gl518sm.o
6465
obj-$(CONFIG_SENSORS_GL520SM) += gl520sm.o
6566
obj-$(CONFIG_SENSORS_GPIO_FAN) += gpio-fan.o

drivers/hwmon/abituguru3.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1079,7 +1079,6 @@ static int abituguru3_remove(struct platform_device *pdev)
10791079
int i;
10801080
struct abituguru3_data *data = platform_get_drvdata(pdev);
10811081

1082-
platform_set_drvdata(pdev, NULL);
10831082
hwmon_device_unregister(data->hwmon_dev);
10841083
for (i = 0; data->sysfs_attr[i].dev_attr.attr.name; i++)
10851084
device_remove_file(&pdev->dev, &data->sysfs_attr[i].dev_attr);

0 commit comments

Comments
 (0)