On Thu 03 Feb 08:47 PST 2022, Vladimir Zapolskiy wrote: > The change is wanted to postpone initialization of busses on CCI controller > by cci_init() and cci_reset() till adapters are registered, the later is > needed for adding I2C bus devices and get correspondent vbus regulators. > > Signed-off-by: Vladimir Zapolskiy <vladimir.zapolskiy@xxxxxxxxxx> > --- > drivers/i2c/busses/i2c-qcom-cci.c | 17 ++++++++--------- > 1 file changed, 8 insertions(+), 9 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-qcom-cci.c b/drivers/i2c/busses/i2c-qcom-cci.c > index cf54f1cb4c57..eebf9603d3d1 100644 > --- a/drivers/i2c/busses/i2c-qcom-cci.c > +++ b/drivers/i2c/busses/i2c-qcom-cci.c > @@ -630,14 +630,6 @@ static int cci_probe(struct platform_device *pdev) > val = readl(cci->base + CCI_HW_VERSION); > dev_dbg(dev, "CCI HW version = 0x%08x", val); > > - ret = cci_reset(cci); > - if (ret < 0) > - goto error; > - > - ret = cci_init(cci); > - if (ret < 0) > - goto error; > - > for (i = 0; i < cci->data->num_masters; i++) { > if (!cci->master[i].cci) > continue; > @@ -649,6 +641,14 @@ static int cci_probe(struct platform_device *pdev) > } > } > > + ret = cci_reset(cci); i2c_add_adapter() will register and probe child devices, which might want to access the bus in their probe functions. Don't you break that by initializing the master after the children? Regards, Bjorn > + if (ret < 0) > + goto error_i2c; > + > + ret = cci_init(cci); > + if (ret < 0) > + goto error_i2c; > + > pm_runtime_set_autosuspend_delay(dev, MSEC_PER_SEC); > pm_runtime_use_autosuspend(dev); > pm_runtime_set_active(dev); > @@ -663,7 +663,6 @@ static int cci_probe(struct platform_device *pdev) > of_node_put(cci->master[i].adap.dev.of_node); > } > } > -error: > disable_irq(cci->irq); > disable_clocks: > cci_disable_clocks(cci); > -- > 2.33.0 >