Re: [PATCH v6 02/12] i3c: master: Use unified device property interface
Adrian Hunter <[email protected]> Wed, 22 Jul 2026 13:38:43 +0300
| Newsgroups | org.infradead.lists.linux-i3c,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-hwmon,org.kernel.vger.linux-kernel,org.kernel.vger.linux-tegra |
|---|---|
| Organization | Intel Finland Oy, Registered Address: c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo, Business Identity Code: 0357606 - 4, Domiciled in Helsinki |
| Message-ID | <[email protected]> |
On 21/07/2026 07:07, Akhil R wrote: > Replace all OF-specific functions with unified device property functions > as a prerequisite to support both ACPI and device tree. > > Reviewed-by: Frank Li <[email protected]> > Signed-off-by: Akhil R <[email protected]> > --- > drivers/i3c/master.c | 77 +++++++++++++++++++++----------------- > include/linux/i3c/master.h | 5 ++- > 2 files changed, 46 insertions(+), 36 deletions(-) > > diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c > index f1be38a640ca..4b3d9628bc39 100644 > --- a/drivers/i3c/master.c > +++ b/drivers/i3c/master.c > @@ -13,10 +13,12 @@ > #include <linux/dma-mapping.h> > #include <linux/err.h> > #include <linux/export.h> > +#include <linux/i2c.h> > #include <linux/kernel.h> > #include <linux/list.h> > #include <linux/of.h> > #include <linux/pm_runtime.h> > +#include <linux/property.h> > #include <linux/slab.h> > #include <linux/spinlock.h> > #include <linux/workqueue.h> > @@ -491,7 +493,7 @@ static void i3c_bus_cleanup(struct i3c_bus *i3cbus) > mutex_unlock(&i3c_core_lock); > } > > -static int i3c_bus_init(struct i3c_bus *i3cbus, struct device_node *np) > +static int i3c_bus_init(struct i3c_bus *i3cbus, struct fwnode_handle *fwnode) > { > int ret, start, end, id = -1; > > @@ -501,8 +503,8 @@ static int i3c_bus_init(struct i3c_bus *i3cbus, struct device_node *np) > i3c_bus_init_addrslots(i3cbus); > i3cbus->mode = I3C_BUS_MODE_PURE; > > - if (np) > - id = of_alias_get_id(np, "i3c"); > + if (fwnode && is_of_node(fwnode)) > + id = of_alias_get_id(to_of_node(fwnode), "i3c"); > > mutex_lock(&i3c_core_lock); > if (id >= 0) { > @@ -837,7 +839,7 @@ static void i3c_masterdev_release(struct device *dev) > WARN_ON(!list_empty(&bus->devs.i2c) || !list_empty(&bus->devs.i3c)); > i3c_bus_cleanup(bus); > > - of_node_put(dev->of_node); > + fwnode_handle_put(dev->fwnode); > } > > static const struct device_type i3c_masterdev_type = { > @@ -1044,7 +1046,7 @@ static void i3c_device_release(struct device *dev) > > WARN_ON(i3cdev->desc); > > - of_node_put(i3cdev->dev.of_node); > + fwnode_handle_put(dev->fwnode); > kfree(i3cdev); > } > > @@ -1928,7 +1930,7 @@ i3c_master_register_new_i3c_devs(struct i3c_master_controller *master) > desc->info.pid); > > if (desc->boardinfo) > - desc->dev->dev.of_node = desc->boardinfo->of_node; > + device_set_node(&desc->dev->dev, desc->boardinfo->fwnode); i3c_device_release() "puts" the node so there should be a "get" here. Should probably fix that before switching to device properties. Also seems like the of_node_get() for boardinfo for both i3c and i2c has no balancing put. Again, it would be good to get that sorted out before switching to device properties. -- linux-i3c mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-i3c