diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/hwmon-sysfs.h | 15 | ||||
-rw-r--r-- | include/linux/hwmon-vid.h | 45 | ||||
-rw-r--r-- | include/linux/hwmon.h | 35 | ||||
-rw-r--r-- | include/linux/i2c-id.h | 192 | ||||
-rw-r--r-- | include/linux/i2c-isa.h | 36 | ||||
-rw-r--r-- | include/linux/i2c-sensor.h | 263 | ||||
-rw-r--r-- | include/linux/i2c-vid.h | 111 | ||||
-rw-r--r-- | include/linux/i2c.h | 203 | ||||
-rw-r--r-- | include/media/id.h | 5 |
9 files changed, 364 insertions, 541 deletions
diff --git a/include/linux/hwmon-sysfs.h b/include/linux/hwmon-sysfs.h index 1b5018a965f5..7eb4004b3601 100644 --- a/include/linux/hwmon-sysfs.h +++ b/include/linux/hwmon-sysfs.h | |||
@@ -33,4 +33,19 @@ struct sensor_device_attribute sensor_dev_attr_##_name = { \ | |||
33 | .index = _index, \ | 33 | .index = _index, \ |
34 | } | 34 | } |
35 | 35 | ||
36 | struct sensor_device_attribute_2 { | ||
37 | struct device_attribute dev_attr; | ||
38 | u8 index; | ||
39 | u8 nr; | ||
40 | }; | ||
41 | #define to_sensor_dev_attr_2(_dev_attr) \ | ||
42 | container_of(_dev_attr, struct sensor_device_attribute_2, dev_attr) | ||
43 | |||
44 | #define SENSOR_DEVICE_ATTR_2(_name,_mode,_show,_store,_nr,_index) \ | ||
45 | struct sensor_device_attribute_2 sensor_dev_attr_##_name = { \ | ||
46 | .dev_attr = __ATTR(_name,_mode,_show,_store), \ | ||
47 | .index = _index, \ | ||
48 | .nr = _nr, \ | ||
49 | } | ||
50 | |||
36 | #endif /* _LINUX_HWMON_SYSFS_H */ | 51 | #endif /* _LINUX_HWMON_SYSFS_H */ |
diff --git a/include/linux/hwmon-vid.h b/include/linux/hwmon-vid.h new file mode 100644 index 000000000000..cd4b7a042b86 --- /dev/null +++ b/include/linux/hwmon-vid.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | hwmon-vid.h - VID/VRM/VRD voltage conversions | ||
3 | |||
4 | Originally part of lm_sensors | ||
5 | Copyright (c) 2002 Mark D. Studebaker <mdsxyz123@yahoo.com> | ||
6 | With assistance from Trent Piepho <xyzzy@speakeasy.org> | ||
7 | |||
8 | This program is free software; you can redistribute it and/or modify | ||
9 | it under the terms of the GNU General Public License as published by | ||
10 | the Free Software Foundation; either version 2 of the License, or | ||
11 | (at your option) any later version. | ||
12 | |||
13 | This program is distributed in the hope that it will be useful, | ||
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | GNU General Public License for more details. | ||
17 | |||
18 | You should have received a copy of the GNU General Public License | ||
19 | along with this program; if not, write to the Free Software | ||
20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
21 | */ | ||
22 | |||
23 | #ifndef _LINUX_HWMON_VID_H | ||
24 | #define _LINUX_HWMON_VID_H | ||
25 | |||
26 | int vid_from_reg(int val, int vrm); | ||
27 | int vid_which_vrm(void); | ||
28 | |||
29 | /* vrm is the VRM/VRD document version multiplied by 10. | ||
30 | val is in mV to avoid floating point in the kernel. | ||
31 | Returned value is the 4-, 5- or 6-bit VID code. | ||
32 | Note that only VRM 9.x is supported for now. */ | ||
33 | static inline int vid_to_reg(int val, int vrm) | ||
34 | { | ||
35 | switch (vrm) { | ||
36 | case 91: /* VRM 9.1 */ | ||
37 | case 90: /* VRM 9.0 */ | ||
38 | return ((val >= 1100) && (val <= 1850) ? | ||
39 | ((18499 - val * 10) / 25 + 5) / 10 : -1); | ||
40 | default: | ||
41 | return -1; | ||
42 | } | ||
43 | } | ||
44 | |||
45 | #endif /* _LINUX_HWMON_VID_H */ | ||
diff --git a/include/linux/hwmon.h b/include/linux/hwmon.h new file mode 100644 index 000000000000..0efd994c37f1 --- /dev/null +++ b/include/linux/hwmon.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | hwmon.h - part of lm_sensors, Linux kernel modules for hardware monitoring | ||
3 | |||
4 | This file declares helper functions for the sysfs class "hwmon", | ||
5 | for use by sensors drivers. | ||
6 | |||
7 | Copyright (C) 2005 Mark M. Hoffman <mhoffman@lightlink.com> | ||
8 | |||
9 | This program is free software; you can redistribute it and/or modify | ||
10 | it under the terms of the GNU General Public License as published by | ||
11 | the Free Software Foundation; version 2 of the License. | ||
12 | */ | ||
13 | |||
14 | #ifndef _HWMON_H_ | ||
15 | #define _HWMON_H_ | ||
16 | |||
17 | #include <linux/device.h> | ||
18 | |||
19 | struct class_device *hwmon_device_register(struct device *dev); | ||
20 | |||
21 | void hwmon_device_unregister(struct class_device *cdev); | ||
22 | |||
23 | /* Scale user input to sensible values */ | ||
24 | static inline int SENSORS_LIMIT(long value, long low, long high) | ||
25 | { | ||
26 | if (value < low) | ||
27 | return low; | ||
28 | else if (value > high) | ||
29 | return high; | ||
30 | else | ||
31 | return value; | ||
32 | } | ||
33 | |||
34 | #endif | ||
35 | |||
diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h index 33f08258f22b..44f30876a1c9 100644 --- a/include/linux/i2c-id.h +++ b/include/linux/i2c-id.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* ------------------------------------------------------------------------- */ | 1 | /* ------------------------------------------------------------------------- */ |
2 | /* */ | 2 | /* */ |
3 | /* i2c.h - definitions for the i2c-bus interface */ | 3 | /* i2c-id.h - identifier values for i2c drivers and adapters */ |
4 | /* */ | 4 | /* */ |
5 | /* ------------------------------------------------------------------------- */ | 5 | /* ------------------------------------------------------------------------- */ |
6 | /* Copyright (C) 1995-1999 Simon G. Vogl | 6 | /* Copyright (C) 1995-1999 Simon G. Vogl |
@@ -24,16 +24,6 @@ | |||
24 | #define LINUX_I2C_ID_H | 24 | #define LINUX_I2C_ID_H |
25 | 25 | ||
26 | /* | 26 | /* |
27 | * This file is part of the i2c-bus package and contains the identifier | ||
28 | * values for drivers, adapters and other folk populating these serial | ||
29 | * worlds. | ||
30 | * | ||
31 | * These will change often (i.e. additions) , therefore this has been | ||
32 | * separated from the functional interface definitions of the i2c api. | ||
33 | * | ||
34 | */ | ||
35 | |||
36 | /* | ||
37 | * ---- Driver types ----------------------------------------------------- | 27 | * ---- Driver types ----------------------------------------------------- |
38 | * device id name + number function description, i2c address(es) | 28 | * device id name + number function description, i2c address(es) |
39 | * | 29 | * |
@@ -170,151 +160,113 @@ | |||
170 | 160 | ||
171 | /* | 161 | /* |
172 | * ---- Adapter types ---------------------------------------------------- | 162 | * ---- Adapter types ---------------------------------------------------- |
173 | * | ||
174 | * First, we distinguish between several algorithms to access the hardware | ||
175 | * interface types, as a PCF 8584 needs other care than a bit adapter. | ||
176 | */ | ||
177 | |||
178 | #define I2C_ALGO_NONE 0x000000 | ||
179 | #define I2C_ALGO_BIT 0x010000 /* bit style adapters */ | ||
180 | #define I2C_ALGO_PCF 0x020000 /* PCF 8584 style adapters */ | ||
181 | #define I2C_ALGO_ATI 0x030000 /* ATI video card */ | ||
182 | #define I2C_ALGO_SMBUS 0x040000 | ||
183 | #define I2C_ALGO_ISA 0x050000 /* lm_sensors ISA pseudo-adapter */ | ||
184 | #define I2C_ALGO_SAA7146 0x060000 /* SAA 7146 video decoder bus */ | ||
185 | #define I2C_ALGO_ACB 0x070000 /* ACCESS.bus algorithm */ | ||
186 | #define I2C_ALGO_IIC 0x080000 /* ITE IIC bus */ | ||
187 | #define I2C_ALGO_SAA7134 0x090000 | ||
188 | #define I2C_ALGO_MPC824X 0x0a0000 /* Motorola 8240 / 8245 */ | ||
189 | #define I2C_ALGO_IPMI 0x0b0000 /* IPMI dummy adapter */ | ||
190 | #define I2C_ALGO_IPMB 0x0c0000 /* IPMB adapter */ | ||
191 | #define I2C_ALGO_MPC107 0x0d0000 | ||
192 | #define I2C_ALGO_EC 0x100000 /* ACPI embedded controller */ | ||
193 | |||
194 | #define I2C_ALGO_MPC8XX 0x110000 /* MPC8xx PowerPC I2C algorithm */ | ||
195 | #define I2C_ALGO_OCP 0x120000 /* IBM or otherwise On-chip I2C algorithm */ | ||
196 | #define I2C_ALGO_BITHS 0x130000 /* enhanced bit style adapters */ | ||
197 | #define I2C_ALGO_IOP3XX 0x140000 /* XSCALE IOP3XX On-chip I2C alg */ | ||
198 | #define I2C_ALGO_SIBYTE 0x150000 /* Broadcom SiByte SOCs */ | ||
199 | #define I2C_ALGO_SGI 0x160000 /* SGI algorithm */ | ||
200 | |||
201 | #define I2C_ALGO_USB 0x170000 /* USB algorithm */ | ||
202 | #define I2C_ALGO_VIRT 0x180000 /* Virtual bus adapter */ | ||
203 | |||
204 | #define I2C_ALGO_MV64XXX 0x190000 /* Marvell mv64xxx i2c ctlr */ | ||
205 | #define I2C_ALGO_PCA 0x1a0000 /* PCA 9564 style adapters */ | ||
206 | #define I2C_ALGO_AU1550 0x1b0000 /* Au1550 PSC algorithm */ | ||
207 | |||
208 | #define I2C_ALGO_EXP 0x800000 /* experimental */ | ||
209 | |||
210 | #define I2C_ALGO_MASK 0xff0000 /* Mask for algorithms */ | ||
211 | #define I2C_ALGO_SHIFT 0x10 /* right shift to get index values */ | ||
212 | |||
213 | #define I2C_HW_ADAPS 0x10000 /* # adapter types */ | ||
214 | #define I2C_HW_MASK 0xffff | ||
215 | |||
216 | |||
217 | /* hw specific modules that are defined per algorithm layer | ||
218 | */ | 163 | */ |
219 | 164 | ||
220 | /* --- Bit algorithm adapters */ | 165 | /* --- Bit algorithm adapters */ |
221 | #define I2C_HW_B_LP 0x00 /* Parallel port Philips style adapter */ | 166 | #define I2C_HW_B_LP 0x010000 /* Parallel port Philips style */ |
222 | #define I2C_HW_B_LPC 0x01 /* Parallel port, over control reg. */ | 167 | #define I2C_HW_B_LPC 0x010001 /* Parallel port control reg. */ |
223 | #define I2C_HW_B_SER 0x02 /* Serial line interface */ | 168 | #define I2C_HW_B_SER 0x010002 /* Serial line interface */ |
224 | #define I2C_HW_B_ELV 0x03 /* ELV Card */ | 169 | #define I2C_HW_B_ELV 0x010003 /* ELV Card */ |
225 | #define I2C_HW_B_VELLE 0x04 /* Vellemann K8000 */ | 170 | #define I2C_HW_B_VELLE 0x010004 /* Vellemann K8000 */ |
226 | #define I2C_HW_B_BT848 0x05 /* BT848 video boards */ | 171 | #define I2C_HW_B_BT848 0x010005 /* BT848 video boards */ |
227 | #define I2C_HW_B_WNV 0x06 /* Winnov Videums */ | 172 | #define I2C_HW_B_WNV 0x010006 /* Winnov Videums */ |
228 | #define I2C_HW_B_VIA 0x07 /* Via vt82c586b */ | 173 | #define I2C_HW_B_VIA 0x010007 /* Via vt82c586b */ |
229 | #define I2C_HW_B_HYDRA 0x08 /* Apple Hydra Mac I/O */ | 174 | #define I2C_HW_B_HYDRA 0x010008 /* Apple Hydra Mac I/O */ |
230 | #define I2C_HW_B_G400 0x09 /* Matrox G400 */ | 175 | #define I2C_HW_B_G400 0x010009 /* Matrox G400 */ |
231 | #define I2C_HW_B_I810 0x0a /* Intel I810 */ | 176 | #define I2C_HW_B_I810 0x01000a /* Intel I810 */ |
232 | #define I2C_HW_B_VOO 0x0b /* 3dfx Voodoo 3 / Banshee */ | 177 | #define I2C_HW_B_VOO 0x01000b /* 3dfx Voodoo 3 / Banshee */ |
233 | #define I2C_HW_B_PPORT 0x0c /* Primitive parallel port adapter */ | 178 | #define I2C_HW_B_PPORT 0x01000c /* Primitive parallel port adapter */ |
234 | #define I2C_HW_B_SAVG 0x0d /* Savage 4 */ | 179 | #define I2C_HW_B_SAVG 0x01000d /* Savage 4 */ |
235 | #define I2C_HW_B_SCX200 0x0e /* Nat'l Semi SCx200 I2C */ | 180 | #define I2C_HW_B_SCX200 0x01000e /* Nat'l Semi SCx200 I2C */ |
236 | #define I2C_HW_B_RIVA 0x10 /* Riva based graphics cards */ | 181 | #define I2C_HW_B_RIVA 0x010010 /* Riva based graphics cards */ |
237 | #define I2C_HW_B_IOC 0x11 /* IOC bit-wiggling */ | 182 | #define I2C_HW_B_IOC 0x010011 /* IOC bit-wiggling */ |
238 | #define I2C_HW_B_TSUNA 0x12 /* DEC Tsunami chipset */ | 183 | #define I2C_HW_B_TSUNA 0x010012 /* DEC Tsunami chipset */ |
239 | #define I2C_HW_B_FRODO 0x13 /* 2d3D, Inc. SA-1110 Development Board */ | 184 | #define I2C_HW_B_FRODO 0x010013 /* 2d3D SA-1110 Development Board */ |
240 | #define I2C_HW_B_OMAHA 0x14 /* Omaha I2C interface (ARM) */ | 185 | #define I2C_HW_B_OMAHA 0x010014 /* Omaha I2C interface (ARM) */ |
241 | #define I2C_HW_B_GUIDE 0x15 /* Guide bit-basher */ | 186 | #define I2C_HW_B_GUIDE 0x010015 /* Guide bit-basher */ |
242 | #define I2C_HW_B_IXP2000 0x16 /* GPIO on IXP2000 systems */ | 187 | #define I2C_HW_B_IXP2000 0x010016 /* GPIO on IXP2000 systems */ |
243 | #define I2C_HW_B_IXP4XX 0x17 /* GPIO on IXP4XX systems */ | 188 | #define I2C_HW_B_IXP4XX 0x010017 /* GPIO on IXP4XX systems */ |
244 | #define I2C_HW_B_S3VIA 0x18 /* S3Via ProSavage adapter */ | 189 | #define I2C_HW_B_S3VIA 0x010018 /* S3Via ProSavage adapter */ |
245 | #define I2C_HW_B_ZR36067 0x19 /* Zoran-36057/36067 based boards */ | 190 | #define I2C_HW_B_ZR36067 0x010019 /* Zoran-36057/36067 based boards */ |
246 | #define I2C_HW_B_PCILYNX 0x1a /* TI PCILynx I2C adapter */ | 191 | #define I2C_HW_B_PCILYNX 0x01001a /* TI PCILynx I2C adapter */ |
247 | #define I2C_HW_B_CX2388x 0x1b /* connexant 2388x based tv cards */ | 192 | #define I2C_HW_B_CX2388x 0x01001b /* connexant 2388x based tv cards */ |
193 | #define I2C_HW_B_NVIDIA 0x01001c /* nvidia framebuffer driver */ | ||
194 | #define I2C_HW_B_SAVAGE 0x01001d /* savage framebuffer driver */ | ||
195 | #define I2C_HW_B_RADEON 0x01001e /* radeon framebuffer driver */ | ||
248 | 196 | ||
249 | /* --- PCF 8584 based algorithms */ | 197 | /* --- PCF 8584 based algorithms */ |
250 | #define I2C_HW_P_LP 0x00 /* Parallel port interface */ | 198 | #define I2C_HW_P_LP 0x020000 /* Parallel port interface */ |
251 | #define I2C_HW_P_ISA 0x01 /* generic ISA Bus inteface card */ | 199 | #define I2C_HW_P_ISA 0x020001 /* generic ISA Bus inteface card */ |
252 | #define I2C_HW_P_ELEK 0x02 /* Elektor ISA Bus inteface card */ | 200 | #define I2C_HW_P_ELEK 0x020002 /* Elektor ISA Bus inteface card */ |
253 | 201 | ||
254 | /* --- PCA 9564 based algorithms */ | 202 | /* --- PCA 9564 based algorithms */ |
255 | #define I2C_HW_A_ISA 0x00 /* generic ISA Bus interface card */ | 203 | #define I2C_HW_A_ISA 0x1a0000 /* generic ISA Bus interface card */ |
256 | 204 | ||
257 | /* --- ACPI Embedded controller algorithms */ | 205 | /* --- ACPI Embedded controller algorithms */ |
258 | #define I2C_HW_ACPI_EC 0x00 | 206 | #define I2C_HW_ACPI_EC 0x1f0000 |
259 | 207 | ||
260 | /* --- MPC824x PowerPC adapters */ | 208 | /* --- MPC824x PowerPC adapters */ |
261 | #define I2C_HW_MPC824X 0x00 /* Motorola 8240 / 8245 */ | 209 | #define I2C_HW_MPC824X 0x100001 /* Motorola 8240 / 8245 */ |
262 | 210 | ||
263 | /* --- MPC8xx PowerPC adapters */ | 211 | /* --- MPC8xx PowerPC adapters */ |
264 | #define I2C_HW_MPC8XX_EPON 0x00 /* Eponymous MPC8xx I2C adapter */ | 212 | #define I2C_HW_MPC8XX_EPON 0x110000 /* Eponymous MPC8xx I2C adapter */ |
265 | 213 | ||
266 | /* --- ITE based algorithms */ | 214 | /* --- ITE based algorithms */ |
267 | #define I2C_HW_I_IIC 0x00 /* controller on the ITE */ | 215 | #define I2C_HW_I_IIC 0x080000 /* controller on the ITE */ |
268 | 216 | ||
269 | /* --- PowerPC on-chip adapters */ | 217 | /* --- PowerPC on-chip adapters */ |
270 | #define I2C_HW_OCP 0x00 /* IBM on-chip I2C adapter */ | 218 | #define I2C_HW_OCP 0x120000 /* IBM on-chip I2C adapter */ |
271 | 219 | ||
272 | /* --- Broadcom SiByte adapters */ | 220 | /* --- Broadcom SiByte adapters */ |
273 | #define I2C_HW_SIBYTE 0x00 | 221 | #define I2C_HW_SIBYTE 0x150000 |
274 | 222 | ||
275 | /* --- SGI adapters */ | 223 | /* --- SGI adapters */ |
276 | #define I2C_HW_SGI_VINO 0x00 | 224 | #define I2C_HW_SGI_VINO 0x160000 |
277 | #define I2C_HW_SGI_MACE 0x01 | 225 | #define I2C_HW_SGI_MACE 0x160001 |
278 | 226 | ||
279 | /* --- XSCALE on-chip adapters */ | 227 | /* --- XSCALE on-chip adapters */ |
280 | #define I2C_HW_IOP3XX 0x00 | 228 | #define I2C_HW_IOP3XX 0x140000 |
281 | 229 | ||
282 | /* --- Au1550 PSC adapters adapters */ | 230 | /* --- Au1550 PSC adapters adapters */ |
283 | #define I2C_HW_AU1550_PSC 0x00 | 231 | #define I2C_HW_AU1550_PSC 0x1b0000 |
284 | 232 | ||
285 | /* --- SMBus only adapters */ | 233 | /* --- SMBus only adapters */ |
286 | #define I2C_HW_SMBUS_PIIX4 0x00 | 234 | #define I2C_HW_SMBUS_PIIX4 0x040000 |
287 | #define I2C_HW_SMBUS_ALI15X3 0x01 | 235 | #define I2C_HW_SMBUS_ALI15X3 0x040001 |
288 | #define I2C_HW_SMBUS_VIA2 0x02 | 236 | #define I2C_HW_SMBUS_VIA2 0x040002 |
289 | #define I2C_HW_SMBUS_VOODOO3 0x03 | 237 | #define I2C_HW_SMBUS_VOODOO3 0x040003 |
290 | #define I2C_HW_SMBUS_I801 0x04 | 238 | #define I2C_HW_SMBUS_I801 0x040004 |
291 | #define I2C_HW_SMBUS_AMD756 0x05 | 239 | #define I2C_HW_SMBUS_AMD756 0x040005 |
292 | #define I2C_HW_SMBUS_SIS5595 0x06 | 240 | #define I2C_HW_SMBUS_SIS5595 0x040006 |
293 | #define I2C_HW_SMBUS_ALI1535 0x07 | 241 | #define I2C_HW_SMBUS_ALI1535 0x040007 |
294 | #define I2C_HW_SMBUS_SIS630 0x08 | 242 | #define I2C_HW_SMBUS_SIS630 0x040008 |
295 | #define I2C_HW_SMBUS_SIS96X 0x09 | 243 | #define I2C_HW_SMBUS_SIS96X 0x040009 |
296 | #define I2C_HW_SMBUS_AMD8111 0x0a | 244 | #define I2C_HW_SMBUS_AMD8111 0x04000a |
297 | #define I2C_HW_SMBUS_SCX200 0x0b | 245 | #define I2C_HW_SMBUS_SCX200 0x04000b |
298 | #define I2C_HW_SMBUS_NFORCE2 0x0c | 246 | #define I2C_HW_SMBUS_NFORCE2 0x04000c |
299 | #define I2C_HW_SMBUS_W9968CF 0x0d | 247 | #define I2C_HW_SMBUS_W9968CF 0x04000d |
300 | #define I2C_HW_SMBUS_OV511 0x0e /* OV511(+) USB 1.1 webcam ICs */ | 248 | #define I2C_HW_SMBUS_OV511 0x04000e /* OV511(+) USB 1.1 webcam ICs */ |
301 | #define I2C_HW_SMBUS_OV518 0x0f /* OV518(+) USB 1.1 webcam ICs */ | 249 | #define I2C_HW_SMBUS_OV518 0x04000f /* OV518(+) USB 1.1 webcam ICs */ |
302 | #define I2C_HW_SMBUS_OV519 0x10 /* OV519 USB 1.1 webcam IC */ | 250 | #define I2C_HW_SMBUS_OV519 0x040010 /* OV519 USB 1.1 webcam IC */ |
303 | #define I2C_HW_SMBUS_OVFX2 0x11 /* Cypress/OmniVision FX2 webcam */ | 251 | #define I2C_HW_SMBUS_OVFX2 0x040011 /* Cypress/OmniVision FX2 webcam */ |
304 | 252 | ||
305 | /* --- ISA pseudo-adapter */ | 253 | /* --- ISA pseudo-adapter */ |
306 | #define I2C_HW_ISA 0x00 | 254 | #define I2C_HW_ISA 0x050000 |
307 | 255 | ||
308 | /* --- IPMI pseudo-adapter */ | 256 | /* --- IPMI pseudo-adapter */ |
309 | #define I2C_HW_IPMI 0x00 | 257 | #define I2C_HW_IPMI 0x0b0000 |
310 | 258 | ||
311 | /* --- IPMB adapter */ | 259 | /* --- IPMB adapter */ |
312 | #define I2C_HW_IPMB 0x00 | 260 | #define I2C_HW_IPMB 0x0c0000 |
313 | 261 | ||
314 | /* --- MCP107 adapter */ | 262 | /* --- MCP107 adapter */ |
315 | #define I2C_HW_MPC107 0x00 | 263 | #define I2C_HW_MPC107 0x0d0000 |
316 | 264 | ||
317 | /* --- Marvell mv64xxx i2c adapter */ | 265 | /* --- Marvell mv64xxx i2c adapter */ |
318 | #define I2C_HW_MV64XXX 0x00 | 266 | #define I2C_HW_MV64XXX 0x190000 |
267 | |||
268 | /* --- Miscellaneous adapters */ | ||
269 | #define I2C_HW_SAA7146 0x060000 /* SAA7146 video decoder bus */ | ||
270 | #define I2C_HW_SAA7134 0x090000 /* SAA7134 video decoder bus */ | ||
319 | 271 | ||
320 | #endif /* LINUX_I2C_ID_H */ | 272 | #endif /* LINUX_I2C_ID_H */ |
diff --git a/include/linux/i2c-isa.h b/include/linux/i2c-isa.h new file mode 100644 index 000000000000..67e3598c4cec --- /dev/null +++ b/include/linux/i2c-isa.h | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * i2c-isa.h - definitions for the i2c-isa pseudo-i2c-adapter interface | ||
3 | * | ||
4 | * Copyright (C) 2005 Jean Delvare <khali@linux-fr.org> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef _LINUX_I2C_ISA_H | ||
22 | #define _LINUX_I2C_ISA_H | ||
23 | |||
24 | #include <linux/i2c.h> | ||
25 | |||
26 | extern int i2c_isa_add_driver(struct i2c_driver *driver); | ||
27 | extern int i2c_isa_del_driver(struct i2c_driver *driver); | ||
28 | |||
29 | /* Detect whether we are on the isa bus. This is only useful to hybrid | ||
30 | (i2c+isa) drivers. */ | ||
31 | #define i2c_is_isa_adapter(adapptr) \ | ||
32 | ((adapptr)->id == I2C_HW_ISA) | ||
33 | #define i2c_is_isa_client(clientptr) \ | ||
34 | i2c_is_isa_adapter((clientptr)->adapter) | ||
35 | |||
36 | #endif /* _LINUX_I2C_ISA_H */ | ||
diff --git a/include/linux/i2c-sensor.h b/include/linux/i2c-sensor.h deleted file mode 100644 index 21b625204956..000000000000 --- a/include/linux/i2c-sensor.h +++ /dev/null | |||
@@ -1,263 +0,0 @@ | |||
1 | /* | ||
2 | i2c-sensor.h - Part of the i2c package | ||
3 | was originally sensors.h - Part of lm_sensors, Linux kernel modules | ||
4 | for hardware monitoring | ||
5 | Copyright (c) 1998, 1999 Frodo Looijaard <frodol@dds.nl> | ||
6 | |||
7 | This program is free software; you can redistribute it and/or modify | ||
8 | it under the terms of the GNU General Public License as published by | ||
9 | the Free Software Foundation; either version 2 of the License, or | ||
10 | (at your option) any later version. | ||
11 | |||
12 | This program is distributed in the hope that it will be useful, | ||
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | GNU General Public License for more details. | ||
16 | |||
17 | You should have received a copy of the GNU General Public License | ||
18 | along with this program; if not, write to the Free Software | ||
19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
20 | */ | ||
21 | |||
22 | #ifndef _LINUX_I2C_SENSOR_H | ||
23 | #define _LINUX_I2C_SENSOR_H | ||
24 | |||
25 | /* A structure containing detect information. | ||
26 | Force variables overrule all other variables; they force a detection on | ||
27 | that place. If a specific chip is given, the module blindly assumes this | ||
28 | chip type is present; if a general force (kind == 0) is given, the module | ||
29 | will still try to figure out what type of chip is present. This is useful | ||
30 | if for some reasons the detect for SMBus or ISA address space filled | ||
31 | fails. | ||
32 | probe: insmod parameter. Initialize this list with I2C_CLIENT_ISA_END values. | ||
33 | A list of pairs. The first value is a bus number (ANY_I2C_ISA_BUS for | ||
34 | the ISA bus, -1 for any I2C bus), the second is the address. | ||
35 | kind: The kind of chip. 0 equals any chip. | ||
36 | */ | ||
37 | struct i2c_force_data { | ||
38 | unsigned short *force; | ||
39 | unsigned short kind; | ||
40 | }; | ||
41 | |||
42 | /* A structure containing the detect information. | ||
43 | normal_i2c: filled in by the module writer. Terminated by I2C_CLIENT_ISA_END. | ||
44 | A list of I2C addresses which should normally be examined. | ||
45 | normal_isa: filled in by the module writer. Terminated by SENSORS_ISA_END. | ||
46 | A list of ISA addresses which should normally be examined. | ||
47 | probe: insmod parameter. Initialize this list with I2C_CLIENT_ISA_END values. | ||
48 | A list of pairs. The first value is a bus number (ANY_I2C_ISA_BUS for | ||
49 | the ISA bus, -1 for any I2C bus), the second is the address. These | ||
50 | addresses are also probed, as if they were in the 'normal' list. | ||
51 | ignore: insmod parameter. Initialize this list with I2C_CLIENT_ISA_END values. | ||
52 | A list of pairs. The first value is a bus number (ANY_I2C_ISA_BUS for | ||
53 | the ISA bus, -1 for any I2C bus), the second is the I2C address. These | ||
54 | addresses are never probed. This parameter overrules 'normal' and | ||
55 | 'probe', but not the 'force' lists. | ||
56 | force_data: insmod parameters. A list, ending with an element of which | ||
57 | the force field is NULL. | ||
58 | */ | ||
59 | struct i2c_address_data { | ||
60 | unsigned short *normal_i2c; | ||
61 | unsigned int *normal_isa; | ||
62 | unsigned short *probe; | ||
63 | unsigned short *ignore; | ||
64 | struct i2c_force_data *forces; | ||
65 | }; | ||
66 | |||
67 | #define SENSORS_MODULE_PARM_FORCE(name) \ | ||
68 | I2C_CLIENT_MODULE_PARM(force_ ## name, \ | ||
69 | "List of adapter,address pairs which are unquestionably" \ | ||
70 | " assumed to contain a `" # name "' chip") | ||
71 | |||
72 | |||
73 | /* This defines several insmod variables, and the addr_data structure */ | ||
74 | #define SENSORS_INSMOD \ | ||
75 | I2C_CLIENT_MODULE_PARM(probe, \ | ||
76 | "List of adapter,address pairs to scan additionally"); \ | ||
77 | I2C_CLIENT_MODULE_PARM(ignore, \ | ||
78 | "List of adapter,address pairs not to scan"); \ | ||
79 | static struct i2c_address_data addr_data = { \ | ||
80 | .normal_i2c = normal_i2c, \ | ||
81 | .normal_isa = normal_isa, \ | ||
82 | .probe = probe, \ | ||
83 | .ignore = ignore, \ | ||
84 | .forces = forces, \ | ||
85 | } | ||
86 | |||
87 | /* The following functions create an enum with the chip names as elements. | ||
88 | The first element of the enum is any_chip. These are the only macros | ||
89 | a module will want to use. */ | ||
90 | |||
91 | #define SENSORS_INSMOD_0 \ | ||
92 | enum chips { any_chip }; \ | ||
93 | I2C_CLIENT_MODULE_PARM(force, \ | ||
94 | "List of adapter,address pairs to boldly assume " \ | ||
95 | "to be present"); \ | ||
96 | static struct i2c_force_data forces[] = {{force,any_chip},{NULL}}; \ | ||
97 | SENSORS_INSMOD | ||
98 | |||
99 | #define SENSORS_INSMOD_1(chip1) \ | ||
100 | enum chips { any_chip, chip1 }; \ | ||
101 | I2C_CLIENT_MODULE_PARM(force, \ | ||
102 | "List of adapter,address pairs to boldly assume " \ | ||
103 | "to be present"); \ | ||
104 | SENSORS_MODULE_PARM_FORCE(chip1); \ | ||
105 | static struct i2c_force_data forces[] = {{force,any_chip},\ | ||
106 | {force_ ## chip1,chip1}, \ | ||
107 | {NULL}}; \ | ||
108 | SENSORS_INSMOD | ||
109 | |||
110 | #define SENSORS_INSMOD_2(chip1,chip2) \ | ||
111 | enum chips { any_chip, chip1, chip2 }; \ | ||
112 | I2C_CLIENT_MODULE_PARM(force, \ | ||
113 | "List of adapter,address pairs to boldly assume " \ | ||
114 | "to be present"); \ | ||
115 | SENSORS_MODULE_PARM_FORCE(chip1); \ | ||
116 | SENSORS_MODULE_PARM_FORCE(chip2); \ | ||
117 | static struct i2c_force_data forces[] = {{force,any_chip}, \ | ||
118 | {force_ ## chip1,chip1}, \ | ||
119 | {force_ ## chip2,chip2}, \ | ||
120 | {NULL}}; \ | ||
121 | SENSORS_INSMOD | ||
122 | |||
123 | #define SENSORS_INSMOD_3(chip1,chip2,chip3) \ | ||
124 | enum chips { any_chip, chip1, chip2, chip3 }; \ | ||
125 | I2C_CLIENT_MODULE_PARM(force, \ | ||
126 | "List of adapter,address pairs to boldly assume " \ | ||
127 | "to be present"); \ | ||
128 | SENSORS_MODULE_PARM_FORCE(chip1); \ | ||
129 | SENSORS_MODULE_PARM_FORCE(chip2); \ | ||
130 | SENSORS_MODULE_PARM_FORCE(chip3); \ | ||
131 | static struct i2c_force_data forces[] = {{force,any_chip}, \ | ||
132 | {force_ ## chip1,chip1}, \ | ||
133 | {force_ ## chip2,chip2}, \ | ||
134 | {force_ ## chip3,chip3}, \ | ||
135 | {NULL}}; \ | ||
136 | SENSORS_INSMOD | ||
137 | |||
138 | #define SENSORS_INSMOD_4(chip1,chip2,chip3,chip4) \ | ||
139 | enum chips { any_chip, chip1, chip2, chip3, chip4 }; \ | ||
140 | I2C_CLIENT_MODULE_PARM(force, \ | ||
141 | "List of adapter,address pairs to boldly assume " \ | ||
142 | "to be present"); \ | ||
143 | SENSORS_MODULE_PARM_FORCE(chip1); \ | ||
144 | SENSORS_MODULE_PARM_FORCE(chip2); \ | ||
145 | SENSORS_MODULE_PARM_FORCE(chip3); \ | ||
146 | SENSORS_MODULE_PARM_FORCE(chip4); \ | ||
147 | static struct i2c_force_data forces[] = {{force,any_chip}, \ | ||
148 | {force_ ## chip1,chip1}, \ | ||
149 | {force_ ## chip2,chip2}, \ | ||
150 | {force_ ## chip3,chip3}, \ | ||
151 | {force_ ## chip4,chip4}, \ | ||
152 | {NULL}}; \ | ||
153 | SENSORS_INSMOD | ||
154 | |||
155 | #define SENSORS_INSMOD_5(chip1,chip2,chip3,chip4,chip5) \ | ||
156 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5 }; \ | ||
157 | I2C_CLIENT_MODULE_PARM(force, \ | ||
158 | "List of adapter,address pairs to boldly assume " \ | ||
159 | "to be present"); \ | ||
160 | SENSORS_MODULE_PARM_FORCE(chip1); \ | ||
161 | SENSORS_MODULE_PARM_FORCE(chip2); \ | ||
162 | SENSORS_MODULE_PARM_FORCE(chip3); \ | ||
163 | SENSORS_MODULE_PARM_FORCE(chip4); \ | ||
164 | SENSORS_MODULE_PARM_FORCE(chip5); \ | ||
165 | static struct i2c_force_data forces[] = {{force,any_chip}, \ | ||
166 | {force_ ## chip1,chip1}, \ | ||
167 | {force_ ## chip2,chip2}, \ | ||
168 | {force_ ## chip3,chip3}, \ | ||
169 | {force_ ## chip4,chip4}, \ | ||
170 | {force_ ## chip5,chip5}, \ | ||
171 | {NULL}}; \ | ||
172 | SENSORS_INSMOD | ||
173 | |||
174 | #define SENSORS_INSMOD_6(chip1,chip2,chip3,chip4,chip5,chip6) \ | ||
175 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6 }; \ | ||
176 | I2C_CLIENT_MODULE_PARM(force, \ | ||
177 | "List of adapter,address pairs to boldly assume " \ | ||
178 | "to be present"); \ | ||
179 | SENSORS_MODULE_PARM_FORCE(chip1); \ | ||
180 | SENSORS_MODULE_PARM_FORCE(chip2); \ | ||
181 | SENSORS_MODULE_PARM_FORCE(chip3); \ | ||
182 | SENSORS_MODULE_PARM_FORCE(chip4); \ | ||
183 | SENSORS_MODULE_PARM_FORCE(chip5); \ | ||
184 | SENSORS_MODULE_PARM_FORCE(chip6); \ | ||
185 | static struct i2c_force_data forces[] = {{force,any_chip}, \ | ||
186 | {force_ ## chip1,chip1}, \ | ||
187 | {force_ ## chip2,chip2}, \ | ||
188 | {force_ ## chip3,chip3}, \ | ||
189 | {force_ ## chip4,chip4}, \ | ||
190 | {force_ ## chip5,chip5}, \ | ||
191 | {force_ ## chip6,chip6}, \ | ||
192 | {NULL}}; \ | ||
193 | SENSORS_INSMOD | ||
194 | |||
195 | #define SENSORS_INSMOD_7(chip1,chip2,chip3,chip4,chip5,chip6,chip7) \ | ||
196 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, chip7 }; \ | ||
197 | I2C_CLIENT_MODULE_PARM(force, \ | ||
198 | "List of adapter,address pairs to boldly assume " \ | ||
199 | "to be present"); \ | ||
200 | SENSORS_MODULE_PARM_FORCE(chip1); \ | ||
201 | SENSORS_MODULE_PARM_FORCE(chip2); \ | ||
202 | SENSORS_MODULE_PARM_FORCE(chip3); \ | ||
203 | SENSORS_MODULE_PARM_FORCE(chip4); \ | ||
204 | SENSORS_MODULE_PARM_FORCE(chip5); \ | ||
205 | SENSORS_MODULE_PARM_FORCE(chip6); \ | ||
206 | SENSORS_MODULE_PARM_FORCE(chip7); \ | ||
207 | static struct i2c_force_data forces[] = {{force,any_chip}, \ | ||
208 | {force_ ## chip1,chip1}, \ | ||
209 | {force_ ## chip2,chip2}, \ | ||
210 | {force_ ## chip3,chip3}, \ | ||
211 | {force_ ## chip4,chip4}, \ | ||
212 | {force_ ## chip5,chip5}, \ | ||
213 | {force_ ## chip6,chip6}, \ | ||
214 | {force_ ## chip7,chip7}, \ | ||
215 | {NULL}}; \ | ||
216 | SENSORS_INSMOD | ||
217 | |||
218 | #define SENSORS_INSMOD_8(chip1,chip2,chip3,chip4,chip5,chip6,chip7,chip8) \ | ||
219 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, chip7, chip8 }; \ | ||
220 | I2C_CLIENT_MODULE_PARM(force, \ | ||
221 | "List of adapter,address pairs to boldly assume " \ | ||
222 | "to be present"); \ | ||
223 | SENSORS_MODULE_PARM_FORCE(chip1); \ | ||
224 | SENSORS_MODULE_PARM_FORCE(chip2); \ | ||
225 | SENSORS_MODULE_PARM_FORCE(chip3); \ | ||
226 | SENSORS_MODULE_PARM_FORCE(chip4); \ | ||
227 | SENSORS_MODULE_PARM_FORCE(chip5); \ | ||
228 | SENSORS_MODULE_PARM_FORCE(chip6); \ | ||
229 | SENSORS_MODULE_PARM_FORCE(chip7); \ | ||
230 | SENSORS_MODULE_PARM_FORCE(chip8); \ | ||
231 | static struct i2c_force_data forces[] = {{force,any_chip}, \ | ||
232 | {force_ ## chip1,chip1}, \ | ||
233 | {force_ ## chip2,chip2}, \ | ||
234 | {force_ ## chip3,chip3}, \ | ||
235 | {force_ ## chip4,chip4}, \ | ||
236 | {force_ ## chip5,chip5}, \ | ||
237 | {force_ ## chip6,chip6}, \ | ||
238 | {force_ ## chip7,chip7}, \ | ||
239 | {force_ ## chip8,chip8}, \ | ||
240 | {NULL}}; \ | ||
241 | SENSORS_INSMOD | ||
242 | |||
243 | /* Detect function. It iterates over all possible addresses itself. For | ||
244 | SMBus addresses, it will only call found_proc if some client is connected | ||
245 | to the SMBus (unless a 'force' matched); for ISA detections, this is not | ||
246 | done. */ | ||
247 | extern int i2c_detect(struct i2c_adapter *adapter, | ||
248 | struct i2c_address_data *address_data, | ||
249 | int (*found_proc) (struct i2c_adapter *, int, int)); | ||
250 | |||
251 | |||
252 | /* This macro is used to scale user-input to sensible values in almost all | ||
253 | chip drivers. */ | ||
254 | static inline int SENSORS_LIMIT(long value, long low, long high) | ||
255 | { | ||
256 | if (value < low) | ||
257 | return low; | ||
258 | else if (value > high) | ||
259 | return high; | ||
260 | else | ||
261 | return value; | ||
262 | } | ||
263 | #endif /* def _LINUX_I2C_SENSOR_H */ | ||
diff --git a/include/linux/i2c-vid.h b/include/linux/i2c-vid.h deleted file mode 100644 index 41d0635e0ba9..000000000000 --- a/include/linux/i2c-vid.h +++ /dev/null | |||
@@ -1,111 +0,0 @@ | |||
1 | /* | ||
2 | i2c-vid.h - Part of lm_sensors, Linux kernel modules for hardware | ||
3 | monitoring | ||
4 | Copyright (c) 2002 Mark D. Studebaker <mdsxyz123@yahoo.com> | ||
5 | With assistance from Trent Piepho <xyzzy@speakeasy.org> | ||
6 | |||
7 | This program is free software; you can redistribute it and/or modify | ||
8 | it under the terms of the GNU General Public License as published by | ||
9 | the Free Software Foundation; either version 2 of the License, or | ||
10 | (at your option) any later version. | ||
11 | |||
12 | This program is distributed in the hope that it will be useful, | ||
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | GNU General Public License for more details. | ||
16 | |||
17 | You should have received a copy of the GNU General Public License | ||
18 | along with this program; if not, write to the Free Software | ||
19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
20 | */ | ||
21 | |||
22 | /* | ||
23 | This file contains common code for decoding VID pins. | ||
24 | This file is #included in various chip drivers in this directory. | ||
25 | As the user is unlikely to load more than one driver which | ||
26 | includes this code we don't worry about the wasted space. | ||
27 | Reference: VRM x.y DC-DC Converter Design Guidelines, | ||
28 | available at http://developer.intel.com | ||
29 | */ | ||
30 | |||
31 | /* | ||
32 | AMD Opteron processors don't follow the Intel VRM spec. | ||
33 | I'm going to "make up" 2.4 as the VRM spec for the Opterons. | ||
34 | No good reason just a mnemonic for the 24x Opteron processor | ||
35 | series | ||
36 | |||
37 | Opteron VID encoding is: | ||
38 | |||
39 | 00000 = 1.550 V | ||
40 | 00001 = 1.525 V | ||
41 | . . . . | ||
42 | 11110 = 0.800 V | ||
43 | 11111 = 0.000 V (off) | ||
44 | */ | ||
45 | |||
46 | /* | ||
47 | Legal val values 0x00 - 0x1f; except for VRD 10.0, 0x00 - 0x3f. | ||
48 | vrm is the Intel VRM document version. | ||
49 | Note: vrm version is scaled by 10 and the return value is scaled by 1000 | ||
50 | to avoid floating point in the kernel. | ||
51 | */ | ||
52 | |||
53 | int i2c_which_vrm(void); | ||
54 | |||
55 | #define DEFAULT_VRM 82 | ||
56 | |||
57 | static inline int vid_from_reg(int val, int vrm) | ||
58 | { | ||
59 | int vid; | ||
60 | |||
61 | switch(vrm) { | ||
62 | |||
63 | case 0: | ||
64 | return 0; | ||
65 | |||
66 | case 100: /* VRD 10.0 */ | ||
67 | if((val & 0x1f) == 0x1f) | ||
68 | return 0; | ||
69 | if((val & 0x1f) <= 0x09 || val == 0x0a) | ||
70 | vid = 10875 - (val & 0x1f) * 250; | ||
71 | else | ||
72 | vid = 18625 - (val & 0x1f) * 250; | ||
73 | if(val & 0x20) | ||
74 | vid -= 125; | ||
75 | vid /= 10; /* only return 3 dec. places for now */ | ||
76 | return vid; | ||
77 | |||
78 | case 24: /* Opteron processor */ | ||
79 | return(val == 0x1f ? 0 : 1550 - val * 25); | ||
80 | |||
81 | case 91: /* VRM 9.1 */ | ||
82 | case 90: /* VRM 9.0 */ | ||
83 | return(val == 0x1f ? 0 : | ||
84 | 1850 - val * 25); | ||
85 | |||
86 | case 85: /* VRM 8.5 */ | ||
87 | return((val & 0x10 ? 25 : 0) + | ||
88 | ((val & 0x0f) > 0x04 ? 2050 : 1250) - | ||
89 | ((val & 0x0f) * 50)); | ||
90 | |||
91 | case 84: /* VRM 8.4 */ | ||
92 | val &= 0x0f; | ||
93 | /* fall through */ | ||
94 | default: /* VRM 8.2 */ | ||
95 | return(val == 0x1f ? 0 : | ||
96 | val & 0x10 ? 5100 - (val) * 100 : | ||
97 | 2050 - (val) * 50); | ||
98 | } | ||
99 | } | ||
100 | |||
101 | static inline int vid_to_reg(int val, int vrm) | ||
102 | { | ||
103 | switch (vrm) { | ||
104 | case 91: /* VRM 9.1 */ | ||
105 | case 90: /* VRM 9.0 */ | ||
106 | return ((val >= 1100) && (val <= 1850) ? | ||
107 | ((18499 - val * 10) / 25 + 5) / 10 : -1); | ||
108 | default: | ||
109 | return -1; | ||
110 | } | ||
111 | } | ||
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index be837b13f297..1ead5195fde4 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
@@ -34,6 +34,13 @@ | |||
34 | #include <linux/device.h> /* for struct device */ | 34 | #include <linux/device.h> /* for struct device */ |
35 | #include <asm/semaphore.h> | 35 | #include <asm/semaphore.h> |
36 | 36 | ||
37 | /* --- For i2c-isa ---------------------------------------------------- */ | ||
38 | |||
39 | extern void i2c_adapter_dev_release(struct device *dev); | ||
40 | extern struct device_driver i2c_adapter_driver; | ||
41 | extern struct class i2c_adapter_class; | ||
42 | extern struct bus_type i2c_bus_type; | ||
43 | |||
37 | /* --- General options ------------------------------------------------ */ | 44 | /* --- General options ------------------------------------------------ */ |
38 | 45 | ||
39 | struct i2c_msg; | 46 | struct i2c_msg; |
@@ -41,7 +48,6 @@ struct i2c_algorithm; | |||
41 | struct i2c_adapter; | 48 | struct i2c_adapter; |
42 | struct i2c_client; | 49 | struct i2c_client; |
43 | struct i2c_driver; | 50 | struct i2c_driver; |
44 | struct i2c_client_address_data; | ||
45 | union i2c_smbus_data; | 51 | union i2c_smbus_data; |
46 | 52 | ||
47 | /* | 53 | /* |
@@ -143,12 +149,9 @@ struct i2c_driver { | |||
143 | */ | 149 | */ |
144 | struct i2c_client { | 150 | struct i2c_client { |
145 | unsigned int flags; /* div., see below */ | 151 | unsigned int flags; /* div., see below */ |
146 | unsigned int addr; /* chip address - NOTE: 7bit */ | 152 | unsigned short addr; /* chip address - NOTE: 7bit */ |
147 | /* addresses are stored in the */ | 153 | /* addresses are stored in the */ |
148 | /* _LOWER_ 7 bits of this char */ | 154 | /* _LOWER_ 7 bits */ |
149 | /* addr: unsigned int to make lm_sensors i2c-isa adapter work | ||
150 | more cleanly. It does not take any more memory space, due to | ||
151 | alignment considerations */ | ||
152 | struct i2c_adapter *adapter; /* the adapter we sit on */ | 155 | struct i2c_adapter *adapter; /* the adapter we sit on */ |
153 | struct i2c_driver *driver; /* and our access routines */ | 156 | struct i2c_driver *driver; /* and our access routines */ |
154 | int usage_count; /* How many accesses currently */ | 157 | int usage_count; /* How many accesses currently */ |
@@ -160,6 +163,11 @@ struct i2c_client { | |||
160 | }; | 163 | }; |
161 | #define to_i2c_client(d) container_of(d, struct i2c_client, dev) | 164 | #define to_i2c_client(d) container_of(d, struct i2c_client, dev) |
162 | 165 | ||
166 | static inline struct i2c_client *kobj_to_i2c_client(struct kobject *kobj) | ||
167 | { | ||
168 | return to_i2c_client(container_of(kobj, struct device, kobj)); | ||
169 | } | ||
170 | |||
163 | static inline void *i2c_get_clientdata (struct i2c_client *dev) | 171 | static inline void *i2c_get_clientdata (struct i2c_client *dev) |
164 | { | 172 | { |
165 | return dev_get_drvdata (&dev->dev); | 173 | return dev_get_drvdata (&dev->dev); |
@@ -170,13 +178,6 @@ static inline void i2c_set_clientdata (struct i2c_client *dev, void *data) | |||
170 | dev_set_drvdata (&dev->dev, data); | 178 | dev_set_drvdata (&dev->dev, data); |
171 | } | 179 | } |
172 | 180 | ||
173 | #define I2C_DEVNAME(str) .name = str | ||
174 | |||
175 | static inline char *i2c_clientname(struct i2c_client *c) | ||
176 | { | ||
177 | return &c->name[0]; | ||
178 | } | ||
179 | |||
180 | /* | 181 | /* |
181 | * The following structs are for those who like to implement new bus drivers: | 182 | * The following structs are for those who like to implement new bus drivers: |
182 | * i2c_algorithm is the interface to a class of hardware solutions which can | 183 | * i2c_algorithm is the interface to a class of hardware solutions which can |
@@ -184,9 +185,6 @@ static inline char *i2c_clientname(struct i2c_client *c) | |||
184 | * to name two of the most common. | 185 | * to name two of the most common. |
185 | */ | 186 | */ |
186 | struct i2c_algorithm { | 187 | struct i2c_algorithm { |
187 | char name[32]; /* textual description */ | ||
188 | unsigned int id; | ||
189 | |||
190 | /* If an adapter algorithm can't do I2C-level access, set master_xfer | 188 | /* If an adapter algorithm can't do I2C-level access, set master_xfer |
191 | to NULL. If an adapter algorithm can do SMBus access, set | 189 | to NULL. If an adapter algorithm can do SMBus access, set |
192 | smbus_xfer. If set to NULL, the SMBus protocol is simulated | 190 | smbus_xfer. If set to NULL, the SMBus protocol is simulated |
@@ -214,8 +212,7 @@ struct i2c_algorithm { | |||
214 | */ | 212 | */ |
215 | struct i2c_adapter { | 213 | struct i2c_adapter { |
216 | struct module *owner; | 214 | struct module *owner; |
217 | unsigned int id;/* == is algo->id | hwdep.struct->id, */ | 215 | unsigned int id; |
218 | /* for registered values see below */ | ||
219 | unsigned int class; | 216 | unsigned int class; |
220 | struct i2c_algorithm *algo;/* the algorithm to access the bus */ | 217 | struct i2c_algorithm *algo;/* the algorithm to access the bus */ |
221 | void *algo_data; | 218 | void *algo_data; |
@@ -292,12 +289,11 @@ struct i2c_client_address_data { | |||
292 | unsigned short *normal_i2c; | 289 | unsigned short *normal_i2c; |
293 | unsigned short *probe; | 290 | unsigned short *probe; |
294 | unsigned short *ignore; | 291 | unsigned short *ignore; |
295 | unsigned short *force; | 292 | unsigned short **forces; |
296 | }; | 293 | }; |
297 | 294 | ||
298 | /* Internal numbers to terminate lists */ | 295 | /* Internal numbers to terminate lists */ |
299 | #define I2C_CLIENT_END 0xfffeU | 296 | #define I2C_CLIENT_END 0xfffeU |
300 | #define I2C_CLIENT_ISA_END 0xfffefffeU | ||
301 | 297 | ||
302 | /* The numbers to use to set I2C bus address */ | 298 | /* The numbers to use to set I2C bus address */ |
303 | #define ANY_I2C_BUS 0xffff | 299 | #define ANY_I2C_BUS 0xffff |
@@ -356,10 +352,6 @@ extern int i2c_probe(struct i2c_adapter *adapter, | |||
356 | */ | 352 | */ |
357 | extern int i2c_control(struct i2c_client *,unsigned int, unsigned long); | 353 | extern int i2c_control(struct i2c_client *,unsigned int, unsigned long); |
358 | 354 | ||
359 | /* This call returns a unique low identifier for each registered adapter, | ||
360 | * or -1 if the adapter was not registered. | ||
361 | */ | ||
362 | extern int i2c_adapter_id(struct i2c_adapter *adap); | ||
363 | extern struct i2c_adapter* i2c_get_adapter(int id); | 355 | extern struct i2c_adapter* i2c_get_adapter(int id); |
364 | extern void i2c_put_adapter(struct i2c_adapter *adap); | 356 | extern void i2c_put_adapter(struct i2c_adapter *adap); |
365 | 357 | ||
@@ -376,6 +368,12 @@ static inline int i2c_check_functionality(struct i2c_adapter *adap, u32 func) | |||
376 | return (func & i2c_get_functionality(adap)) == func; | 368 | return (func & i2c_get_functionality(adap)) == func; |
377 | } | 369 | } |
378 | 370 | ||
371 | /* Return id number for a specific adapter */ | ||
372 | static inline int i2c_adapter_id(struct i2c_adapter *adap) | ||
373 | { | ||
374 | return adap->nr; | ||
375 | } | ||
376 | |||
379 | /* | 377 | /* |
380 | * I2C Message - used for pure i2c transaction, also from /dev interface | 378 | * I2C Message - used for pure i2c transaction, also from /dev interface |
381 | */ | 379 | */ |
@@ -556,27 +554,148 @@ union i2c_smbus_data { | |||
556 | module_param_array(var, short, &var##_num, 0); \ | 554 | module_param_array(var, short, &var##_num, 0); \ |
557 | MODULE_PARM_DESC(var,desc) | 555 | MODULE_PARM_DESC(var,desc) |
558 | 556 | ||
559 | /* This is the one you want to use in your own modules */ | 557 | #define I2C_CLIENT_MODULE_PARM_FORCE(name) \ |
558 | I2C_CLIENT_MODULE_PARM(force_##name, \ | ||
559 | "List of adapter,address pairs which are " \ | ||
560 | "unquestionably assumed to contain a `" \ | ||
561 | # name "' chip") | ||
562 | |||
563 | |||
564 | #define I2C_CLIENT_INSMOD_COMMON \ | ||
565 | I2C_CLIENT_MODULE_PARM(probe, "List of adapter,address pairs to scan " \ | ||
566 | "additionally"); \ | ||
567 | I2C_CLIENT_MODULE_PARM(ignore, "List of adapter,address pairs not to " \ | ||
568 | "scan"); \ | ||
569 | static struct i2c_client_address_data addr_data = { \ | ||
570 | .normal_i2c = normal_i2c, \ | ||
571 | .probe = probe, \ | ||
572 | .ignore = ignore, \ | ||
573 | .forces = forces, \ | ||
574 | } | ||
575 | |||
576 | /* These are the ones you want to use in your own drivers. Pick the one | ||
577 | which matches the number of devices the driver differenciates between. */ | ||
560 | #define I2C_CLIENT_INSMOD \ | 578 | #define I2C_CLIENT_INSMOD \ |
561 | I2C_CLIENT_MODULE_PARM(probe, \ | ||
562 | "List of adapter,address pairs to scan additionally"); \ | ||
563 | I2C_CLIENT_MODULE_PARM(ignore, \ | ||
564 | "List of adapter,address pairs not to scan"); \ | ||
565 | I2C_CLIENT_MODULE_PARM(force, \ | 579 | I2C_CLIENT_MODULE_PARM(force, \ |
566 | "List of adapter,address pairs to boldly assume " \ | 580 | "List of adapter,address pairs to boldly assume " \ |
567 | "to be present"); \ | 581 | "to be present"); \ |
568 | static struct i2c_client_address_data addr_data = { \ | 582 | static unsigned short *forces[] = { \ |
569 | .normal_i2c = normal_i2c, \ | 583 | force, \ |
570 | .probe = probe, \ | 584 | NULL \ |
571 | .ignore = ignore, \ | 585 | }; \ |
572 | .force = force, \ | 586 | I2C_CLIENT_INSMOD_COMMON |
573 | } | 587 | |
574 | 588 | #define I2C_CLIENT_INSMOD_1(chip1) \ | |
575 | /* Detect whether we are on the isa bus. If this returns true, all i2c | 589 | enum chips { any_chip, chip1 }; \ |
576 | access will fail! */ | 590 | I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ |
577 | #define i2c_is_isa_client(clientptr) \ | 591 | "boldly assume to be present"); \ |
578 | ((clientptr)->adapter->algo->id == I2C_ALGO_ISA) | 592 | I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ |
579 | #define i2c_is_isa_adapter(adapptr) \ | 593 | static unsigned short *forces[] = { force, force_##chip1, NULL }; \ |
580 | ((adapptr)->algo->id == I2C_ALGO_ISA) | 594 | I2C_CLIENT_INSMOD_COMMON |
595 | |||
596 | #define I2C_CLIENT_INSMOD_2(chip1, chip2) \ | ||
597 | enum chips { any_chip, chip1, chip2 }; \ | ||
598 | I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ | ||
599 | "boldly assume to be present"); \ | ||
600 | I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ | ||
601 | I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ | ||
602 | static unsigned short *forces[] = { force, force_##chip1, \ | ||
603 | force_##chip2, NULL }; \ | ||
604 | I2C_CLIENT_INSMOD_COMMON | ||
605 | |||
606 | #define I2C_CLIENT_INSMOD_3(chip1, chip2, chip3) \ | ||
607 | enum chips { any_chip, chip1, chip2, chip3 }; \ | ||
608 | I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ | ||
609 | "boldly assume to be present"); \ | ||
610 | I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ | ||
611 | I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ | ||
612 | I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ | ||
613 | static unsigned short *forces[] = { force, force_##chip1, \ | ||
614 | force_##chip2, force_##chip3, \ | ||
615 | NULL }; \ | ||
616 | I2C_CLIENT_INSMOD_COMMON | ||
617 | |||
618 | #define I2C_CLIENT_INSMOD_4(chip1, chip2, chip3, chip4) \ | ||
619 | enum chips { any_chip, chip1, chip2, chip3, chip4 }; \ | ||
620 | I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ | ||
621 | "boldly assume to be present"); \ | ||
622 | I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ | ||
623 | I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ | ||
624 | I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ | ||
625 | I2C_CLIENT_MODULE_PARM_FORCE(chip4); \ | ||
626 | static unsigned short *forces[] = { force, force_##chip1, \ | ||
627 | force_##chip2, force_##chip3, \ | ||
628 | force_##chip4, NULL}; \ | ||
629 | I2C_CLIENT_INSMOD_COMMON | ||
630 | |||
631 | #define I2C_CLIENT_INSMOD_5(chip1, chip2, chip3, chip4, chip5) \ | ||
632 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5 }; \ | ||
633 | I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ | ||
634 | "boldly assume to be present"); \ | ||
635 | I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ | ||
636 | I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ | ||
637 | I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ | ||
638 | I2C_CLIENT_MODULE_PARM_FORCE(chip4); \ | ||
639 | I2C_CLIENT_MODULE_PARM_FORCE(chip5); \ | ||
640 | static unsigned short *forces[] = { force, force_##chip1, \ | ||
641 | force_##chip2, force_##chip3, \ | ||
642 | force_##chip4, force_##chip5, \ | ||
643 | NULL }; \ | ||
644 | I2C_CLIENT_INSMOD_COMMON | ||
645 | |||
646 | #define I2C_CLIENT_INSMOD_6(chip1, chip2, chip3, chip4, chip5, chip6) \ | ||
647 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6 }; \ | ||
648 | I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ | ||
649 | "boldly assume to be present"); \ | ||
650 | I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ | ||
651 | I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ | ||
652 | I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ | ||
653 | I2C_CLIENT_MODULE_PARM_FORCE(chip4); \ | ||
654 | I2C_CLIENT_MODULE_PARM_FORCE(chip5); \ | ||
655 | I2C_CLIENT_MODULE_PARM_FORCE(chip6); \ | ||
656 | static unsigned short *forces[] = { force, force_##chip1, \ | ||
657 | force_##chip2, force_##chip3, \ | ||
658 | force_##chip4, force_##chip5, \ | ||
659 | force_##chip6, NULL }; \ | ||
660 | I2C_CLIENT_INSMOD_COMMON | ||
661 | |||
662 | #define I2C_CLIENT_INSMOD_7(chip1, chip2, chip3, chip4, chip5, chip6, chip7) \ | ||
663 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \ | ||
664 | chip7 }; \ | ||
665 | I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ | ||
666 | "boldly assume to be present"); \ | ||
667 | I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ | ||
668 | I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ | ||
669 | I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ | ||
670 | I2C_CLIENT_MODULE_PARM_FORCE(chip4); \ | ||
671 | I2C_CLIENT_MODULE_PARM_FORCE(chip5); \ | ||
672 | I2C_CLIENT_MODULE_PARM_FORCE(chip6); \ | ||
673 | I2C_CLIENT_MODULE_PARM_FORCE(chip7); \ | ||
674 | static unsigned short *forces[] = { force, force_##chip1, \ | ||
675 | force_##chip2, force_##chip3, \ | ||
676 | force_##chip4, force_##chip5, \ | ||
677 | force_##chip6, force_##chip7, \ | ||
678 | NULL }; \ | ||
679 | I2C_CLIENT_INSMOD_COMMON | ||
680 | |||
681 | #define I2C_CLIENT_INSMOD_8(chip1, chip2, chip3, chip4, chip5, chip6, chip7, chip8) \ | ||
682 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \ | ||
683 | chip7, chip8 }; \ | ||
684 | I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ | ||
685 | "boldly assume to be present"); \ | ||
686 | I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ | ||
687 | I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ | ||
688 | I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ | ||
689 | I2C_CLIENT_MODULE_PARM_FORCE(chip4); \ | ||
690 | I2C_CLIENT_MODULE_PARM_FORCE(chip5); \ | ||
691 | I2C_CLIENT_MODULE_PARM_FORCE(chip6); \ | ||
692 | I2C_CLIENT_MODULE_PARM_FORCE(chip7); \ | ||
693 | I2C_CLIENT_MODULE_PARM_FORCE(chip8); \ | ||
694 | static unsigned short *forces[] = { force, force_##chip1, \ | ||
695 | force_##chip2, force_##chip3, \ | ||
696 | force_##chip4, force_##chip5, \ | ||
697 | force_##chip6, force_##chip7, \ | ||
698 | force_##chip8, NULL }; \ | ||
699 | I2C_CLIENT_INSMOD_COMMON | ||
581 | 700 | ||
582 | #endif /* _LINUX_I2C_H */ | 701 | #endif /* _LINUX_I2C_H */ |
diff --git a/include/media/id.h b/include/media/id.h index a39a6423914b..801ddef301aa 100644 --- a/include/media/id.h +++ b/include/media/id.h | |||
@@ -34,8 +34,3 @@ | |||
34 | #ifndef I2C_DRIVERID_SAA6752HS | 34 | #ifndef I2C_DRIVERID_SAA6752HS |
35 | # define I2C_DRIVERID_SAA6752HS I2C_DRIVERID_EXP0+8 | 35 | # define I2C_DRIVERID_SAA6752HS I2C_DRIVERID_EXP0+8 |
36 | #endif | 36 | #endif |
37 | |||
38 | /* algorithms */ | ||
39 | #ifndef I2C_ALGO_SAA7134 | ||
40 | # define I2C_ALGO_SAA7134 0x090000 | ||
41 | #endif | ||