diff options
| -rw-r--r-- | drivers/media/video/tcm825x.c | 7 | ||||
| -rw-r--r-- | drivers/media/video/tlv320aic23b.c | 6 | ||||
| -rw-r--r-- | drivers/media/video/tvaudio.c | 13 | ||||
| -rw-r--r-- | include/media/v4l2-i2c-drv-legacy.h | 2 | ||||
| -rw-r--r-- | include/media/v4l2-i2c-drv.h | 2 |
5 files changed, 29 insertions, 1 deletions
diff --git a/drivers/media/video/tcm825x.c b/drivers/media/video/tcm825x.c index e57a64605778..8f0100f67a91 100644 --- a/drivers/media/video/tcm825x.c +++ b/drivers/media/video/tcm825x.c | |||
| @@ -885,12 +885,19 @@ static int __exit tcm825x_remove(struct i2c_client *client) | |||
| 885 | return 0; | 885 | return 0; |
| 886 | } | 886 | } |
| 887 | 887 | ||
| 888 | static const struct i2c_device_id tcm825x_id[] = { | ||
| 889 | { "tcm825x", 0 }, | ||
| 890 | { } | ||
| 891 | }; | ||
| 892 | MODULE_DEVICE_TABLE(i2c, tcm825x_id); | ||
| 893 | |||
| 888 | static struct i2c_driver tcm825x_i2c_driver = { | 894 | static struct i2c_driver tcm825x_i2c_driver = { |
| 889 | .driver = { | 895 | .driver = { |
| 890 | .name = TCM825X_NAME, | 896 | .name = TCM825X_NAME, |
| 891 | }, | 897 | }, |
| 892 | .probe = tcm825x_probe, | 898 | .probe = tcm825x_probe, |
| 893 | .remove = __exit_p(tcm825x_remove), | 899 | .remove = __exit_p(tcm825x_remove), |
| 900 | .id_table = tcm825x_id, | ||
| 894 | }; | 901 | }; |
| 895 | 902 | ||
| 896 | static struct tcm825x_sensor tcm825x = { | 903 | static struct tcm825x_sensor tcm825x = { |
diff --git a/drivers/media/video/tlv320aic23b.c b/drivers/media/video/tlv320aic23b.c index f1db54202dea..28ab9f9d760a 100644 --- a/drivers/media/video/tlv320aic23b.c +++ b/drivers/media/video/tlv320aic23b.c | |||
| @@ -168,6 +168,11 @@ static int tlv320aic23b_remove(struct i2c_client *client) | |||
| 168 | 168 | ||
| 169 | /* ----------------------------------------------------------------------- */ | 169 | /* ----------------------------------------------------------------------- */ |
| 170 | 170 | ||
| 171 | static const struct i2c_device_id tlv320aic23b_id[] = { | ||
| 172 | { "tlv320aic23b", 0 }, | ||
| 173 | { } | ||
| 174 | }; | ||
| 175 | MODULE_DEVICE_TABLE(i2c, tlv320aic23b_id); | ||
| 171 | 176 | ||
| 172 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 177 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
| 173 | .name = "tlv320aic23b", | 178 | .name = "tlv320aic23b", |
| @@ -175,4 +180,5 @@ static struct v4l2_i2c_driver_data v4l2_i2c_data = { | |||
| 175 | .command = tlv320aic23b_command, | 180 | .command = tlv320aic23b_command, |
| 176 | .probe = tlv320aic23b_probe, | 181 | .probe = tlv320aic23b_probe, |
| 177 | .remove = tlv320aic23b_remove, | 182 | .remove = tlv320aic23b_remove, |
| 183 | .id_table = tlv320aic23b_id, | ||
| 178 | }; | 184 | }; |
diff --git a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c index 6f9945b04e1f..c77914d99d15 100644 --- a/drivers/media/video/tvaudio.c +++ b/drivers/media/video/tvaudio.c | |||
| @@ -1505,7 +1505,8 @@ static int chip_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
| 1505 | } | 1505 | } |
| 1506 | 1506 | ||
| 1507 | /* fill required data structures */ | 1507 | /* fill required data structures */ |
| 1508 | strcpy(client->name, desc->name); | 1508 | if (!id) |
| 1509 | strlcpy(client->name, desc->name, I2C_NAME_SIZE); | ||
| 1509 | chip->type = desc-chiplist; | 1510 | chip->type = desc-chiplist; |
| 1510 | chip->shadow.count = desc->registers+1; | 1511 | chip->shadow.count = desc->registers+1; |
| 1511 | chip->prevmode = -1; | 1512 | chip->prevmode = -1; |
| @@ -1830,6 +1831,15 @@ static int chip_legacy_probe(struct i2c_adapter *adap) | |||
| 1830 | return 0; | 1831 | return 0; |
| 1831 | } | 1832 | } |
| 1832 | 1833 | ||
| 1834 | /* This driver supports many devices and the idea is to let the driver | ||
| 1835 | detect which device is present. So rather than listing all supported | ||
| 1836 | devices here, we pretend to support a single, fake device type. */ | ||
| 1837 | static const struct i2c_device_id chip_id[] = { | ||
| 1838 | { "tvaudio", 0 }, | ||
| 1839 | { } | ||
| 1840 | }; | ||
| 1841 | MODULE_DEVICE_TABLE(i2c, chip_id); | ||
| 1842 | |||
| 1833 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 1843 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
| 1834 | .name = "tvaudio", | 1844 | .name = "tvaudio", |
| 1835 | .driverid = I2C_DRIVERID_TVAUDIO, | 1845 | .driverid = I2C_DRIVERID_TVAUDIO, |
| @@ -1837,6 +1847,7 @@ static struct v4l2_i2c_driver_data v4l2_i2c_data = { | |||
| 1837 | .probe = chip_probe, | 1847 | .probe = chip_probe, |
| 1838 | .remove = chip_remove, | 1848 | .remove = chip_remove, |
| 1839 | .legacy_probe = chip_legacy_probe, | 1849 | .legacy_probe = chip_legacy_probe, |
| 1850 | .id_table = chip_id, | ||
| 1840 | }; | 1851 | }; |
| 1841 | 1852 | ||
| 1842 | /* | 1853 | /* |
diff --git a/include/media/v4l2-i2c-drv-legacy.h b/include/media/v4l2-i2c-drv-legacy.h index 347b6f8beb23..878562278b67 100644 --- a/include/media/v4l2-i2c-drv-legacy.h +++ b/include/media/v4l2-i2c-drv-legacy.h | |||
| @@ -31,6 +31,7 @@ struct v4l2_i2c_driver_data { | |||
| 31 | int (*resume)(struct i2c_client *client); | 31 | int (*resume)(struct i2c_client *client); |
| 32 | int (*legacy_probe)(struct i2c_adapter *adapter); | 32 | int (*legacy_probe)(struct i2c_adapter *adapter); |
| 33 | int legacy_class; | 33 | int legacy_class; |
| 34 | const struct i2c_device_id *id_table; | ||
| 34 | }; | 35 | }; |
| 35 | 36 | ||
| 36 | static struct v4l2_i2c_driver_data v4l2_i2c_data; | 37 | static struct v4l2_i2c_driver_data v4l2_i2c_data; |
| @@ -124,6 +125,7 @@ static int __init v4l2_i2c_drv_init(void) | |||
| 124 | v4l2_i2c_driver.command = v4l2_i2c_data.command; | 125 | v4l2_i2c_driver.command = v4l2_i2c_data.command; |
| 125 | v4l2_i2c_driver.probe = v4l2_i2c_data.probe; | 126 | v4l2_i2c_driver.probe = v4l2_i2c_data.probe; |
| 126 | v4l2_i2c_driver.remove = v4l2_i2c_data.remove; | 127 | v4l2_i2c_driver.remove = v4l2_i2c_data.remove; |
| 128 | v4l2_i2c_driver.id_table = v4l2_i2c_data.id_table; | ||
| 127 | err = i2c_add_driver(&v4l2_i2c_driver); | 129 | err = i2c_add_driver(&v4l2_i2c_driver); |
| 128 | if (err) | 130 | if (err) |
| 129 | i2c_del_driver(&v4l2_i2c_driver_legacy); | 131 | i2c_del_driver(&v4l2_i2c_driver_legacy); |
diff --git a/include/media/v4l2-i2c-drv.h b/include/media/v4l2-i2c-drv.h index 7b6f06be7950..40ecef29801d 100644 --- a/include/media/v4l2-i2c-drv.h +++ b/include/media/v4l2-i2c-drv.h | |||
| @@ -36,6 +36,7 @@ struct v4l2_i2c_driver_data { | |||
| 36 | int (*resume)(struct i2c_client *client); | 36 | int (*resume)(struct i2c_client *client); |
| 37 | int (*legacy_probe)(struct i2c_adapter *adapter); | 37 | int (*legacy_probe)(struct i2c_adapter *adapter); |
| 38 | int legacy_class; | 38 | int legacy_class; |
| 39 | const struct i2c_device_id *id_table; | ||
| 39 | }; | 40 | }; |
| 40 | 41 | ||
| 41 | static struct v4l2_i2c_driver_data v4l2_i2c_data; | 42 | static struct v4l2_i2c_driver_data v4l2_i2c_data; |
| @@ -53,6 +54,7 @@ static int __init v4l2_i2c_drv_init(void) | |||
| 53 | v4l2_i2c_driver.remove = v4l2_i2c_data.remove; | 54 | v4l2_i2c_driver.remove = v4l2_i2c_data.remove; |
| 54 | v4l2_i2c_driver.suspend = v4l2_i2c_data.suspend; | 55 | v4l2_i2c_driver.suspend = v4l2_i2c_data.suspend; |
| 55 | v4l2_i2c_driver.resume = v4l2_i2c_data.resume; | 56 | v4l2_i2c_driver.resume = v4l2_i2c_data.resume; |
| 57 | v4l2_i2c_driver.id_table = v4l2_i2c_data.id_table; | ||
| 56 | return i2c_add_driver(&v4l2_i2c_driver); | 58 | return i2c_add_driver(&v4l2_i2c_driver); |
| 57 | } | 59 | } |
| 58 | 60 | ||
