summaryrefslogtreecommitdiff
path: root/linux/include/media/v4l2-i2c-drv.h
diff options
context:
space:
mode:
Diffstat (limited to 'linux/include/media/v4l2-i2c-drv.h')
-rw-r--r--linux/include/media/v4l2-i2c-drv.h26
1 files changed, 8 insertions, 18 deletions
diff --git a/linux/include/media/v4l2-i2c-drv.h b/linux/include/media/v4l2-i2c-drv.h
index 8279d07e3..121f0ada0 100644
--- a/linux/include/media/v4l2-i2c-drv.h
+++ b/linux/include/media/v4l2-i2c-drv.h
@@ -39,15 +39,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 +55,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 +163,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);
}