[PATCH v2 00/20] pinctrl: Use scope based of_node_put() cleanups

Peng Fan (OSS) posted 20 patches 4 months, 2 weeks ago
drivers/pinctrl/bcm/pinctrl-bcm63xx.c              |  4 +--
drivers/pinctrl/freescale/pinctrl-imx.c            | 25 ++++-----------
drivers/pinctrl/freescale/pinctrl-imx1-core.c      | 16 +++-------
drivers/pinctrl/freescale/pinctrl-mxs.c            | 18 ++++-------
drivers/pinctrl/mediatek/pinctrl-mtk-common.c      |  4 +--
drivers/pinctrl/mediatek/pinctrl-paris.c           |  4 +--
drivers/pinctrl/nomadik/pinctrl-abx500.c           |  4 +--
drivers/pinctrl/nomadik/pinctrl-nomadik.c          |  4 +--
drivers/pinctrl/nxp/pinctrl-s32cc.c                | 31 ++++++------------
drivers/pinctrl/pinconf-generic.c                  |  7 ++--
drivers/pinctrl/pinctrl-at91-pio4.c                |  7 ++--
drivers/pinctrl/pinctrl-at91.c                     | 14 +++-----
drivers/pinctrl/pinctrl-equilibrium.c              | 21 +++---------
drivers/pinctrl/pinctrl-k210.c                     |  7 ++--
drivers/pinctrl/pinctrl-rockchip.c                 | 11 ++-----
drivers/pinctrl/pinctrl-st.c                       | 37 +++++++---------------
drivers/pinctrl/renesas/pinctrl-rza1.c             | 14 +++-----
drivers/pinctrl/renesas/pinctrl-rzg2l.c            |  7 ++--
drivers/pinctrl/renesas/pinctrl-rzn1.c             | 23 ++++----------
drivers/pinctrl/renesas/pinctrl-rzv2m.c            |  7 ++--
drivers/pinctrl/renesas/pinctrl.c                  |  7 ++--
drivers/pinctrl/samsung/pinctrl-exynos.c           | 16 +++-------
drivers/pinctrl/samsung/pinctrl-samsung.c          | 19 +++--------
drivers/pinctrl/spear/pinctrl-spear.c              | 13 +++-----
drivers/pinctrl/sprd/pinctrl-sprd.c                | 14 +++-----
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c | 27 +++++++---------
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c | 18 +++++------
drivers/pinctrl/stm32/pinctrl-stm32.c              |  4 +--
drivers/pinctrl/tegra/pinctrl-tegra-xusb.c         |  7 ++--
drivers/pinctrl/tegra/pinctrl-tegra.c              |  4 +--
drivers/pinctrl/ti/pinctrl-ti-iodelay.c            | 37 ++++++++--------------
31 files changed, 133 insertions(+), 298 deletions(-)
[PATCH v2 00/20] pinctrl: Use scope based of_node_put() cleanups
Posted by Peng Fan (OSS) 4 months, 2 weeks ago
Use scope based of_node_put() to simplify code. It reduces the chance
of forgetting of_node_put(), and also simplifies error handling path.
I not able to test the changes on all the hardwares, so driver owners,
please help review when you have time.

This patchset was inspired from Dan's comments on pinctrl-scmi-imx.c,
thanks.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
Changes in v2:
- Drop aspeed changes per Andrew Jeffery
- Drop changes to code pattern that of_node_get(or other refcount
increasing) followed by of_node_put. That said, but I still have a
change for samsung pinctrl that drops several of_node_put places. If
this is not welcomed, patch 20/20 could be dropped.
- Add Fix tag for patch 1
- Add A-b for patch 4
- Drop unneeded {} in patch 8 Per Dan Carpenter
- Add a new patch 18.
- Moved patch [19,20]/20, in case people are not happy with the changes,
the two patch could be dropped when apply if no v3 patchset.
- Link to v1: https://lore.kernel.org/r/20240501-pinctrl-cleanup-v1-0-797ceca46e5c@nxp.com

