summaryrefslogtreecommitdiff
path: root/linux/include/media/v4l2-i2c-drv.h
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2009-08-30 18:56:14 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-08-30 18:56:14 -0300
commit502293205239f8ec860b4c33187cd7a3fc0f421c (patch)
tree3859aab46057cb3726731ca0ef65cd45c9e73660 /linux/include/media/v4l2-i2c-drv.h
parent71911bc952f2394dede17c5713de0b0dfcb04fae (diff)
parent52ef68ff244a5cd4707558c9aa803ecb9c1342dc (diff)
downloadmediapointer-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.h31
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);
}