From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from szxga04-in.huawei.com ([45.249.212.190]:9118 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751233AbeFVNpE (ORCPT ); Fri, 22 Jun 2018 09:45:04 -0400 Date: Fri, 22 Jun 2018 14:44:35 +0100 From: Jonathan Cameron To: Himanshu Jha CC: , , , , Subject: Re: [RFC 3/3] iio: imu: bme680: Add ACPI support Message-ID: <20180622144435.0000613b@huawei.com> In-Reply-To: <1529562877-9357-4-git-send-email-himanshujha199640@gmail.com> References: <1529562877-9357-1-git-send-email-himanshujha199640@gmail.com> <1529562877-9357-4-git-send-email-himanshujha199640@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Sender: linux-iio-owner@vger.kernel.org List-Id: linux-iio@vger.kernel.org On Thu, 21 Jun 2018 12:04:37 +0530 Himanshu Jha wrote: > Add support to probe the bme680 sensor on the i2c bus using > ACPI. > > Cc: Daniel Baluta > Signed-off-by: Himanshu Jha This looks fine. Do we know for sure that they use that ACPI ID? For these sorts of devices, it's fairly common to have entirely random ids presented. Also, I'm a little curious to know, what ACPI based device has one of these? Jonathan > --- > drivers/iio/imu/bme680/bme680_core.c | 15 +++++++++++++++ > drivers/iio/imu/bme680/bme680_i2c.c | 6 ++++++ > 2 files changed, 21 insertions(+) > > diff --git a/drivers/iio/imu/bme680/bme680_core.c b/drivers/iio/imu/bme680/bme680_core.c > index 05712de..a891b1f 100644 > --- a/drivers/iio/imu/bme680/bme680_core.c > +++ b/drivers/iio/imu/bme680/bme680_core.c > @@ -3,6 +3,7 @@ > * > * IIO core driver - I2C & SPI bus support > */ > +#include > #include > #include > #include > @@ -445,6 +446,17 @@ static int bme680_chip_init(struct bme680_data *data, bool use_spi) > return 0; > } > > +static const char *bme680_match_acpi_device(struct device *dev) > +{ > + const struct acpi_device_id *id; > + > + id = acpi_match_device(dev->driver->acpi_match_table, dev); > + if (!id) > + return NULL; > + > + return dev_name(dev); > +} > + > static const struct bme680_chip_info bme680_chip_info = { > .oversampling_temp_avail = bme680_oversampling_avail, > .num_oversampling_temp_avail = ARRAY_SIZE(bme680_oversampling_avail), > @@ -480,6 +492,9 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap, > if (ret < 0) > return ret; > > + if (!name && ACPI_HANDLE(dev)) > + name = bme680_match_acpi_device(dev); > + > indio_dev->dev.parent = dev; > indio_dev->name = name; > indio_dev->channels = bme680_channels; > diff --git a/drivers/iio/imu/bme680/bme680_i2c.c b/drivers/iio/imu/bme680/bme680_i2c.c > index 1c8223e..2807085 100644 > --- a/drivers/iio/imu/bme680/bme680_i2c.c > +++ b/drivers/iio/imu/bme680/bme680_i2c.c > @@ -3,6 +3,7 @@ > * - 0x76 if SDO is pulled to GND > * - 0x77 if SDO is pulled to VDDIO > */ > +#include > #include > #include > #include > @@ -41,6 +42,11 @@ static const struct i2c_device_id bme680_i2c_id[] = { > }; > MODULE_DEVICE_TABLE(i2c, bme680_i2c_id); > > +static const struct acpi_device_id bme680_acpi_match[] = { > + {"BME0680", 0}, > + {}, > +}; > + > static struct i2c_driver bme680_i2c_driver = { > .driver = { > .name = "bme680_i2c",