diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-03 22:56:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-03 22:56:35 -0400 |
commit | ddcf6600b133697adbafd96e080818bdc0dfd028 (patch) | |
tree | f382f8eaca3cc2d298542ae9599ce49884127d0e /Documentation/hwmon | |
parent | c16bfeb264decb964742067f02fdd51494e25e64 (diff) | |
parent | a50d9a4d9ad3c71341788099d733e4151b8a511b (diff) |
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()
Diffstat (limited to 'Documentation/hwmon')
-rw-r--r-- | Documentation/hwmon/ds1621 | 144 | ||||
-rw-r--r-- | Documentation/hwmon/g762 | 65 | ||||
-rw-r--r-- | Documentation/hwmon/ina2xx | 4 |
3 files changed, 202 insertions, 11 deletions
diff --git a/Documentation/hwmon/ds1621 b/Documentation/hwmon/ds1621 index 5e97f333c4df..896cdc972ca8 100644 --- a/Documentation/hwmon/ds1621 +++ b/Documentation/hwmon/ds1621 | |||
@@ -2,16 +2,30 @@ Kernel driver ds1621 | |||
2 | ==================== | 2 | ==================== |
3 | 3 | ||
4 | Supported chips: | 4 | Supported chips: |
5 | * Dallas Semiconductor DS1621 | 5 | * Dallas Semiconductor / Maxim Integrated DS1621 |
6 | Prefix: 'ds1621' | 6 | Prefix: 'ds1621' |
7 | Addresses scanned: I2C 0x48 - 0x4f | 7 | Addresses scanned: none |
8 | Datasheet: Publicly available at the Dallas Semiconductor website | 8 | Datasheet: Publicly available from www.maximintegrated.com |
9 | http://www.dalsemi.com/ | 9 | |
10 | * Dallas Semiconductor DS1625 | 10 | * Dallas Semiconductor DS1625 |
11 | Prefix: 'ds1621' | 11 | Prefix: 'ds1625' |
12 | Addresses scanned: I2C 0x48 - 0x4f | 12 | Addresses scanned: none |
13 | Datasheet: Publicly available at the Dallas Semiconductor website | 13 | Datasheet: Publicly available from www.datasheetarchive.com |
14 | http://www.dalsemi.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 | ||
15 | 29 | ||
16 | Authors: | 30 | Authors: |
17 | Christian W. Zuckschwerdt <zany@triq.net> | 31 | Christian W. Zuckschwerdt <zany@triq.net> |
@@ -59,5 +73,115 @@ any of the limits have ever been met or exceeded since last power-up or | |||
59 | reset. Be aware: When testing, it showed that the status of Tout can change | 73 | reset. Be aware: When testing, it showed that the status of Tout can change |
60 | with neither of the alarms set. | 74 | with neither of the alarms set. |
61 | 75 | ||
62 | Temperature conversion of the DS1621 takes up to 1000ms; internal access to | 76 | Since there is no version or vendor identification register, there is |
63 | non-volatile registers may last for 10ms or below. | 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 | ||
diff --git a/Documentation/hwmon/g762 b/Documentation/hwmon/g762 new file mode 100644 index 000000000000..923db9c5b5bc --- /dev/null +++ b/Documentation/hwmon/g762 | |||
@@ -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. | ||
diff --git a/Documentation/hwmon/ina2xx b/Documentation/hwmon/ina2xx index 03444f9d833f..4223c2d3b508 100644 --- a/Documentation/hwmon/ina2xx +++ b/Documentation/hwmon/ina2xx | |||
@@ -44,4 +44,6 @@ The INA226 monitors both a shunt voltage drop and bus supply voltage. | |||
44 | The INA230 is a high or low side current shunt and power monitor with an I2C | 44 | The INA230 is a high or low side current shunt and power monitor with an I2C |
45 | interface. The INA230 monitors both a shunt voltage drop and bus supply voltage. | 45 | interface. The INA230 monitors both a shunt voltage drop and bus supply voltage. |
46 | 46 | ||
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. | ||