aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/Kconfig2
-rw-r--r--drivers/Makefile1
-rw-r--r--drivers/hwmon/Kconfig420
-rw-r--r--drivers/hwmon/Makefile44
-rw-r--r--drivers/hwmon/adm1021.c (renamed from drivers/i2c/chips/adm1021.c)0
-rw-r--r--drivers/hwmon/adm1025.c (renamed from drivers/i2c/chips/adm1025.c)0
-rw-r--r--drivers/hwmon/adm1026.c (renamed from drivers/i2c/chips/adm1026.c)0
-rw-r--r--drivers/hwmon/adm1031.c (renamed from drivers/i2c/chips/adm1031.c)0
-rw-r--r--drivers/hwmon/adm9240.c (renamed from drivers/i2c/chips/adm9240.c)0
-rw-r--r--drivers/hwmon/asb100.c (renamed from drivers/i2c/chips/asb100.c)0
-rw-r--r--drivers/hwmon/atxp1.c (renamed from drivers/i2c/chips/atxp1.c)0
-rw-r--r--drivers/hwmon/ds1621.c (renamed from drivers/i2c/chips/ds1621.c)0
-rw-r--r--drivers/hwmon/fscher.c (renamed from drivers/i2c/chips/fscher.c)0
-rw-r--r--drivers/hwmon/fscpos.c (renamed from drivers/i2c/chips/fscpos.c)0
-rw-r--r--drivers/hwmon/gl518sm.c (renamed from drivers/i2c/chips/gl518sm.c)0
-rw-r--r--drivers/hwmon/gl520sm.c (renamed from drivers/i2c/chips/gl520sm.c)0
-rw-r--r--drivers/hwmon/it87.c (renamed from drivers/i2c/chips/it87.c)0
-rw-r--r--drivers/hwmon/lm63.c (renamed from drivers/i2c/chips/lm63.c)0
-rw-r--r--drivers/hwmon/lm75.c (renamed from drivers/i2c/chips/lm75.c)0
-rw-r--r--drivers/hwmon/lm75.h (renamed from drivers/i2c/chips/lm75.h)0
-rw-r--r--drivers/hwmon/lm77.c (renamed from drivers/i2c/chips/lm77.c)0
-rw-r--r--drivers/hwmon/lm78.c (renamed from drivers/i2c/chips/lm78.c)0
-rw-r--r--drivers/hwmon/lm80.c (renamed from drivers/i2c/chips/lm80.c)0
-rw-r--r--drivers/hwmon/lm83.c (renamed from drivers/i2c/chips/lm83.c)0
-rw-r--r--drivers/hwmon/lm85.c (renamed from drivers/i2c/chips/lm85.c)0
-rw-r--r--drivers/hwmon/lm87.c (renamed from drivers/i2c/chips/lm87.c)0
-rw-r--r--drivers/hwmon/lm90.c (renamed from drivers/i2c/chips/lm90.c)0
-rw-r--r--drivers/hwmon/lm92.c (renamed from drivers/i2c/chips/lm92.c)0
-rw-r--r--drivers/hwmon/max1619.c (renamed from drivers/i2c/chips/max1619.c)0
-rw-r--r--drivers/hwmon/pc87360.c (renamed from drivers/i2c/chips/pc87360.c)0
-rw-r--r--drivers/hwmon/sis5595.c (renamed from drivers/i2c/chips/sis5595.c)0
-rw-r--r--drivers/hwmon/smsc47b397.c (renamed from drivers/i2c/chips/smsc47b397.c)0
-rw-r--r--drivers/hwmon/smsc47m1.c (renamed from drivers/i2c/chips/smsc47m1.c)0
-rw-r--r--drivers/hwmon/via686a.c (renamed from drivers/i2c/chips/via686a.c)12
-rw-r--r--drivers/hwmon/w83627ehf.c (renamed from drivers/i2c/chips/w83627ehf.c)0
-rw-r--r--drivers/hwmon/w83627hf.c (renamed from drivers/i2c/chips/w83627hf.c)0
-rw-r--r--drivers/hwmon/w83781d.c (renamed from drivers/i2c/chips/w83781d.c)0
-rw-r--r--drivers/hwmon/w83l785ts.c (renamed from drivers/i2c/chips/w83l785ts.c)0
-rw-r--r--drivers/i2c/algos/i2c-algo-ite.c8
-rw-r--r--drivers/i2c/busses/i2c-i801.c4
-rw-r--r--drivers/i2c/busses/i2c-piix4.c2
-rw-r--r--drivers/i2c/busses/i2c-sis5595.c2
-rw-r--r--drivers/i2c/chips/Kconfig413
-rw-r--r--drivers/i2c/chips/Makefile38
-rw-r--r--drivers/i2c/chips/eeprom.c3
-rw-r--r--drivers/i2c/chips/m41t00.c2
-rw-r--r--drivers/i2c/chips/max6875.c6
-rw-r--r--drivers/i2c/chips/tps65010.c59
-rw-r--r--drivers/i2c/i2c-core.c17
-rw-r--r--drivers/w1/w1.c5
50 files changed, 533 insertions, 505 deletions
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 34efb2150e68..cecab0acc3fe 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -44,6 +44,8 @@ source "drivers/i2c/Kconfig"
44 44
45source "drivers/w1/Kconfig" 45source "drivers/w1/Kconfig"
46 46
47source "drivers/hwmon/Kconfig"
48
47source "drivers/misc/Kconfig" 49source "drivers/misc/Kconfig"
48 50
49source "drivers/media/Kconfig" 51source "drivers/media/Kconfig"
diff --git a/drivers/Makefile b/drivers/Makefile
index 3167be54fedd..126a851d5653 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -52,6 +52,7 @@ obj-$(CONFIG_INPUT) += input/
52obj-$(CONFIG_I2O) += message/ 52obj-$(CONFIG_I2O) += message/
53obj-$(CONFIG_I2C) += i2c/ 53obj-$(CONFIG_I2C) += i2c/
54obj-$(CONFIG_W1) += w1/ 54obj-$(CONFIG_W1) += w1/
55obj-$(CONFIG_HWMON) += hwmon/
55obj-$(CONFIG_PHONE) += telephony/ 56obj-$(CONFIG_PHONE) += telephony/
56obj-$(CONFIG_MD) += md/ 57obj-$(CONFIG_MD) += md/
57obj-$(CONFIG_BT) += bluetooth/ 58obj-$(CONFIG_BT) += bluetooth/
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
new file mode 100644
index 000000000000..140d5f851a5b
--- /dev/null
+++ b/drivers/hwmon/Kconfig
@@ -0,0 +1,420 @@
1#
2# I2C Sensor chip drivers configuration
3#
4
5menu "Hardware Monitoring support"
6
7config HWMON
8 tristate "Hardware Monitoring support"
9 default y
10 help
11 Hardware monitoring devices let you monitor the hardware health
12 of a system. Most modern motherboards include such a device. It
13 can include temperature sensors, voltage sensors, fan speed
14 sensors and various additional features such as the ability to
15 control the speed of the fans.
16
17config SENSORS_ADM1021
18 tristate "Analog Devices ADM1021 and compatibles"
19 depends on HWMON && I2C
20 select I2C_SENSOR
21 help
22 If you say yes here you get support for Analog Devices ADM1021
23 and ADM1023 sensor chips and clones: Maxim MAX1617 and MAX1617A,
24 Genesys Logic GL523SM, National Semiconductor LM84, TI THMC10,
25 and the XEON processor built-in sensor.
26
27 This driver can also be built as a module. If so, the module
28 will be called adm1021.
29
30config SENSORS_ADM1025
31 tristate "Analog Devices ADM1025 and compatibles"
32 depends on HWMON && I2C && EXPERIMENTAL
33 select I2C_SENSOR
34 help
35 If you say yes here you get support for Analog Devices ADM1025
36 and Philips NE1619 sensor chips.
37
38 This driver can also be built as a module. If so, the module
39 will be called adm1025.
40
41config SENSORS_ADM1026
42 tristate "Analog Devices ADM1026 and compatibles"
43 depends on HWMON && I2C && EXPERIMENTAL
44 select I2C_SENSOR
45 help
46 If you say yes here you get support for Analog Devices ADM1026
47 sensor chip.
48
49 This driver can also be built as a module. If so, the module
50 will be called adm1026.
51
52config SENSORS_ADM1031
53 tristate "Analog Devices ADM1031 and compatibles"
54 depends on HWMON && I2C && EXPERIMENTAL
55 select I2C_SENSOR
56 help
57 If you say yes here you get support for Analog Devices ADM1031
58 and ADM1030 sensor chips.
59
60 This driver can also be built as a module. If so, the module
61 will be called adm1031.
62
63config SENSORS_ADM9240
64 tristate "Analog Devices ADM9240 and compatibles"
65 depends on HWMON && I2C && EXPERIMENTAL
66 select I2C_SENSOR
67 help
68 If you say yes here you get support for Analog Devices ADM9240,
69 Dallas DS1780, National Semiconductor LM81 sensor chips.
70
71 This driver can also be built as a module. If so, the module
72 will be called adm9240.
73
74config SENSORS_ASB100
75 tristate "Asus ASB100 Bach"
76 depends on HWMON && I2C && EXPERIMENTAL
77 select I2C_SENSOR
78 help
79 If you say yes here you get support for the ASB100 Bach sensor
80 chip found on some Asus mainboards.
81
82 This driver can also be built as a module. If so, the module
83 will be called asb100.
84
85config SENSORS_ATXP1
86 tristate "Attansic ATXP1 VID controller"
87 depends on HWMON && I2C && EXPERIMENTAL
88 select I2C_SENSOR
89 help
90 If you say yes here you get support for the Attansic ATXP1 VID
91 controller.
92
93 If your board have such a chip, you are able to control your CPU
94 core and other voltages.
95
96 This driver can also be built as a module. If so, the module
97 will be called atxp1.
98
99config SENSORS_DS1621
100 tristate "Dallas Semiconductor DS1621 and DS1625"
101 depends on HWMON && I2C && EXPERIMENTAL
102 select I2C_SENSOR
103 help
104 If you say yes here you get support for Dallas Semiconductor
105 DS1621 and DS1625 sensor chips.
106
107 This driver can also be built as a module. If so, the module
108 will be called ds1621.
109
110config SENSORS_FSCHER
111 tristate "FSC Hermes"
112 depends on HWMON && I2C && EXPERIMENTAL
113 select I2C_SENSOR
114 help
115 If you say yes here you get support for Fujitsu Siemens
116 Computers Hermes sensor chips.
117
118 This driver can also be built as a module. If so, the module
119 will be called fscher.
120
121config SENSORS_FSCPOS
122 tristate "FSC Poseidon"
123 depends on HWMON && I2C && EXPERIMENTAL
124 select I2C_SENSOR
125 help
126 If you say yes here you get support for Fujitsu Siemens
127 Computers Poseidon sensor chips.
128
129 This driver can also be built as a module. If so, the module
130 will be called fscpos.
131
132config SENSORS_GL518SM
133 tristate "Genesys Logic GL518SM"
134 depends on HWMON && I2C
135 select I2C_SENSOR
136 help
137 If you say yes here you get support for Genesys Logic GL518SM
138 sensor chips.
139
140 This driver can also be built as a module. If so, the module
141 will be called gl518sm.
142
143config SENSORS_GL520SM
144 tristate "Genesys Logic GL520SM"
145 depends on HWMON && I2C && EXPERIMENTAL
146 select I2C_SENSOR
147 help
148 If you say yes here you get support for Genesys Logic GL520SM
149 sensor chips.
150
151 This driver can also be built as a module. If so, the module
152 will be called gl520sm.
153
154config SENSORS_IT87
155 tristate "ITE IT87xx and compatibles"
156 depends on HWMON && I2C
157 select I2C_SENSOR
158 help
159 If you say yes here you get support for ITE IT87xx sensor chips
160 and clones: SiS960.
161
162 This driver can also be built as a module. If so, the module
163 will be called it87.
164
165config SENSORS_LM63
166 tristate "National Semiconductor LM63"
167 depends on HWMON && I2C && EXPERIMENTAL
168 select I2C_SENSOR
169 help
170 If you say yes here you get support for the National Semiconductor
171 LM63 remote diode digital temperature sensor with integrated fan
172 control. Such chips are found on the Tyan S4882 (Thunder K8QS Pro)
173 motherboard, among others.
174
175 This driver can also be built as a module. If so, the module
176 will be called lm63.
177
178config SENSORS_LM75
179 tristate "National Semiconductor LM75 and compatibles"
180 depends on HWMON && I2C
181 select I2C_SENSOR
182 help
183 If you say yes here you get support for National Semiconductor LM75
184 sensor chips and clones: Dallas Semiconductor DS75 and DS1775 (in
185 9-bit precision mode), and TelCom (now Microchip) TCN75.
186
187 The DS75 and DS1775 in 10- to 12-bit precision modes will require
188 a force module parameter. The driver will not handle the extra
189 precision anyhow.
190
191 This driver can also be built as a module. If so, the module
192 will be called lm75.
193
194config SENSORS_LM77
195 tristate "National Semiconductor LM77"
196 depends on HWMON && I2C && EXPERIMENTAL
197 select I2C_SENSOR
198 help
199 If you say yes here you get support for National Semiconductor LM77
200 sensor chips.
201
202 This driver can also be built as a module. If so, the module
203 will be called lm77.
204
205config SENSORS_LM78
206 tristate "National Semiconductor LM78 and compatibles"
207 depends on HWMON && I2C && EXPERIMENTAL
208 select I2C_SENSOR
209 help
210 If you say yes here you get support for National Semiconductor LM78,
211 LM78-J and LM79.
212
213 This driver can also be built as a module. If so, the module
214 will be called lm78.
215
216config SENSORS_LM80
217 tristate "National Semiconductor LM80"
218 depends on HWMON && I2C && EXPERIMENTAL
219 select I2C_SENSOR
220 help
221 If you say yes here you get support for National Semiconductor
222 LM80 sensor chips.
223
224 This driver can also be built as a module. If so, the module
225 will be called lm80.
226
227config SENSORS_LM83
228 tristate "National Semiconductor LM83"
229 depends on HWMON && I2C
230 select I2C_SENSOR
231 help
232 If you say yes here you get support for National Semiconductor
233 LM83 sensor chips.
234
235 This driver can also be built as a module. If so, the module
236 will be called lm83.
237
238config SENSORS_LM85
239 tristate "National Semiconductor LM85 and compatibles"
240 depends on HWMON && I2C && EXPERIMENTAL
241 select I2C_SENSOR
242 help
243 If you say yes here you get support for National Semiconductor LM85
244 sensor chips and clones: ADT7463, EMC6D100, EMC6D102 and ADM1027.
245
246 This driver can also be built as a module. If so, the module
247 will be called lm85.
248
249config SENSORS_LM87
250 tristate "National Semiconductor LM87"
251 depends on HWMON && I2C && EXPERIMENTAL
252 select I2C_SENSOR
253 help
254 If you say yes here you get support for National Semiconductor LM87
255 sensor chips.
256
257 This driver can also be built as a module. If so, the module
258 will be called lm87.
259
260config SENSORS_LM90
261 tristate "National Semiconductor LM90 and compatibles"
262 depends on HWMON && I2C
263 select I2C_SENSOR
264 help
265 If you say yes here you get support for National Semiconductor LM90,
266 LM86, LM89 and LM99, Analog Devices ADM1032 and Maxim MAX6657 and
267 MAX6658 sensor chips.
268
269 The Analog Devices ADT7461 sensor chip is also supported, but only
270 if found in ADM1032 compatibility mode.
271
272 This driver can also be built as a module. If so, the module
273 will be called lm90.
274
275config SENSORS_LM92
276 tristate "National Semiconductor LM92 and compatibles"
277 depends on HWMON && I2C && EXPERIMENTAL
278 select I2C_SENSOR
279 help
280 If you say yes here you get support for National Semiconductor LM92
281 and Maxim MAX6635 sensor chips.
282
283 This driver can also be built as a module. If so, the module
284 will be called lm92.
285
286config SENSORS_MAX1619
287 tristate "Maxim MAX1619 sensor chip"
288 depends on HWMON && I2C && EXPERIMENTAL
289 select I2C_SENSOR
290 help
291 If you say yes here you get support for MAX1619 sensor chip.
292
293 This driver can also be built as a module. If so, the module
294 will be called max1619.
295
296config SENSORS_PC87360
297 tristate "National Semiconductor PC87360 family"
298 depends on HWMON && I2C && EXPERIMENTAL
299 select I2C_SENSOR
300 select I2C_ISA
301 help
302 If you say yes here you get access to the hardware monitoring
303 functions of the National Semiconductor PC8736x Super-I/O chips.
304 The PC87360, PC87363 and PC87364 only have fan monitoring and
305 control. The PC87365 and PC87366 additionally have voltage and
306 temperature monitoring.
307
308 This driver can also be built as a module. If so, the module
309 will be called pc87360.
310
311config SENSORS_SIS5595
312 tristate "Silicon Integrated Systems Corp. SiS5595"
313 depends on HWMON && I2C && PCI && EXPERIMENTAL
314 select I2C_SENSOR
315 select I2C_ISA
316 help
317 If you say yes here you get support for the integrated sensors in
318 SiS5595 South Bridges.
319
320 This driver can also be built as a module. If so, the module
321 will be called sis5595.
322
323config SENSORS_SMSC47M1
324 tristate "SMSC LPC47M10x and compatibles"
325 depends on HWMON && I2C && EXPERIMENTAL
326 select I2C_SENSOR
327 select I2C_ISA
328 help
329 If you say yes here you get support for the integrated fan
330 monitoring and control capabilities of the SMSC LPC47B27x,
331 LPC47M10x, LPC47M13x, LPC47M14x, LPC47M15x and LPC47M192 chips.
332
333 This driver can also be built as a module. If so, the module
334 will be called smsc47m1.
335
336config SENSORS_SMSC47B397
337 tristate "SMSC LPC47B397-NC"
338 depends on HWMON && I2C && EXPERIMENTAL
339 select I2C_SENSOR
340 select I2C_ISA
341 help
342 If you say yes here you get support for the SMSC LPC47B397-NC
343 sensor chip.
344
345 This driver can also be built as a module. If so, the module
346 will be called smsc47b397.
347
348config SENSORS_VIA686A
349 tristate "VIA686A"
350 depends on HWMON && I2C && PCI
351 select I2C_SENSOR
352 select I2C_ISA
353 help
354 If you say yes here you get support for the integrated sensors in
355 Via 686A/B South Bridges.
356
357 This driver can also be built as a module. If so, the module
358 will be called via686a.
359
360config SENSORS_W83781D
361 tristate "Winbond W83781D, W83782D, W83783S, W83627HF, Asus AS99127F"
362 depends on HWMON && I2C
363 select I2C_SENSOR
364 help
365 If you say yes here you get support for the Winbond W8378x series
366 of sensor chips: the W83781D, W83782D, W83783S and W83627HF,
367 and the similar Asus AS99127F.
368
369 This driver can also be built as a module. If so, the module
370 will be called w83781d.
371
372config SENSORS_W83L785TS
373 tristate "Winbond W83L785TS-S"
374 depends on HWMON && I2C && EXPERIMENTAL
375 select I2C_SENSOR
376 help
377 If you say yes here you get support for the Winbond W83L785TS-S
378 sensor chip, which is used on the Asus A7N8X, among other
379 motherboards.
380
381 This driver can also be built as a module. If so, the module
382 will be called w83l785ts.
383
384config SENSORS_W83627HF
385 tristate "Winbond W83627HF, W83627THF, W83637HF, W83697HF"
386 depends on HWMON && I2C && EXPERIMENTAL
387 select I2C_SENSOR
388 select I2C_ISA
389 help
390 If you say yes here you get support for the Winbond W836X7 series
391 of sensor chips: the W83627HF, W83627THF, W83637HF, and the W83697HF
392
393 This driver can also be built as a module. If so, the module
394 will be called w83627hf.
395
396config SENSORS_W83627EHF
397 tristate "Winbond W83627EHF"
398 depends on HWMON && I2C && EXPERIMENTAL
399 select I2C_SENSOR
400 select I2C_ISA
401 help
402 If you say yes here you get preliminary support for the hardware
403 monitoring functionality of the Winbond W83627EHF Super-I/O chip.
404 Only fan and temperature inputs are supported at the moment, while
405 the chip does much more than that.
406
407 This driver can also be built as a module. If so, the module
408 will be called w83627ehf.
409
410config HWMON_DEBUG_CHIP
411 bool "Hardware Monitoring Chip debugging messages"
412 depends on HWMON
413 default n
414 help
415 Say Y here if you want the I2C chip drivers to produce a bunch of
416 debug messages to the system log. Select this if you are having
417 a problem with I2C support and want to see more of what is going
418 on.
419
420endmenu
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
new file mode 100644
index 000000000000..2781403a0236
--- /dev/null
+++ b/drivers/hwmon/Makefile
@@ -0,0 +1,44 @@
1#
2# Makefile for sensor chip drivers.
3#
4
5# asb100, then w83781d go first, as they can override other drivers' addresses.
6obj-$(CONFIG_SENSORS_ASB100) += asb100.o
7obj-$(CONFIG_SENSORS_W83627HF) += w83627hf.o
8obj-$(CONFIG_SENSORS_W83781D) += w83781d.o
9
10obj-$(CONFIG_SENSORS_ADM1021) += adm1021.o
11obj-$(CONFIG_SENSORS_ADM1025) += adm1025.o
12obj-$(CONFIG_SENSORS_ADM1026) += adm1026.o
13obj-$(CONFIG_SENSORS_ADM1031) += adm1031.o
14obj-$(CONFIG_SENSORS_ADM9240) += adm9240.o
15obj-$(CONFIG_SENSORS_ATXP1) += atxp1.o
16obj-$(CONFIG_SENSORS_DS1621) += ds1621.o
17obj-$(CONFIG_SENSORS_FSCHER) += fscher.o
18obj-$(CONFIG_SENSORS_FSCPOS) += fscpos.o
19obj-$(CONFIG_SENSORS_GL518SM) += gl518sm.o
20obj-$(CONFIG_SENSORS_GL520SM) += gl520sm.o
21obj-$(CONFIG_SENSORS_IT87) += it87.o
22obj-$(CONFIG_SENSORS_LM63) += lm63.o
23obj-$(CONFIG_SENSORS_LM75) += lm75.o
24obj-$(CONFIG_SENSORS_LM77) += lm77.o
25obj-$(CONFIG_SENSORS_LM78) += lm78.o
26obj-$(CONFIG_SENSORS_LM80) += lm80.o
27obj-$(CONFIG_SENSORS_LM83) += lm83.o
28obj-$(CONFIG_SENSORS_LM85) += lm85.o
29obj-$(CONFIG_SENSORS_LM87) += lm87.o
30obj-$(CONFIG_SENSORS_LM90) += lm90.o
31obj-$(CONFIG_SENSORS_LM92) += lm92.o
32obj-$(CONFIG_SENSORS_MAX1619) += max1619.o
33obj-$(CONFIG_SENSORS_PC87360) += pc87360.o
34obj-$(CONFIG_SENSORS_SIS5595) += sis5595.o
35obj-$(CONFIG_SENSORS_SMSC47B397)+= smsc47b397.o
36obj-$(CONFIG_SENSORS_SMSC47M1) += smsc47m1.o
37obj-$(CONFIG_SENSORS_VIA686A) += via686a.o
38obj-$(CONFIG_SENSORS_W83627EHF) += w83627ehf.o
39obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o
40
41ifeq ($(CONFIG_HWMON_DEBUG_CHIP),y)
42EXTRA_CFLAGS += -DDEBUG
43endif
44
diff --git a/drivers/i2c/chips/adm1021.c b/drivers/hwmon/adm1021.c
index d2c774c32f45..d2c774c32f45 100644
--- a/drivers/i2c/chips/adm1021.c
+++ b/drivers/hwmon/adm1021.c
diff --git a/drivers/i2c/chips/adm1025.c b/drivers/hwmon/adm1025.c
index e452d0daf906..e452d0daf906 100644
--- a/drivers/i2c/chips/adm1025.c
+++ b/drivers/hwmon/adm1025.c
diff --git a/drivers/i2c/chips/adm1026.c b/drivers/hwmon/adm1026.c
index 3c85fe150cd7..3c85fe150cd7 100644
--- a/drivers/i2c/chips/adm1026.c
+++ b/drivers/hwmon/adm1026.c
diff --git a/drivers/i2c/chips/adm1031.c b/drivers/hwmon/adm1031.c
index 9168e983ca1d..9168e983ca1d 100644
--- a/drivers/i2c/chips/adm1031.c
+++ b/drivers/hwmon/adm1031.c
diff --git a/drivers/i2c/chips/adm9240.c b/drivers/hwmon/adm9240.c
index 5c68e9c311aa..5c68e9c311aa 100644
--- a/drivers/i2c/chips/adm9240.c
+++ b/drivers/hwmon/adm9240.c
diff --git a/drivers/i2c/chips/asb100.c b/drivers/hwmon/asb100.c
index 70d996d6fe0a..70d996d6fe0a 100644
--- a/drivers/i2c/chips/asb100.c
+++ b/drivers/hwmon/asb100.c
diff --git a/drivers/i2c/chips/atxp1.c b/drivers/hwmon/atxp1.c
index 0bcf82b4c07b..0bcf82b4c07b 100644
--- a/drivers/i2c/chips/atxp1.c
+++ b/drivers/hwmon/atxp1.c
diff --git a/drivers/i2c/chips/ds1621.c b/drivers/hwmon/ds1621.c
index 5360d58804f6..5360d58804f6 100644
--- a/drivers/i2c/chips/ds1621.c
+++ b/drivers/hwmon/ds1621.c
diff --git a/drivers/i2c/chips/fscher.c b/drivers/hwmon/fscher.c
index da411741c2c5..da411741c2c5 100644
--- a/drivers/i2c/chips/fscher.c
+++ b/drivers/hwmon/fscher.c
diff --git a/drivers/i2c/chips/fscpos.c b/drivers/hwmon/fscpos.c
index 3beaa6191ef4..3beaa6191ef4 100644
--- a/drivers/i2c/chips/fscpos.c
+++ b/drivers/hwmon/fscpos.c
diff --git a/drivers/i2c/chips/gl518sm.c b/drivers/hwmon/gl518sm.c
index 6bedf729dcf5..6bedf729dcf5 100644
--- a/drivers/i2c/chips/gl518sm.c
+++ b/drivers/hwmon/gl518sm.c
diff --git a/drivers/i2c/chips/gl520sm.c b/drivers/hwmon/gl520sm.c
index a13a504f5bfa..a13a504f5bfa 100644
--- a/drivers/i2c/chips/gl520sm.c
+++ b/drivers/hwmon/gl520sm.c
diff --git a/drivers/i2c/chips/it87.c b/drivers/hwmon/it87.c
index db20c9e47393..db20c9e47393 100644
--- a/drivers/i2c/chips/it87.c
+++ b/drivers/hwmon/it87.c
diff --git a/drivers/i2c/chips/lm63.c b/drivers/hwmon/lm63.c
index 7c6f9ea5a254..7c6f9ea5a254 100644
--- a/drivers/i2c/chips/lm63.c
+++ b/drivers/hwmon/lm63.c
diff --git a/drivers/i2c/chips/lm75.c b/drivers/hwmon/lm75.c
index 5be164ed278e..5be164ed278e 100644
--- a/drivers/i2c/chips/lm75.c
+++ b/drivers/hwmon/lm75.c
diff --git a/drivers/i2c/chips/lm75.h b/drivers/hwmon/lm75.h
index 63e3f2fb4c21..63e3f2fb4c21 100644
--- a/drivers/i2c/chips/lm75.h
+++ b/drivers/hwmon/lm75.h
diff --git a/drivers/i2c/chips/lm77.c b/drivers/hwmon/lm77.c
index b98f44952997..b98f44952997 100644
--- a/drivers/i2c/chips/lm77.c
+++ b/drivers/hwmon/lm77.c
diff --git a/drivers/i2c/chips/lm78.c b/drivers/hwmon/lm78.c
index 29241469dcba..29241469dcba 100644
--- a/drivers/i2c/chips/lm78.c
+++ b/drivers/hwmon/lm78.c
diff --git a/drivers/i2c/chips/lm80.c b/drivers/hwmon/lm80.c
index 8100595feb44..8100595feb44 100644
--- a/drivers/i2c/chips/lm80.c
+++ b/drivers/hwmon/lm80.c
diff --git a/drivers/i2c/chips/lm83.c b/drivers/hwmon/lm83.c
index a49008b444c8..a49008b444c8 100644
--- a/drivers/i2c/chips/lm83.c
+++ b/drivers/hwmon/lm83.c
diff --git a/drivers/i2c/chips/lm85.c b/drivers/hwmon/lm85.c
index b4d7fd418264..b4d7fd418264 100644
--- a/drivers/i2c/chips/lm85.c
+++ b/drivers/hwmon/lm85.c
diff --git a/drivers/i2c/chips/lm87.c b/drivers/hwmon/lm87.c
index 1921ed1af182..1921ed1af182 100644
--- a/drivers/i2c/chips/lm87.c
+++ b/drivers/hwmon/lm87.c
diff --git a/drivers/i2c/chips/lm90.c b/drivers/hwmon/lm90.c
index a67dcadf7cb0..a67dcadf7cb0 100644
--- a/drivers/i2c/chips/lm90.c
+++ b/drivers/hwmon/lm90.c
diff --git a/drivers/i2c/chips/lm92.c b/drivers/hwmon/lm92.c
index 215c8e40ffdd..215c8e40ffdd 100644
--- a/drivers/i2c/chips/lm92.c
+++ b/drivers/hwmon/lm92.c
diff --git a/drivers/i2c/chips/max1619.c b/drivers/hwmon/max1619.c
index bf553dcd97d6..bf553dcd97d6 100644
--- a/drivers/i2c/chips/max1619.c
+++ b/drivers/hwmon/max1619.c
diff --git a/drivers/i2c/chips/pc87360.c b/drivers/hwmon/pc87360.c
index 876c68f3af31..876c68f3af31 100644
--- a/drivers/i2c/chips/pc87360.c
+++ b/drivers/hwmon/pc87360.c
diff --git a/drivers/i2c/chips/sis5595.c b/drivers/hwmon/sis5595.c
index 6bbfc8fb4f13..6bbfc8fb4f13 100644
--- a/drivers/i2c/chips/sis5595.c
+++ b/drivers/hwmon/sis5595.c
diff --git a/drivers/i2c/chips/smsc47b397.c b/drivers/hwmon/smsc47b397.c
index 251ac2659554..251ac2659554 100644
--- a/drivers/i2c/chips/smsc47b397.c
+++ b/drivers/hwmon/smsc47b397.c
diff --git a/drivers/i2c/chips/smsc47m1.c b/drivers/hwmon/smsc47m1.c
index 897117a7213f..897117a7213f 100644
--- a/drivers/i2c/chips/smsc47m1.c
+++ b/drivers/hwmon/smsc47m1.c
diff --git a/drivers/i2c/chips/via686a.c b/drivers/hwmon/via686a.c
index 137d9b7cacd4..164d47948390 100644
--- a/drivers/i2c/chips/via686a.c
+++ b/drivers/hwmon/via686a.c
@@ -1,9 +1,9 @@
1/* 1/*
2 via686a.c - Part of lm_sensors, Linux kernel modules 2 via686a.c - Part of lm_sensors, Linux kernel modules
3 for hardware monitoring 3 for hardware monitoring
4 4
5 Copyright (c) 1998 - 2002 Frodo Looijaard <frodol@dds.nl>, 5 Copyright (c) 1998 - 2002 Frodo Looijaard <frodol@dds.nl>,
6 Kyösti Mälkki <kmalkki@cc.hut.fi>, 6 Kyösti Mälkki <kmalkki@cc.hut.fi>,
7 Mark Studebaker <mdsxyz123@yahoo.com>, 7 Mark Studebaker <mdsxyz123@yahoo.com>,
8 and Bob Dougherty <bobd@stanford.edu> 8 and Bob Dougherty <bobd@stanford.edu>
9 (Some conversion-factor data were contributed by Jonathan Teh Soon Yew 9 (Some conversion-factor data were contributed by Jonathan Teh Soon Yew
@@ -171,18 +171,18 @@ static inline u8 FAN_TO_REG(long rpm, int div)
171/******** TEMP CONVERSIONS (Bob Dougherty) *********/ 171/******** TEMP CONVERSIONS (Bob Dougherty) *********/
172/* linear fits from HWMon.cpp (Copyright 1998-2000 Jonathan Teh Soon Yew) 172/* linear fits from HWMon.cpp (Copyright 1998-2000 Jonathan Teh Soon Yew)
173 if(temp<169) 173 if(temp<169)
174 return double(temp)*0.427-32.08; 174 return double(temp)*0.427-32.08;
175 else if(temp>=169 && temp<=202) 175 else if(temp>=169 && temp<=202)
176 return double(temp)*0.582-58.16; 176 return double(temp)*0.582-58.16;
177 else 177 else
178 return double(temp)*0.924-127.33; 178 return double(temp)*0.924-127.33;
179 179
180 A fifth-order polynomial fits the unofficial data (provided by Alex van 180 A fifth-order polynomial fits the unofficial data (provided by Alex van
181 Kaam <darkside@chello.nl>) a bit better. It also give more reasonable 181 Kaam <darkside@chello.nl>) a bit better. It also give more reasonable
182 numbers on my machine (ie. they agree with what my BIOS tells me). 182 numbers on my machine (ie. they agree with what my BIOS tells me).
183 Here's the fifth-order fit to the 8-bit data: 183 Here's the fifth-order fit to the 8-bit data:
184 temp = 1.625093e-10*val^5 - 1.001632e-07*val^4 + 2.457653e-05*val^3 - 184 temp = 1.625093e-10*val^5 - 1.001632e-07*val^4 + 2.457653e-05*val^3 -
185 2.967619e-03*val^2 + 2.175144e-01*val - 7.090067e+0. 185 2.967619e-03*val^2 + 2.175144e-01*val - 7.090067e+0.
186 186
187 (2000-10-25- RFD: thanks to Uwe Andersen <uandersen@mayah.com> for 187 (2000-10-25- RFD: thanks to Uwe Andersen <uandersen@mayah.com> for
188 finding my typos in this formula!) 188 finding my typos in this formula!)
diff --git a/drivers/i2c/chips/w83627ehf.c b/drivers/hwmon/w83627ehf.c
index 8a40b6976e1a..8a40b6976e1a 100644
--- a/drivers/i2c/chips/w83627ehf.c
+++ b/drivers/hwmon/w83627ehf.c
diff --git a/drivers/i2c/chips/w83627hf.c b/drivers/hwmon/w83627hf.c
index bd87a42e068a..bd87a42e068a 100644
--- a/drivers/i2c/chips/w83627hf.c
+++ b/drivers/hwmon/w83627hf.c
diff --git a/drivers/i2c/chips/w83781d.c b/drivers/hwmon/w83781d.c
index 0bb131ce09eb..0bb131ce09eb 100644
--- a/drivers/i2c/chips/w83781d.c
+++ b/drivers/hwmon/w83781d.c
diff --git a/drivers/i2c/chips/w83l785ts.c b/drivers/hwmon/w83l785ts.c
index 4469d52aba4c..4469d52aba4c 100644
--- a/drivers/i2c/chips/w83l785ts.c
+++ b/drivers/hwmon/w83l785ts.c
diff --git a/drivers/i2c/algos/i2c-algo-ite.c b/drivers/i2c/algos/i2c-algo-ite.c
index 68e9e6832ca0..e6cae39f47aa 100644
--- a/drivers/i2c/algos/i2c-algo-ite.c
+++ b/drivers/i2c/algos/i2c-algo-ite.c
@@ -208,7 +208,7 @@ static int test_bus(struct i2c_algo_iic_data *adap, char *name) {
208 goto bailout; 208 goto bailout;
209 } 209 }
210 sdalo(adap); 210 sdalo(adap);
211 printk("test_bus:1 scl: %d sda: %d \n",getscl(adap), 211 printk("test_bus:1 scl: %d sda: %d\n", getscl(adap),
212 getsda(adap)); 212 getsda(adap));
213 if ( 0 != getsda(adap) ) { 213 if ( 0 != getsda(adap) ) {
214 printk("test_bus: %s SDA stuck high!\n",name); 214 printk("test_bus: %s SDA stuck high!\n",name);
@@ -221,7 +221,7 @@ static int test_bus(struct i2c_algo_iic_data *adap, char *name) {
221 goto bailout; 221 goto bailout;
222 } 222 }
223 sdahi(adap); 223 sdahi(adap);
224 printk("test_bus:2 scl: %d sda: %d \n",getscl(adap), 224 printk("test_bus:2 scl: %d sda: %d\n", getscl(adap),
225 getsda(adap)); 225 getsda(adap));
226 if ( 0 == getsda(adap) ) { 226 if ( 0 == getsda(adap) ) {
227 printk("test_bus: %s SDA stuck low!\n",name); 227 printk("test_bus: %s SDA stuck low!\n",name);
@@ -234,7 +234,7 @@ static int test_bus(struct i2c_algo_iic_data *adap, char *name) {
234 goto bailout; 234 goto bailout;
235 } 235 }
236 scllo(adap); 236 scllo(adap);
237 printk("test_bus:3 scl: %d sda: %d \n",getscl(adap), 237 printk("test_bus:3 scl: %d sda: %d\n", getscl(adap),
238 getsda(adap)); 238 getsda(adap));
239 if ( 0 != getscl(adap) ) { 239 if ( 0 != getscl(adap) ) {
240 240
@@ -247,7 +247,7 @@ static int test_bus(struct i2c_algo_iic_data *adap, char *name) {
247 goto bailout; 247 goto bailout;
248 } 248 }
249 sclhi(adap); 249 sclhi(adap);
250 printk("test_bus:4 scl: %d sda: %d \n",getscl(adap), 250 printk("test_bus:4 scl: %d sda: %d\n", getscl(adap),
251 getsda(adap)); 251 getsda(adap));
252 if ( 0 == getscl(adap) ) { 252 if ( 0 == getscl(adap) ) {
253 printk("test_bus: %s SCL stuck low!\n",name); 253 printk("test_bus: %s SCL stuck low!\n",name);
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
index 45e6efb1dcd1..0ab7e37f5b00 100644
--- a/drivers/i2c/busses/i2c-i801.c
+++ b/drivers/i2c/busses/i2c-i801.c
@@ -194,7 +194,7 @@ static int i801_transaction(void)
194 /* Make sure the SMBus host is ready to start transmitting */ 194 /* Make sure the SMBus host is ready to start transmitting */
195 /* 0x1f = Failed, Bus_Err, Dev_Err, Intr, Host_Busy */ 195 /* 0x1f = Failed, Bus_Err, Dev_Err, Intr, Host_Busy */
196 if ((temp = (0x1f & inb_p(SMBHSTSTS))) != 0x00) { 196 if ((temp = (0x1f & inb_p(SMBHSTSTS))) != 0x00) {
197 dev_dbg(&I801_dev->dev, "SMBus busy (%02x). Resetting... \n", 197 dev_dbg(&I801_dev->dev, "SMBus busy (%02x). Resetting...\n",
198 temp); 198 temp);
199 outb_p(temp, SMBHSTSTS); 199 outb_p(temp, SMBHSTSTS);
200 if ((temp = (0x1f & inb_p(SMBHSTSTS))) != 0x00) { 200 if ((temp = (0x1f & inb_p(SMBHSTSTS))) != 0x00) {
@@ -315,7 +315,7 @@ static int i801_block_transaction(union i2c_smbus_data *data, char read_write,
315 } 315 }
316 if (temp & errmask) { 316 if (temp & errmask) {
317 dev_dbg(&I801_dev->dev, "SMBus busy (%02x). " 317 dev_dbg(&I801_dev->dev, "SMBus busy (%02x). "
318 "Resetting... \n", temp); 318 "Resetting...\n", temp);
319 outb_p(temp, SMBHSTSTS); 319 outb_p(temp, SMBHSTSTS);
320 if (((temp = inb_p(SMBHSTSTS)) & errmask) != 0x00) { 320 if (((temp = inb_p(SMBHSTSTS)) & errmask) != 0x00) {
321 dev_err(&I801_dev->dev, 321 dev_err(&I801_dev->dev,
diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c
index 1f80ba9da6f1..6d34ee381ce1 100644
--- a/drivers/i2c/busses/i2c-piix4.c
+++ b/drivers/i2c/busses/i2c-piix4.c
@@ -243,7 +243,7 @@ static int piix4_transaction(void)
243 /* Make sure the SMBus host is ready to start transmitting */ 243 /* Make sure the SMBus host is ready to start transmitting */
244 if ((temp = inb_p(SMBHSTSTS)) != 0x00) { 244 if ((temp = inb_p(SMBHSTSTS)) != 0x00) {
245 dev_dbg(&piix4_adapter.dev, "SMBus busy (%02x). " 245 dev_dbg(&piix4_adapter.dev, "SMBus busy (%02x). "
246 "Resetting... \n", temp); 246 "Resetting...\n", temp);
247 outb_p(temp, SMBHSTSTS); 247 outb_p(temp, SMBHSTSTS);
248 if ((temp = inb_p(SMBHSTSTS)) != 0x00) { 248 if ((temp = inb_p(SMBHSTSTS)) != 0x00) {
249 dev_err(&piix4_adapter.dev, "Failed! (%02x)\n", temp); 249 dev_err(&piix4_adapter.dev, "Failed! (%02x)\n", temp);
diff --git a/drivers/i2c/busses/i2c-sis5595.c b/drivers/i2c/busses/i2c-sis5595.c
index 2b5911cfb7b5..bbd5e4e52f09 100644
--- a/drivers/i2c/busses/i2c-sis5595.c
+++ b/drivers/i2c/busses/i2c-sis5595.c
@@ -228,7 +228,7 @@ static int sis5595_transaction(struct i2c_adapter *adap)
228 /* Make sure the SMBus host is ready to start transmitting */ 228 /* Make sure the SMBus host is ready to start transmitting */
229 temp = sis5595_read(SMB_STS_LO) + (sis5595_read(SMB_STS_HI) << 8); 229 temp = sis5595_read(SMB_STS_LO) + (sis5595_read(SMB_STS_HI) << 8);
230 if (temp != 0x00) { 230 if (temp != 0x00) {
231 dev_dbg(&adap->dev, "SMBus busy (%04x). Resetting... \n", temp); 231 dev_dbg(&adap->dev, "SMBus busy (%04x). Resetting...\n", temp);
232 sis5595_write(SMB_STS_LO, temp & 0xff); 232 sis5595_write(SMB_STS_LO, temp & 0xff);
233 sis5595_write(SMB_STS_HI, temp >> 8); 233 sis5595_write(SMB_STS_HI, temp >> 8);
234 if ((temp = sis5595_read(SMB_STS_LO) + (sis5595_read(SMB_STS_HI) << 8)) != 0x00) { 234 if ((temp = sis5595_read(SMB_STS_LO) + (sis5595_read(SMB_STS_HI) << 8)) != 0x00) {
diff --git a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig
index a0982da09803..43f70dbfc03f 100644
--- a/drivers/i2c/chips/Kconfig
+++ b/drivers/i2c/chips/Kconfig
@@ -1,409 +1,12 @@
1# 1#
2# I2C Sensor and "other" chip configuration 2# Miscellaneous I2C chip drivers configuration
3# 3#
4 4
5menu "Hardware Sensors Chip support"
6 depends on I2C
7
8config I2C_SENSOR 5config I2C_SENSOR
9 tristate 6 tristate
10 default n 7 default n
11 8
12config SENSORS_ADM1021 9menu "Miscellaneous I2C Chip support"
13 tristate "Analog Devices ADM1021 and compatibles"
14 depends on I2C
15 select I2C_SENSOR
16 help
17 If you say yes here you get support for Analog Devices ADM1021
18 and ADM1023 sensor chips and clones: Maxim MAX1617 and MAX1617A,
19 Genesys Logic GL523SM, National Semiconductor LM84, TI THMC10,
20 and the XEON processor built-in sensor.
21
22 This driver can also be built as a module. If so, the module
23 will be called adm1021.
24
25config SENSORS_ADM1025
26 tristate "Analog Devices ADM1025 and compatibles"
27 depends on I2C && EXPERIMENTAL
28 select I2C_SENSOR
29 help
30 If you say yes here you get support for Analog Devices ADM1025
31 and Philips NE1619 sensor chips.
32
33 This driver can also be built as a module. If so, the module
34 will be called adm1025.
35
36config SENSORS_ADM1026
37 tristate "Analog Devices ADM1026 and compatibles"
38 depends on I2C && EXPERIMENTAL
39 select I2C_SENSOR
40 help
41 If you say yes here you get support for Analog Devices ADM1026
42 sensor chip.
43
44 This driver can also be built as a module. If so, the module
45 will be called adm1026.
46
47config SENSORS_ADM1031
48 tristate "Analog Devices ADM1031 and compatibles"
49 depends on I2C && EXPERIMENTAL
50 select I2C_SENSOR
51 help
52 If you say yes here you get support for Analog Devices ADM1031
53 and ADM1030 sensor chips.
54
55 This driver can also be built as a module. If so, the module
56 will be called adm1031.
57
58config SENSORS_ADM9240
59 tristate "Analog Devices ADM9240 and compatibles"
60 depends on I2C && EXPERIMENTAL
61 select I2C_SENSOR
62 help
63 If you say yes here you get support for Analog Devices ADM9240,
64 Dallas DS1780, National Semiconductor LM81 sensor chips.
65
66 This driver can also be built as a module. If so, the module
67 will be called adm9240.
68
69config SENSORS_ASB100
70 tristate "Asus ASB100 Bach"
71 depends on I2C && EXPERIMENTAL
72 select I2C_SENSOR
73 help
74 If you say yes here you get support for the ASB100 Bach sensor
75 chip found on some Asus mainboards.
76
77 This driver can also be built as a module. If so, the module
78 will be called asb100.
79
80config SENSORS_ATXP1
81 tristate "Attansic ATXP1 VID controller"
82 depends on I2C && EXPERIMENTAL
83 help
84 If you say yes here you get support for the Attansic ATXP1 VID
85 controller.
86
87 If your board have such a chip, you are able to control your CPU
88 core and other voltages.
89
90 This driver can also be built as a module. If so, the module
91 will be called atxp1.
92
93config SENSORS_DS1621
94 tristate "Dallas Semiconductor DS1621 and DS1625"
95 depends on I2C && EXPERIMENTAL
96 select I2C_SENSOR
97 help
98 If you say yes here you get support for Dallas Semiconductor
99 DS1621 and DS1625 sensor chips.
100
101 This driver can also be built as a module. If so, the module
102 will be called ds1621.
103
104config SENSORS_FSCHER
105 tristate "FSC Hermes"
106 depends on I2C && EXPERIMENTAL
107 select I2C_SENSOR
108 help
109 If you say yes here you get support for Fujitsu Siemens
110 Computers Hermes sensor chips.
111
112 This driver can also be built as a module. If so, the module
113 will be called fscher.
114
115config SENSORS_FSCPOS
116 tristate "FSC Poseidon"
117 depends on I2C && EXPERIMENTAL
118 select I2C_SENSOR
119 help
120 If you say yes here you get support for Fujitsu Siemens
121 Computers Poseidon sensor chips.
122
123 This driver can also be built as a module. If so, the module
124 will be called fscpos.
125
126config SENSORS_GL518SM
127 tristate "Genesys Logic GL518SM"
128 depends on I2C
129 select I2C_SENSOR
130 help
131 If you say yes here you get support for Genesys Logic GL518SM
132 sensor chips.
133
134 This driver can also be built as a module. If so, the module
135 will be called gl518sm.
136
137config SENSORS_GL520SM
138 tristate "Genesys Logic GL520SM"
139 depends on I2C && EXPERIMENTAL
140 select I2C_SENSOR
141 help
142 If you say yes here you get support for Genesys Logic GL520SM
143 sensor chips.
144
145 This driver can also be built as a module. If so, the module
146 will be called gl520sm.
147
148config SENSORS_IT87
149 tristate "ITE IT87xx and compatibles"
150 depends on I2C
151 select I2C_SENSOR
152 help
153 If you say yes here you get support for ITE IT87xx sensor chips
154 and clones: SiS960.
155
156 This driver can also be built as a module. If so, the module
157 will be called it87.
158
159config SENSORS_LM63
160 tristate "National Semiconductor LM63"
161 depends on I2C && EXPERIMENTAL
162 select I2C_SENSOR
163 help
164 If you say yes here you get support for the National Semiconductor
165 LM63 remote diode digital temperature sensor with integrated fan
166 control. Such chips are found on the Tyan S4882 (Thunder K8QS Pro)
167 motherboard, among others.
168
169 This driver can also be built as a module. If so, the module
170 will be called lm63.
171
172config SENSORS_LM75
173 tristate "National Semiconductor LM75 and compatibles"
174 depends on I2C
175 select I2C_SENSOR
176 help
177 If you say yes here you get support for National Semiconductor LM75
178 sensor chips and clones: Dallas Semiconductor DS75 and DS1775 (in
179 9-bit precision mode), and TelCom (now Microchip) TCN75.
180
181 The DS75 and DS1775 in 10- to 12-bit precision modes will require
182 a force module parameter. The driver will not handle the extra
183 precision anyhow.
184
185 This driver can also be built as a module. If so, the module
186 will be called lm75.
187
188config SENSORS_LM77
189 tristate "National Semiconductor LM77"
190 depends on I2C && EXPERIMENTAL
191 select I2C_SENSOR
192 help
193 If you say yes here you get support for National Semiconductor LM77
194 sensor chips.
195
196 This driver can also be built as a module. If so, the module
197 will be called lm77.
198
199config SENSORS_LM78
200 tristate "National Semiconductor LM78 and compatibles"
201 depends on I2C && EXPERIMENTAL
202 select I2C_SENSOR
203 help
204 If you say yes here you get support for National Semiconductor LM78,
205 LM78-J and LM79.
206
207 This driver can also be built as a module. If so, the module
208 will be called lm78.
209
210config SENSORS_LM80
211 tristate "National Semiconductor LM80"
212 depends on I2C && EXPERIMENTAL
213 select I2C_SENSOR
214 help
215 If you say yes here you get support for National Semiconductor
216 LM80 sensor chips.
217
218 This driver can also be built as a module. If so, the module
219 will be called lm80.
220
221config SENSORS_LM83
222 tristate "National Semiconductor LM83"
223 depends on I2C
224 select I2C_SENSOR
225 help
226 If you say yes here you get support for National Semiconductor
227 LM83 sensor chips.
228
229 This driver can also be built as a module. If so, the module
230 will be called lm83.
231
232config SENSORS_LM85
233 tristate "National Semiconductor LM85 and compatibles"
234 depends on I2C && EXPERIMENTAL
235 select I2C_SENSOR
236 help
237 If you say yes here you get support for National Semiconductor LM85
238 sensor chips and clones: ADT7463, EMC6D100, EMC6D102 and ADM1027.
239
240 This driver can also be built as a module. If so, the module
241 will be called lm85.
242
243config SENSORS_LM87
244 tristate "National Semiconductor LM87"
245 depends on I2C && EXPERIMENTAL
246 select I2C_SENSOR
247 help
248 If you say yes here you get support for National Semiconductor LM87
249 sensor chips.
250
251 This driver can also be built as a module. If so, the module
252 will be called lm87.
253
254config SENSORS_LM90
255 tristate "National Semiconductor LM90 and compatibles"
256 depends on I2C
257 select I2C_SENSOR
258 help
259 If you say yes here you get support for National Semiconductor LM90,
260 LM86, LM89 and LM99, Analog Devices ADM1032 and Maxim MAX6657 and
261 MAX6658 sensor chips.
262
263 The Analog Devices ADT7461 sensor chip is also supported, but only
264 if found in ADM1032 compatibility mode.
265
266 This driver can also be built as a module. If so, the module
267 will be called lm90.
268
269config SENSORS_LM92
270 tristate "National Semiconductor LM92 and compatibles"
271 depends on I2C && EXPERIMENTAL
272 select I2C_SENSOR
273 help
274 If you say yes here you get support for National Semiconductor LM92
275 and Maxim MAX6635 sensor chips.
276
277 This driver can also be built as a module. If so, the module
278 will be called lm92.
279
280config SENSORS_MAX1619
281 tristate "Maxim MAX1619 sensor chip"
282 depends on I2C && EXPERIMENTAL
283 select I2C_SENSOR
284 help
285 If you say yes here you get support for MAX1619 sensor chip.
286
287 This driver can also be built as a module. If so, the module
288 will be called max1619.
289
290config SENSORS_PC87360
291 tristate "National Semiconductor PC87360 family"
292 depends on I2C && EXPERIMENTAL
293 select I2C_SENSOR
294 select I2C_ISA
295 help
296 If you say yes here you get access to the hardware monitoring
297 functions of the National Semiconductor PC8736x Super-I/O chips.
298 The PC87360, PC87363 and PC87364 only have fan monitoring and
299 control. The PC87365 and PC87366 additionally have voltage and
300 temperature monitoring.
301
302 This driver can also be built as a module. If so, the module
303 will be called pc87360.
304
305config SENSORS_SMSC47B397
306 tristate "SMSC LPC47B397-NC"
307 depends on I2C && EXPERIMENTAL
308 select I2C_SENSOR
309 select I2C_ISA
310 help
311 If you say yes here you get support for the SMSC LPC47B397-NC
312 sensor chip.
313
314 This driver can also be built as a module. If so, the module
315 will be called smsc47b397.
316
317config SENSORS_SIS5595
318 tristate "Silicon Integrated Systems Corp. SiS5595"
319 depends on I2C && PCI && EXPERIMENTAL
320 select I2C_SENSOR
321 select I2C_ISA
322 help
323 If you say yes here you get support for the integrated sensors in
324 SiS5595 South Bridges.
325
326 This driver can also be built as a module. If so, the module
327 will be called sis5595.
328
329config SENSORS_SMSC47M1
330 tristate "SMSC LPC47M10x and compatibles"
331 depends on I2C && EXPERIMENTAL
332 select I2C_SENSOR
333 select I2C_ISA
334 help
335 If you say yes here you get support for the integrated fan
336 monitoring and control capabilities of the SMSC LPC47B27x,
337 LPC47M10x, LPC47M13x, LPC47M14x, LPC47M15x and LPC47M192 chips.
338
339 This driver can also be built as a module. If so, the module
340 will be called smsc47m1.
341
342config SENSORS_VIA686A
343 tristate "VIA686A"
344 depends on I2C && PCI
345 select I2C_SENSOR
346 select I2C_ISA
347 help
348 If you say yes here you get support for the integrated sensors in
349 Via 686A/B South Bridges.
350
351 This driver can also be built as a module. If so, the module
352 will be called via686a.
353
354config SENSORS_W83781D
355 tristate "Winbond W83781D, W83782D, W83783S, W83627HF, Asus AS99127F"
356 depends on I2C
357 select I2C_SENSOR
358 help
359 If you say yes here you get support for the Winbond W8378x series
360 of sensor chips: the W83781D, W83782D, W83783S and W83627HF,
361 and the similar Asus AS99127F.
362
363 This driver can also be built as a module. If so, the module
364 will be called w83781d.
365
366config SENSORS_W83L785TS
367 tristate "Winbond W83L785TS-S"
368 depends on I2C && EXPERIMENTAL
369 select I2C_SENSOR
370 help
371 If you say yes here you get support for the Winbond W83L785TS-S
372 sensor chip, which is used on the Asus A7N8X, among other
373 motherboards.
374
375 This driver can also be built as a module. If so, the module
376 will be called w83l785ts.
377
378config SENSORS_W83627HF
379 tristate "Winbond W83627HF, W83627THF, W83637HF, W83697HF"
380 depends on I2C && EXPERIMENTAL
381 select I2C_SENSOR
382 select I2C_ISA
383 help
384 If you say yes here you get support for the Winbond W836X7 series
385 of sensor chips: the W83627HF, W83627THF, W83637HF, and the W83697HF
386
387 This driver can also be built as a module. If so, the module
388 will be called w83627hf.
389
390config SENSORS_W83627EHF
391 tristate "Winbond W83627EHF"
392 depends on I2C && EXPERIMENTAL
393 select I2C_SENSOR
394 select I2C_ISA
395 help
396 If you say yes here you get preliminary support for the hardware
397 monitoring functionality of the Winbond W83627EHF Super-I/O chip.
398 Only fan and temperature inputs are supported at the moment, while
399 the chip does much more than that.
400
401 This driver can also be built as a module. If so, the module
402 will be called w83627ehf.
403
404endmenu
405
406menu "Other I2C Chip support"
407 depends on I2C 10 depends on I2C
408 11
409config SENSORS_DS1337 12config SENSORS_DS1337
@@ -509,7 +112,6 @@ config TPS65010
509 This driver can also be built as a module. If so, the module 112 This driver can also be built as a module. If so, the module
510 will be called tps65010. 113 will be called tps65010.
511 114
512
513config SENSORS_M41T00 115config SENSORS_M41T00
514 tristate "ST M41T00 RTC chip" 116 tristate "ST M41T00 RTC chip"
515 depends on I2C && PPC32 117 depends on I2C && PPC32
@@ -520,13 +122,16 @@ config SENSORS_M41T00
520 will be called m41t00. 122 will be called m41t00.
521 123
522config SENSORS_MAX6875 124config SENSORS_MAX6875
523 tristate "MAXIM MAX6875 Power supply supervisor" 125 tristate "Maxim MAX6875 Power supply supervisor"
524 depends on I2C && EXPERIMENTAL 126 depends on I2C && EXPERIMENTAL
525 help 127 help
526 If you say yes here you get support for the MAX6875 128 If you say yes here you get support for the Maxim MAX6875
527 EEPROM-Programmable, Hex/Quad, Power-Suppy Sequencers/Supervisors. 129 EEPROM-programmable, quad power-supply sequencer/supervisor.
130
131 This provides an interface to program the EEPROM and reset the chip.
528 132
529 This provides a interface to program the EEPROM and reset the chip. 133 This driver also supports the Maxim MAX6874 hex power-supply
134 sequencer/supervisor if found at a compatible address.
530 135
531 This driver can also be built as a module. If so, the module 136 This driver can also be built as a module. If so, the module
532 will be called max6875. 137 will be called max6875.
diff --git a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile
index b5e6d2f84f97..a876dd42b860 100644
--- a/drivers/i2c/chips/Makefile
+++ b/drivers/i2c/chips/Makefile
@@ -1,52 +1,16 @@
1# 1#
2# Makefile for sensor and "other" I2C chip drivers. 2# Makefile for miscellaneous I2C chip drivers.
3# 3#
4 4
5# asb100, then w83781d go first, as they can override other drivers' addresses.
6obj-$(CONFIG_SENSORS_ASB100) += asb100.o
7obj-$(CONFIG_SENSORS_W83627HF) += w83627hf.o
8obj-$(CONFIG_SENSORS_W83781D) += w83781d.o
9
10obj-$(CONFIG_SENSORS_ADM1021) += adm1021.o
11obj-$(CONFIG_SENSORS_ADM1025) += adm1025.o
12obj-$(CONFIG_SENSORS_ADM1026) += adm1026.o
13obj-$(CONFIG_SENSORS_ADM1031) += adm1031.o
14obj-$(CONFIG_SENSORS_ADM9240) += adm9240.o
15obj-$(CONFIG_SENSORS_ATXP1) += atxp1.o
16obj-$(CONFIG_SENSORS_DS1337) += ds1337.o 5obj-$(CONFIG_SENSORS_DS1337) += ds1337.o
17obj-$(CONFIG_SENSORS_DS1374) += ds1374.o 6obj-$(CONFIG_SENSORS_DS1374) += ds1374.o
18obj-$(CONFIG_SENSORS_DS1621) += ds1621.o
19obj-$(CONFIG_SENSORS_EEPROM) += eeprom.o 7obj-$(CONFIG_SENSORS_EEPROM) += eeprom.o
20obj-$(CONFIG_SENSORS_FSCHER) += fscher.o
21obj-$(CONFIG_SENSORS_FSCPOS) += fscpos.o
22obj-$(CONFIG_SENSORS_GL518SM) += gl518sm.o
23obj-$(CONFIG_SENSORS_GL520SM) += gl520sm.o
24obj-$(CONFIG_SENSORS_IT87) += it87.o
25obj-$(CONFIG_SENSORS_LM63) += lm63.o
26obj-$(CONFIG_SENSORS_LM75) += lm75.o
27obj-$(CONFIG_SENSORS_LM77) += lm77.o
28obj-$(CONFIG_SENSORS_LM78) += lm78.o
29obj-$(CONFIG_SENSORS_LM80) += lm80.o
30obj-$(CONFIG_SENSORS_LM83) += lm83.o
31obj-$(CONFIG_SENSORS_LM85) += lm85.o
32obj-$(CONFIG_SENSORS_LM87) += lm87.o
33obj-$(CONFIG_SENSORS_LM90) += lm90.o
34obj-$(CONFIG_SENSORS_LM92) += lm92.o
35obj-$(CONFIG_SENSORS_MAX1619) += max1619.o
36obj-$(CONFIG_SENSORS_MAX6875) += max6875.o 8obj-$(CONFIG_SENSORS_MAX6875) += max6875.o
37obj-$(CONFIG_SENSORS_M41T00) += m41t00.o 9obj-$(CONFIG_SENSORS_M41T00) += m41t00.o
38obj-$(CONFIG_SENSORS_PC87360) += pc87360.o
39obj-$(CONFIG_SENSORS_PCA9539) += pca9539.o 10obj-$(CONFIG_SENSORS_PCA9539) += pca9539.o
40obj-$(CONFIG_SENSORS_PCF8574) += pcf8574.o 11obj-$(CONFIG_SENSORS_PCF8574) += pcf8574.o
41obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o 12obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o
42obj-$(CONFIG_SENSORS_RTC8564) += rtc8564.o 13obj-$(CONFIG_SENSORS_RTC8564) += rtc8564.o
43obj-$(CONFIG_SENSORS_SIS5595) += sis5595.o
44obj-$(CONFIG_SENSORS_SMSC47B397)+= smsc47b397.o
45obj-$(CONFIG_SENSORS_SMSC47M1) += smsc47m1.o
46obj-$(CONFIG_SENSORS_VIA686A) += via686a.o
47obj-$(CONFIG_SENSORS_W83627EHF) += w83627ehf.o
48obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o
49
50obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o 14obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o
51obj-$(CONFIG_TPS65010) += tps65010.o 15obj-$(CONFIG_TPS65010) += tps65010.o
52 16
diff --git a/drivers/i2c/chips/eeprom.c b/drivers/i2c/chips/eeprom.c
index addf0adc24d4..6ea413f6d5e5 100644
--- a/drivers/i2c/chips/eeprom.c
+++ b/drivers/i2c/chips/eeprom.c
@@ -173,9 +173,6 @@ int eeprom_detect(struct i2c_adapter *adapter, int address, int kind)
173 | I2C_FUNC_SMBUS_BYTE)) 173 | I2C_FUNC_SMBUS_BYTE))
174 goto exit; 174 goto exit;
175 175
176 /* OK. For now, we presume we have a valid client. We now create the
177 client structure, even though we cannot fill it completely yet.
178 But it allows us to access eeprom_{read,write}_value. */
179 if (!(data = kmalloc(sizeof(struct eeprom_data), GFP_KERNEL))) { 176 if (!(data = kmalloc(sizeof(struct eeprom_data), GFP_KERNEL))) {
180 err = -ENOMEM; 177 err = -ENOMEM;
181 goto exit; 178 goto exit;
diff --git a/drivers/i2c/chips/m41t00.c b/drivers/i2c/chips/m41t00.c
index 5e463c47bfbc..778d7e12859d 100644
--- a/drivers/i2c/chips/m41t00.c
+++ b/drivers/i2c/chips/m41t00.c
@@ -207,7 +207,7 @@ m41t00_detach(struct i2c_client *client)
207 int rc; 207 int rc;
208 208
209 if ((rc = i2c_detach_client(client)) == 0) { 209 if ((rc = i2c_detach_client(client)) == 0) {
210 kfree(i2c_get_clientdata(client)); 210 kfree(client);
211 tasklet_kill(&m41t00_tasklet); 211 tasklet_kill(&m41t00_tasklet);
212 } 212 }
213 return rc; 213 return rc;
diff --git a/drivers/i2c/chips/max6875.c b/drivers/i2c/chips/max6875.c
index fe6b150ec4c2..c4f14d9623c4 100644
--- a/drivers/i2c/chips/max6875.c
+++ b/drivers/i2c/chips/max6875.c
@@ -37,7 +37,8 @@
37#include <linux/i2c-sensor.h> 37#include <linux/i2c-sensor.h>
38 38
39/* Addresses to scan */ 39/* Addresses to scan */
40static unsigned short normal_i2c[] = {0x50, 0x52, I2C_CLIENT_END}; 40/* No address scanned by default, as this could corrupt standard EEPROMS. */
41static unsigned short normal_i2c[] = {I2C_CLIENT_END};
41static unsigned int normal_isa[] = {I2C_CLIENT_ISA_END}; 42static unsigned int normal_isa[] = {I2C_CLIENT_ISA_END};
42 43
43/* Insmod parameters */ 44/* Insmod parameters */
@@ -369,6 +370,9 @@ static int max6875_detect(struct i2c_adapter *adapter, int address, int kind)
369 new_client->driver = &max6875_driver; 370 new_client->driver = &max6875_driver;
370 new_client->flags = 0; 371 new_client->flags = 0;
371 372
373 /* Prevent 24RF08 corruption */
374 i2c_smbus_write_quick(new_client, 0);
375
372 /* Setup the user section */ 376 /* Setup the user section */
373 data->blocks[max6875_eeprom_user].type = max6875_eeprom_user; 377 data->blocks[max6875_eeprom_user].type = max6875_eeprom_user;
374 data->blocks[max6875_eeprom_user].slices = USER_EEPROM_SLICES; 378 data->blocks[max6875_eeprom_user].slices = USER_EEPROM_SLICES;
diff --git a/drivers/i2c/chips/tps65010.c b/drivers/i2c/chips/tps65010.c
index c0ac01b60039..280e9638c0f8 100644
--- a/drivers/i2c/chips/tps65010.c
+++ b/drivers/i2c/chips/tps65010.c
@@ -18,7 +18,6 @@
18 * along with this program; if not, write to the Free Software 18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 */ 20 */
21#undef DEBUG
22 21
23#include <linux/config.h> 22#include <linux/config.h>
24#include <linux/kernel.h> 23#include <linux/kernel.h>
@@ -49,11 +48,7 @@
49MODULE_DESCRIPTION("TPS6501x Power Management Driver"); 48MODULE_DESCRIPTION("TPS6501x Power Management Driver");
50MODULE_LICENSE("GPL"); 49MODULE_LICENSE("GPL");
51 50
52/* only two addresses possible */ 51static unsigned short normal_i2c[] = { 0x48, /* 0x49, */ I2C_CLIENT_END };
53#define TPS_BASE 0x48
54static unsigned short normal_i2c[] = {
55 TPS_BASE,
56 I2C_CLIENT_END };
57static unsigned short normal_i2c_range[] = { I2C_CLIENT_END }; 52static unsigned short normal_i2c_range[] = { I2C_CLIENT_END };
58 53
59I2C_CLIENT_INSMOD; 54I2C_CLIENT_INSMOD;
@@ -102,7 +97,7 @@ struct tps65010 {
102 u8 chgstatus, regstatus, chgconf; 97 u8 chgstatus, regstatus, chgconf;
103 u8 nmask1, nmask2; 98 u8 nmask1, nmask2;
104 99
105 /* plus four GPIOs, probably used to switch power */ 100 /* not currently tracking GPIO state */
106}; 101};
107 102
108#define POWER_POLL_DELAY msecs_to_jiffies(800) 103#define POWER_POLL_DELAY msecs_to_jiffies(800)
@@ -135,7 +130,7 @@ static void dbg_regstat(char *buf, size_t len, u8 regstatus)
135 (regstatus & TPS_REG_COVER) ? " uncover" : "", 130 (regstatus & TPS_REG_COVER) ? " uncover" : "",
136 (regstatus & TPS_REG_UVLO) ? " UVLO" : "", 131 (regstatus & TPS_REG_UVLO) ? " UVLO" : "",
137 (regstatus & TPS_REG_NO_CHG) ? " NO_CHG" : "", 132 (regstatus & TPS_REG_NO_CHG) ? " NO_CHG" : "",
138 (regstatus & TPS_REG_PG_LD02) ? " ld01_bad" : "", 133 (regstatus & TPS_REG_PG_LD02) ? " ld02_bad" : "",
139 (regstatus & TPS_REG_PG_LD01) ? " ld01_bad" : "", 134 (regstatus & TPS_REG_PG_LD01) ? " ld01_bad" : "",
140 (regstatus & TPS_REG_PG_MAIN) ? " main_bad" : "", 135 (regstatus & TPS_REG_PG_MAIN) ? " main_bad" : "",
141 (regstatus & TPS_REG_PG_CORE) ? " core_bad" : ""); 136 (regstatus & TPS_REG_PG_CORE) ? " core_bad" : "");
@@ -143,7 +138,7 @@ static void dbg_regstat(char *buf, size_t len, u8 regstatus)
143 138
144static void dbg_chgconf(int por, char *buf, size_t len, u8 chgconfig) 139static void dbg_chgconf(int por, char *buf, size_t len, u8 chgconfig)
145{ 140{
146 char *hibit; 141 const char *hibit;
147 142
148 if (por) 143 if (por)
149 hibit = (chgconfig & TPS_CHARGE_POR) 144 hibit = (chgconfig & TPS_CHARGE_POR)
@@ -295,7 +290,7 @@ static int dbg_show(struct seq_file *s, void *_)
295 seq_printf(s, "defgpio %02x mask3 %02x\n", value, v2); 290 seq_printf(s, "defgpio %02x mask3 %02x\n", value, v2);
296 291
297 for (i = 0; i < 4; i++) { 292 for (i = 0; i < 4; i++) {
298 if (value & (1 << (4 +i))) 293 if (value & (1 << (4 + i)))
299 seq_printf(s, " gpio%d-out %s\n", i + 1, 294 seq_printf(s, " gpio%d-out %s\n", i + 1,
300 (value & (1 << i)) ? "low" : "hi "); 295 (value & (1 << i)) ? "low" : "hi ");
301 else 296 else
@@ -481,7 +476,7 @@ static int __exit tps65010_detach_client(struct i2c_client *client)
481 debugfs_remove(tps->file); 476 debugfs_remove(tps->file);
482 if (i2c_detach_client(client) == 0) 477 if (i2c_detach_client(client) == 0)
483 kfree(tps); 478 kfree(tps);
484 the_tps = 0; 479 the_tps = NULL;
485 return 0; 480 return 0;
486} 481}
487 482
@@ -514,7 +509,6 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind)
514 INIT_WORK(&tps->work, tps65010_work, tps); 509 INIT_WORK(&tps->work, tps65010_work, tps);
515 tps->irq = -1; 510 tps->irq = -1;
516 tps->client.addr = address; 511 tps->client.addr = address;
517 i2c_set_clientdata(&tps->client, tps);
518 tps->client.adapter = bus; 512 tps->client.adapter = bus;
519 tps->client.driver = &tps65010_driver; 513 tps->client.driver = &tps65010_driver;
520 strlcpy(tps->client.name, DRIVER_NAME, I2C_NAME_SIZE); 514 strlcpy(tps->client.name, DRIVER_NAME, I2C_NAME_SIZE);
@@ -523,9 +517,7 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind)
523 if (status < 0) { 517 if (status < 0) {
524 dev_dbg(&bus->dev, "can't attach %s to device %d, err %d\n", 518 dev_dbg(&bus->dev, "can't attach %s to device %d, err %d\n",
525 DRIVER_NAME, address, status); 519 DRIVER_NAME, address, status);
526fail1: 520 goto fail1;
527 kfree(tps);
528 return 0;
529 } 521 }
530 522
531#ifdef CONFIG_ARM 523#ifdef CONFIG_ARM
@@ -535,7 +527,7 @@ fail1:
535 tps->irq = OMAP_GPIO_IRQ(58); 527 tps->irq = OMAP_GPIO_IRQ(58);
536 omap_request_gpio(58); 528 omap_request_gpio(58);
537 omap_set_gpio_direction(58, 1); 529 omap_set_gpio_direction(58, 1);
538 omap_set_gpio_edge_ctrl(58, OMAP_GPIO_FALLING_EDGE); 530 set_irq_type(tps->irq, IRQT_FALLING);
539 } 531 }
540 if (machine_is_omap_osk()) { 532 if (machine_is_omap_osk()) {
541 tps->model = TPS65010; 533 tps->model = TPS65010;
@@ -543,7 +535,7 @@ fail1:
543 tps->irq = OMAP_GPIO_IRQ(OMAP_MPUIO(1)); 535 tps->irq = OMAP_GPIO_IRQ(OMAP_MPUIO(1));
544 omap_request_gpio(OMAP_MPUIO(1)); 536 omap_request_gpio(OMAP_MPUIO(1));
545 omap_set_gpio_direction(OMAP_MPUIO(1), 1); 537 omap_set_gpio_direction(OMAP_MPUIO(1), 1);
546 omap_set_gpio_edge_ctrl(OMAP_MPUIO(1), OMAP_GPIO_FALLING_EDGE); 538 set_irq_type(tps->irq, IRQT_FALLING);
547 } 539 }
548 if (machine_is_omap_h3()) { 540 if (machine_is_omap_h3()) {
549 tps->model = TPS65013; 541 tps->model = TPS65013;
@@ -633,6 +625,9 @@ fail1:
633 tps->file = debugfs_create_file(DRIVER_NAME, S_IRUGO, NULL, 625 tps->file = debugfs_create_file(DRIVER_NAME, S_IRUGO, NULL,
634 tps, DEBUG_FOPS); 626 tps, DEBUG_FOPS);
635 return 0; 627 return 0;
628fail1:
629 kfree(tps);
630 return 0;
636} 631}
637 632
638static int __init tps65010_scan_bus(struct i2c_adapter *bus) 633static int __init tps65010_scan_bus(struct i2c_adapter *bus)
@@ -645,7 +640,6 @@ static int __init tps65010_scan_bus(struct i2c_adapter *bus)
645static struct i2c_driver tps65010_driver = { 640static struct i2c_driver tps65010_driver = {
646 .owner = THIS_MODULE, 641 .owner = THIS_MODULE,
647 .name = "tps65010", 642 .name = "tps65010",
648 .id = 888, /* FIXME assign "official" value */
649 .flags = I2C_DF_NOTIFY, 643 .flags = I2C_DF_NOTIFY,
650 .attach_adapter = tps65010_scan_bus, 644 .attach_adapter = tps65010_scan_bus,
651 .detach_client = __exit_p(tps65010_detach_client), 645 .detach_client = __exit_p(tps65010_detach_client),
@@ -744,7 +738,7 @@ int tps65010_set_led(unsigned led, unsigned mode)
744 if (!the_tps) 738 if (!the_tps)
745 return -ENODEV; 739 return -ENODEV;
746 740
747 if(led == LED1) 741 if (led == LED1)
748 offs = 0; 742 offs = 0;
749 else { 743 else {
750 offs = 2; 744 offs = 2;
@@ -753,11 +747,13 @@ int tps65010_set_led(unsigned led, unsigned mode)
753 747
754 down(&the_tps->lock); 748 down(&the_tps->lock);
755 749
756 dev_dbg (&the_tps->client.dev, "led%i_on 0x%02x\n", led, 750 pr_debug("%s: led%i_on 0x%02x\n", DRIVER_NAME, led,
757 i2c_smbus_read_byte_data(&the_tps->client, TPS_LED1_ON + offs)); 751 i2c_smbus_read_byte_data(&the_tps->client,
752 TPS_LED1_ON + offs));
758 753
759 dev_dbg (&the_tps->client.dev, "led%i_per 0x%02x\n", led, 754 pr_debug("%s: led%i_per 0x%02x\n", DRIVER_NAME, led,
760 i2c_smbus_read_byte_data(&the_tps->client, TPS_LED1_PER + offs)); 755 i2c_smbus_read_byte_data(&the_tps->client,
756 TPS_LED1_PER + offs));
761 757
762 switch (mode) { 758 switch (mode) {
763 case OFF: 759 case OFF:
@@ -773,7 +769,7 @@ int tps65010_set_led(unsigned led, unsigned mode)
773 led_per = 0x08 | (1 << 7); 769 led_per = 0x08 | (1 << 7);
774 break; 770 break;
775 default: 771 default:
776 printk(KERN_ERR "%s: Wrong mode parameter for tps65010_set_led()\n", 772 printk(KERN_ERR "%s: Wrong mode parameter for set_led()\n",
777 DRIVER_NAME); 773 DRIVER_NAME);
778 up(&the_tps->lock); 774 up(&the_tps->lock);
779 return -EINVAL; 775 return -EINVAL;
@@ -789,7 +785,7 @@ int tps65010_set_led(unsigned led, unsigned mode)
789 return status; 785 return status;
790 } 786 }
791 787
792 dev_dbg (&the_tps->client.dev, "led%i_on 0x%02x\n", led, 788 pr_debug("%s: led%i_on 0x%02x\n", DRIVER_NAME, led,
793 i2c_smbus_read_byte_data(&the_tps->client, TPS_LED1_ON + offs)); 789 i2c_smbus_read_byte_data(&the_tps->client, TPS_LED1_ON + offs));
794 790
795 status = i2c_smbus_write_byte_data(&the_tps->client, 791 status = i2c_smbus_write_byte_data(&the_tps->client,
@@ -802,8 +798,9 @@ int tps65010_set_led(unsigned led, unsigned mode)
802 return status; 798 return status;
803 } 799 }
804 800
805 dev_dbg (&the_tps->client.dev, "led%i_per 0x%02x\n", led, 801 pr_debug("%s: led%i_per 0x%02x\n", DRIVER_NAME, led,
806 i2c_smbus_read_byte_data(&the_tps->client, TPS_LED1_PER + offs)); 802 i2c_smbus_read_byte_data(&the_tps->client,
803 TPS_LED1_PER + offs));
807 804
808 up(&the_tps->lock); 805 up(&the_tps->lock);
809 806
@@ -874,7 +871,7 @@ int tps65010_set_low_pwr(unsigned mode)
874 871
875 if (status != 0) 872 if (status != 0)
876 printk(KERN_ERR "%s: Failed to write vdcdc1 register\n", 873 printk(KERN_ERR "%s: Failed to write vdcdc1 register\n",
877 DRIVER_NAME); 874 DRIVER_NAME);
878 else 875 else
879 pr_debug("%s: vdcdc1 0x%02x\n", DRIVER_NAME, 876 pr_debug("%s: vdcdc1 0x%02x\n", DRIVER_NAME,
880 i2c_smbus_read_byte_data(&the_tps->client, TPS_VDCDC1)); 877 i2c_smbus_read_byte_data(&the_tps->client, TPS_VDCDC1));
@@ -900,14 +897,14 @@ int tps65010_config_vregs1(unsigned value)
900 down(&the_tps->lock); 897 down(&the_tps->lock);
901 898
902 pr_debug("%s: vregs1 0x%02x\n", DRIVER_NAME, 899 pr_debug("%s: vregs1 0x%02x\n", DRIVER_NAME,
903 i2c_smbus_read_byte_data(&the_tps->client, TPS_VREGS1)); 900 i2c_smbus_read_byte_data(&the_tps->client, TPS_VREGS1));
904 901
905 status = i2c_smbus_write_byte_data(&the_tps->client, 902 status = i2c_smbus_write_byte_data(&the_tps->client,
906 TPS_VREGS1, value); 903 TPS_VREGS1, value);
907 904
908 if (status != 0) 905 if (status != 0)
909 printk(KERN_ERR "%s: Failed to write vregs1 register\n", 906 printk(KERN_ERR "%s: Failed to write vregs1 register\n",
910 DRIVER_NAME); 907 DRIVER_NAME);
911 else 908 else
912 pr_debug("%s: vregs1 0x%02x\n", DRIVER_NAME, 909 pr_debug("%s: vregs1 0x%02x\n", DRIVER_NAME,
913 i2c_smbus_read_byte_data(&the_tps->client, TPS_VREGS1)); 910 i2c_smbus_read_byte_data(&the_tps->client, TPS_VREGS1));
@@ -1009,7 +1006,7 @@ static int __init tps_init(void)
1009 msleep(10); 1006 msleep(10);
1010 } 1007 }
1011 1008
1012#if defined(CONFIG_ARM) 1009#ifdef CONFIG_ARM
1013 if (machine_is_omap_osk()) { 1010 if (machine_is_omap_osk()) {
1014 1011
1015 // FIXME: More should be placed in the initialization code 1012 // FIXME: More should be placed in the initialization code
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 51ce268998cd..4fd4f52c8e9b 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -156,7 +156,7 @@ int i2c_add_adapter(struct i2c_adapter *adap)
156 goto out_unlock; 156 goto out_unlock;
157 } 157 }
158 158
159 res = idr_get_new(&i2c_adapter_idr, NULL, &id); 159 res = idr_get_new(&i2c_adapter_idr, adap, &id);
160 if (res < 0) { 160 if (res < 0) {
161 if (res == -EAGAIN) 161 if (res == -EAGAIN)
162 res = -ENOMEM; 162 res = -ENOMEM;
@@ -765,20 +765,15 @@ int i2c_adapter_id(struct i2c_adapter *adap)
765 765
766struct i2c_adapter* i2c_get_adapter(int id) 766struct i2c_adapter* i2c_get_adapter(int id)
767{ 767{
768 struct list_head *item;
769 struct i2c_adapter *adapter; 768 struct i2c_adapter *adapter;
770 769
771 down(&core_lists); 770 down(&core_lists);
772 list_for_each(item,&adapters) { 771 adapter = (struct i2c_adapter *)idr_find(&i2c_adapter_idr, id);
773 adapter = list_entry(item, struct i2c_adapter, list); 772 if (adapter && !try_module_get(adapter->owner))
774 if (id == adapter->nr && 773 adapter = NULL;
775 try_module_get(adapter->owner)) { 774
776 up(&core_lists);
777 return adapter;
778 }
779 }
780 up(&core_lists); 775 up(&core_lists);
781 return NULL; 776 return adapter;
782} 777}
783 778
784void i2c_put_adapter(struct i2c_adapter *adap) 779void i2c_put_adapter(struct i2c_adapter *adap)
diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c
index 312cf3220f12..8a9c42822502 100644
--- a/drivers/w1/w1.c
+++ b/drivers/w1/w1.c
@@ -516,6 +516,7 @@ static void w1_slave_found(unsigned long data, u64 rn)
516 struct w1_reg_num *tmp; 516 struct w1_reg_num *tmp;
517 int family_found = 0; 517 int family_found = 0;
518 struct w1_master *dev; 518 struct w1_master *dev;
519 u64 rn_le = cpu_to_le64(rn);
519 520
520 dev = w1_search_master(data); 521 dev = w1_search_master(data);
521 if (!dev) { 522 if (!dev) {
@@ -544,10 +545,8 @@ static void w1_slave_found(unsigned long data, u64 rn)
544 slave_count++; 545 slave_count++;
545 } 546 }
546 547
547 rn = cpu_to_le64(rn);
548
549 if (slave_count == dev->slave_count && 548 if (slave_count == dev->slave_count &&
550 rn && ((le64_to_cpu(rn) >> 56) & 0xff) == w1_calc_crc8((u8 *)&rn, 7)) { 549 rn && ((rn >> 56) & 0xff) == w1_calc_crc8((u8 *)&rn_le, 7)) {
551 w1_attach_slave_device(dev, tmp); 550 w1_attach_slave_device(dev, tmp);
552 } 551 }
553 552