On Sat, 2017-07-29 at 01:20 +0300, Andy Shevchenko wrote: > The driver doesn't have a struct of_device_id table but supported > devices > are registered via Device Trees. This is working on the assumption > that a > SPI device registered via OF will always match a legacy SPI device ID > and > that the MODALIAS reported will always be of the form spi:<device>. > > There is an ACPI method to enumerate such devices via specific ACPI ID > and use of compatible strings. It will not work for the drivers which > have no OF match ID table present. > > Besides this could change in the future so the correct approach is to > have an OF device ID table if the devices are registered via OF. > Btw, this patch can be applied independently. For ACPI case both of them are needed, and order doesn't matter. > Tested-by: David Lechner <david@xxxxxxxxxxxxxx> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > drivers/iio/adc/ti-ads7950.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti- > ads7950.c > index ab669af291b7..a376190914ad 100644 > --- a/drivers/iio/adc/ti-ads7950.c > +++ b/drivers/iio/adc/ti-ads7950.c > @@ -491,9 +491,27 @@ static const struct spi_device_id ti_ads7950_id[] > = { > }; > MODULE_DEVICE_TABLE(spi, ti_ads7950_id); > > +static const struct of_device_id ads7950_of_table[] = { > + { .compatible = "ti,ads7950", .data = > &ti_ads7950_chip_info[TI_ADS7950] }, > + { .compatible = "ti,ads7951", .data = > &ti_ads7950_chip_info[TI_ADS7951] }, > + { .compatible = "ti,ads7952", .data = > &ti_ads7950_chip_info[TI_ADS7952] }, > + { .compatible = "ti,ads7953", .data = > &ti_ads7950_chip_info[TI_ADS7953] }, > + { .compatible = "ti,ads7954", .data = > &ti_ads7950_chip_info[TI_ADS7954] }, > + { .compatible = "ti,ads7955", .data = > &ti_ads7950_chip_info[TI_ADS7955] }, > + { .compatible = "ti,ads7956", .data = > &ti_ads7950_chip_info[TI_ADS7956] }, > + { .compatible = "ti,ads7957", .data = > &ti_ads7950_chip_info[TI_ADS7957] }, > + { .compatible = "ti,ads7958", .data = > &ti_ads7950_chip_info[TI_ADS7958] }, > + { .compatible = "ti,ads7959", .data = > &ti_ads7950_chip_info[TI_ADS7959] }, > + { .compatible = "ti,ads7960", .data = > &ti_ads7950_chip_info[TI_ADS7960] }, > + { .compatible = "ti,ads7961", .data = > &ti_ads7950_chip_info[TI_ADS7961] }, > + { }, > +}; > +MODULE_DEVICE_TABLE(of, ads7950_of_table); > + > static struct spi_driver ti_ads7950_driver = { > .driver = { > .name = "ads7950", > + .of_match_table = ads7950_of_table, > }, > .probe = ti_ads7950_probe, > .remove = ti_ads7950_remove, -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html