Message ID | 20180423213805.12591-3-javier@emutex.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Apr 24, 2018 at 12:38 AM, Javier Arteaga <javier@emutex.com> wrote: > From: Nicola Lunghi <nicola.lunghi@emutex.com> > > ACPI _HID AANT1280 matches an ADC124S101 present on E3940 SKUs of the UP > Squared board. > > Add it to the driver. > + if (ACPI_COMPANION(&spi->dev)) { > + const struct acpi_device_id *ad_id; > + > + ad_id = acpi_match_device(spi->dev.driver->acpi_match_table, > + &spi->dev); > + if (!ad_id) > + return -ENODEV; > + > + config = ad_id->driver_data; There is a new API to get it by one call. https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git/commit/?id=b283f157611f129f5bbbf7d06f5af860d76797fd > + } else { > + config = spi_get_device_id(spi)->driver_data; > + }
Hi Andy, On Tue, Apr 24, 2018 at 01:08:31AM +0300, Andy Shevchenko wrote: > > + if (ACPI_COMPANION(&spi->dev)) { > > > + const struct acpi_device_id *ad_id; > > + > > + ad_id = acpi_match_device(spi->dev.driver->acpi_match_table, > > + &spi->dev); > > + if (!ad_id) > > + return -ENODEV; > > + > > + config = ad_id->driver_data; > > There is a new API to get it by one call. > https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git/commit/?id=b283f157611f129f5bbbf7d06f5af860d76797fd That looks much cleaner. Will do for a v3. Thank you! -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/iio/adc/ti-adc128s052.c b/drivers/iio/adc/ti-adc128s052.c index e6716c326c5e..bc5096e98900 100644 --- a/drivers/iio/adc/ti-adc128s052.c +++ b/drivers/iio/adc/ti-adc128s052.c @@ -12,6 +12,7 @@ * published by the Free Software Foundation. */ +#include <linux/acpi.h> #include <linux/err.h> #include <linux/spi/spi.h> #include <linux/module.h> @@ -136,9 +137,22 @@ static int adc128_probe(struct spi_device *spi) { struct iio_dev *indio_dev; struct adc128 *adc; - int config = spi_get_device_id(spi)->driver_data; + int config; int ret; + if (ACPI_COMPANION(&spi->dev)) { + const struct acpi_device_id *ad_id; + + ad_id = acpi_match_device(spi->dev.driver->acpi_match_table, + &spi->dev); + if (!ad_id) + return -ENODEV; + + config = ad_id->driver_data; + } else { + config = spi_get_device_id(spi)->driver_data; + } + indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adc)); if (!indio_dev) return -ENOMEM; @@ -207,10 +221,19 @@ static const struct spi_device_id adc128_id[] = { }; MODULE_DEVICE_TABLE(spi, adc128_id); +#ifdef CONFIG_ACPI +static const struct acpi_device_id adc128_acpi_match[] = { + { "AANT1280", 2 }, /* ADC124S021 compatible ACPI ID */ + { } +}; +MODULE_DEVICE_TABLE(acpi, adc128_acpi_match); +#endif + static struct spi_driver adc128_driver = { .driver = { .name = "adc128s052", .of_match_table = of_match_ptr(adc128_of_match), + .acpi_match_table = ACPI_PTR(adc128_acpi_match), }, .probe = adc128_probe, .remove = adc128_remove,