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@xxxxxxx> --- 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) { 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); } -- 2.34.1