Files
kernel-tenderloin-3.0/include/linux
Jean Delvare 4735c98f84 i2c: Add detection capability to new-style drivers
Add a mechanism to let new-style i2c drivers optionally autodetect
devices they would support on selected buses and ask i2c-core to
instantiate them. This is a replacement for legacy i2c drivers, much
cleaner.

Where drivers had to implement both a legacy i2c_driver and a
new-style i2c_driver so far, this mechanism makes it possible to get
rid of the legacy i2c_driver and implement both enumerated and
detected device support with just one (new-style) i2c_driver.

Here is a quick conversion guide for these drivers, step by step:

* Delete the legacy driver definition, registration and removal.
  Delete the attach_adapter and detach_client methods of the legacy
  driver.

* Change the prototype of the legacy detect function from
    static int foo_detect(struct i2c_adapter *adapter, int address, int kind);
  to
    static int foo_detect(struct i2c_client *client, int kind,
    			  struct i2c_board_info *info);

* Set the new-style driver detect callback to this new function, and
  set its address_data to &addr_data (addr_data is generally provided
  by I2C_CLIENT_INSMOD.)

* Add the appropriate class to the new-style driver. This is
  typically the class the legacy attach_adapter method was checking
  for. Class checking is now mandatory (done by i2c-core.) See
  <linux/i2c.h> for the list of available classes.

* Remove the i2c_client allocation and freeing from the detect
  function. A pre-allocated client is now handed to you by i2c-core,
  and is freed automatically.

* Make the detect function fill the type field of the i2c_board_info
  structure it was passed as a parameter, and return 0, on success. If
  the detection fails, return -ENODEV.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
2008-07-14 22:38:36 +02:00
..
2008-05-20 14:14:15 -07:00
2008-06-19 10:42:17 +10:00
2008-06-19 10:42:17 +10:00
2008-04-29 08:06:00 -07:00
2008-03-04 13:41:23 +01:00
2008-04-29 08:11:16 -07:00
2008-06-06 11:29:10 -07:00
2008-04-29 12:36:54 -07:00
2008-04-22 15:16:32 -05:00
2008-04-29 08:06:01 -07:00
2008-07-04 10:40:05 -07:00
2008-05-01 08:03:59 -07:00
2008-04-30 08:29:52 -07:00
2008-07-04 10:40:09 -07:00
2008-03-04 14:47:06 -08:00
2008-04-21 11:22:28 -05:00
2008-04-25 13:26:55 +01:00
2008-04-25 13:26:55 +01:00
2008-04-25 13:26:55 +01:00
2008-04-21 22:38:45 +00:00
2008-04-28 08:58:30 -07:00
2008-04-19 19:19:54 +02:00
2008-05-07 09:48:23 +02:00
2008-04-28 08:58:35 -07:00
2008-05-16 17:22:26 -04:00
2008-05-01 13:08:16 -04:00
2008-05-13 08:02:26 -07:00
2008-05-24 09:56:13 -07:00
2008-05-20 16:44:43 +02:00
2008-05-20 16:44:43 +02:00
2008-04-22 11:34:59 +02:00
2008-04-04 18:36:49 +02:00
2008-04-29 08:06:25 -07:00
2008-03-17 22:48:46 -07:00
2008-04-29 08:06:03 -07:00
2008-06-30 09:25:12 -04:00
2008-04-29 08:06:02 -07:00
2008-05-05 16:47:14 +10:00
2008-06-11 19:13:46 -04:00
2008-04-29 08:06:15 -07:00
2008-04-19 19:10:28 -07:00
2008-05-01 08:03:58 -07:00
2008-07-04 10:40:05 -07:00
2008-04-19 19:44:57 +02:00
2008-02-26 14:03:47 +09:00
2008-04-29 08:06:01 -07:00
2008-06-12 18:05:41 -07:00
2008-05-24 09:56:09 -07:00
2008-05-26 16:08:40 +02:00
2008-06-06 11:29:12 -07:00
2008-02-08 09:22:31 -08:00
2008-02-14 21:13:33 -08:00
2008-04-28 08:58:29 -07:00
2008-04-19 16:54:56 -04:00
2008-04-19 16:55:29 -04:00
2008-02-14 21:13:33 -08:00
2008-04-20 21:47:03 -07:00
2008-04-20 21:47:03 -07:00
2008-06-12 10:12:42 +02:00
2008-04-29 08:06:02 -07:00
2008-04-29 08:06:02 -07:00
2008-05-06 12:01:41 -04:00
2008-03-17 22:46:46 -07:00
2008-02-08 09:22:31 -08:00
2008-07-04 10:40:07 -07:00
2008-04-30 08:29:51 -07:00
2008-04-29 08:05:59 -07:00
2008-04-17 10:43:01 -04:00
2008-04-25 00:25:08 +02:00
2008-04-28 08:58:32 -07:00
2008-04-15 13:26:52 -04:00
2008-07-04 10:40:04 -07:00
2008-07-04 10:40:04 -07:00
2008-04-28 08:58:20 -07:00
2008-04-28 08:58:29 -07:00
2008-04-19 19:44:59 +02:00
2008-05-04 17:07:03 -07:00
2008-06-12 10:48:00 +02:00
2008-05-01 08:03:59 -07:00
2008-05-29 14:46:30 +02:00
2008-04-17 20:05:36 +02:00
2008-04-24 21:16:57 -07:00
2008-05-09 07:45:18 -07:00
2008-04-28 08:58:21 -07:00