mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 13:53:33 +00:00
iio: imu: adis16475: add spi_device_id table
This prevents the warning message "SPI driver has no spi_device_id for..."
when registering the driver. More importantly, it makes sure that
module autoloading works as spi relies on spi: modaliases and not of.
While at it, move the of_device_id table to it's natural place.
Fixes: fff7352bf7
("iio: imu: Add support for adis16475")
Signed-off-by: Nuno Sa <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20231102125258.3284830-1-nuno.sa@analog.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
3b8157ec45
commit
ee4d79055a
1 changed files with 78 additions and 51 deletions
|
@ -1406,6 +1406,59 @@ static int adis16475_config_irq_pin(struct adis16475 *st)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int adis16475_probe(struct spi_device *spi)
|
||||||
|
{
|
||||||
|
struct iio_dev *indio_dev;
|
||||||
|
struct adis16475 *st;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
|
||||||
|
if (!indio_dev)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
st = iio_priv(indio_dev);
|
||||||
|
|
||||||
|
st->info = spi_get_device_match_data(spi);
|
||||||
|
if (!st->info)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
ret = adis_init(&st->adis, indio_dev, spi, &st->info->adis_data);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
indio_dev->name = st->info->name;
|
||||||
|
indio_dev->channels = st->info->channels;
|
||||||
|
indio_dev->num_channels = st->info->num_channels;
|
||||||
|
indio_dev->info = &adis16475_info;
|
||||||
|
indio_dev->modes = INDIO_DIRECT_MODE;
|
||||||
|
|
||||||
|
ret = __adis_initial_startup(&st->adis);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = adis16475_config_irq_pin(st);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = adis16475_config_sync_mode(st);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = devm_adis_setup_buffer_and_trigger(&st->adis, indio_dev,
|
||||||
|
adis16475_trigger_handler);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = devm_iio_device_register(&spi->dev, indio_dev);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
adis16475_debugfs_init(indio_dev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct of_device_id adis16475_of_match[] = {
|
static const struct of_device_id adis16475_of_match[] = {
|
||||||
{ .compatible = "adi,adis16470",
|
{ .compatible = "adi,adis16470",
|
||||||
.data = &adis16475_chip_info[ADIS16470] },
|
.data = &adis16475_chip_info[ADIS16470] },
|
||||||
|
@ -1451,57 +1504,30 @@ static const struct of_device_id adis16475_of_match[] = {
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, adis16475_of_match);
|
MODULE_DEVICE_TABLE(of, adis16475_of_match);
|
||||||
|
|
||||||
static int adis16475_probe(struct spi_device *spi)
|
static const struct spi_device_id adis16475_ids[] = {
|
||||||
{
|
{ "adis16470", (kernel_ulong_t)&adis16475_chip_info[ADIS16470] },
|
||||||
struct iio_dev *indio_dev;
|
{ "adis16475-1", (kernel_ulong_t)&adis16475_chip_info[ADIS16475_1] },
|
||||||
struct adis16475 *st;
|
{ "adis16475-2", (kernel_ulong_t)&adis16475_chip_info[ADIS16475_2] },
|
||||||
int ret;
|
{ "adis16475-3", (kernel_ulong_t)&adis16475_chip_info[ADIS16475_3] },
|
||||||
|
{ "adis16477-1", (kernel_ulong_t)&adis16475_chip_info[ADIS16477_1] },
|
||||||
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
|
{ "adis16477-2", (kernel_ulong_t)&adis16475_chip_info[ADIS16477_2] },
|
||||||
if (!indio_dev)
|
{ "adis16477-3", (kernel_ulong_t)&adis16475_chip_info[ADIS16477_3] },
|
||||||
return -ENOMEM;
|
{ "adis16465-1", (kernel_ulong_t)&adis16475_chip_info[ADIS16465_1] },
|
||||||
|
{ "adis16465-2", (kernel_ulong_t)&adis16475_chip_info[ADIS16465_2] },
|
||||||
st = iio_priv(indio_dev);
|
{ "adis16465-3", (kernel_ulong_t)&adis16475_chip_info[ADIS16465_3] },
|
||||||
|
{ "adis16467-1", (kernel_ulong_t)&adis16475_chip_info[ADIS16467_1] },
|
||||||
st->info = device_get_match_data(&spi->dev);
|
{ "adis16467-2", (kernel_ulong_t)&adis16475_chip_info[ADIS16467_2] },
|
||||||
if (!st->info)
|
{ "adis16467-3", (kernel_ulong_t)&adis16475_chip_info[ADIS16467_3] },
|
||||||
return -EINVAL;
|
{ "adis16500", (kernel_ulong_t)&adis16475_chip_info[ADIS16500] },
|
||||||
|
{ "adis16505-1", (kernel_ulong_t)&adis16475_chip_info[ADIS16505_1] },
|
||||||
ret = adis_init(&st->adis, indio_dev, spi, &st->info->adis_data);
|
{ "adis16505-2", (kernel_ulong_t)&adis16475_chip_info[ADIS16505_2] },
|
||||||
if (ret)
|
{ "adis16505-3", (kernel_ulong_t)&adis16475_chip_info[ADIS16505_3] },
|
||||||
return ret;
|
{ "adis16507-1", (kernel_ulong_t)&adis16475_chip_info[ADIS16507_1] },
|
||||||
|
{ "adis16507-2", (kernel_ulong_t)&adis16475_chip_info[ADIS16507_2] },
|
||||||
indio_dev->name = st->info->name;
|
{ "adis16507-3", (kernel_ulong_t)&adis16475_chip_info[ADIS16507_3] },
|
||||||
indio_dev->channels = st->info->channels;
|
{ }
|
||||||
indio_dev->num_channels = st->info->num_channels;
|
};
|
||||||
indio_dev->info = &adis16475_info;
|
MODULE_DEVICE_TABLE(spi, adis16475_ids);
|
||||||
indio_dev->modes = INDIO_DIRECT_MODE;
|
|
||||||
|
|
||||||
ret = __adis_initial_startup(&st->adis);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = adis16475_config_irq_pin(st);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = adis16475_config_sync_mode(st);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = devm_adis_setup_buffer_and_trigger(&st->adis, indio_dev,
|
|
||||||
adis16475_trigger_handler);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = devm_iio_device_register(&spi->dev, indio_dev);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
adis16475_debugfs_init(indio_dev);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct spi_driver adis16475_driver = {
|
static struct spi_driver adis16475_driver = {
|
||||||
.driver = {
|
.driver = {
|
||||||
|
@ -1509,6 +1535,7 @@ static struct spi_driver adis16475_driver = {
|
||||||
.of_match_table = adis16475_of_match,
|
.of_match_table = adis16475_of_match,
|
||||||
},
|
},
|
||||||
.probe = adis16475_probe,
|
.probe = adis16475_probe,
|
||||||
|
.id_table = adis16475_ids,
|
||||||
};
|
};
|
||||||
module_spi_driver(adis16475_driver);
|
module_spi_driver(adis16475_driver);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue