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 <[email protected]>
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,