Hello, On Tue, Jun 23, 2026 at 06:07:27PM +0200, Lukas Metz wrote: > +#define DACXX6X_COMPATIBLE(of_compatible, id) \ > + { \ > + .compatible = of_compatible, \ > + .data = &dacxx6x_chip_info_table[id] \ Missing , after the value for .data. > + } > + > +static const struct of_device_id dacxx6x_of_match[] = { > + DACXX6X_COMPATIBLE("ti,dac7562", ID_DAC7562), > + DACXX6X_COMPATIBLE("ti,dac7563", ID_DAC7563), > + DACXX6X_COMPATIBLE("ti,dac8162", ID_DAC8162), > + DACXX6X_COMPATIBLE("ti,dac8163", ID_DAC8163), > + DACXX6X_COMPATIBLE("ti,dac8562", ID_DAC8562), > + DACXX6X_COMPATIBLE("ti,dac8563", ID_DAC8563), > + {} > +}; > +MODULE_DEVICE_TABLE(of, dacxx6x_of_match); > + > +static const struct spi_device_id dacxx6x_id_table[] = { > + { "dac7562", (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC7562] }, > + { "dac7563", (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC7563] }, > + { "dac8162", (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC8162] }, > + { "dac8163", (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC8163] }, > + { "dac8562", (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC8562] }, > + { "dac8563", (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC8563] }, > + {} > +}; Additional to the missing space pointed out already by others, please also use named initializers, i.e. static const struct spi_device_id dacxx6x_id_table[] = { { .name = "dac7562", .driver_data = (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC7562] }, { .name = "dac7563", .driver_data = (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC7563] }, { .name = "dac8162", .driver_data = (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC8162] }, { .name = "dac8163", .driver_data = (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC8163] }, { .name = "dac8562", .driver_data = (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC8562] }, { .name = "dac8563", .driver_data = (kernel_ulong_t)&dacxx6x_chip_info_table[ID_DAC8563] }, { } }; See https://lore.kernel.org/lkml/20260515103150.164887-2-u.kleine-koenig@baylibre.com/ for a rationale. Best regards Uwe