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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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;



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux