Hi Andy Shevchenko, Thanks for the feedback. > Subject: Re: [PATCH RFC 1/2] drivers: fwnode: Extend > device_get_match_data() to struct bus_type > > On Sun, Jul 23, 2023 at 09:37:20AM +0100, Biju Das wrote: > > Thank you for your contribution! > My comments below. > > > Extend device_get_match_data() to buses (for eg: I2C) by adding a > > callback device_get_match_data() to struct bus_type() and call this > > method as a fallback for generic fwnode based device_get_match_data(). > > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> > > You can't just throw one's SoB tag without clear understanding what's > going on here (either wrong authorship or missing Co-developed-by > or...?). Dmitry feels instead of having separate bus based match_data() like i2c_get_match_data[2] and spi_get_device_match_data[3], it is better to have a generic approach like a single API device_get_match_data() for getting match_data for OF/ACPI/I2C/SPI tables. So, he came with a proposal and shared some code here[1]. Since,I have send this patch, I put my signed -off. If this patch is accepted, then we can get rid of bus based match_data. [1] https://patchwork.kernel.org/project/linux-renesas-soc/patch/20230717131756.240645-2-biju.das.jz@xxxxxxxxxxxxxx/#25436207 [2] https://elixir.bootlin.com/linux/v6.5-rc3/source/drivers/i2c/i2c-core-base.c#L117 [3] https://elixir.bootlin.com/linux/v6.5-rc3/source/drivers/spi/spi.c#L364 Cheers, Biju > > > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> > > ... > > > const void *device_get_match_data(const struct device *dev) { > > - return fwnode_call_ptr_op(dev_fwnode(dev), device_get_match_data, > dev); > > + const void *data; > > + > > + data = fwnode_call_ptr_op(dev_fwnode(dev), device_get_match_data, > dev); > > + if (!data && dev->bus && dev->bus->get_match_data) > > + data = dev->bus->get_match_data(dev); > > + > > + return data; > > Much better looking is > > data = fwnode_call_ptr_op(dev_fwnode(dev), device_get_match_data, > dev); > if (data) > return data; OK. Cheers, Biju > > if (dev->bus && dev->bus->get_match_data) > return dev->bus->get_match_data(dev); > > return NULL; > > > } > > -- > With Best Regards, > Andy Shevchenko >