---
Peng Fan (20):
      pinctrl: ti: iodelay: Use scope based of_node_put() cleanups
      pinctrl: tegra: Use scope based of_node_put() cleanups
      pinctrl: stm32: Use scope based of_node_put() cleanups
      pinctrl: starfive: Use scope based of_node_put() cleanups
      pinctrl: sprd: Use scope based of_node_put() cleanups
      pinctrl: spear: Use scope based of_node_put() cleanups
      pinctrl: renesas: Use scope based of_node_put() cleanups
      pinctrl: st: Use scope based of_node_put() cleanups
      pinctrl: rockchip: Use scope based of_node_put() cleanups
      pinctrl: equilibrium: Use scope based of_node_put() cleanups
      pinctrl: at91: Use scope based of_node_put() cleanups
      pinctrl: s32cc: Use scope based of_node_put() cleanups
      pinctrl: nomadik: Use scope based of_node_put() cleanups
      pinctrl: mediatek: Use scope based of_node_put() cleanups
      pinctrl: freescale: Use scope based of_node_put() cleanups
      pinctrl: bcm: bcm63xx: Use scope based of_node_put() cleanups
      pinctrl: pinconf-generic: Use scope based of_node_put() cleanups
      pinctrl: freescale: mxs: Fix refcount of child
      pinctrl: k210: Use scope based of_node_put() cleanups
      pinctrl: samsung: Use scope based of_node_put() cleanups

 drivers/pinctrl/bcm/pinctrl-bcm63xx.c              |  4 +--
 drivers/pinctrl/freescale/pinctrl-imx.c            | 25 ++++-----------
 drivers/pinctrl/freescale/pinctrl-imx1-core.c      | 16 +++-------
 drivers/pinctrl/freescale/pinctrl-mxs.c            | 18 ++++-------
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c      |  4 +--
 drivers/pinctrl/mediatek/pinctrl-paris.c           |  4 +--
 drivers/pinctrl/nomadik/pinctrl-abx500.c           |  4 +--
 drivers/pinctrl/nomadik/pinctrl-nomadik.c          |  4 +--
 drivers/pinctrl/nxp/pinctrl-s32cc.c                | 31 ++++++------------
 drivers/pinctrl/pinconf-generic.c                  |  7 ++--
 drivers/pinctrl/pinctrl-at91-pio4.c                |  7 ++--
 drivers/pinctrl/pinctrl-at91.c                     | 14 +++-----
 drivers/pinctrl/pinctrl-equilibrium.c              | 21 +++---------
 drivers/pinctrl/pinctrl-k210.c                     |  7 ++--
 drivers/pinctrl/pinctrl-rockchip.c                 | 11 ++-----
 drivers/pinctrl/pinctrl-st.c                       | 37 +++++++---------------
 drivers/pinctrl/renesas/pinctrl-rza1.c             | 14 +++-----
 drivers/pinctrl/renesas/pinctrl-rzg2l.c            |  7 ++--
 drivers/pinctrl/renesas/pinctrl-rzn1.c             | 23 ++++----------
 drivers/pinctrl/renesas/pinctrl-rzv2m.c            |  7 ++--
 drivers/pinctrl/renesas/pinctrl.c                  |  7 ++--
 drivers/pinctrl/samsung/pinctrl-exynos.c           | 16 +++-------
 drivers/pinctrl/samsung/pinctrl-samsung.c          | 19 +++--------
 drivers/pinctrl/spear/pinctrl-spear.c              | 13 +++-----
 drivers/pinctrl/sprd/pinctrl-sprd.c                | 14 +++-----
 drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c | 27 +++++++---------
 drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c | 18 +++++------
 drivers/pinctrl/stm32/pinctrl-stm32.c              |  4 +--
 drivers/pinctrl/tegra/pinctrl-tegra-xusb.c         |  7 ++--
 drivers/pinctrl/tegra/pinctrl-tegra.c              |  4 +--
 drivers/pinctrl/ti/pinctrl-ti-iodelay.c            | 37 ++++++++--------------
 31 files changed, 133 insertions(+), 298 deletions(-)
---
base-commit: bb7a2467e6beef44a80a17d45ebf2931e7631083
change-id: 20240429-pinctrl-cleanup-e4d461c32648

Best regards,
-- 
Peng Fan <peng.fan@nxp.com>
Re: [PATCH v2 00/20] pinctrl: Use scope based of_node_put() cleanups
Posted by Geert Uytterhoeven 3 months, 3 weeks ago
Hi Peng,

On Sat, May 4, 2024 at 3:12 PM Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote:
> Use scope based of_node_put() to simplify code. It reduces the chance
> of forgetting of_node_put(), and also simplifies error handling path.
> I not able to test the changes on all the hardwares, so driver owners,
> please help review when you have time.
>
> This patchset was inspired from Dan's comments on pinctrl-scmi-imx.c,
> thanks.
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>

Andy's question about code generation on a related patch made me
wonder, too.

On arm32, a conversion to for_each_child_of_node_scoped() seems to
cost ca. 48 bytes of additional code, regardless of whether there were
explicit cleanups before or not.

I checked "pinctrl: renesas: Use scope based of_node_put() cleanups",
and all but the conversions in *_dt_node_to_map() cost 48 bytes each.

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds