As promised to Linus W. there is a series that converts struct function_desc to use struct pinfunction. With this it both struct group_desc and struct function_desc will rely on the generic data types (struct pingroup and struct pinfunction respectively). I haven't compiled everything, some builds might fail. Anyway, comments, reviews, testing are all appreciated. In v2: - fixed compilation problems found so far by LKP Andy Shevchenko (11): pinctrl: berlin: Make use of struct pinfunction pinctrl: equilibrium: Make use of struct pinfunction pinctrl: ingenic: Provide a helper macro INGENIC_PIN_FUNCTION() pinctrl: mediatek: Provide a helper macro PINCTRL_PIN_FUNCTION() pinctrl: pinmux: Add a convenient define PINCTRL_FUNCTION_DESC() pinctrl: pinmux: Embed struct pinfunction into struct function_desc pinctrl: imx: Convert to use func member pinctrl: ingenic: Convert to use func member pinctrl: keembay: Convert to use func member pinctrl: mediatek: Convert to use func member pinctrl: pinmux: Remove unused members from struct function_desc drivers/pinctrl/berlin/berlin.c | 21 +- drivers/pinctrl/berlin/berlin.h | 6 - drivers/pinctrl/core.h | 2 +- drivers/pinctrl/freescale/pinctrl-imx.c | 14 +- drivers/pinctrl/mediatek/pinctrl-moore.c | 10 +- drivers/pinctrl/mediatek/pinctrl-moore.h | 6 + drivers/pinctrl/mediatek/pinctrl-mt7622.c | 32 +- drivers/pinctrl/mediatek/pinctrl-mt7623.c | 42 +- drivers/pinctrl/mediatek/pinctrl-mt7629.c | 20 +- drivers/pinctrl/mediatek/pinctrl-mt7981.c | 34 +- drivers/pinctrl/mediatek/pinctrl-mt7986.c | 24 +- drivers/pinctrl/pinctrl-equilibrium.c | 24 +- drivers/pinctrl/pinctrl-equilibrium.h | 12 - drivers/pinctrl/pinctrl-ingenic.c | 707 +++++++++++----------- drivers/pinctrl/pinctrl-keembay.c | 22 +- drivers/pinctrl/pinmux.c | 19 +- drivers/pinctrl/pinmux.h | 19 +- 17 files changed, 503 insertions(+), 511 deletions(-) -- 2.45.1