Re: [PATCH] pinctrl: samsung: modularize samsung pinctrl driver

From: Krzysztof Kozlowski
Date: Tue Nov 26 2019 - 01:09:52 EST


On Tue, 26 Nov 2019 at 09:14, Hyunki Koo <hyunki00.koo@xxxxxxxxxxx> wrote:
>
> On Thu, 21 Nov 2019 at 16:38, Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote:
> > Hi,
> >
> > Thanks for the patch. Few comments below:
> >
> > On Thu, 21 Nov 2019 at 15:26, êíê <hyunki00.koo@xxxxxxxxxxx> wrote:
> >>
> >> Enable samsung pinctrl driver to be compiled as modules.
> >
> > Why? What's the benefit? Are platforms capable of such boot? Pinctrl is needed early - even before mounting rootfs...
> > What about module unloading? Is it reasonable?
> > Please answer to all this also in commit message.
> >
>
> Sorry to late and Thank you for your comment, I would like to apply GKI on the pinctrl driver
> So I would like to cut off dependency from ARCH_EXYNOS.

This is driver for Exynos and S3C so why cutting off the dependency? I
mean, wait, it is a driver for Exynos so it cannot work on other
boards...

> I will split into two part,
> First, cut off the dependency with ARCH_EXYNOS in arch/arm64/Kconfig.platform.
> Second, I will make the pinctrl driver as a module.

Then you are doing it in wrong order - this patch makes it as a module
but you send it as first one.

You did not resolve however my questions about:
1. Will this even work? Will platforms boot?
2. How are you going to handle module unloading since on purpose we
added suppress_bind?

>
> >>
> >> Change-Id: I92a9953c92831a316f7f50146898ff19831549ec
> >
> > This does not belong to Git.
> >
> >> Signed-off-by: Hyunki Koo <hyunki00.koo@xxxxxxxxxxx>
> >
> >You "From" name is different than written here in Signed-off-by. They should match and I do not know Korean to be able to tell whether they really match or not :).
> >How about using Latin transliteration also in "From" field?
> >
> >> ---
> >> drivers/pinctrl/samsung/Kconfig | 5 +----
> >> drivers/pinctrl/samsung/Makefile | 13 +++++++------
> >> drivers/pinctrl/samsung/pinctrl-exynos-arm.c | 2 ++
> >> drivers/pinctrl/samsung/pinctrl-exynos-arm64.c | 2 ++
> >> drivers/pinctrl/samsung/pinctrl-exynos.c | 2 ++
> >> drivers/pinctrl/samsung/pinctrl-samsung.c | 13 +++++++++++++
> >> 6 files changed, 27 insertions(+), 10 deletions(-)
> >>
> >> diff --git a/drivers/pinctrl/samsung/Kconfig
> >> b/drivers/pinctrl/samsung/Kconfig index 425fadd6c346..25e16984ef23
> >> 100644
> >> --- a/drivers/pinctrl/samsung/Kconfig
> >> +++ b/drivers/pinctrl/samsung/Kconfig
> >> @@ -3,14 +3,13 @@
> >> # Samsung Pin control drivers
> >> #
> >> config PINCTRL_SAMSUNG
> >> - bool
> >> + tristate "Pinctrl driver data for Samsung SoCs"
> >> select PINMUX
> >> select PINCONF
> >>
> >> config PINCTRL_EXYNOS
> >> bool "Pinctrl driver data for Samsung EXYNOS SoCs"
> >> depends on OF && GPIOLIB && (ARCH_EXYNOS || ARCH_S5PV210)
> >> - select PINCTRL_SAMSUNG
> >> select PINCTRL_EXYNOS_ARM if ARM && (ARCH_EXYNOS || ARCH_S5PV210)
> >> select PINCTRL_EXYNOS_ARM64 if ARM64 && ARCH_EXYNOS
> >>
> >> @@ -25,9 +24,7 @@ config PINCTRL_EXYNOS_ARM64 config PINCTRL_S3C24XX
> >> bool "Samsung S3C24XX SoC pinctrl driver"
> >> depends on ARCH_S3C24XX && OF
> >> - select PINCTRL_SAMSUNG
> >>
> >> config PINCTRL_S3C64XX
> >> bool "Samsung S3C64XX SoC pinctrl driver"
> >> depends on ARCH_S3C64XX
> >> - select PINCTRL_SAMSUNG
> >> diff --git a/drivers/pinctrl/samsung/Makefile
> >> b/drivers/pinctrl/samsung/Makefile
> >> index ed951df6a112..b3ac01838b8a 100644
> >> --- a/drivers/pinctrl/samsung/Makefile
> >> +++ b/drivers/pinctrl/samsung/Makefile
> >> @@ -1,9 +1,10 @@
> >> # SPDX-License-Identifier: GPL-2.0
> >> # Samsung pin control drivers
> >>
> >> -obj-$(CONFIG_PINCTRL_SAMSUNG) += pinctrl-samsung.o
> >> -obj-$(CONFIG_PINCTRL_EXYNOS) += pinctrl-exynos.o
> >> -obj-$(CONFIG_PINCTRL_EXYNOS_ARM) += pinctrl-exynos-arm.o
> >> -obj-$(CONFIG_PINCTRL_EXYNOS_ARM64) += pinctrl-exynos-arm64.o
> >> -obj-$(CONFIG_PINCTRL_S3C24XX) += pinctrl-s3c24xx.o
> >> -obj-$(CONFIG_PINCTRL_S3C64XX) += pinctrl-s3c64xx.o
> >> +obj-$(CONFIG_PINCTRL_SAMSUNG) += pinctrl-samsung-super.o
> >> +pinctrl-samsung-super-$(CONFIG_PINCTRL_SAMSUNG) += pinctrl-samsung.o
> >> +pinctrl-samsung-super-$(CONFIG_PINCTRL_EXYNOS) += pinctrl-exynos.o
> >> +pinctrl-samsung-super-$(CONFIG_PINCTRL_EXYNOS_ARM) += pinctrl-exynos-
> >> arm.o
> >> +pinctrl-samsung-super-$(CONFIG_PINCTRL_EXYNOS_ARM64) += pinctrl-exynos-
> >> arm64.o
> >> +pinctrl-samsung-super-$(CONFIG_PINCTRL_S3C24XX) += pinctrl-s3c24xx.o
> >> +pinctrl-samsung-super-$(CONFIG_PINCTRL_S3C64XX) += pinctrl-s3c64xx.o
> >
> > I don't get why you need to rename obj to pinctrl-samsung-super?
>
> I would like to make pinctrl as a super module. It is many dependency between pinctrl-exynos, pinctr-exynos-arm64 and pinctrl-samsung

Might be a stupid question but what is "Super module"?

Second, the dependencies are there because this is a integral part of them.

I think I miss some bigger picture here because I still do not
understand what you want to achieve in the end (why doing this)?

Best regards,
Krzysztof