-
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.
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 <arno@natisbad.org> Tested-by: Simon Guinot <simon.guinot@sequanux.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
- Loading branch information
Arnaud Ebalard
authored and
Guenter Roeck
committed
Jun 27, 2013
1 parent
31e7ad7
commit 594fbe7
Showing
6 changed files
with
1,309 additions
and
0 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,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
Oops, something went wrong.