[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6f519f94-9185-a29b-2eff-fd6c9a36cfaf@axentia.se>
Date: Fri, 25 Mar 2022 17:48:19 +0100
From: Peter Rosin <peda@...ntia.se>
To: Clément Léger <clement.leger@...tlin.com>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Daniel Scally <djrscally@...il.com>,
Heikki Krogerus <heikki.krogerus@...ux.intel.com>,
Sakari Ailus <sakari.ailus@...ux.intel.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
"Rafael J . Wysocki" <rafael@...nel.org>,
Wolfram Sang <wsa@...nel.org>,
Rob Herring <robh+dt@...nel.org>,
Frank Rowand <frowand.list@...il.com>,
Len Brown <lenb@...nel.org>
Cc: Hans de Goede <hdegoede@...hat.com>,
Thomas Petazzoni <thomas.petazzoni@...tlin.com>,
Alexandre Belloni <alexandre.belloni@...tlin.com>,
Allan Nielsen <allan.nielsen@...rochip.com>,
linux-kernel@...r.kernel.org, linux-acpi@...r.kernel.org,
linux-i2c@...r.kernel.org, devicetree@...r.kernel.org
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 <clement.leger@...tlin.com>
> ---
> 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;
Powered by blists - more mailing lists