Message ID | 20220823195429.1243516-3-xu.yang_2@nxp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | typec orientation switch support via mux controller | expand |
Hi! Much better, one small thing though... 2022-08-23 at 21:54, Xu Yang wrote: > As firmware node is a more common abstract, this will convert the whole > thing to fwnode interface. > > Signed-off-by: Xu Yang <xu.yang_2@nxp.com> > > --- > Changes since v1: > - convert to use fwnode interface > > drivers/mux/core.c | 65 +++++++++++++++++++++++----------------------- > 1 file changed, 33 insertions(+), 32 deletions(-) > > diff --git a/drivers/mux/core.c b/drivers/mux/core.c > index 49bedbe6316c..e30e859efd33 100644 > --- a/drivers/mux/core.c > +++ b/drivers/mux/core.c > @@ -18,8 +18,7 @@ > #include <linux/module.h> > #include <linux/mux/consumer.h> > #include <linux/mux/driver.h> > -#include <linux/of.h> > -#include <linux/of_platform.h> > +#include <linux/property.h> > #include <linux/slab.h> > > /* > @@ -510,11 +509,11 @@ int mux_state_deselect(struct mux_state *mstate) > EXPORT_SYMBOL_GPL(mux_state_deselect); > > /* Note this function returns a reference to the mux_chip dev. */ > -static struct mux_chip *of_find_mux_chip_by_node(struct device_node *np) > +static struct mux_chip *of_find_mux_chip_by_node(struct fwnode_handle *fwnode) Please rename this function to mux_chip_find_by_fwnode() Cheers, Peter > { > struct device *dev; > > - dev = class_find_device_by_of_node(&mux_class, np); > + dev = class_find_device_by_fwnode(&mux_class, fwnode); > > return dev ? to_mux_chip(dev) : NULL; > } > @@ -531,8 +530,8 @@ static struct mux_chip *of_find_mux_chip_by_node(struct device_node *np) > static struct mux_control *mux_get(struct device *dev, const char *mux_name, > unsigned int *state) > { > - struct device_node *np = dev->of_node; > - struct of_phandle_args args; > + struct fwnode_handle *fwnode = dev_fwnode(dev); > + struct fwnode_reference_args args; > struct mux_chip *mux_chip; > unsigned int controller; > int index = 0; > @@ -540,11 +539,11 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name, > > if (mux_name) { > if (state) > - index = of_property_match_string(np, "mux-state-names", > - mux_name); > + index = fwnode_property_match_string(fwnode, > + "mux-state-names", mux_name); > else > - index = of_property_match_string(np, "mux-control-names", > - mux_name); > + index = fwnode_property_match_string(fwnode, > + "mux-control-names", mux_name); > if (index < 0) { > dev_err(dev, "mux controller '%s' not found\n", > mux_name); > @@ -553,35 +552,37 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name, > } > > if (state) > - ret = of_parse_phandle_with_args(np, > - "mux-states", "#mux-state-cells", > - index, &args); > + ret = fwnode_property_get_reference_args(fwnode, > + "mux-states", "#mux-state-cells", > + 0, index, &args); > else > - ret = of_parse_phandle_with_args(np, > - "mux-controls", "#mux-control-cells", > - index, &args); > + ret = fwnode_property_get_reference_args(fwnode, > + "mux-controls", "#mux-control-cells", > + 0, index, &args); > + > if (ret) { > - dev_err(dev, "%pOF: failed to get mux-%s %s(%i)\n", > - np, state ? "state" : "control", mux_name ?: "", index); > + dev_err(dev, "%pfw: failed to get mux-%s %s(%i)\n", > + fwnode, state ? "state" : "control", mux_name ?: "", > + index); > return ERR_PTR(ret); > } > > - mux_chip = of_find_mux_chip_by_node(args.np); > - of_node_put(args.np); > + mux_chip = of_find_mux_chip_by_node(args.fwnode); > + fwnode_handle_put(args.fwnode); > if (!mux_chip) > return ERR_PTR(-EPROBE_DEFER); > > controller = 0; > if (state) { > - if (args.args_count > 2 || args.args_count == 0 || > - (args.args_count < 2 && mux_chip->controllers > 1)) { > - dev_err(dev, "%pOF: wrong #mux-state-cells for %pOF\n", > - np, args.np); > + if (args.nargs > 2 || args.nargs == 0 || > + (args.nargs < 2 && mux_chip->controllers > 1)) { > + dev_err(dev, "%pfw: wrong #mux-state-cells for %pfw\n", > + fwnode, args.fwnode); > put_device(&mux_chip->dev); > return ERR_PTR(-EINVAL); > } > > - if (args.args_count == 2) { > + if (args.nargs == 2) { > controller = args.args[0]; > *state = args.args[1]; > } else { > @@ -589,21 +590,21 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name, > } > > } else { > - if (args.args_count > 1 || > - (!args.args_count && mux_chip->controllers > 1)) { > - dev_err(dev, "%pOF: wrong #mux-control-cells for %pOF\n", > - np, args.np); > + if (args.nargs > 1 || > + (!args.nargs && mux_chip->controllers > 1)) { > + dev_err(dev, "%pfw: wrong #mux-control-cells for %pfw\n", > + fwnode, args.fwnode); > put_device(&mux_chip->dev); > return ERR_PTR(-EINVAL); > } > > - if (args.args_count) > + if (args.nargs) > controller = args.args[0]; > } > > if (controller >= mux_chip->controllers) { > - dev_err(dev, "%pOF: bad mux controller %u specified in %pOF\n", > - np, controller, args.np); > + dev_err(dev, "%pfw: bad mux controller %u specified in %pfw\n", > + fwnode, controller, args.fwnode); > put_device(&mux_chip->dev); > return ERR_PTR(-EINVAL); > }
Hi Peter, > -----Original Message----- > From: Peter Rosin <peda@axentia.se> > Sent: Thursday, August 25, 2022 5:15 PM > To: Xu Yang <xu.yang_2@nxp.com>; heikki.krogerus@linux.intel.com; robh+dt@kernel.org; shawnguo@kernel.org > Cc: gregkh@linuxfoundation.org; linux@roeck-us.net; Jun Li <jun.li@nxp.com>; linux-usb@vger.kernel.org; dl-linux-imx > <linux-imx@nxp.com>; devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org > Subject: [EXT] Re: [PATCH v2 2/4] mux: convert to use fwnode interface > > Caution: EXT Email > > Hi! > > Much better, one small thing though... > > 2022-08-23 at 21:54, Xu Yang wrote: > > As firmware node is a more common abstract, this will convert the whole > > thing to fwnode interface. > > > > Signed-off-by: Xu Yang <xu.yang_2@nxp.com> > > > > --- > > Changes since v1: > > - convert to use fwnode interface > > > > drivers/mux/core.c | 65 +++++++++++++++++++++++----------------------- > > 1 file changed, 33 insertions(+), 32 deletions(-) > > > > diff --git a/drivers/mux/core.c b/drivers/mux/core.c > > index 49bedbe6316c..e30e859efd33 100644 > > --- a/drivers/mux/core.c > > +++ b/drivers/mux/core.c > > @@ -18,8 +18,7 @@ > > #include <linux/module.h> > > #include <linux/mux/consumer.h> > > #include <linux/mux/driver.h> > > -#include <linux/of.h> > > -#include <linux/of_platform.h> > > +#include <linux/property.h> > > #include <linux/slab.h> > > > > /* > > @@ -510,11 +509,11 @@ int mux_state_deselect(struct mux_state *mstate) > > EXPORT_SYMBOL_GPL(mux_state_deselect); > > > > /* Note this function returns a reference to the mux_chip dev. */ > > -static struct mux_chip *of_find_mux_chip_by_node(struct device_node *np) > > +static struct mux_chip *of_find_mux_chip_by_node(struct fwnode_handle *fwnode) > > Please rename this function to mux_chip_find_by_fwnode() > Thanks for your review. Will change it in next version. Best Regards, Xu Yang > Cheers, > Peter > > > { > > struct device *dev; > > > > - dev = class_find_device_by_of_node(&mux_class, np); > > + dev = class_find_device_by_fwnode(&mux_class, fwnode); > > > > return dev ? to_mux_chip(dev) : NULL; > > } > > @@ -531,8 +530,8 @@ static struct mux_chip *of_find_mux_chip_by_node(struct device_node *np) > > static struct mux_control *mux_get(struct device *dev, const char *mux_name, > > unsigned int *state) > > { > > - struct device_node *np = dev->of_node; > > - struct of_phandle_args args; > > + struct fwnode_handle *fwnode = dev_fwnode(dev); > > + struct fwnode_reference_args args; > > struct mux_chip *mux_chip; > > unsigned int controller; > > int index = 0; > > @@ -540,11 +539,11 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name, > > > > if (mux_name) { > > if (state) > > - index = of_property_match_string(np, "mux-state-names", > > - mux_name); > > + index = fwnode_property_match_string(fwnode, > > + "mux-state-names", mux_name); > > else > > - index = of_property_match_string(np, "mux-control-names", > > - mux_name); > > + index = fwnode_property_match_string(fwnode, > > + "mux-control-names", mux_name); > > if (index < 0) { > > dev_err(dev, "mux controller '%s' not found\n", > > mux_name); > > @@ -553,35 +552,37 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name, > > } > > > > if (state) > > - ret = of_parse_phandle_with_args(np, > > - "mux-states", "#mux-state-cells", > > - index, &args); > > + ret = fwnode_property_get_reference_args(fwnode, > > + "mux-states", "#mux-state-cells", > > + 0, index, &args); > > else > > - ret = of_parse_phandle_with_args(np, > > - "mux-controls", "#mux-control-cells", > > - index, &args); > > + ret = fwnode_property_get_reference_args(fwnode, > > + "mux-controls", "#mux-control-cells", > > + 0, index, &args); > > + > > if (ret) { > > - dev_err(dev, "%pOF: failed to get mux-%s %s(%i)\n", > > - np, state ? "state" : "control", mux_name ?: "", index); > > + dev_err(dev, "%pfw: failed to get mux-%s %s(%i)\n", > > + fwnode, state ? "state" : "control", mux_name ?: "", > > + index); > > return ERR_PTR(ret); > > } > > > > - mux_chip = of_find_mux_chip_by_node(args.np); > > - of_node_put(args.np); > > + mux_chip = of_find_mux_chip_by_node(args.fwnode); > > + fwnode_handle_put(args.fwnode); > > if (!mux_chip) > > return ERR_PTR(-EPROBE_DEFER); > > > > controller = 0; > > if (state) { > > - if (args.args_count > 2 || args.args_count == 0 || > > - (args.args_count < 2 && mux_chip->controllers > 1)) { > > - dev_err(dev, "%pOF: wrong #mux-state-cells for %pOF\n", > > - np, args.np); > > + if (args.nargs > 2 || args.nargs == 0 || > > + (args.nargs < 2 && mux_chip->controllers > 1)) { > > + dev_err(dev, "%pfw: wrong #mux-state-cells for %pfw\n", > > + fwnode, args.fwnode); > > put_device(&mux_chip->dev); > > return ERR_PTR(-EINVAL); > > } > > > > - if (args.args_count == 2) { > > + if (args.nargs == 2) { > > controller = args.args[0]; > > *state = args.args[1]; > > } else { > > @@ -589,21 +590,21 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name, > > } > > > > } else { > > - if (args.args_count > 1 || > > - (!args.args_count && mux_chip->controllers > 1)) { > > - dev_err(dev, "%pOF: wrong #mux-control-cells for %pOF\n", > > - np, args.np); > > + if (args.nargs > 1 || > > + (!args.nargs && mux_chip->controllers > 1)) { > > + dev_err(dev, "%pfw: wrong #mux-control-cells for %pfw\n", > > + fwnode, args.fwnode); > > put_device(&mux_chip->dev); > > return ERR_PTR(-EINVAL); > > } > > > > - if (args.args_count) > > + if (args.nargs) > > controller = args.args[0]; > > } > > > > if (controller >= mux_chip->controllers) { > > - dev_err(dev, "%pOF: bad mux controller %u specified in %pOF\n", > > - np, controller, args.np); > > + dev_err(dev, "%pfw: bad mux controller %u specified in %pfw\n", > > + fwnode, controller, args.fwnode); > > put_device(&mux_chip->dev); > > return ERR_PTR(-EINVAL); > > }
diff --git a/drivers/mux/core.c b/drivers/mux/core.c index 49bedbe6316c..e30e859efd33 100644 --- a/drivers/mux/core.c +++ b/drivers/mux/core.c @@ -18,8 +18,7 @@ #include <linux/module.h> #include <linux/mux/consumer.h> #include <linux/mux/driver.h> -#include <linux/of.h> -#include <linux/of_platform.h> +#include <linux/property.h> #include <linux/slab.h> /* @@ -510,11 +509,11 @@ int mux_state_deselect(struct mux_state *mstate) EXPORT_SYMBOL_GPL(mux_state_deselect); /* Note this function returns a reference to the mux_chip dev. */ -static struct mux_chip *of_find_mux_chip_by_node(struct device_node *np) +static struct mux_chip *of_find_mux_chip_by_node(struct fwnode_handle *fwnode) { struct device *dev; - dev = class_find_device_by_of_node(&mux_class, np); + dev = class_find_device_by_fwnode(&mux_class, fwnode); return dev ? to_mux_chip(dev) : NULL; } @@ -531,8 +530,8 @@ static struct mux_chip *of_find_mux_chip_by_node(struct device_node *np) static struct mux_control *mux_get(struct device *dev, const char *mux_name, unsigned int *state) { - struct device_node *np = dev->of_node; - struct of_phandle_args args; + struct fwnode_handle *fwnode = dev_fwnode(dev); + struct fwnode_reference_args args; struct mux_chip *mux_chip; unsigned int controller; int index = 0; @@ -540,11 +539,11 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name, if (mux_name) { if (state) - index = of_property_match_string(np, "mux-state-names", - mux_name); + index = fwnode_property_match_string(fwnode, + "mux-state-names", mux_name); else - index = of_property_match_string(np, "mux-control-names", - mux_name); + index = fwnode_property_match_string(fwnode, + "mux-control-names", mux_name); if (index < 0) { dev_err(dev, "mux controller '%s' not found\n", mux_name); @@ -553,35 +552,37 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name, } if (state) - ret = of_parse_phandle_with_args(np, - "mux-states", "#mux-state-cells", - index, &args); + ret = fwnode_property_get_reference_args(fwnode, + "mux-states", "#mux-state-cells", + 0, index, &args); else - ret = of_parse_phandle_with_args(np, - "mux-controls", "#mux-control-cells", - index, &args); + ret = fwnode_property_get_reference_args(fwnode, + "mux-controls", "#mux-control-cells", + 0, index, &args); + if (ret) { - dev_err(dev, "%pOF: failed to get mux-%s %s(%i)\n", - np, state ? "state" : "control", mux_name ?: "", index); + dev_err(dev, "%pfw: failed to get mux-%s %s(%i)\n", + fwnode, state ? "state" : "control", mux_name ?: "", + index); return ERR_PTR(ret); } - mux_chip = of_find_mux_chip_by_node(args.np); - of_node_put(args.np); + mux_chip = of_find_mux_chip_by_node(args.fwnode); + fwnode_handle_put(args.fwnode); if (!mux_chip) return ERR_PTR(-EPROBE_DEFER); controller = 0; if (state) { - if (args.args_count > 2 || args.args_count == 0 || - (args.args_count < 2 && mux_chip->controllers > 1)) { - dev_err(dev, "%pOF: wrong #mux-state-cells for %pOF\n", - np, args.np); + if (args.nargs > 2 || args.nargs == 0 || + (args.nargs < 2 && mux_chip->controllers > 1)) { + dev_err(dev, "%pfw: wrong #mux-state-cells for %pfw\n", + fwnode, args.fwnode); put_device(&mux_chip->dev); return ERR_PTR(-EINVAL); } - if (args.args_count == 2) { + if (args.nargs == 2) { controller = args.args[0]; *state = args.args[1]; } else { @@ -589,21 +590,21 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name, } } else { - if (args.args_count > 1 || - (!args.args_count && mux_chip->controllers > 1)) { - dev_err(dev, "%pOF: wrong #mux-control-cells for %pOF\n", - np, args.np); + if (args.nargs > 1 || + (!args.nargs && mux_chip->controllers > 1)) { + dev_err(dev, "%pfw: wrong #mux-control-cells for %pfw\n", + fwnode, args.fwnode); put_device(&mux_chip->dev); return ERR_PTR(-EINVAL); } - if (args.args_count) + if (args.nargs) controller = args.args[0]; } if (controller >= mux_chip->controllers) { - dev_err(dev, "%pOF: bad mux controller %u specified in %pOF\n", - np, controller, args.np); + dev_err(dev, "%pfw: bad mux controller %u specified in %pfw\n", + fwnode, controller, args.fwnode); put_device(&mux_chip->dev); return ERR_PTR(-EINVAL); }
As firmware node is a more common abstract, this will convert the whole thing to fwnode interface. Signed-off-by: Xu Yang <xu.yang_2@nxp.com> --- Changes since v1: - convert to use fwnode interface drivers/mux/core.c | 65 +++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 32 deletions(-)