Hi Linus, It is fairly common for the pins in a pin group to be a subset of the pins in another pin group, e.g. in case of resizable buses. Currently we have support for sharing pin data for VIN (video-in), where the number of data lanes used can be varied. This patch series, after a few customary cleanups, adds the infastructure for defining pin groups that share pin data with another group, either as an arbitrary subset, or as a resizable bus, and converts lots of existing pin groups to make use of this. This not only saves memory, but also makes it easier to review future support for new SoCs and for new pin groups on existing SoCs. This reduces kernel size for a kernel including all Renesas pin control drivers by ca. 5 KiB. If accepted, I intend to queue this in renesas-pinctrl for v5.18. Thanks for your comments! Geert Uytterhoeven (60): pinctrl: renesas: r8a77470: Reduce size for narrow VIN1 channel pinctrl: renesas: Rename sh_pfc_soc_operations instances pinctrl: renesas: Reformat macros defining struct initializers pinctrl: renesas: Rename SH_PFC_PIN_GROUP{,_ALIAS} args pinctrl: renesas: Add generic support for pin group subsets pinctrl: renesas: Add generic support for resizable buses pinctrl: renesas: r8a7740: Share BSC pin group data pinctrl: renesas: emev2: Share CF pin group data pinctrl: renesas: r8a7791: Share HSCIF1 pin group data pinctrl: renesas: sh73a0: Share KEYIN pin group data pinctrl: renesas: r8a7740: Share LCD pin group data pinctrl: renesas: sh73a0: Share LCD pin group data pinctrl: renesas: r8a73a4: Share MMC pin group data pinctrl: renesas: r8a7740: Share MMC pin group data pinctrl: renesas: r8a77470: Share MMC pin group data pinctrl: renesas: r8a7778: Share MMC pin group data pinctrl: renesas: r8a7779: Share MMC pin group data pinctrl: renesas: r8a7790: Share MMC pin group data pinctrl: renesas: r8a7791: Share MMC pin group data pinctrl: renesas: r8a7794: Share MMC pin group data pinctrl: renesas: r8a77970: Share MMC pin group data pinctrl: renesas: r8a77980: Share MMC pin group data pinctrl: renesas: r8a77995: Share MMC pin group data pinctrl: renesas: r8a779a0: Share MMC pin group data pinctrl: renesas: sh73a0: Share MMC pin group data pinctrl: renesas: r8a77470: Share QSPI pin group data pinctrl: renesas: r8a7790: Share QSPI pin group data pinctrl: renesas: r8a7791: Share QSPI pin group data pinctrl: renesas: r8a7792: Share QSPI pin group data pinctrl: renesas: r8a7794: Share QSPI pin group data pinctrl: renesas: r8a77950: Share QSPI pin group data pinctrl: renesas: r8a77951: Share QSPI pin group data pinctrl: renesas: r8a77965: Share QSPI pin group data pinctrl: renesas: r8a7796: Share QSPI pin group data pinctrl: renesas: r8a77990: Share QSPI pin group data pinctrl: renesas: r8a779a0: Share QSPI pin group data pinctrl: renesas: r8a77970: Share RPC pin group data pinctrl: renesas: r8a77980: Share RPC pin group data pinctrl: renesas: r8a73a4: Share SDHI pin group data pinctrl: renesas: r8a7740: Share SDHI pin group data pinctrl: renesas: r8a77470: Share SDHI pin group data pinctrl: renesas: r8a7778: Share SDHI pin group data pinctrl: renesas: r8a7779: Share SDHI pin group data pinctrl: renesas: r8a7790: Share SDHI pin group data pinctrl: renesas: r8a7791: Share SDHI pin group data pinctrl: renesas: r8a7792: Share SDHI pin group data pinctrl: renesas: r8a7794: Share SDHI pin group data pinctrl: renesas: r8a77950: Share SDHI pin group data pinctrl: renesas: r8a77951: Share SDHI pin group data pinctrl: renesas: r8a77965: Share SDHI pin group data pinctrl: renesas: r8a7796: Share SDHI pin group data pinctrl: renesas: r8a77990: Share SDHI pin group data pinctrl: renesas: sh73a0: Share SDHI pin group data pinctrl: renesas: emev2: Share SDI pin group data pinctrl: renesas: r8a7790: Share USB1 pin group data pinctrl: renesas: r8a7790: Share more VIN pin group data pinctrl: renesas: r8a77951: Share more VIN pin group data pinctrl: renesas: r8a7796: Share more VIN pin group data pinctrl: renesas: r8a77965: Share more VIN pin group data pinctrl: renesas: r8a77990: Share more VIN pin group data drivers/pinctrl/renesas/pfc-emev2.c | 71 +--- drivers/pinctrl/renesas/pfc-r8a73a4.c | 93 ++--- drivers/pinctrl/renesas/pfc-r8a7740.c | 276 +++----------- drivers/pinctrl/renesas/pfc-r8a77470.c | 237 +++++------- drivers/pinctrl/renesas/pfc-r8a7778.c | 69 ++-- drivers/pinctrl/renesas/pfc-r8a7779.c | 110 ++---- drivers/pinctrl/renesas/pfc-r8a7790.c | 483 ++++++++++--------------- drivers/pinctrl/renesas/pfc-r8a7791.c | 285 ++++++--------- drivers/pinctrl/renesas/pfc-r8a7792.c | 446 +++++++++++------------ drivers/pinctrl/renesas/pfc-r8a7794.c | 209 ++++------- drivers/pinctrl/renesas/pfc-r8a77950.c | 116 ++---- drivers/pinctrl/renesas/pfc-r8a77951.c | 310 ++++++---------- drivers/pinctrl/renesas/pfc-r8a7796.c | 312 ++++++---------- drivers/pinctrl/renesas/pfc-r8a77965.c | 330 ++++++----------- drivers/pinctrl/renesas/pfc-r8a77970.c | 162 +++------ drivers/pinctrl/renesas/pfc-r8a77980.c | 190 ++++------ drivers/pinctrl/renesas/pfc-r8a77990.c | 308 ++++++---------- drivers/pinctrl/renesas/pfc-r8a77995.c | 98 ++--- drivers/pinctrl/renesas/pfc-r8a779a0.c | 60 +-- drivers/pinctrl/renesas/pfc-sh73a0.c | 265 +++----------- drivers/pinctrl/renesas/sh_pfc.h | 161 ++++----- 21 files changed, 1536 insertions(+), 3055 deletions(-) -- 2.25.1 Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx 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