提交 d5f0da0c 编写于 作者: A Andy Shevchenko 提交者: Jonathan Cameron

iio: adc: ti-adc128s052: Switch to use spi_get_device_match_data()

The spi_get_device_match_data() helps to get driver data from the
firmware node or SPI ID table. Use it instead of open coding.

While at it, switch ID tables to provide an acrual pointers to
the configuration data.
Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20230102173450.29882-2-andriy.shevchenko@linux.intel.comSigned-off-by: NJonathan Cameron <Jonathan.Cameron@huawei.com>
上级 b7b81d1c
...@@ -139,16 +139,11 @@ static void adc128_disable_regulator(void *reg) ...@@ -139,16 +139,11 @@ static void adc128_disable_regulator(void *reg)
static int adc128_probe(struct spi_device *spi) static int adc128_probe(struct spi_device *spi)
{ {
const struct adc128_configuration *config;
struct iio_dev *indio_dev; struct iio_dev *indio_dev;
unsigned int config;
struct adc128 *adc; struct adc128 *adc;
int ret; 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)); indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adc));
if (!indio_dev) if (!indio_dev)
return -ENOMEM; return -ENOMEM;
...@@ -160,8 +155,10 @@ static int adc128_probe(struct spi_device *spi) ...@@ -160,8 +155,10 @@ static int adc128_probe(struct spi_device *spi)
indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->modes = INDIO_DIRECT_MODE;
indio_dev->info = &adc128_info; indio_dev->info = &adc128_info;
indio_dev->channels = adc128_config[config].channels; config = spi_get_device_match_data(spi);
indio_dev->num_channels = adc128_config[config].num_channels;
indio_dev->channels = config->channels;
indio_dev->num_channels = config->num_channels;
adc->reg = devm_regulator_get(&spi->dev, "vref"); adc->reg = devm_regulator_get(&spi->dev, "vref");
if (IS_ERR(adc->reg)) if (IS_ERR(adc->reg))
...@@ -181,32 +178,32 @@ static int adc128_probe(struct spi_device *spi) ...@@ -181,32 +178,32 @@ static int adc128_probe(struct spi_device *spi)
} }
static const struct of_device_id adc128_of_match[] = { static const struct of_device_id adc128_of_match[] = {
{ .compatible = "ti,adc128s052", .data = (void*)0L, }, { .compatible = "ti,adc128s052", .data = &adc128_config[0] },
{ .compatible = "ti,adc122s021", .data = (void*)1L, }, { .compatible = "ti,adc122s021", .data = &adc128_config[1] },
{ .compatible = "ti,adc122s051", .data = (void*)1L, }, { .compatible = "ti,adc122s051", .data = &adc128_config[1] },
{ .compatible = "ti,adc122s101", .data = (void*)1L, }, { .compatible = "ti,adc122s101", .data = &adc128_config[1] },
{ .compatible = "ti,adc124s021", .data = (void*)2L, }, { .compatible = "ti,adc124s021", .data = &adc128_config[2] },
{ .compatible = "ti,adc124s051", .data = (void*)2L, }, { .compatible = "ti,adc124s051", .data = &adc128_config[2] },
{ .compatible = "ti,adc124s101", .data = (void*)2L, }, { .compatible = "ti,adc124s101", .data = &adc128_config[2] },
{ /* sentinel */ }, { /* sentinel */ },
}; };
MODULE_DEVICE_TABLE(of, adc128_of_match); MODULE_DEVICE_TABLE(of, adc128_of_match);
static const struct spi_device_id adc128_id[] = { static const struct spi_device_id adc128_id[] = {
{ "adc128s052", 0 }, /* index into adc128_config */ { "adc128s052", (kernel_ulong_t)&adc128_config[0] },
{ "adc122s021", 1 }, { "adc122s021", (kernel_ulong_t)&adc128_config[1] },
{ "adc122s051", 1 }, { "adc122s051", (kernel_ulong_t)&adc128_config[1] },
{ "adc122s101", 1 }, { "adc122s101", (kernel_ulong_t)&adc128_config[1] },
{ "adc124s021", 2 }, { "adc124s021", (kernel_ulong_t)&adc128_config[2] },
{ "adc124s051", 2 }, { "adc124s051", (kernel_ulong_t)&adc128_config[2] },
{ "adc124s101", 2 }, { "adc124s101", (kernel_ulong_t)&adc128_config[2] },
{ } { }
}; };
MODULE_DEVICE_TABLE(spi, adc128_id); MODULE_DEVICE_TABLE(spi, adc128_id);
#ifdef CONFIG_ACPI #ifdef CONFIG_ACPI
static const struct acpi_device_id adc128_acpi_match[] = { static const struct acpi_device_id adc128_acpi_match[] = {
{ "AANT1280", 2 }, /* ADC124S021 compatible ACPI ID */ { "AANT1280", (kernel_ulong_t)&adc128_config[2] },
{ } { }
}; };
MODULE_DEVICE_TABLE(acpi, adc128_acpi_match); MODULE_DEVICE_TABLE(acpi, adc128_acpi_match);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册