linux/drivers
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
..
accessibility Kconfig: improved help for CONFIG_ACCESSIBILITY 2008-05-08 10:46:55 -07:00
acorn/char
acpi x86 ACPI: normalize segment descriptor register on resume 2008-07-05 08:25:40 +02:00
amba
ata libata-acpi: don't call sleeping function from invalid context 2008-07-11 09:42:03 -04:00
atm atm: [he] send idle cells instead of unassigned when in SDH mode 2008-06-16 17:21:27 -07:00
auxdisplay Miguel Ojeda has moved 2008-07-04 10:40:05 -07:00
base mm: switch node meminfo Active & Inactive pages to Kbytes 2008-07-04 10:40:09 -07:00
block cciss: read config to obtain max outstanding commands per controller 2008-07-04 10:40:09 -07:00
bluetooth
cdrom [POWERPC] iSeries: Remove unused mail address 2008-05-23 16:45:04 +10:00
char drivers/char/pcmcia/ipwireless/hardware.c fix resource leak 2008-07-12 14:33:41 -07:00
clocksource
connector CONNECTOR: add a proc entry to list connectors 2008-06-27 20:03:24 -07:00
cpufreq Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq 2008-06-09 11:27:55 -07:00
cpuidle cpuidle acpi driver: fix oops on AC<->DC 2008-06-11 19:13:45 -04:00
crypto
dca
dio
dma iop-adma: fixup some kzalloc/memset confusions 2008-05-20 13:51:20 -07:00
edac edac: mpc85xx: fix building as a module 2008-05-24 09:56:13 -07:00
eisa
firewire firewire: fw-sbp2: fix parsing of logical unit directories 2008-06-27 20:55:00 +02:00
firmware edd: fix incorrect return of 1 from module_init 2008-06-06 11:29:09 -07:00
gpio gpio: pca953x (i2c) handles max7310 too 2008-07-04 10:40:06 -07:00
hid HID: remove CVS keywords 2008-05-20 16:44:43 +02:00
hwmon hdaps: add support for various newer Lenovo thinkpads 2008-07-04 10:40:06 -07:00
i2c i2c: Add detection capability to new-style drivers 2008-07-14 22:38:36 +02:00
ide it8213: fix return value in it8213_init_one() 2008-07-08 19:27:23 +02:00
ieee1394 ieee1394: Kconfig menu touch-up 2008-06-19 00:12:36 +02:00
infiniband RDMA/cxgb3: Fix regression caused by class_device -> device conversion 2008-07-08 14:40:05 -07:00
input drivers/input/ff-core.c needs <linux/sched.h> 2008-07-02 18:40:08 -07:00
isdn drivers/isdn/i4l/isdn_common.c fix small resource leak 2008-07-12 14:33:41 -07:00
leds LEDS: fix race in device_create 2008-05-20 13:31:55 -07:00
lguest x86: fix NULL pointer deref in __switch_to 2008-06-20 13:26:18 +02:00
macintosh [POWERPC] Build fix for drivers/macintosh/mediabay.c 2008-06-16 15:00:47 +10:00
mca
md Merge branch 'for-2.6.26' of git://neil.brown.name/md 2008-07-10 09:49:46 -07:00
media ov7670: clean up ov7670_read semantics 2008-07-12 14:33:41 -07:00
memstick
message [SCSI] fusion: default MSI to disabled for SPI and FC controllers 2008-07-12 08:18:11 -05:00
mfd HTC_EGPIO is ARM-only 2008-05-21 16:56:00 -07:00
misc thinkpad-acpi: fix LED handling on older ThinkPads 2008-06-11 19:13:45 -04:00
mmc pxamci: fix byte aligned DMA transfers 2008-07-06 10:37:40 -07:00
mtd Merge git://git.infradead.org/~dwmw2/mtd-2.6.26 2008-06-06 11:31:18 -07:00
net tun: Persistent devices can get stuck in xoff state 2008-07-10 16:59:11 -07:00
nubus
of rtc-ds1374: rename device to just "ds1374" 2008-06-06 11:29:10 -07:00
oprofile oprofile: don't request cache line alignment for cpu_buffer 2008-05-14 19:11:12 -07:00
parisc drivers/parisc: replace remaining __FUNCTION__ occurrences 2008-05-15 10:38:54 -04:00
parport
pci pci: VT3336 can't do MSI either 2008-07-04 10:40:05 -07:00
pcmcia electra_cf: Add MODULE_DEVICE_TABLE() 2008-05-27 16:07:45 -05:00
pnp PNPACPI: use _CRS IRQ descriptor length for _SRS 2008-06-11 19:13:46 -04:00
power power_supply: Fix race in power_supply_uevent 2008-06-10 02:13:51 +04:00
ps3
rapidio rapidio: fix device reference counting 2008-07-10 18:04:43 -07:00
rtc rtc-pcf8563: add chip id 2008-07-12 14:33:42 -07:00
s390 Merge branch 'kvm-updates-2.6.26' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm 2008-06-11 10:35:44 -07:00
sbus sbus bpp: instances missed in s/dev_name/bpp_dev_name/ 2008-05-21 16:55:59 -07:00
scsi [SCSI] ipr: Fix HDIO_GET_IDENTITY oops for SATA devices 2008-07-11 13:45:48 -05:00
serial serial8250: sanity check nr_uarts on all paths. 2008-07-12 14:33:41 -07:00
sh
sn
spi spi: fix the read path in spidev 2008-07-04 10:40:08 -07:00
ssb ssb-pcicore: Fix IRQ-vector init on embedded devices 2008-07-07 15:31:40 -04:00
tc
telephony
thermal thermal: Create CONFIG_THERMAL_HWMON=n 2008-06-25 19:25:42 -04:00
uio UIO: fix race in device_create 2008-05-20 13:31:55 -07:00
usb Fix name of Russell King in various comments 2008-07-10 18:04:43 -07:00
video i2c: Let framebuffer drivers set their I2C bus class to DDC 2008-07-14 22:38:28 +02:00
virtio virtio: Complete feature negotation before updating status 2008-06-15 13:46:16 -07:00
w1
watchdog Revert "[WATCHDOG] hpwdt: Add CFLAGS to get driver working" 2008-06-24 13:09:26 +00:00
xen xen: Use wmb instead of rmb in xen_evtchn_do_upcall(). 2008-06-20 14:56:30 +02:00
zorro
Kconfig
Makefile