Skip to content

Commit 594fbe7

Browse files
natisbadgroeck
authored andcommitted
Add support for GMT G762/G763 PWM fan controllers
GMT G762/763 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 chip. Introduced driver provides various knobs to control the operations of the chip (via sysfs interface). Specific characteristics of the system can be passed either using board init code or via DT. Documentation for both the driver and DT bindings are also provided. Signed-off-by: Arnaud Ebalard <[email protected]> Tested-by: Simon Guinot <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
1 parent 31e7ad7 commit 594fbe7

File tree

6 files changed

+1309
-0
lines changed

6 files changed

+1309
-0
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+
};

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.

drivers/hwmon/Kconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,16 @@ config SENSORS_G760A
461461
This driver can also be built as a module. If so, the module
462462
will be called g760a.
463463

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+
464474
config SENSORS_GL518SM
465475
tristate "Genesys Logic GL518SM"
466476
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

0 commit comments

Comments
 (0)