diff mbox series

[2/2] hwmon: (ad7418) Add device tree probing

Message ID 20190128210637.22323-2-linus.walleij@linaro.org (mailing list archive)
State Accepted
Headers show
Series [1/2] hwmon: (ad741x) Add DT bindings for Analog Devices AD741x | expand

Commit Message

Linus Walleij Jan. 28, 2019, 9:06 p.m. UTC
This adds device tree probing for the AD7418 hwmon sensor.
When device tree is not enabled, stub functions will kick
in.

Tested on the Gateway Cambria GW2358-4.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/hwmon/ad7418.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

Comments

Guenter Roeck Feb. 25, 2019, 2:36 p.m. UTC | #1
On Mon, Jan 28, 2019 at 10:06:37PM +0100, Linus Walleij wrote:
> This adds device tree probing for the AD7418 hwmon sensor.
> When device tree is not enabled, stub functions will kick
> in.
> 
> Tested on the Gateway Cambria GW2358-4.
> 
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

Applied to hwmon-next.

Thanks,
Guenter

> ---
>  drivers/hwmon/ad7418.c | 14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hwmon/ad7418.c b/drivers/hwmon/ad7418.c
> index 76f0a5c01e8a..ec0f5d8f18c3 100644
> --- a/drivers/hwmon/ad7418.c
> +++ b/drivers/hwmon/ad7418.c
> @@ -19,6 +19,7 @@
>  #include <linux/hwmon-sysfs.h>
>  #include <linux/err.h>
>  #include <linux/mutex.h>
> +#include <linux/of_device.h>
>  #include <linux/delay.h>
>  #include <linux/slab.h>
>  
> @@ -220,7 +221,10 @@ static int ad7418_probe(struct i2c_client *client,
>  
>  	mutex_init(&data->lock);
>  	data->client = client;
> -	data->type = id->driver_data;
> +	if (dev->of_node)
> +		data->type = (enum chips)of_device_get_match_data(dev);
> +	else
> +		data->type = id->driver_data;
>  
>  	switch (data->type) {
>  	case ad7416:
> @@ -258,9 +262,17 @@ static const struct i2c_device_id ad7418_id[] = {
>  };
>  MODULE_DEVICE_TABLE(i2c, ad7418_id);
>  
> +static const struct of_device_id ad7418_dt_ids[] = {
> +	{ .compatible = "adi,ad7416", .data = (void *)ad7416, },
> +	{ .compatible = "adi,ad7417", .data = (void *)ad7417, },
> +	{ .compatible = "adi,ad7418", .data = (void *)ad7418, },
> +};
> +MODULE_DEVICE_TABLE(of, ad7418_dt_ids);
> +
>  static struct i2c_driver ad7418_driver = {
>  	.driver = {
>  		.name	= "ad7418",
> +		.of_match_table = ad7418_dt_ids,
>  	},
>  	.probe		= ad7418_probe,
>  	.id_table	= ad7418_id,
diff mbox series

Patch

diff --git a/drivers/hwmon/ad7418.c b/drivers/hwmon/ad7418.c
index 76f0a5c01e8a..ec0f5d8f18c3 100644
--- a/drivers/hwmon/ad7418.c
+++ b/drivers/hwmon/ad7418.c
@@ -19,6 +19,7 @@ 
 #include <linux/hwmon-sysfs.h>
 #include <linux/err.h>
 #include <linux/mutex.h>
+#include <linux/of_device.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
 
@@ -220,7 +221,10 @@  static int ad7418_probe(struct i2c_client *client,
 
 	mutex_init(&data->lock);
 	data->client = client;
-	data->type = id->driver_data;
+	if (dev->of_node)
+		data->type = (enum chips)of_device_get_match_data(dev);
+	else
+		data->type = id->driver_data;
 
 	switch (data->type) {
 	case ad7416:
@@ -258,9 +262,17 @@  static const struct i2c_device_id ad7418_id[] = {
 };
 MODULE_DEVICE_TABLE(i2c, ad7418_id);
 
+static const struct of_device_id ad7418_dt_ids[] = {
+	{ .compatible = "adi,ad7416", .data = (void *)ad7416, },
+	{ .compatible = "adi,ad7417", .data = (void *)ad7417, },
+	{ .compatible = "adi,ad7418", .data = (void *)ad7418, },
+};
+MODULE_DEVICE_TABLE(of, ad7418_dt_ids);
+
 static struct i2c_driver ad7418_driver = {
 	.driver = {
 		.name	= "ad7418",
+		.of_match_table = ad7418_dt_ids,
 	},
 	.probe		= ad7418_probe,
 	.id_table	= ad7418_id,