On 10/25/2018 06:46 PM, Andy Shevchenko wrote: > On Thu, Oct 25, 2018 at 04:35:41PM +0100, Dan O'Donovan wrote: >> From: Nicola Lunghi <nicola.lunghi@xxxxxxxxxx> >> >> ACPI _HID AANT1280 matches an ADC124S101 present on E3940 SKUs of the UP >> Squared board. >> >> Add it to the driver. >> >> Signed-off-by: Nicola Lunghi <nicola.lunghi@xxxxxxxxxx> >> [javier@xxxxxxxxxx: fix up commit message and one checkpatch warning] >> Signed-off-by: Javier Arteaga <javier@xxxxxxxxxx> >> Signed-off-by: Dan O'Donovan <dan@xxxxxxxxxx> >> --- >> drivers/iio/adc/ti-adc128s052.c | 18 +++++++++++++++++- >> 1 file changed, 17 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/iio/adc/ti-adc128s052.c b/drivers/iio/adc/ti-adc128s052.c >> index e6716c3..c2d1453 100644 >> --- a/drivers/iio/adc/ti-adc128s052.c >> +++ b/drivers/iio/adc/ti-adc128s052.c >> @@ -12,10 +12,12 @@ >> * published by the Free Software Foundation. >> */ >> >> +#include <linux/acpi.h> >> #include <linux/err.h> >> #include <linux/spi/spi.h> >> #include <linux/module.h> >> #include <linux/iio/iio.h> >> +#include <linux/property.h> >> #include <linux/regulator/consumer.h> >> >> struct adc128_configuration { >> @@ -135,10 +137,15 @@ static const struct iio_info adc128_info = { >> static int adc128_probe(struct spi_device *spi) >> { >> struct iio_dev *indio_dev; >> + unsigned int config; >> struct adc128 *adc; >> - int config = spi_get_device_id(spi)->driver_data; >> int ret; >> >> + if (dev_fwnode(&spi->dev)) >> + config = (unsigned long) device_get_match_data(&spi->dev); >> + 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 +214,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 */ > > Looking how driver is organized and what ACPI can provide I would highly > recommend to look forward to PTYP field for utilization of the type of the HW. > > Maybe it would not work with published BIOSes, but would be good for the future > (in that case anybody can utilize that _HID + PTYP pair on their platforms). > Thanks Andy for your review and feedback. Your _HID + PTYP suggestion sounds interesting, but I couldn't find any information in the ACPI spec or elsewhere about how/when/where to use it. It isn't used in the UP Squared ACPI tables. Do you have any links or other information you could share about it? Thanks! >> + { } >> +}; >> +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, >> -- >> 2.7.4 >> >> >> ------ >> This email has been scanned for spam and malware by The Email Laundry. >> > ------ This email has been scanned for spam and malware by The Email Laundry.