Hi, On 10/21/21 12:13 AM, Sean Anderson wrote: > > On 10/21/21 12:55 AM, Samuel Holland wrote: >> Create a do-nothing driver for each sunxi pin controller variant. >> >> Since only one driver can automatically bind to a DT node, since the >> GPIO driver already requires a manual binding process, and since the >> pinctrl driver needs access to some of the same information, refactor >> the GPIO driver to be bound by the pinctrl driver. This commit should >> cause no functional change. >> >> Signed-off-by: Samuel Holland <sam...@sholland.org> >> --- >> >> MAINTAINERS | 1 + >> arch/arm/Kconfig | 1 + >> arch/arm/include/asm/arch-sunxi/gpio.h | 5 + >> drivers/gpio/sunxi_gpio.c | 130 +----------------- >> drivers/pinctrl/Kconfig | 1 + >> drivers/pinctrl/Makefile | 2 +- >> drivers/pinctrl/sunxi/Kconfig | 120 ++++++++++++++++ >> drivers/pinctrl/sunxi/Makefile | 26 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun50i-a64-r.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun50i-h5.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun50i-h6-r.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun50i-h6.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun50i-h616-r.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun50i-h616.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun5i-a13.c | 33 +++++ >> drivers/pinctrl/sunxi/pinctrl-sun6i-a31-r.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun6i-a31.c | 33 +++++ >> drivers/pinctrl/sunxi/pinctrl-sun7i-a20.c | 33 +++++ >> drivers/pinctrl/sunxi/pinctrl-sun8i-a23-r.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun8i-a23.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun8i-a83t-r.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun8i-h3-r.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun8i-v3s.c | 33 +++++ >> drivers/pinctrl/sunxi/pinctrl-sun9i-a80-r.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c | 29 ++++ >> drivers/pinctrl/sunxi/pinctrl-sunxi.c | 57 ++++++++ >> drivers/pinctrl/sunxi/pinctrl-sunxi.h | 14 ++ >> 32 files changed, 882 insertions(+), 129 deletions(-) > > General question: why is this broken up into different U_BOOT_DRIVERs? > Couldn't this be done with one driver and one array of udevice_ids?
It could be done with one driver, and that's how I originally did it. But it required a large block of `extern` declarations in the local header, and an #ifdef around each entry in .of_match, both of which seemed less than ideal. (One example of this style is PINCTRL_PFC in drivers/pinctrl/renesas.) I do like the single-driver style from a memory usage perspective. On the other hand, the one-driver-per-variant style is already used by drivers/clk/sunxi. I do not have a strong opinion either way; it is not much work to go back to the single-driver style. I'll leave it up to the maintainers. Regards, Samuel