hwmon: (ad7418) Add device tree probing
authorLinus Walleij <linus.walleij@linaro.org>
Mon, 28 Jan 2019 21:06:37 +0000 (22:06 +0100)
committerGuenter Roeck <linux@roeck-us.net>
Mon, 25 Feb 2019 17:06:00 +0000 (09:06 -0800)
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>
[groeck: Added missing {} to terminate ad7418_dt_ids]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/ad7418.c

index a20d5eb..4aeba29 100644 (file)
@@ -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>
 
@@ -253,7 +254,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:
@@ -291,9 +295,18 @@ 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,