Re: [PATCH v4 09/11] iio: amplifiers: ad8366: add device tree support

Jonathan Cameron
2026-02-14T19:00:31Z

On Tue, 10 Feb 2026 19:42:09 +0000
Rodrigo Alencar via B4 Relay <devnull+rodrigo.alencar.analog.com@kernel.org> wrote:

> From: Rodrigo Alencar <rodrigo.alencar@analog.com>
>
> Drop the enum ID, split chip info table into per-device structs
> and add of_match_table.
>
> Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
Hi Rodrigo

A few more related things to update whilst you are doing this.
In general looks good.

Thanks

Jonathan

> +
> +static const struct ad8366_info hmc1119_chip_info = {
> + .gain_min = -31750,
As below. Add
.name = hmc1119,
and similar to all of these.
> + .gain_max = 0,
> + .gain_step = -250,
> + .num_channels = 1,
> };
>
> static int ad8366_write_code(struct ad8366_state *st)
> @@ -229,7 +224,7 @@ static int ad8366_probe(struct spi_device *spi)
> return dev_err_probe(dev, ret, "Failed to get regulator\n");
>
> st->spi = spi;
> - st->info = &ad8366_infos[spi_get_device_id(spi)->driver_data];
> + st->info = spi_get_device_match_data(spi);

Also drop the remaining use of spi_get_device_id() in setting the
name. There are fun issues that arise with using spi_get_device_id() at all
when fallback compatibles are a possibility (which they always are) and
so we are much better off just having the name strings also in the
ad8366_info structures.

>
> rstc = devm_reset_control_get_optional_exclusive_deasserted(dev, NULL);
> if (IS_ERR(rstc))
> @@ -250,18 +245,29 @@ static int ad8366_probe(struct spi_device *spi)
> }
>
> static const struct spi_device_id ad8366_id[] = {
> - {"ad8366", ID_AD8366},
> - {"ada4961", ID_ADA4961},
> - {"adl5240", ID_ADL5240},
> - {"hmc792a", ID_HMC792},
> - {"hmc1119", ID_HMC1119},
> + {"ad8366", (kernel_ulong_t)&ad8366_chip_info},
Given you are touching it anyway can you add space after { and before }
Thanks!
> + {"ada4961", (kernel_ulong_t)&ada4961_chip_info},
> + {"adl5240", (kernel_ulong_t)&adl5240_chip_info},
> + {"hmc792a", (kernel_ulong_t)&hmc792_chip_info},
> + {"hmc1119", (kernel_ulong_t)&hmc1119_chip_info},
> { }
> };
> MODULE_DEVICE_TABLE(spi, ad8366_id);
>
> +static const struct of_device_id ad8366_of_match[] = {
> + { .compatible = "adi,ad8366", .data = &ad8366_chip_info },
> + { .compatible = "adi,ada4961", .data = &ada4961_chip_info },
> + { .compatible = "adi,adl5240", .data = &adl5240_chip_info },
> + { .compatible = "adi,hmc792a", .data = &hmc792_chip_info },
> + { .compatible = "adi,hmc1119", .data = &hmc1119_chip_info },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, ad8366_of_match);
> +
> static struct spi_driver ad8366_driver = {
> .driver = {
> - .name = KBUILD_MODNAME,
> + .name = KBUILD_MODNAME,
> + .of_match_table = ad8366_of_match,
> },
> .probe = ad8366_probe,
> .id_table = ad8366_id,
>