* [PATCH v2 01/17] iio: adc: ina2xx: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-19 10:48 ` Jonathan Cameron
2017-03-15 4:44 ` [PATCH v2 02/17] iio: mlx96014: " Javier Martinez Canillas
` (15 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, Matt Ranostay, linux-iio,
Hartmut Knaack, Gregor Boirie, Lars-Peter Clausen,
Alison Schofield, Jonathan Cameron, Peter Meerwald-Stadler,
Marc Titinger
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/adc/ina2xx-adc.c | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/adc/ina2xx-adc.c b/drivers/iio/adc/ina2xx-adc.c
index 3263231276ca..db9838230257 100644
--- a/drivers/iio/adc/ina2xx-adc.c
+++ b/drivers/iio/adc/ina2xx-adc.c
@@ -28,6 +28,7 @@
#include <linux/iio/sysfs.h>
#include <linux/kthread.h>
#include <linux/module.h>
+#include <linux/of_device.h>
#include <linux/regmap.h>
#include <linux/util_macros.h>
@@ -635,6 +636,7 @@ static int ina2xx_probe(struct i2c_client *client,
struct iio_dev *indio_dev;
struct iio_buffer *buffer;
unsigned int val;
+ enum ina2xx_ids type;
int ret;
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip));
@@ -652,7 +654,11 @@ static int ina2xx_probe(struct i2c_client *client,
return PTR_ERR(chip->regmap);
}
- chip->config = &ina2xx_config[id->driver_data];
+ if (client->dev.of_node)
+ type = (enum ina2xx_ids)of_device_get_match_data(&client->dev);
+ else
+ type = id->driver_data;
+ chip->config = &ina2xx_config[type];
mutex_init(&chip->state_lock);
@@ -726,9 +732,35 @@ static const struct i2c_device_id ina2xx_id[] = {
};
MODULE_DEVICE_TABLE(i2c, ina2xx_id);
+static const struct of_device_id ina2xx_of_match[] = {
+ {
+ .compatible = "ti,ina219",
+ .data = (void *)ina219
+ },
+ {
+ .compatible = "ti,ina220",
+ .data = (void *)ina219
+ },
+ {
+ .compatible = "ti,ina226",
+ .data = (void *)ina226
+ },
+ {
+ .compatible = "ti,ina230",
+ .data = (void *)ina226
+ },
+ {
+ .compatible = "ti,ina231",
+ .data = (void *)ina226
+ },
+ {},
+};
+MODULE_DEVICE_TABLE(of, ina2xx_of_match);
+
static struct i2c_driver ina2xx_driver = {
.driver = {
.name = KBUILD_MODNAME,
+ .of_match_table = ina2xx_of_match,
},
.probe = ina2xx_probe,
.remove = ina2xx_remove,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 01/17] iio: adc: ina2xx: Add OF device ID table
2017-03-15 4:44 ` [PATCH v2 01/17] iio: adc: ina2xx: Add OF device ID table Javier Martinez Canillas
@ 2017-03-19 10:48 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:48 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: Matt Ranostay, linux-iio, Hartmut Knaack, Gregor Boirie,
Lars-Peter Clausen, Alison Schofield, Peter Meerwald-Stadler,
Marc Titinger
On 15/03/17 04:44, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied to the togreg branch of iio.git - initially pushed out as testing for
the autobuilders to play with it.
Thanks for cleaning this up.
Jonathan
> ---
>
> drivers/iio/adc/ina2xx-adc.c | 34 +++++++++++++++++++++++++++++++++-
> 1 file changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/iio/adc/ina2xx-adc.c b/drivers/iio/adc/ina2xx-adc.c
> index 3263231276ca..db9838230257 100644
> --- a/drivers/iio/adc/ina2xx-adc.c
> +++ b/drivers/iio/adc/ina2xx-adc.c
> @@ -28,6 +28,7 @@
> #include <linux/iio/sysfs.h>
> #include <linux/kthread.h>
> #include <linux/module.h>
> +#include <linux/of_device.h>
> #include <linux/regmap.h>
> #include <linux/util_macros.h>
>
> @@ -635,6 +636,7 @@ static int ina2xx_probe(struct i2c_client *client,
> struct iio_dev *indio_dev;
> struct iio_buffer *buffer;
> unsigned int val;
> + enum ina2xx_ids type;
> int ret;
>
> indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip));
> @@ -652,7 +654,11 @@ static int ina2xx_probe(struct i2c_client *client,
> return PTR_ERR(chip->regmap);
> }
>
> - chip->config = &ina2xx_config[id->driver_data];
> + if (client->dev.of_node)
> + type = (enum ina2xx_ids)of_device_get_match_data(&client->dev);
> + else
> + type = id->driver_data;
> + chip->config = &ina2xx_config[type];
>
> mutex_init(&chip->state_lock);
>
> @@ -726,9 +732,35 @@ static const struct i2c_device_id ina2xx_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, ina2xx_id);
>
> +static const struct of_device_id ina2xx_of_match[] = {
> + {
> + .compatible = "ti,ina219",
> + .data = (void *)ina219
> + },
> + {
> + .compatible = "ti,ina220",
> + .data = (void *)ina219
> + },
> + {
> + .compatible = "ti,ina226",
> + .data = (void *)ina226
> + },
> + {
> + .compatible = "ti,ina230",
> + .data = (void *)ina226
> + },
> + {
> + .compatible = "ti,ina231",
> + .data = (void *)ina226
> + },
> + {},
> +};
> +MODULE_DEVICE_TABLE(of, ina2xx_of_match);
> +
> static struct i2c_driver ina2xx_driver = {
> .driver = {
> .name = KBUILD_MODNAME,
> + .of_match_table = ina2xx_of_match,
> },
> .probe = ina2xx_probe,
> .remove = ina2xx_remove,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 02/17] iio: mlx96014: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
2017-03-15 4:44 ` [PATCH v2 01/17] iio: adc: ina2xx: Add OF device ID table Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-15 10:46 ` Crt Mori
2017-03-15 4:44 ` [PATCH v2 03/17] iio: magnetometer: bmc150_magn_i2c: " Javier Martinez Canillas
` (14 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, linux-iio, Hartmut Knaack,
Lars-Peter Clausen, Jonathan Cameron, Peter Meerwald-Stadler,
Crt Mori
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/temperature/mlx90614.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/iio/temperature/mlx90614.c b/drivers/iio/temperature/mlx90614.c
index 4b645fc672aa..2077eef4095c 100644
--- a/drivers/iio/temperature/mlx90614.c
+++ b/drivers/iio/temperature/mlx90614.c
@@ -585,6 +585,12 @@ static const struct i2c_device_id mlx90614_id[] = {
};
MODULE_DEVICE_TABLE(i2c, mlx90614_id);
+static const struct of_device_id mlx90614_of_match[] = {
+ { .compatible = "melexis,mlx90614" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, mlx90614_of_match);
+
#ifdef CONFIG_PM_SLEEP
static int mlx90614_pm_suspend(struct device *dev)
{
@@ -644,6 +650,7 @@ static const struct dev_pm_ops mlx90614_pm_ops = {
static struct i2c_driver mlx90614_driver = {
.driver = {
.name = "mlx90614",
+ .of_match_table = mlx90614_of_match,
.pm = &mlx90614_pm_ops,
},
.probe = mlx90614_probe,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 02/17] iio: mlx96014: Add OF device ID table
2017-03-15 4:44 ` [PATCH v2 02/17] iio: mlx96014: " Javier Martinez Canillas
@ 2017-03-15 10:46 ` Crt Mori
2017-03-19 10:49 ` Jonathan Cameron
0 siblings, 1 reply; 36+ messages in thread
From: Crt Mori @ 2017-03-15 10:46 UTC (permalink / raw)
To: Javier Martinez Canillas
Cc: linux-kernel, Linux Iio, Hartmut Knaack, Lars-Peter Clausen,
Jonathan Cameron, Peter Meerwald-Stadler
Hi,
Thanks for the patch. If the assumption will not be there than this
fix is needed. I tested it on BeagleBoneBlack and it does not effect
anything.
Tested-by: Crt Mori <cmo@melexis.com>
Acked-by: Crt Mori <cmo@melexis.com>
Best regards,
Crt
On 15 March 2017 at 05:44, Javier Martinez Canillas
<javier@osg.samsung.com> wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
> ---
>
> drivers/iio/temperature/mlx90614.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/temperature/mlx90614.c b/drivers/iio/temperature/mlx90614.c
> index 4b645fc672aa..2077eef4095c 100644
> --- a/drivers/iio/temperature/mlx90614.c
> +++ b/drivers/iio/temperature/mlx90614.c
> @@ -585,6 +585,12 @@ static const struct i2c_device_id mlx90614_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, mlx90614_id);
>
> +static const struct of_device_id mlx90614_of_match[] = {
> + { .compatible = "melexis,mlx90614" },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, mlx90614_of_match);
> +
> #ifdef CONFIG_PM_SLEEP
> static int mlx90614_pm_suspend(struct device *dev)
> {
> @@ -644,6 +650,7 @@ static const struct dev_pm_ops mlx90614_pm_ops = {
> static struct i2c_driver mlx90614_driver = {
> .driver = {
> .name = "mlx90614",
> + .of_match_table = mlx90614_of_match,
> .pm = &mlx90614_pm_ops,
> },
> .probe = mlx90614_probe,
> --
> 2.9.3
>
^ permalink raw reply [flat|nested] 36+ messages in thread* Re: [PATCH v2 02/17] iio: mlx96014: Add OF device ID table
2017-03-15 10:46 ` Crt Mori
@ 2017-03-19 10:49 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:49 UTC (permalink / raw)
To: Crt Mori, Javier Martinez Canillas
Cc: linux-kernel, Linux Iio, Hartmut Knaack, Lars-Peter Clausen,
Peter Meerwald-Stadler
On 15/03/17 10:46, Crt Mori wrote:
> Hi,
> Thanks for the patch. If the assumption will not be there than this
> fix is needed. I tested it on BeagleBoneBlack and it does not effect
> anything.
>
> Tested-by: Crt Mori <cmo@melexis.com>
> Acked-by: Crt Mori <cmo@melexis.com>
Applied.
Thanks,
Jonathan
>
> Best regards,
> Crt
>
>
> On 15 March 2017 at 05:44, Javier Martinez Canillas
> <javier@osg.samsung.com> wrote:
>> The driver doesn't have a struct of_device_id table but supported devices
>> are registered via Device Trees. This is working on the assumption that a
>> I2C device registered via OF will always match a legacy I2C device ID and
>> that the MODALIAS reported will always be of the form i2c:<device>.
>>
>> But this could change in the future so the correct approach is to have an
>> OF device ID table if the devices are registered via OF.
>>
>> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
>> ---
>>
>> drivers/iio/temperature/mlx90614.c | 7 +++++++
>> 1 file changed, 7 insertions(+)
>>
>> diff --git a/drivers/iio/temperature/mlx90614.c b/drivers/iio/temperature/mlx90614.c
>> index 4b645fc672aa..2077eef4095c 100644
>> --- a/drivers/iio/temperature/mlx90614.c
>> +++ b/drivers/iio/temperature/mlx90614.c
>> @@ -585,6 +585,12 @@ static const struct i2c_device_id mlx90614_id[] = {
>> };
>> MODULE_DEVICE_TABLE(i2c, mlx90614_id);
>>
>> +static const struct of_device_id mlx90614_of_match[] = {
>> + { .compatible = "melexis,mlx90614" },
>> + { }
>> +};
>> +MODULE_DEVICE_TABLE(of, mlx90614_of_match);
>> +
>> #ifdef CONFIG_PM_SLEEP
>> static int mlx90614_pm_suspend(struct device *dev)
>> {
>> @@ -644,6 +650,7 @@ static const struct dev_pm_ops mlx90614_pm_ops = {
>> static struct i2c_driver mlx90614_driver = {
>> .driver = {
>> .name = "mlx90614",
>> + .of_match_table = mlx90614_of_match,
>> .pm = &mlx90614_pm_ops,
>> },
>> .probe = mlx90614_probe,
>> --
>> 2.9.3
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 03/17] iio: magnetometer: bmc150_magn_i2c: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
2017-03-15 4:44 ` [PATCH v2 01/17] iio: adc: ina2xx: Add OF device ID table Javier Martinez Canillas
2017-03-15 4:44 ` [PATCH v2 02/17] iio: mlx96014: " Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-19 10:50 ` Jonathan Cameron
2017-03-15 4:44 ` [PATCH v2 04/17] iio: dac: mcp4725: " Javier Martinez Canillas
` (13 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, Irina Tirdea, linux-iio, Hartmut Knaack,
Lars-Peter Clausen, Daniel Baluta, Jonathan Cameron,
Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/magnetometer/bmc150_magn_i2c.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/iio/magnetometer/bmc150_magn_i2c.c b/drivers/iio/magnetometer/bmc150_magn_i2c.c
index ee05722587aa..57e40dd1222e 100644
--- a/drivers/iio/magnetometer/bmc150_magn_i2c.c
+++ b/drivers/iio/magnetometer/bmc150_magn_i2c.c
@@ -63,9 +63,18 @@ static const struct i2c_device_id bmc150_magn_i2c_id[] = {
};
MODULE_DEVICE_TABLE(i2c, bmc150_magn_i2c_id);
+static const struct of_device_id bmc150_magn_of_match[] = {
+ { .compatible = "bosch,bmc150_magn" },
+ { .compatible = "bosch,bmc156_magn" },
+ { .compatible = "bosch,bmm150_magn" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, bmc150_magn_of_match);
+
static struct i2c_driver bmc150_magn_driver = {
.driver = {
.name = "bmc150_magn_i2c",
+ .of_match_table = bmc150_magn_of_match,
.acpi_match_table = ACPI_PTR(bmc150_magn_acpi_match),
.pm = &bmc150_magn_pm_ops,
},
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 03/17] iio: magnetometer: bmc150_magn_i2c: Add OF device ID table
2017-03-15 4:44 ` [PATCH v2 03/17] iio: magnetometer: bmc150_magn_i2c: " Javier Martinez Canillas
@ 2017-03-19 10:50 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:50 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: Irina Tirdea, linux-iio, Hartmut Knaack, Lars-Peter Clausen,
Daniel Baluta, Peter Meerwald-Stadler
On 15/03/17 04:44, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
> ---
>
> drivers/iio/magnetometer/bmc150_magn_i2c.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/iio/magnetometer/bmc150_magn_i2c.c b/drivers/iio/magnetometer/bmc150_magn_i2c.c
> index ee05722587aa..57e40dd1222e 100644
> --- a/drivers/iio/magnetometer/bmc150_magn_i2c.c
> +++ b/drivers/iio/magnetometer/bmc150_magn_i2c.c
> @@ -63,9 +63,18 @@ static const struct i2c_device_id bmc150_magn_i2c_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, bmc150_magn_i2c_id);
>
> +static const struct of_device_id bmc150_magn_of_match[] = {
> + { .compatible = "bosch,bmc150_magn" },
> + { .compatible = "bosch,bmc156_magn" },
> + { .compatible = "bosch,bmm150_magn" },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, bmc150_magn_of_match);
> +
> static struct i2c_driver bmc150_magn_driver = {
> .driver = {
> .name = "bmc150_magn_i2c",
> + .of_match_table = bmc150_magn_of_match,
> .acpi_match_table = ACPI_PTR(bmc150_magn_acpi_match),
> .pm = &bmc150_magn_pm_ops,
> },
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 04/17] iio: dac: mcp4725: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (2 preceding siblings ...)
2017-03-15 4:44 ` [PATCH v2 03/17] iio: magnetometer: bmc150_magn_i2c: " Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-19 10:51 ` Jonathan Cameron
2017-03-15 4:44 ` [PATCH v2 05/17] iio: light: us5182d: " Javier Martinez Canillas
` (12 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, linux-iio, Hartmut Knaack,
Tomas Novotny, Fengguang Wu, Lars-Peter Clausen, Julia Lawall,
Jonathan Cameron, Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/dac/mcp4725.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/dac/mcp4725.c b/drivers/iio/dac/mcp4725.c
index db109f0cdd8c..6ab1f23e5a79 100644
--- a/drivers/iio/dac/mcp4725.c
+++ b/drivers/iio/dac/mcp4725.c
@@ -19,6 +19,7 @@
#include <linux/err.h>
#include <linux/delay.h>
#include <linux/regulator/consumer.h>
+#include <linux/of_device.h>
#include <linux/of.h>
#include <linux/iio/iio.h>
@@ -199,7 +200,7 @@ static ssize_t mcp4725_write_powerdown(struct iio_dev *indio_dev,
return len;
}
-enum {
+enum chip_id {
MCP4725,
MCP4726,
};
@@ -406,7 +407,10 @@ static int mcp4725_probe(struct i2c_client *client,
data = iio_priv(indio_dev);
i2c_set_clientdata(client, indio_dev);
data->client = client;
- data->id = id->driver_data;
+ if (client->dev.of_node)
+ data->id = (enum chip_id)of_device_get_match_data(&client->dev);
+ else
+ data->id = id->driver_data;
pdata = dev_get_platdata(&client->dev);
if (!pdata) {
@@ -525,9 +529,25 @@ static const struct i2c_device_id mcp4725_id[] = {
};
MODULE_DEVICE_TABLE(i2c, mcp4725_id);
+#ifdef CONFIG_OF
+static const struct of_device_id mcp4725_of_match[] = {
+ {
+ .compatible = "microchip,mcp4725",
+ .data = (void *)MCP4725
+ },
+ {
+ .compatible = "microchip,mcp4726",
+ .data = (void *)MCP4726
+ },
+ { }
+};
+MODULE_DEVICE_TABLE(of, mcp4725_of_match);
+#endif
+
static struct i2c_driver mcp4725_driver = {
.driver = {
.name = MCP4725_DRV_NAME,
+ .of_match_table = of_match_ptr(mcp4725_of_match),
.pm = MCP4725_PM_OPS,
},
.probe = mcp4725_probe,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 04/17] iio: dac: mcp4725: Add OF device ID table
2017-03-15 4:44 ` [PATCH v2 04/17] iio: dac: mcp4725: " Javier Martinez Canillas
@ 2017-03-19 10:51 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:51 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: linux-iio, Hartmut Knaack, Tomas Novotny, Fengguang Wu,
Lars-Peter Clausen, Julia Lawall, Peter Meerwald-Stadler
On 15/03/17 04:44, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
Thanks,
> ---
>
> drivers/iio/dac/mcp4725.c | 24 ++++++++++++++++++++++--
> 1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/dac/mcp4725.c b/drivers/iio/dac/mcp4725.c
> index db109f0cdd8c..6ab1f23e5a79 100644
> --- a/drivers/iio/dac/mcp4725.c
> +++ b/drivers/iio/dac/mcp4725.c
> @@ -19,6 +19,7 @@
> #include <linux/err.h>
> #include <linux/delay.h>
> #include <linux/regulator/consumer.h>
> +#include <linux/of_device.h>
> #include <linux/of.h>
>
> #include <linux/iio/iio.h>
> @@ -199,7 +200,7 @@ static ssize_t mcp4725_write_powerdown(struct iio_dev *indio_dev,
> return len;
> }
>
> -enum {
> +enum chip_id {
> MCP4725,
> MCP4726,
> };
> @@ -406,7 +407,10 @@ static int mcp4725_probe(struct i2c_client *client,
> data = iio_priv(indio_dev);
> i2c_set_clientdata(client, indio_dev);
> data->client = client;
> - data->id = id->driver_data;
> + if (client->dev.of_node)
> + data->id = (enum chip_id)of_device_get_match_data(&client->dev);
> + else
> + data->id = id->driver_data;
> pdata = dev_get_platdata(&client->dev);
>
> if (!pdata) {
> @@ -525,9 +529,25 @@ static const struct i2c_device_id mcp4725_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, mcp4725_id);
>
> +#ifdef CONFIG_OF
> +static const struct of_device_id mcp4725_of_match[] = {
> + {
> + .compatible = "microchip,mcp4725",
> + .data = (void *)MCP4725
> + },
> + {
> + .compatible = "microchip,mcp4726",
> + .data = (void *)MCP4726
> + },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, mcp4725_of_match);
> +#endif
> +
> static struct i2c_driver mcp4725_driver = {
> .driver = {
> .name = MCP4725_DRV_NAME,
> + .of_match_table = of_match_ptr(mcp4725_of_match),
> .pm = MCP4725_PM_OPS,
> },
> .probe = mcp4725_probe,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 05/17] iio: light: us5182d: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (3 preceding siblings ...)
2017-03-15 4:44 ` [PATCH v2 04/17] iio: dac: mcp4725: " Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-19 10:52 ` Jonathan Cameron
2017-03-15 4:44 ` [PATCH v2 06/17] iio: light: tsl2563: " Javier Martinez Canillas
` (11 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, Jonathan Cameron, linux-iio,
Hartmut Knaack, Gregor Boirie, Sanchayan Maity,
Lars-Peter Clausen, Christophe JAILLET, Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/light/us5182d.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/iio/light/us5182d.c b/drivers/iio/light/us5182d.c
index 18cf2e29e4d5..d571ad7291ed 100644
--- a/drivers/iio/light/us5182d.c
+++ b/drivers/iio/light/us5182d.c
@@ -972,10 +972,17 @@ static const struct i2c_device_id us5182d_id[] = {
MODULE_DEVICE_TABLE(i2c, us5182d_id);
+static const struct of_device_id us5182d_of_match[] = {
+ { .compatible = "upisemi,usd5182" },
+ {}
+};
+MODULE_DEVICE_TABLE(of, us5182d_of_match);
+
static struct i2c_driver us5182d_driver = {
.driver = {
.name = US5182D_DRV_NAME,
.pm = &us5182d_pm_ops,
+ .of_match_table = us5182d_of_match,
.acpi_match_table = ACPI_PTR(us5182d_acpi_match),
},
.probe = us5182d_probe,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 05/17] iio: light: us5182d: Add OF device ID table
2017-03-15 4:44 ` [PATCH v2 05/17] iio: light: us5182d: " Javier Martinez Canillas
@ 2017-03-19 10:52 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:52 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: linux-iio, Hartmut Knaack, Gregor Boirie, Sanchayan Maity,
Lars-Peter Clausen, Christophe JAILLET, Peter Meerwald-Stadler
On 15/03/17 04:44, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
Jonathan
> ---
>
> drivers/iio/light/us5182d.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/light/us5182d.c b/drivers/iio/light/us5182d.c
> index 18cf2e29e4d5..d571ad7291ed 100644
> --- a/drivers/iio/light/us5182d.c
> +++ b/drivers/iio/light/us5182d.c
> @@ -972,10 +972,17 @@ static const struct i2c_device_id us5182d_id[] = {
>
> MODULE_DEVICE_TABLE(i2c, us5182d_id);
>
> +static const struct of_device_id us5182d_of_match[] = {
> + { .compatible = "upisemi,usd5182" },
> + {}
> +};
> +MODULE_DEVICE_TABLE(of, us5182d_of_match);
> +
> static struct i2c_driver us5182d_driver = {
> .driver = {
> .name = US5182D_DRV_NAME,
> .pm = &us5182d_pm_ops,
> + .of_match_table = us5182d_of_match,
> .acpi_match_table = ACPI_PTR(us5182d_acpi_match),
> },
> .probe = us5182d_probe,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 06/17] iio: light: tsl2563: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (4 preceding siblings ...)
2017-03-15 4:44 ` [PATCH v2 05/17] iio: light: us5182d: " Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-19 10:53 ` Jonathan Cameron
2017-03-15 4:44 ` [PATCH v2 07/17] iio: pressure: hp03: " Javier Martinez Canillas
` (10 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, linux-iio, Hartmut Knaack,
Gregor Boirie, Sanchayan Maity, Lars-Peter Clausen,
Amitoj Kaur Chawla, Jonathan Cameron, Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/light/tsl2563.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/iio/light/tsl2563.c b/drivers/iio/light/tsl2563.c
index 04598ae993d4..e7d4ea75e007 100644
--- a/drivers/iio/light/tsl2563.c
+++ b/drivers/iio/light/tsl2563.c
@@ -884,9 +884,19 @@ static const struct i2c_device_id tsl2563_id[] = {
};
MODULE_DEVICE_TABLE(i2c, tsl2563_id);
+static const struct of_device_id tsl2563_of_match[] = {
+ { .compatible = "amstaos,tsl2560" },
+ { .compatible = "amstaos,tsl2561" },
+ { .compatible = "amstaos,tsl2562" },
+ { .compatible = "amstaos,tsl2563" },
+ {}
+};
+MODULE_DEVICE_TABLE(of, tsl2563_of_match);
+
static struct i2c_driver tsl2563_i2c_driver = {
.driver = {
.name = "tsl2563",
+ .of_match_table = tsl2563_of_match,
.pm = TSL2563_PM_OPS,
},
.probe = tsl2563_probe,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 06/17] iio: light: tsl2563: Add OF device ID table
2017-03-15 4:44 ` [PATCH v2 06/17] iio: light: tsl2563: " Javier Martinez Canillas
@ 2017-03-19 10:53 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:53 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: linux-iio, Hartmut Knaack, Gregor Boirie, Sanchayan Maity,
Lars-Peter Clausen, Amitoj Kaur Chawla, Peter Meerwald-Stadler
On 15/03/17 04:44, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied
> ---
>
> drivers/iio/light/tsl2563.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/iio/light/tsl2563.c b/drivers/iio/light/tsl2563.c
> index 04598ae993d4..e7d4ea75e007 100644
> --- a/drivers/iio/light/tsl2563.c
> +++ b/drivers/iio/light/tsl2563.c
> @@ -884,9 +884,19 @@ static const struct i2c_device_id tsl2563_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, tsl2563_id);
>
> +static const struct of_device_id tsl2563_of_match[] = {
> + { .compatible = "amstaos,tsl2560" },
> + { .compatible = "amstaos,tsl2561" },
> + { .compatible = "amstaos,tsl2562" },
> + { .compatible = "amstaos,tsl2563" },
> + {}
> +};
> +MODULE_DEVICE_TABLE(of, tsl2563_of_match);
> +
> static struct i2c_driver tsl2563_i2c_driver = {
> .driver = {
> .name = "tsl2563",
> + .of_match_table = tsl2563_of_match,
> .pm = TSL2563_PM_OPS,
> },
> .probe = tsl2563_probe,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 07/17] iio: pressure: hp03: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (5 preceding siblings ...)
2017-03-15 4:44 ` [PATCH v2 06/17] iio: light: tsl2563: " Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-19 10:53 ` Jonathan Cameron
2017-03-15 4:44 ` [PATCH v2 08/17] iio: imu: inv_mpu6050: " Javier Martinez Canillas
` (9 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, linux-iio, Hartmut Knaack, Marek Vasut,
Lars-Peter Clausen, Jonathan Cameron, Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/pressure/hp03.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/iio/pressure/hp03.c b/drivers/iio/pressure/hp03.c
index ac76515d5d49..8c7b3ec3d84a 100644
--- a/drivers/iio/pressure/hp03.c
+++ b/drivers/iio/pressure/hp03.c
@@ -297,9 +297,16 @@ static const struct i2c_device_id hp03_id[] = {
};
MODULE_DEVICE_TABLE(i2c, hp03_id);
+static const struct of_device_id hp03_of_match[] = {
+ { .compatible = "hoperf,hp03" },
+ { },
+};
+MODULE_DEVICE_TABLE(of, hp03_of_match);
+
static struct i2c_driver hp03_driver = {
.driver = {
.name = "hp03",
+ .of_match_table = hp03_of_match,
},
.probe = hp03_probe,
.remove = hp03_remove,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 07/17] iio: pressure: hp03: Add OF device ID table
2017-03-15 4:44 ` [PATCH v2 07/17] iio: pressure: hp03: " Javier Martinez Canillas
@ 2017-03-19 10:53 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:53 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: linux-iio, Hartmut Knaack, Marek Vasut, Lars-Peter Clausen,
Peter Meerwald-Stadler
On 15/03/17 04:44, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
> ---
>
> drivers/iio/pressure/hp03.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/pressure/hp03.c b/drivers/iio/pressure/hp03.c
> index ac76515d5d49..8c7b3ec3d84a 100644
> --- a/drivers/iio/pressure/hp03.c
> +++ b/drivers/iio/pressure/hp03.c
> @@ -297,9 +297,16 @@ static const struct i2c_device_id hp03_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, hp03_id);
>
> +static const struct of_device_id hp03_of_match[] = {
> + { .compatible = "hoperf,hp03" },
> + { },
> +};
> +MODULE_DEVICE_TABLE(of, hp03_of_match);
> +
> static struct i2c_driver hp03_driver = {
> .driver = {
> .name = "hp03",
> + .of_match_table = hp03_of_match,
> },
> .probe = hp03_probe,
> .remove = hp03_remove,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 08/17] iio: imu: inv_mpu6050: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (6 preceding siblings ...)
2017-03-15 4:44 ` [PATCH v2 07/17] iio: pressure: hp03: " Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-19 10:54 ` Jonathan Cameron
2017-03-15 4:44 ` [PATCH v2 09/17] iio: accel: bma180: " Javier Martinez Canillas
` (8 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, Matt Ranostay, linux-iio,
Hartmut Knaack, Wolfram Sang, Lars-Peter Clausen, Ge Gao,
Crestez Dan Leonard, Daniel Baluta, Peter Rosin, Jonathan Cameron,
Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c | 38 +++++++++++++++++++++++++++----
1 file changed, 34 insertions(+), 4 deletions(-)
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
index 2c3f8964a3ea..a8e6330cb906 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
@@ -17,6 +17,7 @@
#include <linux/i2c.h>
#include <linux/iio/iio.h>
#include <linux/module.h>
+#include <linux/of_device.h>
#include "inv_mpu_iio.h"
static const struct regmap_config inv_mpu_regmap_config = {
@@ -69,7 +70,8 @@ static int inv_mpu6050_deselect_bypass(struct i2c_mux_core *muxc, u32 chan_id)
return 0;
}
-static const char *inv_mpu_match_acpi_device(struct device *dev, int *chip_id)
+static const char *inv_mpu_match_acpi_device(struct device *dev,
+ enum inv_devices *chip_id)
{
const struct acpi_device_id *id;
@@ -93,7 +95,8 @@ static int inv_mpu_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
struct inv_mpu6050_state *st;
- int result, chip_type;
+ int result;
+ enum inv_devices chip_type;
struct regmap *regmap;
const char *name;
@@ -101,8 +104,13 @@ static int inv_mpu_probe(struct i2c_client *client,
I2C_FUNC_SMBUS_I2C_BLOCK))
return -EOPNOTSUPP;
- if (id) {
- chip_type = (int)id->driver_data;
+ if (client->dev.of_node) {
+ chip_type = (enum inv_devices)
+ of_device_get_match_data(&client->dev);
+ name = client->name;
+ } else if (id) {
+ chip_type = (enum inv_devices)
+ id->driver_data;
name = id->name;
} else if (ACPI_HANDLE(&client->dev)) {
name = inv_mpu_match_acpi_device(&client->dev, &chip_type);
@@ -176,6 +184,27 @@ static const struct i2c_device_id inv_mpu_id[] = {
MODULE_DEVICE_TABLE(i2c, inv_mpu_id);
+static const struct of_device_id inv_of_match[] = {
+ {
+ .compatible = "invensense,mpu6050",
+ .data = (void *)INV_MPU6050
+ },
+ {
+ .compatible = "invensense,mpu6500",
+ .data = (void *)INV_MPU6500
+ },
+ {
+ .compatible = "invensense,mpu9150",
+ .data = (void *)INV_MPU9150
+ },
+ {
+ .compatible = "invensense,icm20608",
+ .data = (void *)INV_ICM20608
+ },
+ { }
+};
+MODULE_DEVICE_TABLE(of, inv_of_match);
+
static const struct acpi_device_id inv_acpi_match[] = {
{"INVN6500", INV_MPU6500},
{ },
@@ -188,6 +217,7 @@ static struct i2c_driver inv_mpu_driver = {
.remove = inv_mpu_remove,
.id_table = inv_mpu_id,
.driver = {
+ .of_match_table = inv_of_match,
.acpi_match_table = ACPI_PTR(inv_acpi_match),
.name = "inv-mpu6050-i2c",
.pm = &inv_mpu_pmops,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 08/17] iio: imu: inv_mpu6050: Add OF device ID table
2017-03-15 4:44 ` [PATCH v2 08/17] iio: imu: inv_mpu6050: " Javier Martinez Canillas
@ 2017-03-19 10:54 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:54 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: Matt Ranostay, linux-iio, Hartmut Knaack, Wolfram Sang,
Lars-Peter Clausen, Ge Gao, Crestez Dan Leonard, Daniel Baluta,
Peter Rosin, Peter Meerwald-Stadler
On 15/03/17 04:44, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
> ---
>
> drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c | 38 +++++++++++++++++++++++++++----
> 1 file changed, 34 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
> index 2c3f8964a3ea..a8e6330cb906 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
> @@ -17,6 +17,7 @@
> #include <linux/i2c.h>
> #include <linux/iio/iio.h>
> #include <linux/module.h>
> +#include <linux/of_device.h>
> #include "inv_mpu_iio.h"
>
> static const struct regmap_config inv_mpu_regmap_config = {
> @@ -69,7 +70,8 @@ static int inv_mpu6050_deselect_bypass(struct i2c_mux_core *muxc, u32 chan_id)
> return 0;
> }
>
> -static const char *inv_mpu_match_acpi_device(struct device *dev, int *chip_id)
> +static const char *inv_mpu_match_acpi_device(struct device *dev,
> + enum inv_devices *chip_id)
> {
> const struct acpi_device_id *id;
>
> @@ -93,7 +95,8 @@ static int inv_mpu_probe(struct i2c_client *client,
> const struct i2c_device_id *id)
> {
> struct inv_mpu6050_state *st;
> - int result, chip_type;
> + int result;
> + enum inv_devices chip_type;
> struct regmap *regmap;
> const char *name;
>
> @@ -101,8 +104,13 @@ static int inv_mpu_probe(struct i2c_client *client,
> I2C_FUNC_SMBUS_I2C_BLOCK))
> return -EOPNOTSUPP;
>
> - if (id) {
> - chip_type = (int)id->driver_data;
> + if (client->dev.of_node) {
> + chip_type = (enum inv_devices)
> + of_device_get_match_data(&client->dev);
> + name = client->name;
> + } else if (id) {
> + chip_type = (enum inv_devices)
> + id->driver_data;
> name = id->name;
> } else if (ACPI_HANDLE(&client->dev)) {
> name = inv_mpu_match_acpi_device(&client->dev, &chip_type);
> @@ -176,6 +184,27 @@ static const struct i2c_device_id inv_mpu_id[] = {
>
> MODULE_DEVICE_TABLE(i2c, inv_mpu_id);
>
> +static const struct of_device_id inv_of_match[] = {
> + {
> + .compatible = "invensense,mpu6050",
> + .data = (void *)INV_MPU6050
> + },
> + {
> + .compatible = "invensense,mpu6500",
> + .data = (void *)INV_MPU6500
> + },
> + {
> + .compatible = "invensense,mpu9150",
> + .data = (void *)INV_MPU9150
> + },
> + {
> + .compatible = "invensense,icm20608",
> + .data = (void *)INV_ICM20608
> + },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, inv_of_match);
> +
> static const struct acpi_device_id inv_acpi_match[] = {
> {"INVN6500", INV_MPU6500},
> { },
> @@ -188,6 +217,7 @@ static struct i2c_driver inv_mpu_driver = {
> .remove = inv_mpu_remove,
> .id_table = inv_mpu_id,
> .driver = {
> + .of_match_table = inv_of_match,
> .acpi_match_table = ACPI_PTR(inv_acpi_match),
> .name = "inv-mpu6050-i2c",
> .pm = &inv_mpu_pmops,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 09/17] iio: accel: bma180: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (7 preceding siblings ...)
2017-03-15 4:44 ` [PATCH v2 08/17] iio: imu: inv_mpu6050: " Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-19 10:55 ` Jonathan Cameron
2017-03-15 4:44 ` [PATCH v2 10/17] iio: light: apds9960: " Javier Martinez Canillas
` (7 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, linux-iio, Hartmut Knaack,
Gregor Boirie, Sanchayan Maity, Lars-Peter Clausen,
Alison Schofield, Jonathan Cameron, Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/accel/bma180.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c
index 0890934ef66f..e3f97757e72d 100644
--- a/drivers/iio/accel/bma180.c
+++ b/drivers/iio/accel/bma180.c
@@ -18,6 +18,7 @@
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
+#include <linux/of_device.h>
#include <linux/of.h>
#include <linux/bitops.h>
#include <linux/slab.h>
@@ -32,7 +33,7 @@
#define BMA180_DRV_NAME "bma180"
#define BMA180_IRQ_NAME "bma180_event"
-enum {
+enum chip_ids {
BMA180,
BMA250,
};
@@ -707,6 +708,7 @@ static int bma180_probe(struct i2c_client *client,
{
struct bma180_data *data;
struct iio_dev *indio_dev;
+ enum chip_ids chip;
int ret;
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
@@ -716,7 +718,11 @@ static int bma180_probe(struct i2c_client *client,
data = iio_priv(indio_dev);
i2c_set_clientdata(client, indio_dev);
data->client = client;
- data->part_info = &bma180_part_info[id->driver_data];
+ if (client->dev.of_node)
+ chip = (enum chip_ids)of_device_get_match_data(&client->dev);
+ else
+ chip = id->driver_data;
+ data->part_info = &bma180_part_info[chip];
ret = data->part_info->chip_config(data);
if (ret < 0)
@@ -844,10 +850,24 @@ static struct i2c_device_id bma180_ids[] = {
MODULE_DEVICE_TABLE(i2c, bma180_ids);
+static const struct of_device_id bma180_of_match[] = {
+ {
+ .compatible = "bosch,bma180",
+ .data = (void *)BMA180
+ },
+ {
+ .compatible = "bosch,bma250",
+ .data = (void *)BMA250
+ },
+ { }
+};
+MODULE_DEVICE_TABLE(of, bma180_of_match);
+
static struct i2c_driver bma180_driver = {
.driver = {
.name = "bma180",
.pm = BMA180_PM_OPS,
+ .of_match_table = bma180_of_match,
},
.probe = bma180_probe,
.remove = bma180_remove,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 09/17] iio: accel: bma180: Add OF device ID table
2017-03-15 4:44 ` [PATCH v2 09/17] iio: accel: bma180: " Javier Martinez Canillas
@ 2017-03-19 10:55 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:55 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: linux-iio, Hartmut Knaack, Gregor Boirie, Sanchayan Maity,
Lars-Peter Clausen, Alison Schofield, Peter Meerwald-Stadler
On 15/03/17 04:44, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
> ---
>
> drivers/iio/accel/bma180.c | 24 ++++++++++++++++++++++--
> 1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c
> index 0890934ef66f..e3f97757e72d 100644
> --- a/drivers/iio/accel/bma180.c
> +++ b/drivers/iio/accel/bma180.c
> @@ -18,6 +18,7 @@
> #include <linux/i2c.h>
> #include <linux/interrupt.h>
> #include <linux/delay.h>
> +#include <linux/of_device.h>
> #include <linux/of.h>
> #include <linux/bitops.h>
> #include <linux/slab.h>
> @@ -32,7 +33,7 @@
> #define BMA180_DRV_NAME "bma180"
> #define BMA180_IRQ_NAME "bma180_event"
>
> -enum {
> +enum chip_ids {
> BMA180,
> BMA250,
> };
> @@ -707,6 +708,7 @@ static int bma180_probe(struct i2c_client *client,
> {
> struct bma180_data *data;
> struct iio_dev *indio_dev;
> + enum chip_ids chip;
> int ret;
>
> indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
> @@ -716,7 +718,11 @@ static int bma180_probe(struct i2c_client *client,
> data = iio_priv(indio_dev);
> i2c_set_clientdata(client, indio_dev);
> data->client = client;
> - data->part_info = &bma180_part_info[id->driver_data];
> + if (client->dev.of_node)
> + chip = (enum chip_ids)of_device_get_match_data(&client->dev);
> + else
> + chip = id->driver_data;
> + data->part_info = &bma180_part_info[chip];
>
> ret = data->part_info->chip_config(data);
> if (ret < 0)
> @@ -844,10 +850,24 @@ static struct i2c_device_id bma180_ids[] = {
>
> MODULE_DEVICE_TABLE(i2c, bma180_ids);
>
> +static const struct of_device_id bma180_of_match[] = {
> + {
> + .compatible = "bosch,bma180",
> + .data = (void *)BMA180
> + },
> + {
> + .compatible = "bosch,bma250",
> + .data = (void *)BMA250
> + },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, bma180_of_match);
> +
> static struct i2c_driver bma180_driver = {
> .driver = {
> .name = "bma180",
> .pm = BMA180_PM_OPS,
> + .of_match_table = bma180_of_match,
> },
> .probe = bma180_probe,
> .remove = bma180_remove,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 10/17] iio: light: apds9960: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (8 preceding siblings ...)
2017-03-15 4:44 ` [PATCH v2 09/17] iio: accel: bma180: " Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-19 10:55 ` Jonathan Cameron
2017-03-15 4:44 ` [PATCH v2 11/17] iio: dac: max5821: Set .of_match_table to " Javier Martinez Canillas
` (6 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, Matt Ranostay, Slawomir Stepien,
linux-iio, Hartmut Knaack, Gregor Boirie, Sanchayan Maity,
Yong Li, Lars-Peter Clausen, Jonathan Cameron,
Peter Meerwald-Stadler, Dan Carpenter
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/light/apds9960.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/iio/light/apds9960.c b/drivers/iio/light/apds9960.c
index a4304edc3e0f..90bc98df362b 100644
--- a/drivers/iio/light/apds9960.c
+++ b/drivers/iio/light/apds9960.c
@@ -1122,9 +1122,16 @@ static const struct i2c_device_id apds9960_id[] = {
};
MODULE_DEVICE_TABLE(i2c, apds9960_id);
+static const struct of_device_id apds9960_of_match[] = {
+ { .compatible = "avago,apds9960" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, apds9960_of_match);
+
static struct i2c_driver apds9960_driver = {
.driver = {
.name = APDS9960_DRV_NAME,
+ .of_match_table = apds9960_of_match,
.pm = &apds9960_pm_ops,
},
.probe = apds9960_probe,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 10/17] iio: light: apds9960: Add OF device ID table
2017-03-15 4:44 ` [PATCH v2 10/17] iio: light: apds9960: " Javier Martinez Canillas
@ 2017-03-19 10:55 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:55 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: Matt Ranostay, Slawomir Stepien, linux-iio, Hartmut Knaack,
Gregor Boirie, Sanchayan Maity, Yong Li, Lars-Peter Clausen,
Peter Meerwald-Stadler, Dan Carpenter
On 15/03/17 04:44, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
> ---
>
> drivers/iio/light/apds9960.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/light/apds9960.c b/drivers/iio/light/apds9960.c
> index a4304edc3e0f..90bc98df362b 100644
> --- a/drivers/iio/light/apds9960.c
> +++ b/drivers/iio/light/apds9960.c
> @@ -1122,9 +1122,16 @@ static const struct i2c_device_id apds9960_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, apds9960_id);
>
> +static const struct of_device_id apds9960_of_match[] = {
> + { .compatible = "avago,apds9960" },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, apds9960_of_match);
> +
> static struct i2c_driver apds9960_driver = {
> .driver = {
> .name = APDS9960_DRV_NAME,
> + .of_match_table = apds9960_of_match,
> .pm = &apds9960_pm_ops,
> },
> .probe = apds9960_probe,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 11/17] iio: dac: max5821: Set .of_match_table to OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (9 preceding siblings ...)
2017-03-15 4:44 ` [PATCH v2 10/17] iio: light: apds9960: " Javier Martinez Canillas
@ 2017-03-15 4:44 ` Javier Martinez Canillas
2017-03-19 10:56 ` Jonathan Cameron
2017-03-15 4:45 ` [PATCH v2 12/17] iio: adc: ti-ads1015: Add " Javier Martinez Canillas
` (5 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:44 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, linux-iio, Hartmut Knaack,
Lars-Peter Clausen, Jonathan Cameron, Peter Meerwald-Stadler
The driver has a OF device ID table but the struct i2c_driver
.of_match_table field is not set.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/dac/max5821.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/iio/dac/max5821.c b/drivers/iio/dac/max5821.c
index 86e9e112f554..193fac3059a3 100644
--- a/drivers/iio/dac/max5821.c
+++ b/drivers/iio/dac/max5821.c
@@ -392,6 +392,7 @@ MODULE_DEVICE_TABLE(of, max5821_of_match);
static struct i2c_driver max5821_driver = {
.driver = {
.name = "max5821",
+ .of_match_table = max5821_of_match,
.pm = MAX5821_PM_OPS,
},
.probe = max5821_probe,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 11/17] iio: dac: max5821: Set .of_match_table to OF device ID table
2017-03-15 4:44 ` [PATCH v2 11/17] iio: dac: max5821: Set .of_match_table to " Javier Martinez Canillas
@ 2017-03-19 10:56 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:56 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: linux-iio, Hartmut Knaack, Lars-Peter Clausen,
Peter Meerwald-Stadler
On 15/03/17 04:44, Javier Martinez Canillas wrote:
> The driver has a OF device ID table but the struct i2c_driver
> .of_match_table field is not set.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
applied.
> ---
>
> drivers/iio/dac/max5821.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/iio/dac/max5821.c b/drivers/iio/dac/max5821.c
> index 86e9e112f554..193fac3059a3 100644
> --- a/drivers/iio/dac/max5821.c
> +++ b/drivers/iio/dac/max5821.c
> @@ -392,6 +392,7 @@ MODULE_DEVICE_TABLE(of, max5821_of_match);
> static struct i2c_driver max5821_driver = {
> .driver = {
> .name = "max5821",
> + .of_match_table = max5821_of_match,
> .pm = MAX5821_PM_OPS,
> },
> .probe = max5821_probe,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 12/17] iio: adc: ti-ads1015: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (10 preceding siblings ...)
2017-03-15 4:44 ` [PATCH v2 11/17] iio: dac: max5821: Set .of_match_table to " Javier Martinez Canillas
@ 2017-03-15 4:45 ` Javier Martinez Canillas
2017-03-19 10:57 ` Jonathan Cameron
2017-03-15 4:45 ` [PATCH v2 13/17] iio: magnetometer: mag3110: " Javier Martinez Canillas
` (4 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:45 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, Matt Ranostay, Giorgio Dal Molin,
linux-iio, Hartmut Knaack, Wei Yongjun, Bhumika Goyal,
Lars-Peter Clausen, Daniel Baluta, Jonathan Cameron,
Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/adc/ti-ads1015.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/adc/ti-ads1015.c b/drivers/iio/adc/ti-ads1015.c
index 422b314f5a3f..f76d979fb7e8 100644
--- a/drivers/iio/adc/ti-ads1015.c
+++ b/drivers/iio/adc/ti-ads1015.c
@@ -15,6 +15,7 @@
*/
#include <linux/module.h>
+#include <linux/of_device.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/regmap.h>
@@ -55,7 +56,7 @@
#define ADS1015_DEFAULT_DATA_RATE 4
#define ADS1015_DEFAULT_CHAN 0
-enum {
+enum chip_ids {
ADS1015,
ADS1115,
};
@@ -578,6 +579,7 @@ static int ads1015_probe(struct i2c_client *client,
struct iio_dev *indio_dev;
struct ads1015_data *data;
int ret;
+ enum chip_ids chip;
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
if (!indio_dev)
@@ -593,7 +595,11 @@ static int ads1015_probe(struct i2c_client *client,
indio_dev->name = ADS1015_DRV_NAME;
indio_dev->modes = INDIO_DIRECT_MODE;
- switch (id->driver_data) {
+ if (client->dev.of_node)
+ chip = (enum chip_ids)of_device_get_match_data(&client->dev);
+ else
+ chip = id->driver_data;
+ switch (chip) {
case ADS1015:
indio_dev->channels = ads1015_channels;
indio_dev->num_channels = ARRAY_SIZE(ads1015_channels);
@@ -698,9 +704,23 @@ static const struct i2c_device_id ads1015_id[] = {
};
MODULE_DEVICE_TABLE(i2c, ads1015_id);
+static const struct of_device_id ads1015_of_match[] = {
+ {
+ .compatible = "ti,ads1015",
+ .data = (void *)ADS1015
+ },
+ {
+ .compatible = "ti,ads1115",
+ .data = (void *)ADS1115
+ },
+ {}
+};
+MODULE_DEVICE_TABLE(of, ads1015_of_match);
+
static struct i2c_driver ads1015_driver = {
.driver = {
.name = ADS1015_DRV_NAME,
+ .of_match_table = ads1015_of_match,
.pm = &ads1015_pm_ops,
},
.probe = ads1015_probe,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 12/17] iio: adc: ti-ads1015: Add OF device ID table
2017-03-15 4:45 ` [PATCH v2 12/17] iio: adc: ti-ads1015: Add " Javier Martinez Canillas
@ 2017-03-19 10:57 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:57 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: Matt Ranostay, Giorgio Dal Molin, linux-iio, Hartmut Knaack,
Wei Yongjun, Bhumika Goyal, Lars-Peter Clausen, Daniel Baluta,
Peter Meerwald-Stadler
On 15/03/17 04:45, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
> ---
>
> drivers/iio/adc/ti-ads1015.c | 24 ++++++++++++++++++++++--
> 1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/adc/ti-ads1015.c b/drivers/iio/adc/ti-ads1015.c
> index 422b314f5a3f..f76d979fb7e8 100644
> --- a/drivers/iio/adc/ti-ads1015.c
> +++ b/drivers/iio/adc/ti-ads1015.c
> @@ -15,6 +15,7 @@
> */
>
> #include <linux/module.h>
> +#include <linux/of_device.h>
> #include <linux/init.h>
> #include <linux/i2c.h>
> #include <linux/regmap.h>
> @@ -55,7 +56,7 @@
> #define ADS1015_DEFAULT_DATA_RATE 4
> #define ADS1015_DEFAULT_CHAN 0
>
> -enum {
> +enum chip_ids {
> ADS1015,
> ADS1115,
> };
> @@ -578,6 +579,7 @@ static int ads1015_probe(struct i2c_client *client,
> struct iio_dev *indio_dev;
> struct ads1015_data *data;
> int ret;
> + enum chip_ids chip;
>
> indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
> if (!indio_dev)
> @@ -593,7 +595,11 @@ static int ads1015_probe(struct i2c_client *client,
> indio_dev->name = ADS1015_DRV_NAME;
> indio_dev->modes = INDIO_DIRECT_MODE;
>
> - switch (id->driver_data) {
> + if (client->dev.of_node)
> + chip = (enum chip_ids)of_device_get_match_data(&client->dev);
> + else
> + chip = id->driver_data;
> + switch (chip) {
> case ADS1015:
> indio_dev->channels = ads1015_channels;
> indio_dev->num_channels = ARRAY_SIZE(ads1015_channels);
> @@ -698,9 +704,23 @@ static const struct i2c_device_id ads1015_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, ads1015_id);
>
> +static const struct of_device_id ads1015_of_match[] = {
> + {
> + .compatible = "ti,ads1015",
> + .data = (void *)ADS1015
> + },
> + {
> + .compatible = "ti,ads1115",
> + .data = (void *)ADS1115
> + },
> + {}
> +};
> +MODULE_DEVICE_TABLE(of, ads1015_of_match);
> +
> static struct i2c_driver ads1015_driver = {
> .driver = {
> .name = ADS1015_DRV_NAME,
> + .of_match_table = ads1015_of_match,
> .pm = &ads1015_pm_ops,
> },
> .probe = ads1015_probe,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 13/17] iio: magnetometer: mag3110: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (11 preceding siblings ...)
2017-03-15 4:45 ` [PATCH v2 12/17] iio: adc: ti-ads1015: Add " Javier Martinez Canillas
@ 2017-03-15 4:45 ` Javier Martinez Canillas
2017-03-19 10:57 ` Jonathan Cameron
2017-03-15 4:45 ` [PATCH v2 14/17] iio: accel: mma7455_i2c: " Javier Martinez Canillas
` (3 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:45 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, linux-iio, Hartmut Knaack,
Gregor Boirie, Sanchayan Maity, Lars-Peter Clausen,
Alison Schofield, Jonathan Cameron, Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/magnetometer/mag3110.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/iio/magnetometer/mag3110.c b/drivers/iio/magnetometer/mag3110.c
index b4f643fb3b1e..dad8d57f7402 100644
--- a/drivers/iio/magnetometer/mag3110.c
+++ b/drivers/iio/magnetometer/mag3110.c
@@ -441,9 +441,16 @@ static const struct i2c_device_id mag3110_id[] = {
};
MODULE_DEVICE_TABLE(i2c, mag3110_id);
+static const struct of_device_id mag3110_of_match[] = {
+ { .compatible = "fsl,mag3110" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, mag3110_of_match);
+
static struct i2c_driver mag3110_driver = {
.driver = {
.name = "mag3110",
+ .of_match_table = mag3110_of_match,
.pm = MAG3110_PM_OPS,
},
.probe = mag3110_probe,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 13/17] iio: magnetometer: mag3110: Add OF device ID table
2017-03-15 4:45 ` [PATCH v2 13/17] iio: magnetometer: mag3110: " Javier Martinez Canillas
@ 2017-03-19 10:57 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:57 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: linux-iio, Hartmut Knaack, Gregor Boirie, Sanchayan Maity,
Lars-Peter Clausen, Alison Schofield, Peter Meerwald-Stadler
On 15/03/17 04:45, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
> ---
>
> drivers/iio/magnetometer/mag3110.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/magnetometer/mag3110.c b/drivers/iio/magnetometer/mag3110.c
> index b4f643fb3b1e..dad8d57f7402 100644
> --- a/drivers/iio/magnetometer/mag3110.c
> +++ b/drivers/iio/magnetometer/mag3110.c
> @@ -441,9 +441,16 @@ static const struct i2c_device_id mag3110_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, mag3110_id);
>
> +static const struct of_device_id mag3110_of_match[] = {
> + { .compatible = "fsl,mag3110" },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, mag3110_of_match);
> +
> static struct i2c_driver mag3110_driver = {
> .driver = {
> .name = "mag3110",
> + .of_match_table = mag3110_of_match,
> .pm = MAG3110_PM_OPS,
> },
> .probe = mag3110_probe,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 14/17] iio: accel: mma7455_i2c: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (12 preceding siblings ...)
2017-03-15 4:45 ` [PATCH v2 13/17] iio: magnetometer: mag3110: " Javier Martinez Canillas
@ 2017-03-15 4:45 ` Javier Martinez Canillas
2017-03-19 10:57 ` Jonathan Cameron
2017-03-15 4:45 ` [PATCH v2 15/17] iio: pressure: mpl3115: " Javier Martinez Canillas
` (2 subsequent siblings)
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:45 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, linux-iio, Hartmut Knaack,
Lars-Peter Clausen, Jonathan Cameron, Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/accel/mma7455_i2c.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/iio/accel/mma7455_i2c.c b/drivers/iio/accel/mma7455_i2c.c
index 3cab5fb4a3c4..73bf81a8ab14 100644
--- a/drivers/iio/accel/mma7455_i2c.c
+++ b/drivers/iio/accel/mma7455_i2c.c
@@ -41,12 +41,20 @@ static const struct i2c_device_id mma7455_i2c_ids[] = {
};
MODULE_DEVICE_TABLE(i2c, mma7455_i2c_ids);
+static const struct of_device_id mma7455_of_match[] = {
+ { .compatible = "fsl,mma7455" },
+ { .compatible = "fsl,mma7456" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, mma7455_of_match);
+
static struct i2c_driver mma7455_i2c_driver = {
.probe = mma7455_i2c_probe,
.remove = mma7455_i2c_remove,
.id_table = mma7455_i2c_ids,
.driver = {
.name = "mma7455-i2c",
+ .of_match_table = mma7455_of_match,
},
};
module_i2c_driver(mma7455_i2c_driver);
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 14/17] iio: accel: mma7455_i2c: Add OF device ID table
2017-03-15 4:45 ` [PATCH v2 14/17] iio: accel: mma7455_i2c: " Javier Martinez Canillas
@ 2017-03-19 10:57 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:57 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: linux-iio, Hartmut Knaack, Lars-Peter Clausen,
Peter Meerwald-Stadler
On 15/03/17 04:45, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
> ---
>
> drivers/iio/accel/mma7455_i2c.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/iio/accel/mma7455_i2c.c b/drivers/iio/accel/mma7455_i2c.c
> index 3cab5fb4a3c4..73bf81a8ab14 100644
> --- a/drivers/iio/accel/mma7455_i2c.c
> +++ b/drivers/iio/accel/mma7455_i2c.c
> @@ -41,12 +41,20 @@ static const struct i2c_device_id mma7455_i2c_ids[] = {
> };
> MODULE_DEVICE_TABLE(i2c, mma7455_i2c_ids);
>
> +static const struct of_device_id mma7455_of_match[] = {
> + { .compatible = "fsl,mma7455" },
> + { .compatible = "fsl,mma7456" },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, mma7455_of_match);
> +
> static struct i2c_driver mma7455_i2c_driver = {
> .probe = mma7455_i2c_probe,
> .remove = mma7455_i2c_remove,
> .id_table = mma7455_i2c_ids,
> .driver = {
> .name = "mma7455-i2c",
> + .of_match_table = mma7455_of_match,
> },
> };
> module_i2c_driver(mma7455_i2c_driver);
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 15/17] iio: pressure: mpl3115: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (13 preceding siblings ...)
2017-03-15 4:45 ` [PATCH v2 14/17] iio: accel: mma7455_i2c: " Javier Martinez Canillas
@ 2017-03-15 4:45 ` Javier Martinez Canillas
2017-03-19 10:58 ` Jonathan Cameron
2017-03-15 4:45 ` [PATCH v2 16/17] iio: accel: mma7660: " Javier Martinez Canillas
2017-03-15 4:45 ` [PATCH v2 17/17] iio: gyro: itg3200: " Javier Martinez Canillas
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:45 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, linux-iio, Hartmut Knaack,
Gregor Boirie, Sanchayan Maity, Lars-Peter Clausen,
Alison Schofield, Peter Rosin, Jonathan Cameron,
Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/pressure/mpl3115.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/iio/pressure/mpl3115.c b/drivers/iio/pressure/mpl3115.c
index 525644a7442d..619b963714c7 100644
--- a/drivers/iio/pressure/mpl3115.c
+++ b/drivers/iio/pressure/mpl3115.c
@@ -321,9 +321,16 @@ static const struct i2c_device_id mpl3115_id[] = {
};
MODULE_DEVICE_TABLE(i2c, mpl3115_id);
+static const struct of_device_id mpl3115_of_match[] = {
+ { .compatible = "fsl,mpl3115" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, mpl3115_of_match);
+
static struct i2c_driver mpl3115_driver = {
.driver = {
.name = "mpl3115",
+ .of_match_table = mpl3115_of_match,
.pm = MPL3115_PM_OPS,
},
.probe = mpl3115_probe,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 15/17] iio: pressure: mpl3115: Add OF device ID table
2017-03-15 4:45 ` [PATCH v2 15/17] iio: pressure: mpl3115: " Javier Martinez Canillas
@ 2017-03-19 10:58 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:58 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: linux-iio, Hartmut Knaack, Gregor Boirie, Sanchayan Maity,
Lars-Peter Clausen, Alison Schofield, Peter Rosin,
Peter Meerwald-Stadler
On 15/03/17 04:45, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
> ---
>
> drivers/iio/pressure/mpl3115.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/pressure/mpl3115.c b/drivers/iio/pressure/mpl3115.c
> index 525644a7442d..619b963714c7 100644
> --- a/drivers/iio/pressure/mpl3115.c
> +++ b/drivers/iio/pressure/mpl3115.c
> @@ -321,9 +321,16 @@ static const struct i2c_device_id mpl3115_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, mpl3115_id);
>
> +static const struct of_device_id mpl3115_of_match[] = {
> + { .compatible = "fsl,mpl3115" },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, mpl3115_of_match);
> +
> static struct i2c_driver mpl3115_driver = {
> .driver = {
> .name = "mpl3115",
> + .of_match_table = mpl3115_of_match,
> .pm = MPL3115_PM_OPS,
> },
> .probe = mpl3115_probe,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 16/17] iio: accel: mma7660: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (14 preceding siblings ...)
2017-03-15 4:45 ` [PATCH v2 15/17] iio: pressure: mpl3115: " Javier Martinez Canillas
@ 2017-03-15 4:45 ` Javier Martinez Canillas
2017-03-19 10:58 ` Jonathan Cameron
2017-03-15 4:45 ` [PATCH v2 17/17] iio: gyro: itg3200: " Javier Martinez Canillas
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:45 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, Martin Klepplinger, linux-iio,
Hartmut Knaack, Constantin Musca, Wei Yongjun, Hans de Goede,
Lars-Peter Clausen, Jonathan Cameron, Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/accel/mma7660.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/iio/accel/mma7660.c b/drivers/iio/accel/mma7660.c
index 3a40774cca74..42fa57e41bdd 100644
--- a/drivers/iio/accel/mma7660.c
+++ b/drivers/iio/accel/mma7660.c
@@ -253,6 +253,12 @@ static const struct i2c_device_id mma7660_i2c_id[] = {
};
MODULE_DEVICE_TABLE(i2c, mma7660_i2c_id);
+static const struct of_device_id mma7660_of_match[] = {
+ { .compatible = "fsl,mma7660" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, mma7660_of_match);
+
static const struct acpi_device_id mma7660_acpi_id[] = {
{"MMA7660", 0},
{}
@@ -264,6 +270,7 @@ static struct i2c_driver mma7660_driver = {
.driver = {
.name = "mma7660",
.pm = MMA7660_PM_OPS,
+ .of_match_table = mma7660_of_match,
.acpi_match_table = ACPI_PTR(mma7660_acpi_id),
},
.probe = mma7660_probe,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 16/17] iio: accel: mma7660: Add OF device ID table
2017-03-15 4:45 ` [PATCH v2 16/17] iio: accel: mma7660: " Javier Martinez Canillas
@ 2017-03-19 10:58 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:58 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: Martin Klepplinger, linux-iio, Hartmut Knaack, Constantin Musca,
Wei Yongjun, Hans de Goede, Lars-Peter Clausen,
Peter Meerwald-Stadler
On 15/03/17 04:45, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied.
> ---
>
> drivers/iio/accel/mma7660.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/accel/mma7660.c b/drivers/iio/accel/mma7660.c
> index 3a40774cca74..42fa57e41bdd 100644
> --- a/drivers/iio/accel/mma7660.c
> +++ b/drivers/iio/accel/mma7660.c
> @@ -253,6 +253,12 @@ static const struct i2c_device_id mma7660_i2c_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, mma7660_i2c_id);
>
> +static const struct of_device_id mma7660_of_match[] = {
> + { .compatible = "fsl,mma7660" },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, mma7660_of_match);
> +
> static const struct acpi_device_id mma7660_acpi_id[] = {
> {"MMA7660", 0},
> {}
> @@ -264,6 +270,7 @@ static struct i2c_driver mma7660_driver = {
> .driver = {
> .name = "mma7660",
> .pm = MMA7660_PM_OPS,
> + .of_match_table = mma7660_of_match,
> .acpi_match_table = ACPI_PTR(mma7660_acpi_id),
> },
> .probe = mma7660_probe,
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 17/17] iio: gyro: itg3200: Add OF device ID table
2017-03-15 4:44 [PATCH v2 00/17] iio: Add OF device table to I2C drivers that are missing it Javier Martinez Canillas
` (15 preceding siblings ...)
2017-03-15 4:45 ` [PATCH v2 16/17] iio: accel: mma7660: " Javier Martinez Canillas
@ 2017-03-15 4:45 ` Javier Martinez Canillas
2017-03-19 10:59 ` Jonathan Cameron
16 siblings, 1 reply; 36+ messages in thread
From: Javier Martinez Canillas @ 2017-03-15 4:45 UTC (permalink / raw)
To: linux-kernel
Cc: Javier Martinez Canillas, linux-iio, Hartmut Knaack,
Lars-Peter Clausen, Jonathan Cameron, Peter Meerwald-Stadler
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.
But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
---
drivers/iio/gyro/itg3200_core.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/iio/gyro/itg3200_core.c b/drivers/iio/gyro/itg3200_core.c
index c102a6325bb0..cfa2db04a8ab 100644
--- a/drivers/iio/gyro/itg3200_core.c
+++ b/drivers/iio/gyro/itg3200_core.c
@@ -377,9 +377,16 @@ static const struct i2c_device_id itg3200_id[] = {
};
MODULE_DEVICE_TABLE(i2c, itg3200_id);
+static const struct of_device_id itg3200_of_match[] = {
+ { .compatible = "invensense,itg3200" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, itg3200_of_match);
+
static struct i2c_driver itg3200_driver = {
.driver = {
.name = "itg3200",
+ .of_match_table = itg3200_of_match,
.pm = &itg3200_pm_ops,
},
.id_table = itg3200_id,
--
2.9.3
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 17/17] iio: gyro: itg3200: Add OF device ID table
2017-03-15 4:45 ` [PATCH v2 17/17] iio: gyro: itg3200: " Javier Martinez Canillas
@ 2017-03-19 10:59 ` Jonathan Cameron
0 siblings, 0 replies; 36+ messages in thread
From: Jonathan Cameron @ 2017-03-19 10:59 UTC (permalink / raw)
To: Javier Martinez Canillas, linux-kernel
Cc: linux-iio, Hartmut Knaack, Lars-Peter Clausen,
Peter Meerwald-Stadler
On 15/03/17 04:45, Javier Martinez Canillas wrote:
> The driver doesn't have a struct of_device_id table but supported devices
> are registered via Device Trees. This is working on the assumption that a
> I2C device registered via OF will always match a legacy I2C device ID and
> that the MODALIAS reported will always be of the form i2c:<device>.
>
> But this could change in the future so the correct approach is to have an
> OF device ID table if the devices are registered via OF.
>
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Applied to the togreg branch of iio.git and pushed out as testing for the
autobuilders to play with it.
Thanks,
Jonathan
>
> ---
>
> drivers/iio/gyro/itg3200_core.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/gyro/itg3200_core.c b/drivers/iio/gyro/itg3200_core.c
> index c102a6325bb0..cfa2db04a8ab 100644
> --- a/drivers/iio/gyro/itg3200_core.c
> +++ b/drivers/iio/gyro/itg3200_core.c
> @@ -377,9 +377,16 @@ static const struct i2c_device_id itg3200_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, itg3200_id);
>
> +static const struct of_device_id itg3200_of_match[] = {
> + { .compatible = "invensense,itg3200" },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, itg3200_of_match);
> +
> static struct i2c_driver itg3200_driver = {
> .driver = {
> .name = "itg3200",
> + .of_match_table = itg3200_of_match,
> .pm = &itg3200_pm_ops,
> },
> .id_table = itg3200_id,
>
^ permalink raw reply [flat|nested] 36+ messages in thread