On Sat, Apr 27, 2024 at 08:57:43PM +0100, Conor Dooley wrote: > > static const struct of_device_id lan865x_dt_ids[] = { > > - { .compatible = "microchip,lan8651", "microchip,lan8650" }, > > Huh, that's very strange. I don't see a single instance in the tree of a > of_device_id struct like this with two compatibles like this (at least > with a search of `rg "\.compatible.*\", \"" drivers/`. > > Given the fallbacks in the binding, only "microchip,lan8650" actually > needs to be here. > > > + { .compatible = "microchip,lan865x", "microchip,lan8650" }, > > { /* Sentinel */ } > > }; > > MODULE_DEVICE_TABLE(of, lan865x_dt_ids); > > > > Along with compatible = "microchip,lan865x" in the dts > > Just to be clear, the compatible w/ an x is unacceptable due to the > wildcard and the binding should stay as-is. Whatever probing bugs > the code has need to be resolved instead :) > All right, so when I change to @@ -364,7 +364,7 @@ static void lan865x_remove(struct spi_device *spi) } static const struct of_device_id lan865x_dt_ids[] = { - { .compatible = "microchip,lan8651", "microchip,lan8650" }, + { .compatible = "microchip,lan8650" }, { /* Sentinel */ } }; MODULE_DEVICE_TABLE(of, lan865x_dt_ids); I still get the output [ 0.124266] SPI driver lan865x has no spi_device_id for microchip,lan8650 But the driver does probe and I get a network interface. If no one beats me to it I'll single step the probe tomorrow. R