diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-08-30 18:56:14 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-08-30 18:56:14 -0300 |
commit | 502293205239f8ec860b4c33187cd7a3fc0f421c (patch) | |
tree | 3859aab46057cb3726731ca0ef65cd45c9e73660 /linux/include/media/v4l2-i2c-drv.h | |
parent | 71911bc952f2394dede17c5713de0b0dfcb04fae (diff) | |
parent | 52ef68ff244a5cd4707558c9aa803ecb9c1342dc (diff) | |
download | mediapointer-dvb-s2-502293205239f8ec860b4c33187cd7a3fc0f421c.tar.gz mediapointer-dvb-s2-502293205239f8ec860b4c33187cd7a3fc0f421c.tar.bz2 |
merge: http://kernellabs.com/hg/~mkrufky/tda18271
From: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'linux/include/media/v4l2-i2c-drv.h')
-rw-r--r-- | linux/include/media/v4l2-i2c-drv.h | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/linux/include/media/v4l2-i2c-drv.h b/linux/include/media/v4l2-i2c-drv.h index 8279d07e3..f5e4ffe27 100644 --- a/linux/include/media/v4l2-i2c-drv.h +++ b/linux/include/media/v4l2-i2c-drv.h @@ -22,7 +22,7 @@ */ /* NOTE: the full version of this header is in the v4l-dvb repository - * and allows v4l i2c drivers to be compiled on older kernels as well. + * and allows v4l i2c drivers to be compiled on pre-2.6.26 kernels. * The version of this header as it appears in the kernel is a stripped * version (without all the backwards compatibility stuff) and so it * looks a bit odd. @@ -30,6 +30,9 @@ * If you look at the full version then you will understand the reason * for introducing this header since you really don't want to have all * the tricky backwards compatibility code in each and every i2c driver. + * + * If the i2c driver will never be compiled for pre-2.6.26 kernels, then + * DO NOT USE this header! Just write it as a regular i2c driver. */ #ifndef __V4L2_I2C_DRV_H__ @@ -39,15 +42,15 @@ struct v4l2_i2c_driver_data { const char * const name; - int driverid; int (*command)(struct i2c_client *client, unsigned int cmd, void *arg); int (*probe)(struct i2c_client *client, const struct i2c_device_id *id); int (*remove)(struct i2c_client *client); int (*suspend)(struct i2c_client *client, pm_message_t state); int (*resume)(struct i2c_client *client); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26) int (*legacy_probe)(struct i2c_adapter *adapter); int legacy_class; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) +#else const struct i2c_device_id *id_table; #endif }; @@ -55,38 +58,29 @@ struct v4l2_i2c_driver_data { static struct v4l2_i2c_driver_data v4l2_i2c_data; static struct i2c_driver v4l2_i2c_driver; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22) -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26) -static int compat_legacy_probe(struct i2c_client *client) -{ - return v4l2_i2c_data.probe(client, NULL); -} -#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) -/* Bus-based I2C implementation for kernels >= 2.6.22 */ +/* Bus-based I2C implementation for kernels >= 2.6.26 */ static int __init v4l2_i2c_drv_init(void) { v4l2_i2c_driver.driver.name = v4l2_i2c_data.name; - v4l2_i2c_driver.id = v4l2_i2c_data.driverid; v4l2_i2c_driver.command = v4l2_i2c_data.command; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) v4l2_i2c_driver.probe = v4l2_i2c_data.probe; -#else - v4l2_i2c_driver.probe = compat_legacy_probe; -#endif v4l2_i2c_driver.remove = v4l2_i2c_data.remove; v4l2_i2c_driver.suspend = v4l2_i2c_data.suspend; v4l2_i2c_driver.resume = v4l2_i2c_data.resume; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) v4l2_i2c_driver.id_table = v4l2_i2c_data.id_table; -#endif return i2c_add_driver(&v4l2_i2c_driver); } #else +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25) static struct i2c_client_address_data addr_data; +#else +static const struct i2c_client_address_data addr_data; +#endif /* Bus-based I2C API is not present, add legacy code */ @@ -172,7 +166,6 @@ static int __init v4l2_i2c_drv_init(void) v4l2_i2c_data.legacy_class = I2C_CLASS_TV_ANALOG; v4l2_i2c_driver.driver.name = v4l2_i2c_data.name; - v4l2_i2c_driver.id = v4l2_i2c_data.driverid; v4l2_i2c_driver.command = v4l2_i2c_data.command; return i2c_add_driver(&v4l2_i2c_driver); } |