Message ID | 20241205132934.12110-1-defa.li@mediatek.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | i3c: master: Improve initialization of numbered I2C adapters | expand |
On 12/5/2024 6:59 PM, Defa Li wrote: > Add logic to initialize I2C adapters with a specific ID if available, > improving device identification and configuration. > Could you also provide how exactly to define this into DT to have numbering while registering the adapter ? Kind of sample to which can be defined in DTSI. > Signed-off-by: Defa Li <defa.li@mediatek.com> > --- > drivers/i3c/master.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c > index 42310c9a00c2..a838cdbb897b 100644 > --- a/drivers/i3c/master.c > +++ b/drivers/i3c/master.c > @@ -2486,7 +2486,7 @@ static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master) > struct i2c_adapter *adap = i3c_master_to_i2c_adapter(master); > struct i2c_dev_desc *i2cdev; > struct i2c_dev_boardinfo *i2cboardinfo; > - int ret; > + int ret, id = -ENODEV; > > adap->dev.parent = master->dev.parent; > adap->owner = master->dev.parent->driver->owner; > @@ -2497,7 +2497,14 @@ static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master) > adap->timeout = 1000; > adap->retries = 3; > > - ret = i2c_add_adapter(adap); > + if (master->dev.of_node) > + id = of_alias_get_id(master->dev.of_node, "i2c"); > + > + if (id >= 0) { > + adap->nr = id; > + ret = i2c_add_numbered_adapter(adap); > + } else > + ret = i2c_add_adapter(adap); Please provide braces for else too. > if (ret) > return ret; >
diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index 42310c9a00c2..a838cdbb897b 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -2486,7 +2486,7 @@ static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master) struct i2c_adapter *adap = i3c_master_to_i2c_adapter(master); struct i2c_dev_desc *i2cdev; struct i2c_dev_boardinfo *i2cboardinfo; - int ret; + int ret, id = -ENODEV; adap->dev.parent = master->dev.parent; adap->owner = master->dev.parent->driver->owner; @@ -2497,7 +2497,14 @@ static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master) adap->timeout = 1000; adap->retries = 3; - ret = i2c_add_adapter(adap); + if (master->dev.of_node) + id = of_alias_get_id(master->dev.of_node, "i2c"); + + if (id >= 0) { + adap->nr = id; + ret = i2c_add_numbered_adapter(adap); + } else + ret = i2c_add_adapter(adap); if (ret) return ret;
Add logic to initialize I2C adapters with a specific ID if available, improving device identification and configuration. Signed-off-by: Defa Li <defa.li@mediatek.com> --- drivers/i3c/master.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)