Update 3 more new-style i2c drivers to use standard module aliasing instead of the old driver_name/type driver matching scheme. These video drivers aren't used yet so converting them is trivial.
Unified · Split
| @@ -885,12 +885,19 @@ static int __exit tcm825x_remove(struct i2c_client *client) · 884 unmodified lines | ||
| 885 | 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 | 894 | static struct i2c_driver tcm825x_i2c_driver = { |
| 889 | 895 | .driver = { |
| 890 | 896 | .name = TCM825X_NAME, |
| 891 | 897 | }, |
| 892 | 898 | .probe = tcm825x_probe, |
| 893 | 899 | .remove = __exit_p(tcm825x_remove), |
| 900 | + .id_table = tcm825x_id, | |
| 894 | 901 | }; |
| 895 | 902 | |
| 896 | 903 | static struct tcm825x_sensor tcm825x = { |
| @@ -168,6 +168,11 @@ static int tlv320aic23b_remove(struct i2c_client *client) · 167 unmodified lines | ||
| 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 | 177 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
| 173 | 178 | .name = "tlv320aic23b", |
| @@ -175,4 +180,5 @@ static struct v4l2_i2c_driver_data v4l2_i2c_data = { · 1 unmodified line | ||
| 175 | 180 | .command = tlv320aic23b_command, |
| 176 | 181 | .probe = tlv320aic23b_probe, |
| 177 | 182 | .remove = tlv320aic23b_remove, |
| 183 | + .id_table = tlv320aic23b_id, | |
| 178 | 184 | }; |
| @@ -1505,7 +1505,8 @@ static int chip_probe(struct i2c_client *client, const struct i2c_device_id *id) · 1504 unmodified lines | ||
| 1505 | 1505 | } |
| 1506 | 1506 | |
| 1507 | 1507 | /* fill required data structures */ |
| 1508 | − strcpy(client->name, desc->name); | |
| 1508 | + if (!id) | |
| 1509 | + strlcpy(client->name, desc->name, I2C_NAME_SIZE); | |
| 1509 | 1510 | chip->type = desc-chiplist; |
| 1510 | 1511 | chip->shadow.count = desc->registers+1; |
| 1511 | 1512 | chip->prevmode = -1; |
| @@ -1830,6 +1831,15 @@ static int chip_legacy_probe(struct i2c_adapter *adap) · 318 unmodified lines | ||
| 1830 | 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 | 1843 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
| 1834 | 1844 | .name = "tvaudio", |
| 1835 | 1845 | .driverid = I2C_DRIVERID_TVAUDIO, |
| @@ -1837,6 +1847,7 @@ static struct v4l2_i2c_driver_data v4l2_i2c_data = { · 1 unmodified line | ||
| 1837 | 1847 | .probe = chip_probe, |
| 1838 | 1848 | .remove = chip_remove, |
| 1839 | 1849 | .legacy_probe = chip_legacy_probe, |
| 1850 | + .id_table = chip_id, | |
| 1840 | 1851 | }; |
| 1841 | 1852 | |
| 1842 | 1853 | /* |
| @@ -31,6 +31,7 @@ struct v4l2_i2c_driver_data { · 30 unmodified lines | ||
| 31 | 31 | int (*resume)(struct i2c_client *client); |
| 32 | 32 | int (*legacy_probe)(struct i2c_adapter *adapter); |
| 33 | 33 | int legacy_class; |
| 34 | + const struct i2c_device_id *id_table; | |
| 34 | 35 | }; |
| 35 | 36 | |
| 36 | 37 | static struct v4l2_i2c_driver_data v4l2_i2c_data; |
| @@ -124,6 +125,7 @@ static int __init v4l2_i2c_drv_init(void) · 87 unmodified lines | ||
| 124 | 125 | v4l2_i2c_driver.command = v4l2_i2c_data.command; |
| 125 | 126 | v4l2_i2c_driver.probe = v4l2_i2c_data.probe; |
| 126 | 127 | v4l2_i2c_driver.remove = v4l2_i2c_data.remove; |
| 128 | + v4l2_i2c_driver.id_table = v4l2_i2c_data.id_table; | |
| 127 | 129 | err = i2c_add_driver(&v4l2_i2c_driver); |
| 128 | 130 | if (err) |
| 129 | 131 | i2c_del_driver(&v4l2_i2c_driver_legacy); |
| @@ -36,6 +36,7 @@ struct v4l2_i2c_driver_data { · 35 unmodified lines | ||
| 36 | 36 | int (*resume)(struct i2c_client *client); |
| 37 | 37 | int (*legacy_probe)(struct i2c_adapter *adapter); |
| 38 | 38 | int legacy_class; |
| 39 | + const struct i2c_device_id *id_table; | |
| 39 | 40 | }; |
| 40 | 41 | |
| 41 | 42 | static struct v4l2_i2c_driver_data v4l2_i2c_data; |
| @@ -53,6 +54,7 @@ static int __init v4l2_i2c_drv_init(void) · 11 unmodified lines | ||
| 53 | 54 | v4l2_i2c_driver.remove = v4l2_i2c_data.remove; |
| 54 | 55 | v4l2_i2c_driver.suspend = v4l2_i2c_data.suspend; |
| 55 | 56 | v4l2_i2c_driver.resume = v4l2_i2c_data.resume; |
| 57 | + v4l2_i2c_driver.id_table = v4l2_i2c_data.id_table; | |
| 56 | 58 | return i2c_add_driver(&v4l2_i2c_driver); |
| 57 | 59 | } |
| 58 | 60 | |