~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/i2c.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* ------------------------------------------------------------------------- */
  2 /*                                                                           */
  3 /* i2c.h - definitions for the i2c-bus interface                             */
  4 /*                                                                           */
  5 /* ------------------------------------------------------------------------- */
  6 /*   Copyright (C) 1995-2000 Simon G. Vogl
  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 /* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and
 24    Frodo Looijaard <frodol@dds.nl> */
 25 
 26 /* $Id: i2c.h,v 1.42 2000/09/06 20:14:06 frodo Exp $ */
 27 
 28 #ifndef I2C_H
 29 #define I2C_H
 30 
 31 #include <linux/i2c-id.h>       /* id values of adapters et. al.        */
 32 #include <linux/types.h>
 33 
 34 
 35 struct i2c_msg;
 36 
 37 
 38 #ifdef __KERNEL__
 39 
 40 /* --- Includes and compatibility declarations ------------------------ */
 41 
 42 #include <linux/version.h>
 43 #ifndef KERNEL_VERSION
 44 #define KERNEL_VERSION(a,b,c) (((a) << 16) | ((b) << 8) | (c))
 45 #endif
 46 
 47 #include <asm/page.h>                   /* for 2.2.xx                   */
 48 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,0,25)
 49 #include <linux/sched.h>
 50 #else
 51 #include <asm/semaphore.h>
 52 #endif
 53 #include <linux/config.h>
 54 
 55 /* --- General options ------------------------------------------------ */
 56 
 57 #define I2C_ALGO_MAX    4               /* control memory consumption   */
 58 #define I2C_ADAP_MAX    16
 59 #define I2C_DRIVER_MAX  16
 60 #define I2C_CLIENT_MAX  32
 61 #define I2C_DUMMY_MAX 4
 62 
 63 struct i2c_algorithm;
 64 struct i2c_adapter;
 65 struct i2c_client;
 66 struct i2c_driver;
 67 struct i2c_client_address_data;
 68 union i2c_smbus_data;
 69 
 70 
 71 /*
 72  * The master routines are the ones normally used to transmit data to devices
 73  * on a bus (or read from them). Apart from two basic transfer functions to 
 74  * transmit one message at a time, a more complex version can be used to 
 75  * transmit an arbitrary number of messages without interruption.
 76  */
 77 extern int i2c_master_send(struct i2c_client *,const char* ,int);
 78 extern int i2c_master_recv(struct i2c_client *,char* ,int);
 79 
 80 /* Transfer num messages.
 81  */
 82 extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],int num);
 83 
 84 /*
 85  * Some adapter types (i.e. PCF 8584 based ones) may support slave behaviuor. 
 86  * This is not tested/implemented yet and will change in the future.
 87  */
 88 extern int i2c_slave_send(struct i2c_client *,char*,int);
 89 extern int i2c_slave_recv(struct i2c_client *,char*,int);
 90 
 91 
 92 
 93 /* This is the very generalized SMBus access routine. You probably do not
 94    want to use this, though; one of the functions below may be much easier,
 95    and probably just as fast. 
 96    Note that we use i2c_adapter here, because you do not need a specific
 97    smbus adapter to call this function. */
 98 extern s32 i2c_smbus_xfer (struct i2c_adapter * adapter, u16 addr, 
 99                            unsigned short flags,
100                            char read_write, u8 command, int size,
101                            union i2c_smbus_data * data);
102 
103 /* Now follow the 'nice' access routines. These also document the calling
104    conventions of smbus_access. */
105 
106 extern s32 i2c_smbus_write_quick(struct i2c_client * client, u8 value);
107 extern s32 i2c_smbus_read_byte(struct i2c_client * client);
108 extern s32 i2c_smbus_write_byte(struct i2c_client * client, u8 value);
109 extern s32 i2c_smbus_read_byte_data(struct i2c_client * client, u8 command);
110 extern s32 i2c_smbus_write_byte_data(struct i2c_client * client,
111                                      u8 command, u8 value);
112 extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command);
113 extern s32 i2c_smbus_write_word_data(struct i2c_client * client,
114                                      u8 command, u16 value);
115 extern s32 i2c_smbus_process_call(struct i2c_client * client,
116                                   u8 command, u16 value);
117 /* Returns the number of read bytes */
118 extern s32 i2c_smbus_read_block_data(struct i2c_client * client,
119                                      u8 command, u8 *values);
120 extern s32 i2c_smbus_write_block_data(struct i2c_client * client,
121                                       u8 command, u8 length,
122                                       u8 *values);
123 extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client * client,
124                                           u8 command, u8 length,
125                                           u8 *values);
126 
127 
128 /*
129  * A driver is capable of handling one or more physical devices present on
130  * I2C adapters. This information is used to inform the driver of adapter
131  * events.
132  */
133 
134 struct i2c_driver {
135         char name[32];
136         int id;
137         unsigned int flags;             /* div., see below              */
138 
139         /* Notifies the driver that a new bus has appeared. This routine
140          * can be used by the driver to test if the bus meets its conditions
141          * & seek for the presence of the chip(s) it supports. If found, it 
142          * registers the client(s) that are on the bus to the i2c admin. via
143          * i2c_attach_client.
144          */
145         int (*attach_adapter)(struct i2c_adapter *);
146 
147         /* tells the driver that a client is about to be deleted & gives it 
148          * the chance to remove its private data. Also, if the client struct
149          * has been dynamically allocated by the driver in the function above,
150          * it must be freed here.
151          */
152         int (*detach_client)(struct i2c_client *);
153         
154         /* a ioctl like command that can be used to perform specific functions
155          * with the device.
156          */
157         int (*command)(struct i2c_client *client,unsigned int cmd, void *arg);
158         
159         /* These two are mainly used for bookkeeping & dynamic unloading of 
160          * kernel modules. inc_use tells the driver that a client is being  
161          * used by another module & that it should increase its ref. counter.
162          * dec_use is the inverse operation.
163          * NB: Make sure you have no circular dependencies, or else you get a 
164          * deadlock when trying to unload the modules.
165         * You should use the i2c_{inc,dec}_use_client functions instead of
166         * calling this function directly.
167          */
168         void (*inc_use)(struct i2c_client *client);
169         void (*dec_use)(struct i2c_client *client);
170 };
171 
172 /*
173  * i2c_client identifies a single device (i.e. chip) that is connected to an 
174  * i2c bus. The behaviour is defined by the routines of the driver. This
175  * function is mainly used for lookup & other admin. functions.
176  */
177 struct i2c_client {
178         char name[32];
179         int id;
180         unsigned int flags;             /* div., see below              */
181         unsigned int addr;              /* chip address - NOTE: 7bit    */
182                                         /* addresses are stored in the  */
183                                         /* _LOWER_ 7 bits of this char  */
184         /* addr: unsigned int to make lm_sensors i2c-isa adapter work
185           more cleanly. It does not take any more memory space, due to
186           alignment considerations */
187         struct i2c_adapter *adapter;    /* the adapter we sit on        */
188         struct i2c_driver *driver;      /* and our access routines      */
189         void *data;                     /* for the clients              */
190         int usage_count;                /* How many accesses currently  */
191                                         /* to the client                */
192 };
193 
194 
195 /*
196  * The following structs are for those who like to implement new bus drivers:
197  * i2c_algorithm is the interface to a class of hardware solutions which can
198  * be addressed using the same bus algorithms - i.e. bit-banging or the PCF8584
199  * to name two of the most common.
200  */
201 struct i2c_algorithm {
202         char name[32];                          /* textual description  */
203         unsigned int id;
204 
205         /* If a adapter algorithm can't to I2C-level access, set master_xfer
206            to NULL. If an adapter algorithm can do SMBus access, set 
207            smbus_xfer. If set to NULL, the SMBus protocol is simulated
208            using common I2C messages */
209         int (*master_xfer)(struct i2c_adapter *adap,struct i2c_msg msgs[], 
210                            int num);
211         int (*smbus_xfer) (struct i2c_adapter *adap, u16 addr, 
212                            unsigned short flags, char read_write,
213                            u8 command, int size, union i2c_smbus_data * data);
214 
215         /* --- these optional/future use for some adapter types.*/
216         int (*slave_send)(struct i2c_adapter *,char*,int);
217         int (*slave_recv)(struct i2c_adapter *,char*,int);
218 
219         /* --- ioctl like call to set div. parameters. */
220         int (*algo_control)(struct i2c_adapter *, unsigned int, unsigned long);
221 
222         /* To determine what the adapter supports */
223         u32 (*functionality) (struct i2c_adapter *);
224 };
225 
226 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,29)
227 struct proc_dir_entry;
228 #endif
229 
230 /*
231  * i2c_adapter is the structure used to identify a physical i2c bus along
232  * with the access algorithms necessary to access it.
233  */
234 struct i2c_adapter {
235         char name[32];  /* some useful name to identify the adapter     */
236         unsigned int id;/* == is algo->id | hwdep.struct->id,           */
237                         /* for registered values see below              */
238         struct i2c_algorithm *algo;/* the algorithm to access the bus   */
239         void *algo_data;
240 
241         /* --- These may be NULL, but should increase the module use count */
242         void (*inc_use)(struct i2c_adapter *);
243         void (*dec_use)(struct i2c_adapter *);
244 
245         /* --- administration stuff. */
246         int (*client_register)(struct i2c_client *);
247         int (*client_unregister)(struct i2c_client *);
248 
249         void *data;     /* private data for the adapter                 */
250                         /* some data fields that are used by all types  */
251                         /* these data fields are readonly to the public */
252                         /* and can be set via the i2c_ioctl call        */
253 
254                         /* data fields that are valid for all devices   */
255         struct semaphore lock;  
256         unsigned int flags;/* flags specifying div. data                */
257 
258         struct i2c_client *clients[I2C_CLIENT_MAX];
259         int client_count;
260 
261         int timeout;
262         int retries;
263 
264 #ifdef CONFIG_PROC_FS 
265         /* No need to set this when you initialize the adapter          */
266         int inode;
267 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,29)
268         struct proc_dir_entry *proc_entry;
269 #endif
270 #endif /* def CONFIG_PROC_FS */
271 };
272 
273 /*flags for the driver struct: */
274 #define I2C_DF_NOTIFY   0x01            /* notify on bus (de/a)ttaches  */
275 #define I2C_DF_DUMMY    0x02            /* do not connect any clients */
276 
277 /*flags for the client struct: */
278 #define I2C_CLIENT_ALLOW_USE            0x01    /* Client allows access */
279 #define I2C_CLIENT_ALLOW_MULTIPLE_USE   0x02    /* Allow multiple access-locks */
280                                                 /* on an i2c_client */
281 
282 /* i2c_client_address_data is the struct for holding default client
283  * addresses for a driver and for the parameters supplied on the
284  * command line
285  */
286 struct i2c_client_address_data {
287         unsigned short *normal_i2c;
288         unsigned short *normal_i2c_range;
289         unsigned short *probe;
290         unsigned short *probe_range;
291         unsigned short *ignore;
292         unsigned short *ignore_range;
293         unsigned short *force;
294 };
295 
296 /* Internal numbers to terminate lists */
297 #define I2C_CLIENT_END 0xfffe
298 
299 /* The numbers to use to set I2C bus address */
300 #define ANY_I2C_BUS 0xffff
301 
302 /* The length of the option lists */
303 #define I2C_CLIENT_MAX_OPTS 48
304 
305 
306 /* ----- functions exported by i2c.o */
307 
308 /* administration...
309  */
310 extern int i2c_add_adapter(struct i2c_adapter *);
311 extern int i2c_del_adapter(struct i2c_adapter *);
312 
313 extern int i2c_add_driver(struct i2c_driver *);
314 extern int i2c_del_driver(struct i2c_driver *);
315 
316 extern int i2c_attach_client(struct i2c_client *);
317 extern int i2c_detach_client(struct i2c_client *);
318 
319 /* Only call these if you grab a resource that makes unloading the
320    client and the adapter it is on completely impossible. Like when a
321    /proc directory is entered. */
322 extern void i2c_inc_use_client(struct i2c_client *);
323 extern void i2c_dec_use_client(struct i2c_client *);
324 
325 /* New function: This is to get an i2c_client-struct for controlling the 
326    client either by using i2c_control-function or having the 
327    client-module export functions that can be used with the i2c_client
328    -struct. */
329 extern struct i2c_client *i2c_get_client(int driver_id, int adapter_id, 
330                                         struct i2c_client *prev);
331 
332 /* Should be used with new function
333    extern struct i2c_client *i2c_get_client(int,int,struct i2c_client *);
334    to make sure that client-struct is valid and that it is okay to access
335    the i2c-client. 
336    returns -EACCES if client doesn't allow use (default)
337    returns -EBUSY if client doesn't allow multiple use (default) and 
338    usage_count >0 */
339 extern int i2c_use_client(struct i2c_client *);
340 extern int i2c_release_client(struct i2c_client *);
341 
342 /* returns -EBUSY if address has been taken, 0 if not. Note that the only
343    other place at which this is called is within i2c_attach_client; so
344    you can cheat by simply not registering. Not recommended, of course! */
345 extern int i2c_check_addr (struct i2c_adapter *adapter, int addr);
346 
347 /* Detect function. It itterates over all possible addresses itself.
348  * It will only call found_proc if some client is connected at the
349  * specific address (unless a 'force' matched);
350  */
351 typedef int i2c_client_found_addr_proc (struct i2c_adapter *adapter,
352                                      int addr, unsigned short flags,int kind);
353 
354 extern int i2c_probe(struct i2c_adapter *adapter, 
355                 struct i2c_client_address_data *address_data,
356                 i2c_client_found_addr_proc *found_proc);
357 
358 /* An ioctl like call to set div. parameters of the adapter.
359  */
360 extern int i2c_control(struct i2c_client *,unsigned int, unsigned long);
361 
362 /* This call returns a unique low identifier for each registered adapter,
363  * or -1 if the adapter was not regisitered. 
364  */
365 extern int i2c_adapter_id(struct i2c_adapter *adap);
366 
367 
368 
369 /* Return the functionality mask */
370 extern u32 i2c_get_functionality (struct i2c_adapter *adap);
371 
372 /* Return 1 if adapter supports everything we need, 0 if not. */
373 extern int i2c_check_functionality (struct i2c_adapter *adap, u32 func);
374 
375 #endif /* __KERNEL__ */
376 
377 /*
378  * I2C Message - used for pure i2c transaction, also from /dev interface
379  */
380 struct i2c_msg {
381         __u16 addr;     /* slave address                        */
382         unsigned short flags;           
383 #define I2C_M_TEN       0x10    /* we have a ten bit chip address       */
384 #define I2C_M_RD        0x01
385 #define I2C_M_NOSTART   0x4000
386 #define I2C_M_REV_DIR_ADDR      0x2000
387         short len;              /* msg length                           */
388         char *buf;              /* pointer to msg data                  */
389 };
390 
391 /* To determine what functionality is present */
392 
393 #define I2C_FUNC_I2C                    0x00000001
394 #define I2C_FUNC_10BIT_ADDR             0x00000002
395 #define I2C_FUNC_PROTOCOL_MANGLING      0x00000004 /* I2C_M_{REV_DIR_ADDR,NOSTART} */
396 #define I2C_FUNC_SMBUS_QUICK            0x00010000 
397 #define I2C_FUNC_SMBUS_READ_BYTE        0x00020000 
398 #define I2C_FUNC_SMBUS_WRITE_BYTE       0x00040000 
399 #define I2C_FUNC_SMBUS_READ_BYTE_DATA   0x00080000 
400 #define I2C_FUNC_SMBUS_WRITE_BYTE_DATA  0x00100000 
401 #define I2C_FUNC_SMBUS_READ_WORD_DATA   0x00200000 
402 #define I2C_FUNC_SMBUS_WRITE_WORD_DATA  0x00400000 
403 #define I2C_FUNC_SMBUS_PROC_CALL        0x00800000 
404 #define I2C_FUNC_SMBUS_READ_BLOCK_DATA  0x01000000 
405 #define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000 
406 #define I2C_FUNC_SMBUS_READ_I2C_BLOCK   0x04000000 /* New I2C-like block */
407 #define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK  0x08000000 /* transfer */
408 
409 #define I2C_FUNC_SMBUS_BYTE I2C_FUNC_SMBUS_READ_BYTE | \
410                             I2C_FUNC_SMBUS_WRITE_BYTE
411 #define I2C_FUNC_SMBUS_BYTE_DATA I2C_FUNC_SMBUS_READ_BYTE_DATA | \
412                                  I2C_FUNC_SMBUS_WRITE_BYTE_DATA
413 #define I2C_FUNC_SMBUS_WORD_DATA I2C_FUNC_SMBUS_READ_WORD_DATA | \
414                                  I2C_FUNC_SMBUS_WRITE_WORD_DATA
415 #define I2C_FUNC_SMBUS_BLOCK_DATA I2C_FUNC_SMBUS_READ_BLOCK_DATA | \
416                                   I2C_FUNC_SMBUS_WRITE_BLOCK_DATA
417 #define I2C_FUNC_SMBUS_I2C_BLOCK I2C_FUNC_SMBUS_READ_I2C_BLOCK | \
418                                   I2C_FUNC_SMBUS_WRITE_I2C_BLOCK
419 
420 #define I2C_FUNC_SMBUS_EMUL I2C_FUNC_SMBUS_QUICK | \
421                             I2C_FUNC_SMBUS_BYTE | \
422                             I2C_FUNC_SMBUS_BYTE_DATA | \
423                             I2C_FUNC_SMBUS_WORD_DATA | \
424                             I2C_FUNC_SMBUS_PROC_CALL | \
425                             I2C_FUNC_SMBUS_WRITE_BLOCK_DATA
426 
427 /* 
428  * Data for SMBus Messages 
429  */
430 union i2c_smbus_data {
431         __u8 byte;
432         __u16 word;
433         __u8 block[33]; /* block[0] is used for length */
434 };
435 
436 /* smbus_access read or write markers */
437 #define I2C_SMBUS_READ  1
438 #define I2C_SMBUS_WRITE 0
439 
440 /* SMBus transaction types (size parameter in the above functions) 
441    Note: these no longer correspond to the (arbitrary) PIIX4 internal codes! */
442 #define I2C_SMBUS_QUICK             0
443 #define I2C_SMBUS_BYTE              1
444 #define I2C_SMBUS_BYTE_DATA         2 
445 #define I2C_SMBUS_WORD_DATA         3
446 #define I2C_SMBUS_PROC_CALL         4
447 #define I2C_SMBUS_BLOCK_DATA        5
448 #define I2C_SMBUS_I2C_BLOCK_DATA    6
449 
450 
451 /* ----- commands for the ioctl like i2c_command call:
452  * note that additional calls are defined in the algorithm and hw 
453  *      dependent layers - these can be listed here, or see the 
454  *      corresponding header files.
455  */
456                                 /* -> bit-adapter specific ioctls       */
457 #define I2C_RETRIES     0x0701  /* number times a device adress should  */
458                                 /* be polled when not acknowledging     */
459 #define I2C_TIMEOUT     0x0702  /* set timeout - call with int          */
460 
461 
462 /* this is for i2c-dev.c        */
463 #define I2C_SLAVE       0x0703  /* Change slave address                 */
464                                 /* Attn.: Slave address is 7 or 10 bits */
465 #define I2C_SLAVE_FORCE 0x0706  /* Change slave address                 */
466                                 /* Attn.: Slave address is 7 or 10 bits */
467                                 /* This changes the address, even if it */
468                                 /* is already taken!                    */
469 #define I2C_TENBIT      0x0704  /* 0 for 7 bit addrs, != 0 for 10 bit   */
470 
471 #define I2C_FUNCS       0x0705  /* Get the adapter functionality */
472 #define I2C_RDWR        0x0707  /* Combined R/W transfer (one stop only)*/
473 #if 0
474 #define I2C_ACK_TEST    0x0710  /* See if a slave is at a specific adress */
475 #endif
476 
477 #define I2C_SMBUS       0x0720  /* SMBus-level access */
478 
479 /* ... algo-bit.c recognizes */
480 #define I2C_UDELAY      0x0705  /* set delay in microsecs between each  */
481                                 /* written byte (except address)        */
482 #define I2C_MDELAY      0x0706  /* millisec delay between written bytes */
483 
484 /* ----- I2C-DEV: char device interface stuff ------------------------- */
485 
486 #define I2C_MAJOR       89              /* Device major number          */
487 
488 #ifdef __KERNEL__
489 
490 #  ifndef NULL
491 #    define NULL ( (void *) 0 )
492 #  endif
493 
494 #  ifndef ENODEV
495 #    include <asm/errno.h>
496 #  endif
497 
498 /* These defines are used for probing i2c client addresses */
499 /* Default fill of many variables */
500 #define I2C_CLIENT_DEFAULTS {I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
501                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
502                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
503                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
504                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
505                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
506                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
507                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
508                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
509                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
510                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
511                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
512                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
513                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
514                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
515                           I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END}
516 
517 /* This is ugly. We need to evaluate I2C_CLIENT_MAX_OPTS before it is 
518    stringified */
519 #define I2C_CLIENT_MODPARM_AUX1(x) "1-" #x "h"
520 #define I2C_CLIENT_MODPARM_AUX(x) I2C_CLIENT_MODPARM_AUX1(x)
521 #define I2C_CLIENT_MODPARM I2C_CLIENT_MODPARM_AUX(I2C_CLIENT_MAX_OPTS)
522 
523 /* I2C_CLIENT_MODULE_PARM creates a module parameter, and puts it in the
524    module header */
525 
526 #define I2C_CLIENT_MODULE_PARM(var,desc) \
527   static unsigned short var[I2C_CLIENT_MAX_OPTS] = I2C_CLIENT_DEFAULTS; \
528   MODULE_PARM(var,I2C_CLIENT_MODPARM); \
529   MODULE_PARM_DESC(var,desc)
530 
531 /* This is the one you want to use in your own modules */
532 #define I2C_CLIENT_INSMOD \
533   I2C_CLIENT_MODULE_PARM(probe, \
534                       "List of adapter,address pairs to scan additionally"); \
535   I2C_CLIENT_MODULE_PARM(probe_range, \
536                       "List of adapter,start-addr,end-addr triples to scan " \
537                       "additionally"); \
538   I2C_CLIENT_MODULE_PARM(ignore, \
539                       "List of adapter,address pairs not to scan"); \
540   I2C_CLIENT_MODULE_PARM(ignore_range, \
541                       "List of adapter,start-addr,end-addr triples not to " \
542                       "scan"); \
543   I2C_CLIENT_MODULE_PARM(force, \
544                       "List of adapter,address pairs to boldly assume " \
545                       "to be present"); \
546   static struct i2c_client_address_data addr_data = \
547                                        {normal_i2c, normal_i2c_range, \
548                                         probe, probe_range, \
549                                         ignore, ignore_range, \
550                                         force}
551 
552 #endif /* def __KERNEL__ */
553 #endif /* I2C_H */
554 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.