On Wed, Jan 25, 2023 at 08:53:23AM +0100, Ahmad Fatoum wrote: > For MMCs, we already support detect on both the hardware device and the > mmcX virtual device. Let's do the same for i2c, so users have the option > to do `detect i2c0` instead of `detect 30a30000.i2c@xxxxxxxxxxx`. > > `detect -a` still works as expected, as the detect callback is a no-op > if everything on the bus is already registered. > > Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> > --- > drivers/i2c/i2c.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) Applied, thanks Sascha > > diff --git a/drivers/i2c/i2c.c b/drivers/i2c/i2c.c > index 7e1cea49f3b6..4ecf7bb163e6 100644 > --- a/drivers/i2c/i2c.c > +++ b/drivers/i2c/i2c.c > @@ -472,6 +472,14 @@ int of_i2c_register_devices_by_node(struct device_node *node) > } > > static int i2c_bus_detect(struct device *dev) > +{ > + struct i2c_adapter *adap = container_of(dev, struct i2c_adapter, dev); > + > + of_i2c_register_devices(adap); > + return 0; > +} > + > +static int i2c_hw_detect(struct device *dev) > { > struct i2c_adapter *adap; > > @@ -712,6 +720,7 @@ int i2c_add_numbered_adapter(struct i2c_adapter *adapter) > } > > adapter->dev.id = adapter->nr; > + adapter->dev.detect = i2c_bus_detect; > dev_set_name(&adapter->dev, "i2c"); > > ret = register_device(&adapter->dev); > @@ -726,8 +735,8 @@ int i2c_add_numbered_adapter(struct i2c_adapter *adapter) > hw_dev = adapter->dev.parent; > if (hw_dev && dev_of_node(hw_dev)) { > if (!hw_dev->detect) > - hw_dev->detect = i2c_bus_detect; > - i2c_bus_detect(hw_dev); > + hw_dev->detect = i2c_hw_detect; > + i2c_hw_detect(hw_dev); > } > > return 0; > -- > 2.30.2 > > > -- 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 |