Message ID | 20201031003845.41137-1-john.stultz@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | [v5,1/2] pinctrl: qcom: Allow pinctrl-msm code to be loadable as a module | expand |
On Sat, Oct 31, 2020 at 1:38 AM John Stultz <john.stultz@linaro.org> wrote: > Tweaks to allow pinctrl-msm code to be loadable as a module. > > This is needed in order to support having the qcom-scm driver, > which pinctrl-msm calls into, configured as a module. > > This requires that we tweak Kconfigs selecting PINCTRL_MSM to > also depend on QCOM_SCM || QCOM_SCM=n so that we match the > module setting of QCOM_SCM. > > Unlike the previous revision of this patch: > https://lore.kernel.org/lkml/20200625001039.56174-5-john.stultz@linaro.org/ > this version reworks PINCTRL_MSM to be a visible option and > instead of having the various SoC specific drivers select > PINCTRL_MSM, this switches those configs to depend on > PINCTRL_MSM. This avoids adding the oddish looking: > "depend on QCOM_SCM || QCOM_SCM=n" > to every SoC specific driver, as that becomes a maintenance > headache. > > We also add PINCTRL_MSM to the arm64 defconfig to avoid > surprises as otherwise PINCTRL_MSM/IPQ* options previously > enabled, will be off. > > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Cc: Andy Gross <agross@kernel.org> > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Joerg Roedel <joro@8bytes.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Jason Cooper <jason@lakedaemon.net> > Cc: Marc Zyngier <maz@kernel.org> > Cc: Linus Walleij <linus.walleij@linaro.org> > Cc: Vinod Koul <vkoul@kernel.org> > Cc: Kalle Valo <kvalo@codeaurora.org> > Cc: Maulik Shah <mkshah@codeaurora.org> > Cc: Lina Iyer <ilina@codeaurora.org> > Cc: Saravana Kannan <saravanak@google.com> > Cc: Todd Kjos <tkjos@google.com> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: linux-arm-msm@vger.kernel.org > Cc: iommu@lists.linux-foundation.org > Cc: linux-gpio@vger.kernel.org > Signed-off-by: John Stultz <john.stultz@linaro.org> > --- > v2: > * Module description and whitespace fixes suggested by Bjorn > * Added QCOM_SCM || QCOM_SCM=n bits on Kconfigs selecting > PINCTRL_MSM. Reported by both Todd and Bjorn. > v3: > * Make sure the QCOM_SCM || QCOM_SCM=n trick is commented > v4: > * Rework "select PINCTRL_MSM" to "depends on PINCTRL_MSM" > to consolidate the QCOM_SCM dependency. > v5: > * Add PINCTRL_MSM to arm64 defconfig Bjorn can you have a look at this series? BTW John I'm afraid I just merged a new QCOM subdriver so we might need to respin this to cover all. It's an important patch so I'll help out in rebasing it if the only problem is that my tree is moving under your feet. Yours, Linus Walleij
On Thu, Nov 5, 2020 at 6:17 AM Linus Walleij <linus.walleij@linaro.org> wrote: > On Sat, Oct 31, 2020 at 1:38 AM John Stultz <john.stultz@linaro.org> wrote: > > > Tweaks to allow pinctrl-msm code to be loadable as a module. > > > > This is needed in order to support having the qcom-scm driver, > > which pinctrl-msm calls into, configured as a module. > > > > This requires that we tweak Kconfigs selecting PINCTRL_MSM to > > also depend on QCOM_SCM || QCOM_SCM=n so that we match the > > module setting of QCOM_SCM. > > > > Unlike the previous revision of this patch: > > https://lore.kernel.org/lkml/20200625001039.56174-5-john.stultz@linaro.org/ > > this version reworks PINCTRL_MSM to be a visible option and > > instead of having the various SoC specific drivers select > > PINCTRL_MSM, this switches those configs to depend on > > PINCTRL_MSM. This avoids adding the oddish looking: > > "depend on QCOM_SCM || QCOM_SCM=n" > > to every SoC specific driver, as that becomes a maintenance > > headache. > > > > We also add PINCTRL_MSM to the arm64 defconfig to avoid > > surprises as otherwise PINCTRL_MSM/IPQ* options previously > > enabled, will be off. > > > > Cc: Catalin Marinas <catalin.marinas@arm.com> > > Cc: Will Deacon <will@kernel.org> > > Cc: Andy Gross <agross@kernel.org> > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > > Cc: Joerg Roedel <joro@8bytes.org> > > Cc: Thomas Gleixner <tglx@linutronix.de> > > Cc: Jason Cooper <jason@lakedaemon.net> > > Cc: Marc Zyngier <maz@kernel.org> > > Cc: Linus Walleij <linus.walleij@linaro.org> > > Cc: Vinod Koul <vkoul@kernel.org> > > Cc: Kalle Valo <kvalo@codeaurora.org> > > Cc: Maulik Shah <mkshah@codeaurora.org> > > Cc: Lina Iyer <ilina@codeaurora.org> > > Cc: Saravana Kannan <saravanak@google.com> > > Cc: Todd Kjos <tkjos@google.com> > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > Cc: linux-arm-msm@vger.kernel.org > > Cc: iommu@lists.linux-foundation.org > > Cc: linux-gpio@vger.kernel.org > > Signed-off-by: John Stultz <john.stultz@linaro.org> > > --- > > v2: > > * Module description and whitespace fixes suggested by Bjorn > > * Added QCOM_SCM || QCOM_SCM=n bits on Kconfigs selecting > > PINCTRL_MSM. Reported by both Todd and Bjorn. > > v3: > > * Make sure the QCOM_SCM || QCOM_SCM=n trick is commented > > v4: > > * Rework "select PINCTRL_MSM" to "depends on PINCTRL_MSM" > > to consolidate the QCOM_SCM dependency. > > v5: > > * Add PINCTRL_MSM to arm64 defconfig > > Bjorn can you have a look at this series? > > BTW John I'm afraid I just merged a new QCOM subdriver so we might > need to respin this to cover all. > > It's an important patch so I'll help out in rebasing it if the only problem is > that my tree is moving under your feet. No worries. I'm mostly wanting to make sure there are no objections with switching PINCTRL_MSM from a selected config to a depended config. If that seems ok, I can redo it on whatever point you would like. I realize I can also split that change out separately from the module enablement bits as well if its helpful. thanks -john
On Fri 30 Oct 19:38 CDT 2020, John Stultz wrote: > Tweaks to allow pinctrl-msm code to be loadable as a module. > > This is needed in order to support having the qcom-scm driver, > which pinctrl-msm calls into, configured as a module. > > This requires that we tweak Kconfigs selecting PINCTRL_MSM to > also depend on QCOM_SCM || QCOM_SCM=n so that we match the > module setting of QCOM_SCM. > > Unlike the previous revision of this patch: > https://lore.kernel.org/lkml/20200625001039.56174-5-john.stultz@linaro.org/ > this version reworks PINCTRL_MSM to be a visible option and > instead of having the various SoC specific drivers select > PINCTRL_MSM, this switches those configs to depend on > PINCTRL_MSM. This avoids adding the oddish looking: > "depend on QCOM_SCM || QCOM_SCM=n" > to every SoC specific driver, as that becomes a maintenance > headache. > > We also add PINCTRL_MSM to the arm64 defconfig to avoid > surprises as otherwise PINCTRL_MSM/IPQ* options previously > enabled, will be off. > Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Regards, Bjorn > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Cc: Andy Gross <agross@kernel.org> > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Joerg Roedel <joro@8bytes.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Jason Cooper <jason@lakedaemon.net> > Cc: Marc Zyngier <maz@kernel.org> > Cc: Linus Walleij <linus.walleij@linaro.org> > Cc: Vinod Koul <vkoul@kernel.org> > Cc: Kalle Valo <kvalo@codeaurora.org> > Cc: Maulik Shah <mkshah@codeaurora.org> > Cc: Lina Iyer <ilina@codeaurora.org> > Cc: Saravana Kannan <saravanak@google.com> > Cc: Todd Kjos <tkjos@google.com> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: linux-arm-msm@vger.kernel.org > Cc: iommu@lists.linux-foundation.org > Cc: linux-gpio@vger.kernel.org > Signed-off-by: John Stultz <john.stultz@linaro.org> > --- > v2: > * Module description and whitespace fixes suggested by Bjorn > * Added QCOM_SCM || QCOM_SCM=n bits on Kconfigs selecting > PINCTRL_MSM. Reported by both Todd and Bjorn. > v3: > * Make sure the QCOM_SCM || QCOM_SCM=n trick is commented > v4: > * Rework "select PINCTRL_MSM" to "depends on PINCTRL_MSM" > to consolidate the QCOM_SCM dependency. > v5: > * Add PINCTRL_MSM to arm64 defconfig > --- > arch/arm64/configs/defconfig | 1 + > drivers/pinctrl/qcom/Kconfig | 49 +++++++++++++++--------------- > drivers/pinctrl/qcom/pinctrl-msm.c | 2 ++ > 3 files changed, 28 insertions(+), 24 deletions(-) > > diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig > index 17a2df6a263e8..45768828fdb8e 100644 > --- a/arch/arm64/configs/defconfig > +++ b/arch/arm64/configs/defconfig > @@ -483,6 +483,7 @@ CONFIG_PINCTRL_IMX8MP=y > CONFIG_PINCTRL_IMX8MQ=y > CONFIG_PINCTRL_IMX8QXP=y > CONFIG_PINCTRL_IMX8DXL=y > +CONFIG_PINCTRL_MSM=y > CONFIG_PINCTRL_IPQ8074=y > CONFIG_PINCTRL_IPQ6018=y > CONFIG_PINCTRL_MSM8916=y > diff --git a/drivers/pinctrl/qcom/Kconfig b/drivers/pinctrl/qcom/Kconfig > index 5fe7b8aaf69d8..8bb786ed152dd 100644 > --- a/drivers/pinctrl/qcom/Kconfig > +++ b/drivers/pinctrl/qcom/Kconfig > @@ -2,7 +2,8 @@ > if (ARCH_QCOM || COMPILE_TEST) > > config PINCTRL_MSM > - bool > + tristate "Qualcomm core pin controller driver" > + depends on QCOM_SCM || !QCOM_SCM #if QCOM_SCM=m this can't be =y > select PINMUX > select PINCONF > select GENERIC_PINCONF > @@ -13,7 +14,7 @@ config PINCTRL_MSM > config PINCTRL_APQ8064 > tristate "Qualcomm APQ8064 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm APQ8064 platform. > @@ -21,7 +22,7 @@ config PINCTRL_APQ8064 > config PINCTRL_APQ8084 > tristate "Qualcomm APQ8084 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm APQ8084 platform. > @@ -29,7 +30,7 @@ config PINCTRL_APQ8084 > config PINCTRL_IPQ4019 > tristate "Qualcomm IPQ4019 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm IPQ4019 platform. > @@ -37,7 +38,7 @@ config PINCTRL_IPQ4019 > config PINCTRL_IPQ8064 > tristate "Qualcomm IPQ8064 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm IPQ8064 platform. > @@ -45,7 +46,7 @@ config PINCTRL_IPQ8064 > config PINCTRL_IPQ8074 > tristate "Qualcomm Technologies, Inc. IPQ8074 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for > the Qualcomm Technologies Inc. TLMM block found on the > @@ -55,7 +56,7 @@ config PINCTRL_IPQ8074 > config PINCTRL_IPQ6018 > tristate "Qualcomm Technologies, Inc. IPQ6018 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for > the Qualcomm Technologies Inc. TLMM block found on the > @@ -65,7 +66,7 @@ config PINCTRL_IPQ6018 > config PINCTRL_MSM8226 > tristate "Qualcomm 8226 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm Technologies Inc TLMM block found on the Qualcomm > @@ -74,7 +75,7 @@ config PINCTRL_MSM8226 > config PINCTRL_MSM8660 > tristate "Qualcomm 8660 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm 8660 platform. > @@ -82,7 +83,7 @@ config PINCTRL_MSM8660 > config PINCTRL_MSM8960 > tristate "Qualcomm 8960 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm 8960 platform. > @@ -90,7 +91,7 @@ config PINCTRL_MSM8960 > config PINCTRL_MDM9615 > tristate "Qualcomm 9615 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm 9615 platform. > @@ -98,7 +99,7 @@ config PINCTRL_MDM9615 > config PINCTRL_MSM8X74 > tristate "Qualcomm 8x74 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm 8974 platform. > @@ -106,7 +107,7 @@ config PINCTRL_MSM8X74 > config PINCTRL_MSM8916 > tristate "Qualcomm 8916 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found on the Qualcomm 8916 platform. > @@ -114,7 +115,7 @@ config PINCTRL_MSM8916 > config PINCTRL_MSM8976 > tristate "Qualcomm 8976 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found on the Qualcomm MSM8976 platform. > @@ -124,7 +125,7 @@ config PINCTRL_MSM8976 > config PINCTRL_MSM8994 > tristate "Qualcomm 8994 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm 8994 platform. The > @@ -133,7 +134,7 @@ config PINCTRL_MSM8994 > config PINCTRL_MSM8996 > tristate "Qualcomm MSM8996 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm MSM8996 platform. > @@ -141,7 +142,7 @@ config PINCTRL_MSM8996 > config PINCTRL_MSM8998 > tristate "Qualcomm MSM8998 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm TLMM block found in the Qualcomm MSM8998 platform. > @@ -149,7 +150,7 @@ config PINCTRL_MSM8998 > config PINCTRL_QCS404 > tristate "Qualcomm QCS404 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > TLMM block found in the Qualcomm QCS404 platform. > @@ -157,7 +158,7 @@ config PINCTRL_QCS404 > config PINCTRL_QDF2XXX > tristate "Qualcomm Technologies QDF2xxx pin controller driver" > depends on GPIOLIB && ACPI > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the GPIO driver for the TLMM block found on the > Qualcomm Technologies QDF2xxx SOCs. > @@ -194,7 +195,7 @@ config PINCTRL_QCOM_SSBI_PMIC > config PINCTRL_SC7180 > tristate "Qualcomm Technologies Inc SC7180 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm Technologies Inc TLMM block found on the Qualcomm > @@ -203,7 +204,7 @@ config PINCTRL_SC7180 > config PINCTRL_SDM660 > tristate "Qualcomm Technologies Inc SDM660 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm Technologies Inc TLMM block found on the Qualcomm > @@ -212,7 +213,7 @@ config PINCTRL_SDM660 > config PINCTRL_SDM845 > tristate "Qualcomm Technologies Inc SDM845 pin controller driver" > depends on GPIOLIB && (OF || ACPI) > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm Technologies Inc TLMM block found on the Qualcomm > @@ -221,7 +222,7 @@ config PINCTRL_SDM845 > config PINCTRL_SM8150 > tristate "Qualcomm Technologies Inc SM8150 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm Technologies Inc TLMM block found on the Qualcomm > @@ -230,7 +231,7 @@ config PINCTRL_SM8150 > config PINCTRL_SM8250 > tristate "Qualcomm Technologies Inc SM8250 pin controller driver" > depends on GPIOLIB && OF > - select PINCTRL_MSM > + depends on PINCTRL_MSM > help > This is the pinctrl, pinmux, pinconf and gpiolib driver for the > Qualcomm Technologies Inc TLMM block found on the Qualcomm > diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c > index c4bcda90aac4a..988343ac49b92 100644 > --- a/drivers/pinctrl/qcom/pinctrl-msm.c > +++ b/drivers/pinctrl/qcom/pinctrl-msm.c > @@ -1443,3 +1443,5 @@ int msm_pinctrl_remove(struct platform_device *pdev) > } > EXPORT_SYMBOL(msm_pinctrl_remove); > > +MODULE_DESCRIPTION("Qualcomm Technologies, Inc. TLMM driver"); > +MODULE_LICENSE("GPL v2"); > -- > 2.17.1 >
On Fri 30 Oct 19:38 CDT 2020, John Stultz wrote: > Allow the qcom_scm driver to be loadable as a permenent module. > > This still uses the "depends on QCOM_SCM || !QCOM_SCM" bit to > ensure that drivers that call into the qcom_scm driver are > also built as modules. While not ideal in some cases its the > only safe way I can find to avoid build errors without having > those drivers select QCOM_SCM and have to force it on (as > QCOM_SCM=n can be valid for those drivers). > > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Cc: Andy Gross <agross@kernel.org> > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Joerg Roedel <joro@8bytes.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Jason Cooper <jason@lakedaemon.net> > Cc: Marc Zyngier <maz@kernel.org> > Cc: Linus Walleij <linus.walleij@linaro.org> > Cc: Vinod Koul <vkoul@kernel.org> > Cc: Kalle Valo <kvalo@codeaurora.org> > Cc: Maulik Shah <mkshah@codeaurora.org> > Cc: Lina Iyer <ilina@codeaurora.org> > Cc: Saravana Kannan <saravanak@google.com> > Cc: Todd Kjos <tkjos@google.com> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: linux-arm-msm@vger.kernel.org > Cc: iommu@lists.linux-foundation.org > Cc: linux-gpio@vger.kernel.org > Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Signed-off-by: John Stultz <john.stultz@linaro.org> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Regards, Bjorn > --- > v3: > * Fix __arm_smccc_smc build issue reported by > kernel test robot <lkp@intel.com> > v4: > * Add "depends on QCOM_SCM || !QCOM_SCM" bit to ath10k > config that requires it. > v5: > * Fix QCOM_QCM typo in Kconfig, it should be QCOM_SCM > --- > drivers/firmware/Kconfig | 4 ++-- > drivers/firmware/Makefile | 3 ++- > drivers/firmware/qcom_scm.c | 4 ++++ > drivers/iommu/Kconfig | 2 ++ > drivers/net/wireless/ath/ath10k/Kconfig | 1 + > 5 files changed, 11 insertions(+), 3 deletions(-) > > diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig > index 3315e3c215864..5e369928bc567 100644 > --- a/drivers/firmware/Kconfig > +++ b/drivers/firmware/Kconfig > @@ -235,8 +235,8 @@ config INTEL_STRATIX10_RSU > Say Y here if you want Intel RSU support. > > config QCOM_SCM > - bool > - depends on ARM || ARM64 > + tristate "Qcom SCM driver" > + depends on (ARM && HAVE_ARM_SMCCC) || ARM64 > select RESET_CONTROLLER > > config QCOM_SCM_DOWNLOAD_MODE_DEFAULT > diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile > index 5e013b6a3692e..523173cbff335 100644 > --- a/drivers/firmware/Makefile > +++ b/drivers/firmware/Makefile > @@ -17,7 +17,8 @@ obj-$(CONFIG_ISCSI_IBFT) += iscsi_ibft.o > obj-$(CONFIG_FIRMWARE_MEMMAP) += memmap.o > obj-$(CONFIG_RASPBERRYPI_FIRMWARE) += raspberrypi.o > obj-$(CONFIG_FW_CFG_SYSFS) += qemu_fw_cfg.o > -obj-$(CONFIG_QCOM_SCM) += qcom_scm.o qcom_scm-smc.o qcom_scm-legacy.o > +obj-$(CONFIG_QCOM_SCM) += qcom-scm.o > +qcom-scm-objs += qcom_scm.o qcom_scm-smc.o qcom_scm-legacy.o > obj-$(CONFIG_TI_SCI_PROTOCOL) += ti_sci.o > obj-$(CONFIG_TRUSTED_FOUNDATIONS) += trusted_foundations.o > obj-$(CONFIG_TURRIS_MOX_RWTM) += turris-mox-rwtm.o > diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c > index 7be48c1bec96d..6f431b73e617d 100644 > --- a/drivers/firmware/qcom_scm.c > +++ b/drivers/firmware/qcom_scm.c > @@ -1280,6 +1280,7 @@ static const struct of_device_id qcom_scm_dt_match[] = { > { .compatible = "qcom,scm" }, > {} > }; > +MODULE_DEVICE_TABLE(of, qcom_scm_dt_match); > > static struct platform_driver qcom_scm_driver = { > .driver = { > @@ -1295,3 +1296,6 @@ static int __init qcom_scm_init(void) > return platform_driver_register(&qcom_scm_driver); > } > subsys_initcall(qcom_scm_init); > + > +MODULE_DESCRIPTION("Qualcomm Technologies, Inc. SCM driver"); > +MODULE_LICENSE("GPL v2"); > diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig > index 04878caf6da49..c64d7a2b65134 100644 > --- a/drivers/iommu/Kconfig > +++ b/drivers/iommu/Kconfig > @@ -248,6 +248,7 @@ config SPAPR_TCE_IOMMU > config ARM_SMMU > tristate "ARM Ltd. System MMU (SMMU) Support" > depends on ARM64 || ARM || (COMPILE_TEST && !GENERIC_ATOMIC64) > + depends on QCOM_SCM || !QCOM_SCM #if QCOM_SCM=m this can't be =y > select IOMMU_API > select IOMMU_IO_PGTABLE_LPAE > select ARM_DMA_USE_IOMMU if ARM > @@ -375,6 +376,7 @@ config QCOM_IOMMU > # Note: iommu drivers cannot (yet?) be built as modules > bool "Qualcomm IOMMU Support" > depends on ARCH_QCOM || (COMPILE_TEST && !GENERIC_ATOMIC64) > + depends on QCOM_SCM=y > select IOMMU_API > select IOMMU_IO_PGTABLE_LPAE > select ARM_DMA_USE_IOMMU > diff --git a/drivers/net/wireless/ath/ath10k/Kconfig b/drivers/net/wireless/ath/ath10k/Kconfig > index 40f91bc8514d8..741289e385d59 100644 > --- a/drivers/net/wireless/ath/ath10k/Kconfig > +++ b/drivers/net/wireless/ath/ath10k/Kconfig > @@ -44,6 +44,7 @@ config ATH10K_SNOC > tristate "Qualcomm ath10k SNOC support" > depends on ATH10K > depends on ARCH_QCOM || COMPILE_TEST > + depends on QCOM_SCM || !QCOM_SCM #if QCOM_SCM=m this can't be =y > select QCOM_QMI_HELPERS > help > This module adds support for integrated WCN3990 chip connected > -- > 2.17.1 >
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index 17a2df6a263e8..45768828fdb8e 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -483,6 +483,7 @@ CONFIG_PINCTRL_IMX8MP=y CONFIG_PINCTRL_IMX8MQ=y CONFIG_PINCTRL_IMX8QXP=y CONFIG_PINCTRL_IMX8DXL=y +CONFIG_PINCTRL_MSM=y CONFIG_PINCTRL_IPQ8074=y CONFIG_PINCTRL_IPQ6018=y CONFIG_PINCTRL_MSM8916=y diff --git a/drivers/pinctrl/qcom/Kconfig b/drivers/pinctrl/qcom/Kconfig index 5fe7b8aaf69d8..8bb786ed152dd 100644 --- a/drivers/pinctrl/qcom/Kconfig +++ b/drivers/pinctrl/qcom/Kconfig @@ -2,7 +2,8 @@ if (ARCH_QCOM || COMPILE_TEST) config PINCTRL_MSM - bool + tristate "Qualcomm core pin controller driver" + depends on QCOM_SCM || !QCOM_SCM #if QCOM_SCM=m this can't be =y select PINMUX select PINCONF select GENERIC_PINCONF @@ -13,7 +14,7 @@ config PINCTRL_MSM config PINCTRL_APQ8064 tristate "Qualcomm APQ8064 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm APQ8064 platform. @@ -21,7 +22,7 @@ config PINCTRL_APQ8064 config PINCTRL_APQ8084 tristate "Qualcomm APQ8084 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm APQ8084 platform. @@ -29,7 +30,7 @@ config PINCTRL_APQ8084 config PINCTRL_IPQ4019 tristate "Qualcomm IPQ4019 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm IPQ4019 platform. @@ -37,7 +38,7 @@ config PINCTRL_IPQ4019 config PINCTRL_IPQ8064 tristate "Qualcomm IPQ8064 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm IPQ8064 platform. @@ -45,7 +46,7 @@ config PINCTRL_IPQ8064 config PINCTRL_IPQ8074 tristate "Qualcomm Technologies, Inc. IPQ8074 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm Technologies Inc. TLMM block found on the @@ -55,7 +56,7 @@ config PINCTRL_IPQ8074 config PINCTRL_IPQ6018 tristate "Qualcomm Technologies, Inc. IPQ6018 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm Technologies Inc. TLMM block found on the @@ -65,7 +66,7 @@ config PINCTRL_IPQ6018 config PINCTRL_MSM8226 tristate "Qualcomm 8226 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm Technologies Inc TLMM block found on the Qualcomm @@ -74,7 +75,7 @@ config PINCTRL_MSM8226 config PINCTRL_MSM8660 tristate "Qualcomm 8660 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm 8660 platform. @@ -82,7 +83,7 @@ config PINCTRL_MSM8660 config PINCTRL_MSM8960 tristate "Qualcomm 8960 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm 8960 platform. @@ -90,7 +91,7 @@ config PINCTRL_MSM8960 config PINCTRL_MDM9615 tristate "Qualcomm 9615 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm 9615 platform. @@ -98,7 +99,7 @@ config PINCTRL_MDM9615 config PINCTRL_MSM8X74 tristate "Qualcomm 8x74 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm 8974 platform. @@ -106,7 +107,7 @@ config PINCTRL_MSM8X74 config PINCTRL_MSM8916 tristate "Qualcomm 8916 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found on the Qualcomm 8916 platform. @@ -114,7 +115,7 @@ config PINCTRL_MSM8916 config PINCTRL_MSM8976 tristate "Qualcomm 8976 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found on the Qualcomm MSM8976 platform. @@ -124,7 +125,7 @@ config PINCTRL_MSM8976 config PINCTRL_MSM8994 tristate "Qualcomm 8994 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm 8994 platform. The @@ -133,7 +134,7 @@ config PINCTRL_MSM8994 config PINCTRL_MSM8996 tristate "Qualcomm MSM8996 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm MSM8996 platform. @@ -141,7 +142,7 @@ config PINCTRL_MSM8996 config PINCTRL_MSM8998 tristate "Qualcomm MSM8998 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm MSM8998 platform. @@ -149,7 +150,7 @@ config PINCTRL_MSM8998 config PINCTRL_QCS404 tristate "Qualcomm QCS404 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the TLMM block found in the Qualcomm QCS404 platform. @@ -157,7 +158,7 @@ config PINCTRL_QCS404 config PINCTRL_QDF2XXX tristate "Qualcomm Technologies QDF2xxx pin controller driver" depends on GPIOLIB && ACPI - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the GPIO driver for the TLMM block found on the Qualcomm Technologies QDF2xxx SOCs. @@ -194,7 +195,7 @@ config PINCTRL_QCOM_SSBI_PMIC config PINCTRL_SC7180 tristate "Qualcomm Technologies Inc SC7180 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm Technologies Inc TLMM block found on the Qualcomm @@ -203,7 +204,7 @@ config PINCTRL_SC7180 config PINCTRL_SDM660 tristate "Qualcomm Technologies Inc SDM660 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm Technologies Inc TLMM block found on the Qualcomm @@ -212,7 +213,7 @@ config PINCTRL_SDM660 config PINCTRL_SDM845 tristate "Qualcomm Technologies Inc SDM845 pin controller driver" depends on GPIOLIB && (OF || ACPI) - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm Technologies Inc TLMM block found on the Qualcomm @@ -221,7 +222,7 @@ config PINCTRL_SDM845 config PINCTRL_SM8150 tristate "Qualcomm Technologies Inc SM8150 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm Technologies Inc TLMM block found on the Qualcomm @@ -230,7 +231,7 @@ config PINCTRL_SM8150 config PINCTRL_SM8250 tristate "Qualcomm Technologies Inc SM8250 pin controller driver" depends on GPIOLIB && OF - select PINCTRL_MSM + depends on PINCTRL_MSM help This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm Technologies Inc TLMM block found on the Qualcomm diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c index c4bcda90aac4a..988343ac49b92 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm.c +++ b/drivers/pinctrl/qcom/pinctrl-msm.c @@ -1443,3 +1443,5 @@ int msm_pinctrl_remove(struct platform_device *pdev) } EXPORT_SYMBOL(msm_pinctrl_remove); +MODULE_DESCRIPTION("Qualcomm Technologies, Inc. TLMM driver"); +MODULE_LICENSE("GPL v2");
Tweaks to allow pinctrl-msm code to be loadable as a module. This is needed in order to support having the qcom-scm driver, which pinctrl-msm calls into, configured as a module. This requires that we tweak Kconfigs selecting PINCTRL_MSM to also depend on QCOM_SCM || QCOM_SCM=n so that we match the module setting of QCOM_SCM. Unlike the previous revision of this patch: https://lore.kernel.org/lkml/20200625001039.56174-5-john.stultz@linaro.org/ this version reworks PINCTRL_MSM to be a visible option and instead of having the various SoC specific drivers select PINCTRL_MSM, this switches those configs to depend on PINCTRL_MSM. This avoids adding the oddish looking: "depend on QCOM_SCM || QCOM_SCM=n" to every SoC specific driver, as that becomes a maintenance headache. We also add PINCTRL_MSM to the arm64 defconfig to avoid surprises as otherwise PINCTRL_MSM/IPQ* options previously enabled, will be off. Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Andy Gross <agross@kernel.org> Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Joerg Roedel <joro@8bytes.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Jason Cooper <jason@lakedaemon.net> Cc: Marc Zyngier <maz@kernel.org> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Vinod Koul <vkoul@kernel.org> Cc: Kalle Valo <kvalo@codeaurora.org> Cc: Maulik Shah <mkshah@codeaurora.org> Cc: Lina Iyer <ilina@codeaurora.org> Cc: Saravana Kannan <saravanak@google.com> Cc: Todd Kjos <tkjos@google.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: linux-arm-msm@vger.kernel.org Cc: iommu@lists.linux-foundation.org Cc: linux-gpio@vger.kernel.org Signed-off-by: John Stultz <john.stultz@linaro.org> --- v2: * Module description and whitespace fixes suggested by Bjorn * Added QCOM_SCM || QCOM_SCM=n bits on Kconfigs selecting PINCTRL_MSM. Reported by both Todd and Bjorn. v3: * Make sure the QCOM_SCM || QCOM_SCM=n trick is commented v4: * Rework "select PINCTRL_MSM" to "depends on PINCTRL_MSM" to consolidate the QCOM_SCM dependency. v5: * Add PINCTRL_MSM to arm64 defconfig --- arch/arm64/configs/defconfig | 1 + drivers/pinctrl/qcom/Kconfig | 49 +++++++++++++++--------------- drivers/pinctrl/qcom/pinctrl-msm.c | 2 ++ 3 files changed, 28 insertions(+), 24 deletions(-)