[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJM55Z9RuobAMR4EaevhTPRsJe3vuruV7-_DTQYpH_w8_azkcA@mail.gmail.com>
Date: Wed, 1 May 2024 08:30:56 -0500
From: Emil Renner Berthing <emil.renner.berthing@...onical.com>
To: "Peng Fan (OSS)" <peng.fan@....nxp.com>, Linus Walleij <linus.walleij@...aro.org>,
Thierry Reding <thierry.reding@...il.com>, Jonathan Hunter <jonathanh@...dia.com>,
Dvorkin Dmitry <dvorkin@...bo.com>, Wells Lu <wellslutw@...il.com>,
Maxime Coquelin <mcoquelin.stm32@...il.com>, Alexandre Torgue <alexandre.torgue@...s.st.com>,
Emil Renner Berthing <kernel@...il.dk>, Jianlong Huang <jianlong.huang@...rfivetech.com>,
Hal Feng <hal.feng@...rfivetech.com>, Orson Zhai <orsonzhai@...il.com>,
Baolin Wang <baolin.wang@...ux.alibaba.com>, Chunyan Zhang <zhang.lyra@...il.com>,
Viresh Kumar <vireshk@...nel.org>, Shiraz Hashim <shiraz.linux.kernel@...il.com>, soc@...nel.org,
Krzysztof Kozlowski <krzk@...nel.org>, Sylwester Nawrocki <s.nawrocki@...sung.com>,
Alim Akhtar <alim.akhtar@...sung.com>, Geert Uytterhoeven <geert+renesas@...der.be>,
Patrice Chotard <patrice.chotard@...s.st.com>, Heiko Stuebner <heiko@...ech.de>,
Damien Le Moal <dlemoal@...nel.org>, Ludovic Desroches <ludovic.desroches@...rochip.com>,
Nicolas Ferre <nicolas.ferre@...rochip.com>,
Alexandre Belloni <alexandre.belloni@...tlin.com>, Claudiu Beznea <claudiu.beznea@...on.dev>,
Dong Aisheng <aisheng.dong@....com>, Fabio Estevam <festevam@...il.com>,
Shawn Guo <shawnguo@...nel.org>, Jacky Bai <ping.bai@....com>,
Pengutronix Kernel Team <kernel@...gutronix.de>, Chester Lin <chester62515@...il.com>,
Matthias Brugger <mbrugger@...e.com>, Ghennadi Procopciuc <ghennadi.procopciuc@....nxp.com>,
Sean Wang <sean.wang@...nel.org>, Matthias Brugger <matthias.bgg@...il.com>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>,
Sascha Hauer <s.hauer@...gutronix.de>, Andrew Jeffery <andrew@...econstruct.com.au>,
Joel Stanley <joel@....id.au>, Dan Carpenter <dan.carpenter@...aro.org>
Cc: linux-gpio@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-tegra@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-stm32@...md-mailman.stormreply.com, linux-samsung-soc@...r.kernel.org,
linux-renesas-soc@...r.kernel.org, linux-rockchip@...ts.infradead.org,
linux-riscv@...ts.infradead.org, linux-mediatek@...ts.infradead.org,
imx@...ts.linux.dev, linux-aspeed@...ts.ozlabs.org, openbmc@...ts.ozlabs.org,
Peng Fan <peng.fan@....com>
Subject: Re: [PATCH 05/21] pinctrl: starfive: Use scope based of_node_put() cleanups
Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@....com>
>
> Use scope based of_node_put() cleanup to simplify code.
>
> Signed-off-by: Peng Fan <peng.fan@....com>
Acked-by: Emil Renner Berthing <emil.renner.berthing@...onical.com>
> ---
> drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c | 27 +++++++++-------------
> drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c | 18 +++++++--------
> 2 files changed, 19 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c b/drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
> index 6df7a310c7ed..27f99183d994 100644
> --- a/drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
> +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
> @@ -480,7 +480,6 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
> {
> struct starfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
> struct device *dev = sfp->gc.parent;
> - struct device_node *child;
> struct pinctrl_map *map;
> const char **pgnames;
> const char *grpname;
> @@ -492,20 +491,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
>
> nmaps = 0;
> ngroups = 0;
> - for_each_available_child_of_node(np, child) {
> + for_each_available_child_of_node_scoped(np, child) {
> int npinmux = of_property_count_u32_elems(child, "pinmux");
> int npins = of_property_count_u32_elems(child, "pins");
>
> if (npinmux > 0 && npins > 0) {
> dev_err(dev, "invalid pinctrl group %pOFn.%pOFn: both pinmux and pins set\n",
> np, child);
> - of_node_put(child);
> return -EINVAL;
> }
> if (npinmux == 0 && npins == 0) {
> dev_err(dev, "invalid pinctrl group %pOFn.%pOFn: neither pinmux nor pins set\n",
> np, child);
> - of_node_put(child);
> return -EINVAL;
> }
>
> @@ -527,14 +524,14 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
> nmaps = 0;
> ngroups = 0;
> mutex_lock(&sfp->mutex);
> - for_each_available_child_of_node(np, child) {
> + for_each_available_child_of_node_scoped(np, child) {
> int npins;
> int i;
>
> grpname = devm_kasprintf(dev, GFP_KERNEL, "%pOFn.%pOFn", np, child);
> if (!grpname) {
> ret = -ENOMEM;
> - goto put_child;
> + goto free_map;
> }
>
> pgnames[ngroups++] = grpname;
> @@ -543,18 +540,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
> pins = devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL);
> if (!pins) {
> ret = -ENOMEM;
> - goto put_child;
> + goto free_map;
> }
>
> pinmux = devm_kcalloc(dev, npins, sizeof(*pinmux), GFP_KERNEL);
> if (!pinmux) {
> ret = -ENOMEM;
> - goto put_child;
> + goto free_map;
> }
>
> ret = of_property_read_u32_array(child, "pinmux", pinmux, npins);
> if (ret)
> - goto put_child;
> + goto free_map;
>
> for (i = 0; i < npins; i++) {
> unsigned int gpio = starfive_pinmux_to_gpio(pinmux[i]);
> @@ -570,7 +567,7 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
> pins = devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL);
> if (!pins) {
> ret = -ENOMEM;
> - goto put_child;
> + goto free_map;
> }
>
> pinmux = NULL;
> @@ -580,18 +577,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
>
> ret = of_property_read_u32_index(child, "pins", i, &v);
> if (ret)
> - goto put_child;
> + goto free_map;
> pins[i] = v;
> }
> } else {
> ret = -EINVAL;
> - goto put_child;
> + goto free_map;
> }
>
> ret = pinctrl_generic_add_group(pctldev, grpname, pins, npins, pinmux);
> if (ret < 0) {
> dev_err(dev, "error adding group %s: %d\n", grpname, ret);
> - goto put_child;
> + goto free_map;
> }
>
> ret = pinconf_generic_parse_dt_config(child, pctldev,
> @@ -600,7 +597,7 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
> if (ret) {
> dev_err(dev, "error parsing pin config of group %s: %d\n",
> grpname, ret);
> - goto put_child;
> + goto free_map;
> }
>
> /* don't create a map if there are no pinconf settings */
> @@ -623,8 +620,6 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
> mutex_unlock(&sfp->mutex);
> return 0;
>
> -put_child:
> - of_node_put(child);
> free_map:
> pinctrl_utils_free_map(pctldev, map, nmaps);
> mutex_unlock(&sfp->mutex);
> diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
> index 9609eb1ecc3d..4ce080caa233 100644
> --- a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
> +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
> @@ -150,7 +150,7 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
> nmaps = 0;
> ngroups = 0;
> mutex_lock(&sfp->mutex);
> - for_each_available_child_of_node(np, child) {
> + for_each_available_child_of_node_scoped(np, child) {
> int npins = of_property_count_u32_elems(child, "pinmux");
> int *pins;
> u32 *pinmux;
> @@ -161,13 +161,13 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
> "invalid pinctrl group %pOFn.%pOFn: pinmux not set\n",
> np, child);
> ret = -EINVAL;
> - goto put_child;
> + goto free_map;
> }
>
> grpname = devm_kasprintf(dev, GFP_KERNEL, "%pOFn.%pOFn", np, child);
> if (!grpname) {
> ret = -ENOMEM;
> - goto put_child;
> + goto free_map;
> }
>
> pgnames[ngroups++] = grpname;
> @@ -175,18 +175,18 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
> pins = devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL);
> if (!pins) {
> ret = -ENOMEM;
> - goto put_child;
> + goto free_map;
> }
>
> pinmux = devm_kcalloc(dev, npins, sizeof(*pinmux), GFP_KERNEL);
> if (!pinmux) {
> ret = -ENOMEM;
> - goto put_child;
> + goto free_map;
> }
>
> ret = of_property_read_u32_array(child, "pinmux", pinmux, npins);
> if (ret)
> - goto put_child;
> + goto free_map;
>
> for (i = 0; i < npins; i++)
> pins[i] = jh7110_pinmux_pin(pinmux[i]);
> @@ -200,7 +200,7 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
> pins, npins, pinmux);
> if (ret < 0) {
> dev_err(dev, "error adding group %s: %d\n", grpname, ret);
> - goto put_child;
> + goto free_map;
> }
>
> ret = pinconf_generic_parse_dt_config(child, pctldev,
> @@ -209,7 +209,7 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
> if (ret) {
> dev_err(dev, "error parsing pin config of group %s: %d\n",
> grpname, ret);
> - goto put_child;
> + goto free_map;
> }
>
> /* don't create a map if there are no pinconf settings */
> @@ -233,8 +233,6 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
> *num_maps = nmaps;
> return 0;
>
> -put_child:
> - of_node_put(child);
> free_map:
> pinctrl_utils_free_map(pctldev, map, nmaps);
> mutex_unlock(&sfp->mutex);
>
> --
> 2.37.1
>
Powered by blists - more mailing lists