Hi! On 2022-03-25 12:31, Clément Léger wrote: > In order to use i2c muxes with all types of nodes, switch to fwnode > API. The fwnode layer will allow to use this with both device_node and > software_node. > > This commits is simply replacing the use of "of_" prefixed functions > with there fwnode equivalent. > > Signed-off-by: Clément Léger <clement.leger@xxxxxxxxxxx> > --- > drivers/i2c/muxes/Kconfig | 1 - > drivers/i2c/muxes/i2c-mux-pinctrl.c | 23 ++++++++++++----------- > 2 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/drivers/i2c/muxes/Kconfig b/drivers/i2c/muxes/Kconfig > index 1708b1a82da2..d9cb15cfba3e 100644 > --- a/drivers/i2c/muxes/Kconfig > +++ b/drivers/i2c/muxes/Kconfig > @@ -77,7 +77,6 @@ config I2C_MUX_PCA954x > config I2C_MUX_PINCTRL > tristate "pinctrl-based I2C multiplexer" > depends on PINCTRL > - depends on OF || COMPILE_TEST > help > If you say yes to this option, support will be included for an I2C > multiplexer that uses the pinctrl subsystem, i.e. pin multiplexing. > diff --git a/drivers/i2c/muxes/i2c-mux-pinctrl.c b/drivers/i2c/muxes/i2c-mux-pinctrl.c > index f1bb00a11ad6..d9c0241e8790 100644 > --- a/drivers/i2c/muxes/i2c-mux-pinctrl.c > +++ b/drivers/i2c/muxes/i2c-mux-pinctrl.c > @@ -53,19 +53,20 @@ static struct i2c_adapter *i2c_mux_pinctrl_root_adapter( > > static struct i2c_adapter *i2c_mux_pinctrl_parent_adapter(struct device *dev) > { > - struct device_node *np = dev->of_node; > - struct device_node *parent_np; > + struct fwnode_handle *fwnode = dev_fwnode(dev); > + struct fwnode_handle *parent_fwnode; > struct i2c_adapter *parent; > > - parent_np = of_parse_phandle(np, "i2c-parent", 0); > - if (!parent_np) { > + parent_fwnode = fwnode_find_reference(fwnode, "i2c-parent", 0); > + if (!parent_fwnode) { > dev_err(dev, "Cannot parse i2c-parent\n"); > return ERR_PTR(-ENODEV); > } > - parent = of_find_i2c_adapter_by_node(parent_np); > - of_node_put(parent_np); > - if (!parent) > + parent = fwnode_find_i2c_adapter_by_node(parent_fwnode); > + if (!parent) { > + dev_err(dev, "Cannot find i2c-parent\n"); Why do we need to log this as an error? Cheers, Peter > return ERR_PTR(-EPROBE_DEFER); > + } > > return parent; > } > @@ -73,7 +74,7 @@ static struct i2c_adapter *i2c_mux_pinctrl_parent_adapter(struct device *dev) > static int i2c_mux_pinctrl_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > - struct device_node *np = dev->of_node; > + struct fwnode_handle *fwnode = dev_fwnode(dev); > struct i2c_mux_core *muxc; > struct i2c_mux_pinctrl *mux; > struct i2c_adapter *parent; > @@ -81,7 +82,7 @@ static int i2c_mux_pinctrl_probe(struct platform_device *pdev) > int num_names, i, ret; > const char *name; > > - num_names = of_property_count_strings(np, "pinctrl-names"); > + num_names = fwnode_property_string_array_count(fwnode, "pinctrl-names"); > if (num_names < 0) { > dev_err(dev, "Cannot parse pinctrl-names: %d\n", > num_names); > @@ -111,8 +112,8 @@ static int i2c_mux_pinctrl_probe(struct platform_device *pdev) > } > > for (i = 0; i < num_names; i++) { > - ret = of_property_read_string_index(np, "pinctrl-names", i, > - &name); > + ret = fwnode_property_read_string_index(fwnode, "pinctrl-names", i, > + &name); > if (ret < 0) { > dev_err(dev, "Cannot parse pinctrl-names: %d\n", ret); > goto err_put_parent;