On Mon, Sep 28, 2020 at 05:42:42PM +0200, Ahmad Fatoum wrote: > dev->id_entry is not populated for devices probed from the device > tree. It was used unconditionally however. Use device_get_match_data > instead to support device tree probing. > > Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> > --- > drivers/led/led-pca955x.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/led/led-pca955x.c b/drivers/led/led-pca955x.c > index 27fefce8d524..f89fcbfba5ac 100644 > --- a/drivers/led/led-pca955x.c > +++ b/drivers/led/led-pca955x.c > @@ -349,8 +349,11 @@ static int led_pca955x_probe(struct device_d *dev) > struct i2c_client *client; > int err; > struct pca955x_platform_data *pdata; > + enum pca955x_type type; > > - chip = &pca955x_chipdefs[dev->id_entry->driver_data]; > + type = (enum pca955x_type)device_get_match_data(dev); In this driver we have this: static struct pca955x_chipdef pca955x_chipdefs[] = { [pca9550] = { .bits = 2, .slv_addr = /* 110000x */ 0x60, .slv_addr_shift = 1, }, [pca9551] = { .bits = 8, .slv_addr = /* 1100xxx */ 0x60, .slv_addr_shift = 3, }, [pca9552] = { .bits = 16, .slv_addr = /* 1100xxx */ 0x60, .slv_addr_shift = 3, }, [pca9553] = { .bits = 4, .slv_addr = /* 110001x */ 0x62, .slv_addr_shift = 1, }, }; So instead of putting the enum casted to void pointer into the matchdata we could put pointers to struct pca955x_chipdef directly into the matchdata. Sascha -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox