aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/hwmon
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2011-05-10 16:30:45 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-05-10 16:30:45 -0400
commit8a1629c771b1a60bc6d73394d869fe69b13200dc (patch)
tree12f68138d95b70d450ab418fdfb300ebdcd2f003 /Documentation/hwmon
parent04aebcbb1b6dccadc8862b2765265f65a946db57 (diff)
parent693d92a1bbc9e42681c42ed190bd42b636ca876f (diff)
Merge branch 2.6.39-rc7 into usb-linus
This was needed to resolve a conflict in: drivers/usb/host/isp1760-hcd.c Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'Documentation/hwmon')
-rw-r--r--Documentation/hwmon/adm102136
-rw-r--r--Documentation/hwmon/lm9029
-rw-r--r--Documentation/hwmon/max1606462
-rw-r--r--Documentation/hwmon/max3444079
-rw-r--r--Documentation/hwmon/max868869
-rw-r--r--Documentation/hwmon/pmbus34
-rw-r--r--Documentation/hwmon/smm6658
-rw-r--r--Documentation/hwmon/submitting-patches109
8 files changed, 370 insertions, 56 deletions
diff --git a/Documentation/hwmon/adm1021 b/Documentation/hwmon/adm1021
index 03d02bfb3df1..02ad96cf9b2b 100644
--- a/Documentation/hwmon/adm1021
+++ b/Documentation/hwmon/adm1021
@@ -14,10 +14,6 @@ Supported chips:
14 Prefix: 'gl523sm' 14 Prefix: 'gl523sm'
15 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e 15 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
16 Datasheet: 16 Datasheet:
17 * Intel Xeon Processor
18 Prefix: - any other - may require 'force_adm1021' parameter
19 Addresses scanned: none
20 Datasheet: Publicly available at Intel website
21 * Maxim MAX1617 17 * Maxim MAX1617
22 Prefix: 'max1617' 18 Prefix: 'max1617'
23 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e 19 Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
@@ -91,21 +87,27 @@ will do no harm, but will return 'old' values. It is possible to make
91ADM1021-clones do faster measurements, but there is really no good reason 87ADM1021-clones do faster measurements, but there is really no good reason
92for that. 88for that.
93 89
94Xeon support
95------------
96 90
97Some Xeon processors have real max1617, adm1021, or compatible chips 91Netburst-based Xeon support
98within them, with two temperature sensors. 92---------------------------
99 93
100Other Xeons have chips with only one sensor. 94Some Xeon processors based on the Netburst (early Pentium 4, from 2001 to
952003) microarchitecture had real MAX1617, ADM1021, or compatible chips
96within them, with two temperature sensors. Other Xeon processors of this
97era (with 400 MHz FSB) had chips with only one temperature sensor.
101 98
102If you have a Xeon, and the adm1021 module loads, and both temperatures 99If you have such an old Xeon, and you get two valid temperatures when
103appear valid, then things are good. 100loading the adm1021 module, then things are good.
104 101
105If the adm1021 module doesn't load, you should try this: 102If nothing happens when loading the adm1021 module, and you are certain
106 modprobe adm1021 force_adm1021=BUS,ADDRESS 103that your specific Xeon processor model includes compatible sensors, you
107 ADDRESS can only be 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. 104will have to explicitly instantiate the sensor chips from user-space. See
105method 4 in Documentation/i2c/instantiating-devices. Possible slave
106addresses are 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. It is likely that
107only temp2 will be correct and temp1 will have to be ignored.
108 108
109If you have dual Xeons you may have appear to have two separate 109Previous generations of the Xeon processor (based on Pentium II/III)
110adm1021-compatible chips, or two single-temperature sensors, at distinct 110didn't have these sensors. Next generations of Xeon processors (533 MHz
111addresses. 111FSB and faster) lost them, until the Core-based generation which
112introduced integrated digital thermal sensors. These are supported by
113the coretemp driver.
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90
index fa475c0a48a3..f3efd18e87f4 100644
--- a/Documentation/hwmon/lm90
+++ b/Documentation/hwmon/lm90
@@ -32,6 +32,16 @@ Supported chips:
32 Addresses scanned: I2C 0x4c and 0x4d 32 Addresses scanned: I2C 0x4c and 0x4d
33 Datasheet: Publicly available at the ON Semiconductor website 33 Datasheet: Publicly available at the ON Semiconductor website
34 http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461 34 http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461
35 * Analog Devices ADT7461A
36 Prefix: 'adt7461a'
37 Addresses scanned: I2C 0x4c and 0x4d
38 Datasheet: Publicly available at the ON Semiconductor website
39 http://www.onsemi.com/PowerSolutions/product.do?id=ADT7461A
40 * ON Semiconductor NCT1008
41 Prefix: 'nct1008'
42 Addresses scanned: I2C 0x4c and 0x4d
43 Datasheet: Publicly available at the ON Semiconductor website
44 http://www.onsemi.com/PowerSolutions/product.do?id=NCT1008
35 * Maxim MAX6646 45 * Maxim MAX6646
36 Prefix: 'max6646' 46 Prefix: 'max6646'
37 Addresses scanned: I2C 0x4d 47 Addresses scanned: I2C 0x4d
@@ -149,7 +159,7 @@ ADM1032:
149 * ALERT is triggered by open remote sensor. 159 * ALERT is triggered by open remote sensor.
150 * SMBus PEC support for Write Byte and Receive Byte transactions. 160 * SMBus PEC support for Write Byte and Receive Byte transactions.
151 161
152ADT7461: 162ADT7461, ADT7461A, NCT1008:
153 * Extended temperature range (breaks compatibility) 163 * Extended temperature range (breaks compatibility)
154 * Lower resolution for remote temperature 164 * Lower resolution for remote temperature
155 165
@@ -195,9 +205,9 @@ are exported, one for each channel, but these values are of course linked.
195Only the local hysteresis can be set from user-space, and the same delta 205Only the local hysteresis can be set from user-space, and the same delta
196applies to the remote hysteresis. 206applies to the remote hysteresis.
197 207
198The lm90 driver will not update its values more frequently than every 208The lm90 driver will not update its values more frequently than configured with
199other second; reading them more often will do no harm, but will return 209the update_interval attribute; reading them more often will do no harm, but will
200'old' values. 210return 'old' values.
201 211
202SMBus Alert Support 212SMBus Alert Support
203------------------- 213-------------------
@@ -205,11 +215,12 @@ SMBus Alert Support
205This driver has basic support for SMBus alert. When an alert is received, 215This driver has basic support for SMBus alert. When an alert is received,
206the status register is read and the faulty temperature channel is logged. 216the status register is read and the faulty temperature channel is logged.
207 217
208The Analog Devices chips (ADM1032 and ADT7461) do not implement the SMBus 218The Analog Devices chips (ADM1032, ADT7461 and ADT7461A) and ON
209alert protocol properly so additional care is needed: the ALERT output is 219Semiconductor chips (NCT1008) do not implement the SMBus alert protocol
210disabled when an alert is received, and is re-enabled only when the alarm 220properly so additional care is needed: the ALERT output is disabled when
211is gone. Otherwise the chip would block alerts from other chips in the bus 221an alert is received, and is re-enabled only when the alarm is gone.
212as long as the alarm is active. 222Otherwise the chip would block alerts from other chips in the bus as long
223as the alarm is active.
213 224
214PEC Support 225PEC Support
215----------- 226-----------
diff --git a/Documentation/hwmon/max16064 b/Documentation/hwmon/max16064
new file mode 100644
index 000000000000..41728999e142
--- /dev/null
+++ b/Documentation/hwmon/max16064
@@ -0,0 +1,62 @@
1Kernel driver max16064
2======================
3
4Supported chips:
5 * Maxim MAX16064
6 Prefix: 'max16064'
7 Addresses scanned: -
8 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX16064.pdf
9
10Author: Guenter Roeck <guenter.roeck@ericsson.com>
11
12
13Description
14-----------
15
16This driver supports hardware montoring for Maxim MAX16064 Quad Power-Supply
17Controller with Active-Voltage Output Control and PMBus Interface.
18
19The driver is a client driver to the core PMBus driver.
20Please see Documentation/hwmon/pmbus for details on PMBus client drivers.
21
22
23Usage Notes
24-----------
25
26This driver does not auto-detect devices. You will have to instantiate the
27devices explicitly. Please see Documentation/i2c/instantiating-devices for
28details.
29
30
31Platform data support
32---------------------
33
34The driver supports standard PMBus driver platform data.
35
36
37Sysfs entries
38-------------
39
40The following attributes are supported. Limits are read-write; all other
41attributes are read-only.
42
43in[1-4]_label "vout[1-4]"
44in[1-4]_input Measured voltage. From READ_VOUT register.
45in[1-4]_min Minumum Voltage. From VOUT_UV_WARN_LIMIT register.
46in[1-4]_max Maximum voltage. From VOUT_OV_WARN_LIMIT register.
47in[1-4]_lcrit Critical minumum Voltage. VOUT_UV_FAULT_LIMIT register.
48in[1-4]_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register.
49in[1-4]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status.
50in[1-4]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status.
51in[1-4]_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status.
52in[1-4]_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status.
53
54temp1_input Measured temperature. From READ_TEMPERATURE_1 register.
55temp1_max Maximum temperature. From OT_WARN_LIMIT register.
56temp1_crit Critical high temperature. From OT_FAULT_LIMIT register.
57temp1_max_alarm Chip temperature high alarm. Set by comparing
58 READ_TEMPERATURE_1 with OT_WARN_LIMIT if TEMP_OT_WARNING
59 status is set.
60temp1_crit_alarm Chip temperature critical high alarm. Set by comparing
61 READ_TEMPERATURE_1 with OT_FAULT_LIMIT if TEMP_OT_FAULT
62 status is set.
diff --git a/Documentation/hwmon/max34440 b/Documentation/hwmon/max34440
new file mode 100644
index 000000000000..6c525dd07d59
--- /dev/null
+++ b/Documentation/hwmon/max34440
@@ -0,0 +1,79 @@
1Kernel driver max34440
2======================
3
4Supported chips:
5 * Maxim MAX34440
6 Prefixes: 'max34440'
7 Addresses scanned: -
8 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34440.pdf
9 * Maxim MAX34441
10 PMBus 5-Channel Power-Supply Manager and Intelligent Fan Controller
11 Prefixes: 'max34441'
12 Addresses scanned: -
13 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34441.pdf
14
15Author: Guenter Roeck <guenter.roeck@ericsson.com>
16
17
18Description
19-----------
20
21This driver supports hardware montoring for Maxim MAX34440 PMBus 6-Channel
22Power-Supply Manager and MAX34441 PMBus 5-Channel Power-Supply Manager
23and Intelligent Fan Controller.
24
25The driver is a client driver to the core PMBus driver. Please see
26Documentation/hwmon/pmbus for details on PMBus client drivers.
27
28
29Usage Notes
30-----------
31
32This driver does not auto-detect devices. You will have to instantiate the
33devices explicitly. Please see Documentation/i2c/instantiating-devices for
34details.
35
36
37Platform data support
38---------------------
39
40The driver supports standard PMBus driver platform data.
41
42
43Sysfs entries
44-------------
45
46The following attributes are supported. Limits are read-write; all other
47attributes are read-only.
48
49in[1-6]_label "vout[1-6]".
50in[1-6]_input Measured voltage. From READ_VOUT register.
51in[1-6]_min Minumum Voltage. From VOUT_UV_WARN_LIMIT register.
52in[1-6]_max Maximum voltage. From VOUT_OV_WARN_LIMIT register.
53in[1-6]_lcrit Critical minumum Voltage. VOUT_UV_FAULT_LIMIT register.
54in[1-6]_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register.
55in[1-6]_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status.
56in[1-6]_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status.
57in[1-6]_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status.
58in[1-6]_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status.
59
60curr[1-6]_label "iout[1-6]".
61curr[1-6]_input Measured current. From READ_IOUT register.
62curr[1-6]_max Maximum current. From IOUT_OC_WARN_LIMIT register.
63curr[1-6]_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register.
64curr[1-6]_max_alarm Current high alarm. From IOUT_OC_WARNING status.
65curr[1-6]_crit_alarm Current critical high alarm. From IOUT_OC_FAULT status.
66
67 in6 and curr6 attributes only exist for MAX34440.
68
69temp[1-8]_input Measured temperatures. From READ_TEMPERATURE_1 register.
70 temp1 is the chip's internal temperature. temp2..temp5
71 are remote I2C temperature sensors. For MAX34441, temp6
72 is a remote thermal-diode sensor. For MAX34440, temp6..8
73 are remote I2C temperature sensors.
74temp[1-8]_max Maximum temperature. From OT_WARN_LIMIT register.
75temp[1-8]_crit Critical high temperature. From OT_FAULT_LIMIT register.
76temp[1-8]_max_alarm Temperature high alarm.
77temp[1-8]_crit_alarm Temperature critical high alarm.
78
79 temp7 and temp8 attributes only exist for MAX34440.
diff --git a/Documentation/hwmon/max8688 b/Documentation/hwmon/max8688
new file mode 100644
index 000000000000..0ddd3a412030
--- /dev/null
+++ b/Documentation/hwmon/max8688
@@ -0,0 +1,69 @@
1Kernel driver max8688
2=====================
3
4Supported chips:
5 * Maxim MAX8688
6 Prefix: 'max8688'
7 Addresses scanned: -
8 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX8688.pdf
9
10Author: Guenter Roeck <guenter.roeck@ericsson.com>
11
12
13Description
14-----------
15
16This driver supports hardware montoring for Maxim MAX8688 Digital Power-Supply
17Controller/Monitor with PMBus Interface.
18
19The driver is a client driver to the core PMBus driver. Please see
20Documentation/hwmon/pmbus for details on PMBus client drivers.
21
22
23Usage Notes
24-----------
25
26This driver does not auto-detect devices. You will have to instantiate the
27devices explicitly. Please see Documentation/i2c/instantiating-devices for
28details.
29
30
31Platform data support
32---------------------
33
34The driver supports standard PMBus driver platform data.
35
36
37Sysfs entries
38-------------
39
40The following attributes are supported. Limits are read-write; all other
41attributes are read-only.
42
43in1_label "vout1"
44in1_input Measured voltage. From READ_VOUT register.
45in1_min Minumum Voltage. From VOUT_UV_WARN_LIMIT register.
46in1_max Maximum voltage. From VOUT_OV_WARN_LIMIT register.
47in1_lcrit Critical minumum Voltage. VOUT_UV_FAULT_LIMIT register.
48in1_crit Critical maximum voltage. From VOUT_OV_FAULT_LIMIT register.
49in1_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status.
50in1_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status.
51in1_lcrit_alarm Voltage critical low alarm. From VOLTAGE_UV_FAULT status.
52in1_crit_alarm Voltage critical high alarm. From VOLTAGE_OV_FAULT status.
53
54curr1_label "iout1"
55curr1_input Measured current. From READ_IOUT register.
56curr1_max Maximum current. From IOUT_OC_WARN_LIMIT register.
57curr1_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register.
58curr1_max_alarm Current high alarm. From IOUT_OC_WARN_LIMIT register.
59curr1_crit_alarm Current critical high alarm. From IOUT_OC_FAULT status.
60
61temp1_input Measured temperature. From READ_TEMPERATURE_1 register.
62temp1_max Maximum temperature. From OT_WARN_LIMIT register.
63temp1_crit Critical high temperature. From OT_FAULT_LIMIT register.
64temp1_max_alarm Chip temperature high alarm. Set by comparing
65 READ_TEMPERATURE_1 with OT_WARN_LIMIT if TEMP_OT_WARNING
66 status is set.
67temp1_crit_alarm Chip temperature critical high alarm. Set by comparing
68 READ_TEMPERATURE_1 with OT_FAULT_LIMIT if TEMP_OT_FAULT
69 status is set.
diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus
index dc4933e96344..5e462fc7f99b 100644
--- a/Documentation/hwmon/pmbus
+++ b/Documentation/hwmon/pmbus
@@ -13,26 +13,6 @@ Supported chips:
13 Prefix: 'ltc2978' 13 Prefix: 'ltc2978'
14 Addresses scanned: - 14 Addresses scanned: -
15 Datasheet: http://cds.linear.com/docs/Datasheet/2978fa.pdf 15 Datasheet: http://cds.linear.com/docs/Datasheet/2978fa.pdf
16 * Maxim MAX16064
17 Quad Power-Supply Controller
18 Prefix: 'max16064'
19 Addresses scanned: -
20 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX16064.pdf
21 * Maxim MAX34440
22 PMBus 6-Channel Power-Supply Manager
23 Prefixes: 'max34440'
24 Addresses scanned: -
25 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34440.pdf
26 * Maxim MAX34441
27 PMBus 5-Channel Power-Supply Manager and Intelligent Fan Controller
28 Prefixes: 'max34441'
29 Addresses scanned: -
30 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34441.pdf
31 * Maxim MAX8688
32 Digital Power-Supply Controller/Monitor
33 Prefix: 'max8688'
34 Addresses scanned: -
35 Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX8688.pdf
36 * Generic PMBus devices 16 * Generic PMBus devices
37 Prefix: 'pmbus' 17 Prefix: 'pmbus'
38 Addresses scanned: - 18 Addresses scanned: -
@@ -175,11 +155,13 @@ currX_crit Critical maximum current.
175 From IIN_OC_FAULT_LIMIT or IOUT_OC_FAULT_LIMIT register. 155 From IIN_OC_FAULT_LIMIT or IOUT_OC_FAULT_LIMIT register.
176currX_alarm Current high alarm. 156currX_alarm Current high alarm.
177 From IIN_OC_WARNING or IOUT_OC_WARNING status. 157 From IIN_OC_WARNING or IOUT_OC_WARNING status.
158currX_max_alarm Current high alarm.
159 From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT status.
178currX_lcrit_alarm Output current critical low alarm. 160currX_lcrit_alarm Output current critical low alarm.
179 From IOUT_UC_FAULT status. 161 From IOUT_UC_FAULT status.
180currX_crit_alarm Current critical high alarm. 162currX_crit_alarm Current critical high alarm.
181 From IIN_OC_FAULT or IOUT_OC_FAULT status. 163 From IIN_OC_FAULT or IOUT_OC_FAULT status.
182currX_label "iin" or "vinY" 164currX_label "iin" or "ioutY"
183 165
184powerX_input Measured power. From READ_PIN or READ_POUT register. 166powerX_input Measured power. From READ_PIN or READ_POUT register.
185powerX_cap Output power cap. From POUT_MAX register. 167powerX_cap Output power cap. From POUT_MAX register.
@@ -193,13 +175,13 @@ powerX_crit_alarm Output power critical high alarm.
193 From POUT_OP_FAULT status. 175 From POUT_OP_FAULT status.
194powerX_label "pin" or "poutY" 176powerX_label "pin" or "poutY"
195 177
196tempX_input Measured tempererature. 178tempX_input Measured temperature.
197 From READ_TEMPERATURE_X register. 179 From READ_TEMPERATURE_X register.
198tempX_min Mimimum tempererature. From UT_WARN_LIMIT register. 180tempX_min Mimimum temperature. From UT_WARN_LIMIT register.
199tempX_max Maximum tempererature. From OT_WARN_LIMIT register. 181tempX_max Maximum temperature. From OT_WARN_LIMIT register.
200tempX_lcrit Critical low tempererature. 182tempX_lcrit Critical low temperature.
201 From UT_FAULT_LIMIT register. 183 From UT_FAULT_LIMIT register.
202tempX_crit Critical high tempererature. 184tempX_crit Critical high temperature.
203 From OT_FAULT_LIMIT register. 185 From OT_FAULT_LIMIT register.
204tempX_min_alarm Chip temperature low alarm. Set by comparing 186tempX_min_alarm Chip temperature low alarm. Set by comparing
205 READ_TEMPERATURE_X with UT_WARN_LIMIT if 187 READ_TEMPERATURE_X with UT_WARN_LIMIT if
diff --git a/Documentation/hwmon/smm665 b/Documentation/hwmon/smm665
index 3820fc9ca52d..59e316140542 100644
--- a/Documentation/hwmon/smm665
+++ b/Documentation/hwmon/smm665
@@ -150,8 +150,8 @@ in8_crit_alarm Channel F critical alarm
150in9_crit_alarm AIN1 critical alarm 150in9_crit_alarm AIN1 critical alarm
151in10_crit_alarm AIN2 critical alarm 151in10_crit_alarm AIN2 critical alarm
152 152
153temp1_input Chip tempererature 153temp1_input Chip temperature
154temp1_min Mimimum chip tempererature 154temp1_min Mimimum chip temperature
155temp1_max Maximum chip tempererature 155temp1_max Maximum chip temperature
156temp1_crit Critical chip tempererature 156temp1_crit Critical chip temperature
157temp1_crit_alarm Temperature critical alarm 157temp1_crit_alarm Temperature critical alarm
diff --git a/Documentation/hwmon/submitting-patches b/Documentation/hwmon/submitting-patches
new file mode 100644
index 000000000000..86f42e8e9e49
--- /dev/null
+++ b/Documentation/hwmon/submitting-patches
@@ -0,0 +1,109 @@
1 How to Get Your Patch Accepted Into the Hwmon Subsystem
2 -------------------------------------------------------
3
4This text is is a collection of suggestions for people writing patches or
5drivers for the hwmon subsystem. Following these suggestions will greatly
6increase the chances of your change being accepted.
7
8
91. General
10----------
11
12* It should be unnecessary to mention, but please read and follow
13 Documentation/SubmitChecklist
14 Documentation/SubmittingDrivers
15 Documentation/SubmittingPatches
16 Documentation/CodingStyle
17
18* If your patch generates checkpatch warnings, please refrain from explanations
19 such as "I don't like that coding style". Keep in mind that each unnecessary
20 warning helps hiding a real problem. If you don't like the kernel coding
21 style, don't write kernel drivers.
22
23* Please test your patch thoroughly. We are not your test group.
24 Sometimes a patch can not or not completely be tested because of missing
25 hardware. In such cases, you should test-build the code on at least one
26 architecture. If run-time testing was not achieved, it should be written
27 explicitly below the patch header.
28
29* If your patch (or the driver) is affected by configuration options such as
30 CONFIG_SMP or CONFIG_HOTPLUG, make sure it compiles for all configuration
31 variants.
32
33
342. Adding functionality to existing drivers
35-------------------------------------------
36
37* Make sure the documentation in Documentation/hwmon/<driver_name> is up to
38 date.
39
40* Make sure the information in Kconfig is up to date.
41
42* If the added functionality requires some cleanup or structural changes, split
43 your patch into a cleanup part and the actual addition. This makes it easier
44 to review your changes, and to bisect any resulting problems.
45
46* Never mix bug fixes, cleanup, and functional enhancements in a single patch.
47
48
493. New drivers
50--------------
51
52* Running your patch or driver file(s) through checkpatch does not mean its
53 formatting is clean. If unsure about formatting in your new driver, run it
54 through Lindent. Lindent is not perfect, and you may have to do some minor
55 cleanup, but it is a good start.
56
57* Consider adding yourself to MAINTAINERS.
58
59* Document the driver in Documentation/hwmon/<driver_name>.
60
61* Add the driver to Kconfig and Makefile in alphabetical order.
62
63* Make sure that all dependencies are listed in Kconfig. For new drivers, it
64 is most likely prudent to add a dependency on EXPERIMENTAL.
65
66* Avoid forward declarations if you can. Rearrange the code if necessary.
67
68* Avoid calculations in macros and macro-generated functions. While such macros
69 may save a line or so in the source, it obfuscates the code and makes code
70 review more difficult. It may also result in code which is more complicated
71 than necessary. Use inline functions or just regular functions instead.
72
73* If the driver has a detect function, make sure it is silent. Debug messages
74 and messages printed after a successful detection are acceptable, but it
75 must not print messages such as "Chip XXX not found/supported".
76
77 Keep in mind that the detect function will run for all drivers supporting an
78 address if a chip is detected on that address. Unnecessary messages will just
79 pollute the kernel log and not provide any value.
80
81* Provide a detect function if and only if a chip can be detected reliably.
82
83* Avoid writing to chip registers in the detect function. If you have to write,
84 only do it after you have already gathered enough data to be certain that the
85 detection is going to be successful.
86
87 Keep in mind that the chip might not be what your driver believes it is, and
88 writing to it might cause a bad misconfiguration.
89
90* Make sure there are no race conditions in the probe function. Specifically,
91 completely initialize your chip first, then create sysfs entries and register
92 with the hwmon subsystem.
93
94* Do not provide support for deprecated sysfs attributes.
95
96* Do not create non-standard attributes unless really needed. If you have to use
97 non-standard attributes, or you believe you do, discuss it on the mailing list
98 first. Either case, provide a detailed explanation why you need the
99 non-standard attribute(s).
100 Standard attributes are specified in Documentation/hwmon/sysfs-interface.
101
102* When deciding which sysfs attributes to support, look at the chip's
103 capabilities. While we do not expect your driver to support everything the
104 chip may offer, it should at least support all limits and alarms.
105
106* Last but not least, please check if a driver for your chip already exists
107 before starting to write a new driver. Especially for temperature sensors,
108 new chips are often variants of previously released chips. In some cases,
109 a presumably new chip may simply have been relabeled.