On 17/05/16 17:25, Javier Martinez Canillas wrote:
> The I2C drivers have an i2c_device_id array but that information isn't
> exported to the modules using the MODULE_DEVICE_TABLE() macro. So the
> modules autoloading won't work if the I2C device is registered using
> OF or legacy board files due missing alias information in the modules.
>
> The issue was found using Kieran Bingham's coccinelle semantic patch:
> https://lkml.org/lkml/2016/5/10/520
>
> Signed-off-by: Javier Martinez Canillas
Applied to the togreg branch of iio.git - initially pushed out as
testing for the autobuilders to play with it.
thanks
Jonathan
>
> ---
>
> drivers/iio/humidity/am2315.c | 1 +
> drivers/iio/humidity/htu21.c | 1 +
> drivers/iio/pressure/hp206c.c | 1 +
> drivers/iio/pressure/ms5637.c | 1 +
> drivers/iio/temperature/tsys02d.c | 1 +
> 5 files changed, 5 insertions(+)
>
> diff --git a/drivers/iio/humidity/am2315.c b/drivers/iio/humidity/am2315.c
> index 3be6d209a159..8de39bd349f9 100644
> --- a/drivers/iio/humidity/am2315.c
> +++ b/drivers/iio/humidity/am2315.c
> @@ -278,6 +278,7 @@ static const struct i2c_device_id am2315_i2c_id[] = {
> {"am2315", 0},
> {}
> };
> +MODULE_DEVICE_TABLE(i2c, am2315_i2c_id);
>
> static const struct acpi_device_id am2315_acpi_id[] = {
> {"AOS2315", 0},
> diff --git a/drivers/iio/humidity/htu21.c b/drivers/iio/humidity/htu21.c
> index 11cbc38b450f..0fbbd8c40894 100644
> --- a/drivers/iio/humidity/htu21.c
> +++ b/drivers/iio/humidity/htu21.c
> @@ -236,6 +236,7 @@ static const struct i2c_device_id htu21_id[] = {
> {"ms8607-humidity", MS8607},
> {}
> };
> +MODULE_DEVICE_TABLE(i2c, htu21_id);
>
> static struct i2c_driver htu21_driver = {
> .probe = htu21_probe,
> diff --git a/drivers/iio/pressure/hp206c.c b/drivers/iio/pressure/hp206c.c
> index 90f2b6e4a920..12f769e86355 100644
> --- a/drivers/iio/pressure/hp206c.c
> +++ b/drivers/iio/pressure/hp206c.c
> @@ -401,6 +401,7 @@ static const struct i2c_device_id hp206c_id[] = {
> {"hp206c"},
> {}
> };
> +MODULE_DEVICE_TABLE(i2c, hp206c_id);
>
> #ifdef CONFIG_ACPI
> static const struct acpi_device_id hp206c_acpi_match[] = {
> diff --git a/drivers/iio/pressure/ms5637.c b/drivers/iio/pressure/ms5637.c
> index e68052c118e6..8fb6f7ab97e4 100644
> --- a/drivers/iio/pressure/ms5637.c
> +++ b/drivers/iio/pressure/ms5637.c
> @@ -173,6 +173,7 @@ static const struct i2c_device_id ms5637_id[] = {
> {"ms8607-temppressure", 1},
> {}
> };
> +MODULE_DEVICE_TABLE(i2c, ms5637_id);
>
> static struct i2c_driver ms5637_driver = {
> .probe = ms5637_probe,
> diff --git a/drivers/iio/temperature/tsys02d.c
> b/drivers/iio/temperature/tsys02d.c
> index ab6fe8f6f2d1..c0a19a000387 100644
> --- a/drivers/iio/temperature/tsys02d.c
> +++ b/drivers/iio/temperature/tsys02d.c
> @@ -174,6 +174,7 @@ static const struct i2c_device_id tsys02d_id[] = {
> {"tsys02d", 0},
> {}
> };
> +MODULE_DEVICE_TABLE(i2c, tsys02d_id);
>
> static struct i2c_driver tsys02d_driver = {
> .probe = tsys02d_probe,
>