This change removes the SPI device table, adds an OF device table instead. This should also be usable for ACPI via PRP0001. This device is usually probed via device-tree, so it makes more sense to use the OF device table. Signed-off-by: Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx> --- drivers/iio/adc/ad7887.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/drivers/iio/adc/ad7887.c b/drivers/iio/adc/ad7887.c index 06f684c053a0..4f68a1b17ec8 100644 --- a/drivers/iio/adc/ad7887.c +++ b/drivers/iio/adc/ad7887.c @@ -40,6 +40,7 @@ enum ad7887_channels { /** * struct ad7887_chip_info - chip specifc information + * @name: the name of the part * @int_vref_mv: the internal reference voltage * @channels: channels specification * @num_channels: number of channels @@ -47,6 +48,7 @@ enum ad7887_channels { * @num_dual_channels: number of channels in dual mode */ struct ad7887_chip_info { + const char *name; u16 int_vref_mv; const struct iio_chan_spec *channels; unsigned int num_channels; @@ -218,6 +220,7 @@ static const struct ad7887_chip_info ad7887_chip_info_tbl[] = { * More devices added in future */ [ID_AD7887] = { + .name = "ad7887", .channels = ad7887_channels, .num_channels = ARRAY_SIZE(ad7887_channels), .dual_channels = ad7887_dual_channels, @@ -239,12 +242,17 @@ static void ad7887_reg_disable(void *data) static int ad7887_probe(struct spi_device *spi) { + const struct ad7887_chip_info *info; struct ad7887_state *st; struct iio_dev *indio_dev; bool dual_mode; uint8_t mode; int ret; + info = device_get_match_data(&spi->dev); + if (!info) + return -ENODEV; + indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); if (indio_dev == NULL) return -ENOMEM; @@ -269,13 +277,12 @@ static int ad7887_probe(struct spi_device *spi) return ret; } - st->chip_info = - &ad7887_chip_info_tbl[spi_get_device_id(spi)->driver_data]; + st->chip_info = info; spi_set_drvdata(spi, indio_dev); st->spi = spi; - indio_dev->name = spi_get_device_id(spi)->name; + indio_dev->name = st->chip_info->name; indio_dev->info = &ad7887_info; indio_dev->modes = INDIO_DIRECT_MODE; @@ -336,18 +343,18 @@ static int ad7887_probe(struct spi_device *spi) return devm_iio_device_register(&spi->dev, indio_dev); } -static const struct spi_device_id ad7887_id[] = { - {"ad7887", ID_AD7887}, - {} +static const struct of_device_id ad7887_of_match[] = { + { .compatible = "adi,ad7887", .data = &ad7887_chip_info_tbl[ID_AD7887] }, + { } }; -MODULE_DEVICE_TABLE(spi, ad7887_id); +MODULE_DEVICE_TABLE(of, ad7887_of_match); static struct spi_driver ad7887_driver = { .driver = { .name = "ad7887", + .of_match_table = ad7887_of_match, }, .probe = ad7887_probe, - .id_table = ad7887_id, }; module_spi_driver(ad7887_driver); -- 2.17.1