Re: [PATCH 1/3] iio: st_sensors: match sensors using ACPI handle
From: Jonathan Cameron
Date: Sun Nov 27 2016 - 06:22:08 EST
On 24/11/16 05:33, Shrirang Bagul wrote:
> Add support to match st sensors using information passed from ACPI DST
> tables.
>
> Signed-off-by: Shrirang Bagul <shrirang.bagul@xxxxxxxxxxxxx>
Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders
to play with it.
Presumably at somepoint this will need extending to cover the spi parts, but we
can do that when it is relevant.
Thanks,
Jonathan
> ---
> drivers/iio/common/st_sensors/st_sensors_i2c.c | 20 ++++++++++++++++++++
> include/linux/iio/common/st_sensors_i2c.h | 9 +++++++++
> 2 files changed, 29 insertions(+)
>
> diff --git a/drivers/iio/common/st_sensors/st_sensors_i2c.c b/drivers/iio/common/st_sensors/st_sensors_i2c.c
> index b43aa36..c83df4d 100644
> --- a/drivers/iio/common/st_sensors/st_sensors_i2c.c
> +++ b/drivers/iio/common/st_sensors/st_sensors_i2c.c
> @@ -13,6 +13,7 @@
> #include <linux/slab.h>
> #include <linux/iio/iio.h>
> #include <linux/of_device.h>
> +#include <linux/acpi.h>
>
> #include <linux/iio/common/st_sensors_i2c.h>
>
> @@ -107,6 +108,25 @@ void st_sensors_of_i2c_probe(struct i2c_client *client,
> EXPORT_SYMBOL(st_sensors_of_i2c_probe);
> #endif
>
> +#ifdef CONFIG_ACPI
> +int st_sensors_match_acpi_device(struct device *dev)
> +{
> + const struct acpi_device_id *acpi_id;
> + kernel_ulong_t driver_data = 0;
> +
> + if (ACPI_HANDLE(dev)) {
> + acpi_id = acpi_match_device(dev->driver->acpi_match_table, dev);
> + if (!acpi_id) {
> + dev_err(dev, "No driver data\n");
> + return -EINVAL;
> + }
> + driver_data = acpi_id->driver_data;
> + }
> + return driver_data;
> +}
> +EXPORT_SYMBOL(st_sensors_match_acpi_device);
> +#endif
> +
> MODULE_AUTHOR("Denis Ciocca <denis.ciocca@xxxxxx>");
> MODULE_DESCRIPTION("STMicroelectronics ST-sensors i2c driver");
> MODULE_LICENSE("GPL v2");
> diff --git a/include/linux/iio/common/st_sensors_i2c.h b/include/linux/iio/common/st_sensors_i2c.h
> index 1796af0..254de3c 100644
> --- a/include/linux/iio/common/st_sensors_i2c.h
> +++ b/include/linux/iio/common/st_sensors_i2c.h
> @@ -28,4 +28,13 @@ static inline void st_sensors_of_i2c_probe(struct i2c_client *client,
> }
> #endif
>
> +#ifdef CONFIG_ACPI
> +int st_sensors_match_acpi_device(struct device *dev);
> +#else
> +static inline int st_sensors_match_acpi_device(struct device *dev)
> +{
> + return -ENODEV;
> +}
> +#endif
> +
> #endif /* ST_SENSORS_I2C_H */
>