2022-03-25 18:03:58

by Peter Rosin

[permalink] [raw]
Subject: Re: [PATCH v3 8/9] i2c: mux: pinctrl: remove CONFIG_OF dependency and use fwnode API

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 <[email protected]>
> ---
> 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;


2022-03-31 12:17:42

by Clément Léger

[permalink] [raw]
Subject: Re: [PATCH v3 8/9] i2c: mux: pinctrl: remove CONFIG_OF dependency and use fwnode API

Le Fri, 25 Mar 2022 17:48:19 +0100,
Peter Rosin <[email protected]> a écrit :

> >
> > - 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?

Hi Peter, sorry for the late answer, your mail ended up in my SPAM
folder.

Regarding the error logging, you are right, this is not needed. I'll
remove it.

Thanks,

Clément

--
Clément Léger,
Embedded Linux and Kernel engineer at Bootlin
https://bootlin.com