[RFC] drivers: use 'depends on MFD_SYSCON' instead of 'select MFD_SYSCON'
diff mbox

Message ID 1519483851-31135-1-git-send-email-yamada.masahiro@socionext.com
State New, archived
Headers show

Commit Message

Masahiro Yamada Feb. 24, 2018, 2:50 p.m. UTC
As Documentation/kbuild/kconfig-language.txt notes, 'select' should be
used with care - it forces a lower limit of another symbol, ignoring
the dependency.

MFD_SYSCON depends on HAS_IOMEM, but several drivers with COMPILE_TEST
select it.

This causes unmet dependencies for architecture without HAS_IOMEM.

  $ make ARCH=score randconfig
  scripts/kconfig/conf  --randconfig Kconfig
  KCONFIG_SEED=0x27C47F43
  warning: (HWSPINLOCK_QCOM && AHCI_MTK && STMMAC_PLATFORM && ...)
  selects MFD_SYSCON which has unmet direct dependencies (HAS_IOMEM)

Use 'depends on' to observe the dependency.

This commit was created by the following command:

  $ find drivers -name 'Kconfig*' | xargs sed -i -e \
    's/select MFD_SYSCON$/depends on MFD_SYSCON/'

Then, COMMON_CLK_NXP and S3C2410_WATCHDOG were fixed up manually.

Also, make MFD_SYSCON 'default y' because some defconfig files may
rely on someone select's MFD_SYSCON.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

If you have a better idea to fix 'unmet dependencies',
please suggest.


 drivers/ata/Kconfig                         |  2 +-
 drivers/clk/Kconfig                         |  9 ++++-----
 drivers/clk/imgtec/Kconfig                  |  2 +-
 drivers/clocksource/Kconfig                 |  4 ++--
 drivers/dma/Kconfig                         |  2 +-
 drivers/gpu/drm/exynos/Kconfig              |  2 +-
 drivers/hwspinlock/Kconfig                  |  2 +-
 drivers/input/touchscreen/Kconfig           |  2 +-
 drivers/irqchip/Kconfig                     |  2 +-
 drivers/media/platform/Kconfig              |  2 +-
 drivers/media/platform/exynos4-is/Kconfig   |  2 +-
 drivers/memory/Kconfig                      |  2 +-
 drivers/mfd/Kconfig                         |  5 +++--
 drivers/net/ethernet/hisilicon/Kconfig      |  2 +-
 drivers/net/ethernet/stmicro/stmmac/Kconfig | 16 ++++++++--------
 drivers/net/ethernet/ti/Kconfig             |  2 +-
 drivers/pci/dwc/Kconfig                     |  2 +-
 drivers/pci/host/Kconfig                    |  2 +-
 drivers/phy/hisilicon/Kconfig               |  4 ++--
 drivers/phy/ralink/Kconfig                  |  2 +-
 drivers/phy/rockchip/Kconfig                |  2 +-
 drivers/phy/samsung/Kconfig                 |  6 +++---
 drivers/phy/ti/Kconfig                      |  2 +-
 drivers/pinctrl/Kconfig                     |  6 +++---
 drivers/pinctrl/mvebu/Kconfig               |  4 ++--
 drivers/pinctrl/stm32/Kconfig               |  2 +-
 drivers/power/reset/Kconfig                 |  6 +++---
 drivers/remoteproc/Kconfig                  |  4 ++--
 drivers/reset/Kconfig                       |  4 ++--
 drivers/rtc/Kconfig                         |  2 +-
 drivers/soc/qcom/Kconfig                    |  2 +-
 drivers/staging/media/omap4iss/Kconfig      |  2 +-
 drivers/usb/host/Kconfig                    |  2 +-
 drivers/video/fbdev/Kconfig                 |  2 +-
 drivers/watchdog/Kconfig                    |  4 ++--
 35 files changed, 59 insertions(+), 59 deletions(-)

Comments

Andy Shevchenko Feb. 25, 2018, 12:13 p.m. UTC | #1
On Sat, Feb 24, 2018 at 4:50 PM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:

> Also, make MFD_SYSCON 'default y' because some defconfig files may
> rely on someone select's MFD_SYSCON.

I'm not sure this is right thing to do. You basically imply that there
always a user of it.
Arnd Bergmann Feb. 26, 2018, 8:43 a.m. UTC | #2
On Sat, Feb 24, 2018 at 3:50 PM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> As Documentation/kbuild/kconfig-language.txt notes, 'select' should be
> used with care - it forces a lower limit of another symbol, ignoring
> the dependency.
>
> MFD_SYSCON depends on HAS_IOMEM, but several drivers with COMPILE_TEST
> select it.
>
> This causes unmet dependencies for architecture without HAS_IOMEM.
>
>   $ make ARCH=score randconfig
>   scripts/kconfig/conf  --randconfig Kconfig
>   KCONFIG_SEED=0x27C47F43
>   warning: (HWSPINLOCK_QCOM && AHCI_MTK && STMMAC_PLATFORM && ...)
>   selects MFD_SYSCON which has unmet direct dependencies (HAS_IOMEM)
>
> Use 'depends on' to observe the dependency.
>
> This commit was created by the following command:
>
>   $ find drivers -name 'Kconfig*' | xargs sed -i -e \
>     's/select MFD_SYSCON$/depends on MFD_SYSCON/'
>
> Then, COMMON_CLK_NXP and S3C2410_WATCHDOG were fixed up manually.
>
> Also, make MFD_SYSCON 'default y' because some defconfig files may
> rely on someone select's MFD_SYSCON.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
>
> If you have a better idea to fix 'unmet dependencies',
> please suggest.

Changing 'select MFD_SYSCON' to 'depends on' will definitely break lots
of defconfig configurations, I'd rather not do that.

Only score, tile and um have some configurations that select 'NO_IOMEM'.
Score is getting removed now, tile might get removed later (we could make
PCI mandatory in the meantime to avoid that configuration), and I think for
um, we already have a workaround for the NO_IOMEM dependencies
(I forget the details).

        Arnd
Masahiro Yamada Feb. 26, 2018, 11:53 a.m. UTC | #3
2018-02-26 17:43 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
> On Sat, Feb 24, 2018 at 3:50 PM, Masahiro Yamada
> <yamada.masahiro@socionext.com> wrote:
>> As Documentation/kbuild/kconfig-language.txt notes, 'select' should be
>> used with care - it forces a lower limit of another symbol, ignoring
>> the dependency.
>>
>> MFD_SYSCON depends on HAS_IOMEM, but several drivers with COMPILE_TEST
>> select it.
>>
>> This causes unmet dependencies for architecture without HAS_IOMEM.
>>
>>   $ make ARCH=score randconfig
>>   scripts/kconfig/conf  --randconfig Kconfig
>>   KCONFIG_SEED=0x27C47F43
>>   warning: (HWSPINLOCK_QCOM && AHCI_MTK && STMMAC_PLATFORM && ...)
>>   selects MFD_SYSCON which has unmet direct dependencies (HAS_IOMEM)
>>
>> Use 'depends on' to observe the dependency.
>>
>> This commit was created by the following command:
>>
>>   $ find drivers -name 'Kconfig*' | xargs sed -i -e \
>>     's/select MFD_SYSCON$/depends on MFD_SYSCON/'
>>
>> Then, COMMON_CLK_NXP and S3C2410_WATCHDOG were fixed up manually.
>>
>> Also, make MFD_SYSCON 'default y' because some defconfig files may
>> rely on someone select's MFD_SYSCON.
>>
>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
>> ---
>>
>> If you have a better idea to fix 'unmet dependencies',
>> please suggest.
>
> Changing 'select MFD_SYSCON' to 'depends on' will definitely break lots
> of defconfig configurations, I'd rather not do that.


Could you explain why?

I set 'default y' for MFD_SYSCON.

Would it still break defconfig configurations?




> Only score, tile and um have some configurations that select 'NO_IOMEM'.
> Score is getting removed now, tile might get removed later (we could make
> PCI mandatory in the meantime to avoid that configuration), and I think for
> um, we already have a workaround for the NO_IOMEM dependencies
> (I forget the details).

I do not think this is a stable solution.

Or, do you mean to remove NO_IOMEM and HAS_IOMEM completely?
Arnd Bergmann Feb. 26, 2018, 12:43 p.m. UTC | #4
On Mon, Feb 26, 2018 at 12:53 PM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> 2018-02-26 17:43 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>> On Sat, Feb 24, 2018 at 3:50 PM, Masahiro Yamada
>> <yamada.masahiro@socionext.com> wrote:
>>> As Documentation/kbuild/kconfig-language.txt notes, 'select' should be
>>> used with care - it forces a lower limit of another symbol, ignoring
>>> the dependency.
>>>
>>> MFD_SYSCON depends on HAS_IOMEM, but several drivers with COMPILE_TEST
>>> select it.
>>>
>>> This causes unmet dependencies for architecture without HAS_IOMEM.
>>>
>>>   $ make ARCH=score randconfig
>>>   scripts/kconfig/conf  --randconfig Kconfig
>>>   KCONFIG_SEED=0x27C47F43
>>>   warning: (HWSPINLOCK_QCOM && AHCI_MTK && STMMAC_PLATFORM && ...)
>>>   selects MFD_SYSCON which has unmet direct dependencies (HAS_IOMEM)
>>>
>>> Use 'depends on' to observe the dependency.
>>>
>>> This commit was created by the following command:
>>>
>>>   $ find drivers -name 'Kconfig*' | xargs sed -i -e \
>>>     's/select MFD_SYSCON$/depends on MFD_SYSCON/'
>>>
>>> Then, COMMON_CLK_NXP and S3C2410_WATCHDOG were fixed up manually.
>>>
>>> Also, make MFD_SYSCON 'default y' because some defconfig files may
>>> rely on someone select's MFD_SYSCON.
>>>
>>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
>>> ---
>>>
>>> If you have a better idea to fix 'unmet dependencies',
>>> please suggest.
>>
>> Changing 'select MFD_SYSCON' to 'depends on' will definitely break lots
>> of defconfig configurations, I'd rather not do that.
>
>
> Could you explain why?
>
> I set 'default y' for MFD_SYSCON.
>
> Would it still break defconfig configurations?

No, you are right, that would not break defconfigs, it would just mean one
useless driver being enabled for many configurations that don't need it.

>> Only score, tile and um have some configurations that select 'NO_IOMEM'.
>> Score is getting removed now, tile might get removed later (we could make
>> PCI mandatory in the meantime to avoid that configuration), and I think for
>> um, we already have a workaround for the NO_IOMEM dependencies
>> (I forget the details).
>
> I do not think this is a stable solution.
>
> Or, do you mean to remove NO_IOMEM and HAS_IOMEM completely?

We could either leave it for arch/um only and have that deal with the
issues (which I think we already have), or we could remove the options
entirely.

      Arnd
Masahiro Yamada Feb. 27, 2018, 12:46 a.m. UTC | #5
2018-02-26 21:43 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
> On Mon, Feb 26, 2018 at 12:53 PM, Masahiro Yamada
> <yamada.masahiro@socionext.com> wrote:
>> 2018-02-26 17:43 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>>> On Sat, Feb 24, 2018 at 3:50 PM, Masahiro Yamada
>>> <yamada.masahiro@socionext.com> wrote:
>>>> As Documentation/kbuild/kconfig-language.txt notes, 'select' should be
>>>> used with care - it forces a lower limit of another symbol, ignoring
>>>> the dependency.
>>>>
>>>> MFD_SYSCON depends on HAS_IOMEM, but several drivers with COMPILE_TEST
>>>> select it.
>>>>
>>>> This causes unmet dependencies for architecture without HAS_IOMEM.
>>>>
>>>>   $ make ARCH=score randconfig
>>>>   scripts/kconfig/conf  --randconfig Kconfig
>>>>   KCONFIG_SEED=0x27C47F43
>>>>   warning: (HWSPINLOCK_QCOM && AHCI_MTK && STMMAC_PLATFORM && ...)
>>>>   selects MFD_SYSCON which has unmet direct dependencies (HAS_IOMEM)
>>>>
>>>> Use 'depends on' to observe the dependency.
>>>>
>>>> This commit was created by the following command:
>>>>
>>>>   $ find drivers -name 'Kconfig*' | xargs sed -i -e \
>>>>     's/select MFD_SYSCON$/depends on MFD_SYSCON/'
>>>>
>>>> Then, COMMON_CLK_NXP and S3C2410_WATCHDOG were fixed up manually.
>>>>
>>>> Also, make MFD_SYSCON 'default y' because some defconfig files may
>>>> rely on someone select's MFD_SYSCON.
>>>>
>>>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
>>>> ---
>>>>
>>>> If you have a better idea to fix 'unmet dependencies',
>>>> please suggest.
>>>
>>> Changing 'select MFD_SYSCON' to 'depends on' will definitely break lots
>>> of defconfig configurations, I'd rather not do that.
>>
>>
>> Could you explain why?
>>
>> I set 'default y' for MFD_SYSCON.
>>
>> Would it still break defconfig configurations?
>
> No, you are right, that would not break defconfigs, it would just mean one
> useless driver being enabled for many configurations that don't need it.

If we are unhappy about this,
we can send per-arch patches
to add CONFIG_MTD_SYSCON=y to defconfigs that need it.

But, we need to decide what the right solution is.


>>> Only score, tile and um have some configurations that select 'NO_IOMEM'.
>>> Score is getting removed now, tile might get removed later (we could make
>>> PCI mandatory in the meantime to avoid that configuration), and I think for
>>> um, we already have a workaround for the NO_IOMEM dependencies
>>> (I forget the details).
>>
>> I do not think this is a stable solution.
>>
>> Or, do you mean to remove NO_IOMEM and HAS_IOMEM completely?
>
> We could either leave it for arch/um only and have that deal with the
> issues (which I think we already have), or we could remove the options
> entirely.
>
>       Arnd
> --
> To unsubscribe from this list: send the line "unsubscribe linux-clk" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arnd Bergmann Feb. 27, 2018, 9:03 a.m. UTC | #6
On Tue, Feb 27, 2018 at 1:46 AM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> 2018-02-26 21:43 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>> On Mon, Feb 26, 2018 at 12:53 PM, Masahiro Yamada
>> <yamada.masahiro@socionext.com> wrote:
>>> 2018-02-26 17:43 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>>>> On Sat, Feb 24, 2018 at 3:50 PM, Masahiro Yamada
>>>> <yamada.masahiro@socionext.com> wrote:
>>>>> As Documentation/kbuild/kconfig-language.txt notes, 'select' should be
>>>>> used with care - it forces a lower limit of another symbol, ignoring
>>>>> the dependency.
>>>>>
>>>>> MFD_SYSCON depends on HAS_IOMEM, but several drivers with COMPILE_TEST
>>>>> select it.
>>>>>
>>>>> This causes unmet dependencies for architecture without HAS_IOMEM.
>>>>>
>>>>>   $ make ARCH=score randconfig
>>>>>   scripts/kconfig/conf  --randconfig Kconfig
>>>>>   KCONFIG_SEED=0x27C47F43
>>>>>   warning: (HWSPINLOCK_QCOM && AHCI_MTK && STMMAC_PLATFORM && ...)
>>>>>   selects MFD_SYSCON which has unmet direct dependencies (HAS_IOMEM)
>>>>>
>>>>> Use 'depends on' to observe the dependency.
>>>>>
>>>>> This commit was created by the following command:
>>>>>
>>>>>   $ find drivers -name 'Kconfig*' | xargs sed -i -e \
>>>>>     's/select MFD_SYSCON$/depends on MFD_SYSCON/'
>>>>>
>>>>> Then, COMMON_CLK_NXP and S3C2410_WATCHDOG were fixed up manually.
>>>>>
>>>>> Also, make MFD_SYSCON 'default y' because some defconfig files may
>>>>> rely on someone select's MFD_SYSCON.
>>>>>
>>>>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
>>>>> ---
>>>>>
>>>>> If you have a better idea to fix 'unmet dependencies',
>>>>> please suggest.
>>>>
>>>> Changing 'select MFD_SYSCON' to 'depends on' will definitely break lots
>>>> of defconfig configurations, I'd rather not do that.
>>>
>>>
>>> Could you explain why?
>>>
>>> I set 'default y' for MFD_SYSCON.
>>>
>>> Would it still break defconfig configurations?
>>
>> No, you are right, that would not break defconfigs, it would just mean one
>> useless driver being enabled for many configurations that don't need it.
>
> If we are unhappy about this,
> we can send per-arch patches
> to add CONFIG_MTD_SYSCON=y to defconfigs that need it.
>
> But, we need to decide what the right solution is.

I think for consistency, we should change the existing
'depends on MFD_SYSCON' to 'select MFD_SYSCON'. This
matches what we do with REGMAP_MMIO.

MFD_SYSCON is really a thin wrapper around REGMAP_MMIO,
so I would keep using the same conventions here, even though
we normally prefer to not 'select' any user-visible options.

It might be possible to make MFD_SYSCON a silent symbol
as well, but we'd have to make sure that all users select the symbol
then.

        Arnd
Masahiro Yamada Feb. 27, 2018, 10:22 a.m. UTC | #7
2018-02-27 18:03 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
> On Tue, Feb 27, 2018 at 1:46 AM, Masahiro Yamada
> <yamada.masahiro@socionext.com> wrote:
>> 2018-02-26 21:43 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>>> On Mon, Feb 26, 2018 at 12:53 PM, Masahiro Yamada
>>> <yamada.masahiro@socionext.com> wrote:
>>>> 2018-02-26 17:43 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>>>>> On Sat, Feb 24, 2018 at 3:50 PM, Masahiro Yamada
>>>>> <yamada.masahiro@socionext.com> wrote:
>>>>>> As Documentation/kbuild/kconfig-language.txt notes, 'select' should be
>>>>>> used with care - it forces a lower limit of another symbol, ignoring
>>>>>> the dependency.
>>>>>>
>>>>>> MFD_SYSCON depends on HAS_IOMEM, but several drivers with COMPILE_TEST
>>>>>> select it.
>>>>>>
>>>>>> This causes unmet dependencies for architecture without HAS_IOMEM.
>>>>>>
>>>>>>   $ make ARCH=score randconfig
>>>>>>   scripts/kconfig/conf  --randconfig Kconfig
>>>>>>   KCONFIG_SEED=0x27C47F43
>>>>>>   warning: (HWSPINLOCK_QCOM && AHCI_MTK && STMMAC_PLATFORM && ...)
>>>>>>   selects MFD_SYSCON which has unmet direct dependencies (HAS_IOMEM)
>>>>>>
>>>>>> Use 'depends on' to observe the dependency.
>>>>>>
>>>>>> This commit was created by the following command:
>>>>>>
>>>>>>   $ find drivers -name 'Kconfig*' | xargs sed -i -e \
>>>>>>     's/select MFD_SYSCON$/depends on MFD_SYSCON/'
>>>>>>
>>>>>> Then, COMMON_CLK_NXP and S3C2410_WATCHDOG were fixed up manually.
>>>>>>
>>>>>> Also, make MFD_SYSCON 'default y' because some defconfig files may
>>>>>> rely on someone select's MFD_SYSCON.
>>>>>>
>>>>>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
>>>>>> ---
>>>>>>
>>>>>> If you have a better idea to fix 'unmet dependencies',
>>>>>> please suggest.
>>>>>
>>>>> Changing 'select MFD_SYSCON' to 'depends on' will definitely break lots
>>>>> of defconfig configurations, I'd rather not do that.
>>>>
>>>>
>>>> Could you explain why?
>>>>
>>>> I set 'default y' for MFD_SYSCON.
>>>>
>>>> Would it still break defconfig configurations?
>>>
>>> No, you are right, that would not break defconfigs, it would just mean one
>>> useless driver being enabled for many configurations that don't need it.
>>
>> If we are unhappy about this,
>> we can send per-arch patches
>> to add CONFIG_MTD_SYSCON=y to defconfigs that need it.
>>
>> But, we need to decide what the right solution is.
>
> I think for consistency, we should change the existing
> 'depends on MFD_SYSCON' to 'select MFD_SYSCON'. This
> matches what we do with REGMAP_MMIO.
>
> MFD_SYSCON is really a thin wrapper around REGMAP_MMIO,
> so I would keep using the same conventions here, even though
> we normally prefer to not 'select' any user-visible options.
>
> It might be possible to make MFD_SYSCON a silent symbol
> as well, but we'd have to make sure that all users select the symbol
> then.
>
>         Arnd


If we agree, I can send the following three patches.


[1] Add "depends on HAS_IOMEM"
    to all drivers selecting MFD_SYSCON
    (Unmet dependencies will be fixed by this)

[2] For consistency, convert existing "depends on MFD_SYSCON"
    to "select MFD_SYSCON" + "depends on HAS_IOMEM"

[3] Change MFD_SYSCON to user-unconfigurable option.
    But, for COMPILE_TEST, allow users to enable it independently.
    Like follows:

    config MFD_SYSCON
        bool "System Controller Register R/W Based on Regmap" if COMPILE_TEST
        select REGMAP_MMIO
        help
          Select this option to enable accessing system control registers
          via regmap.


Is this OK?
Arnd Bergmann Feb. 27, 2018, 1:39 p.m. UTC | #8
On Tue, Feb 27, 2018 at 11:22 AM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> 2018-02-27 18:03 GMT+09:00 Arnd Bergmann <arnd@arndb.de>:
>> On Tue, Feb 27, 2018 at 1:46 AM, Masahiro Yamada
>> <yamada.masahiro@socionext.com> wrote:
>>> But, we need to decide what the right solution is.
>>
>> I think for consistency, we should change the existing
>> 'depends on MFD_SYSCON' to 'select MFD_SYSCON'. This
>> matches what we do with REGMAP_MMIO.
>>
>> MFD_SYSCON is really a thin wrapper around REGMAP_MMIO,
>> so I would keep using the same conventions here, even though
>> we normally prefer to not 'select' any user-visible options.
>>
>> It might be possible to make MFD_SYSCON a silent symbol
>> as well, but we'd have to make sure that all users select the symbol
>> then.
>>
>>         Arnd
>
>
> If we agree, I can send the following three patches.
>
>
> [1] Add "depends on HAS_IOMEM"
>     to all drivers selecting MFD_SYSCON
>     (Unmet dependencies will be fixed by this)
>
> [2] For consistency, convert existing "depends on MFD_SYSCON"
>     to "select MFD_SYSCON" + "depends on HAS_IOMEM"

Those sound good.

> [3] Change MFD_SYSCON to user-unconfigurable option.
>     But, for COMPILE_TEST, allow users to enable it independently.
>     Like follows:
>
>     config MFD_SYSCON
>         bool "System Controller Register R/W Based on Regmap" if COMPILE_TEST
>         select REGMAP_MMIO
>         help
>           Select this option to enable accessing system control registers
>           via regmap.
>
>
> Is this OK?

I'm unsure about the third one, since we have drivers that can optionally
use syscon, depending on the platform. With this change, any user that
manually enabled syscon to use that with a driver that requires it on their
platform but not on others will see a regression.

If we do make MFD_SYSCON a silent option like that, we should remove
the #else section in include/linux/mfd/syscon.h to force a build error,
and require all drivers to 'select MFD_SYSCON' if they are able to use it.

       Arnd

Patch
diff mbox

diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index a7120d6..e70753c 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -176,7 +176,7 @@  config AHCI_CEVA
 config AHCI_MTK
 	tristate "MediaTek AHCI SATA support"
 	depends on ARCH_MEDIATEK
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  This option enables support for the MediaTek SoC's
 	  onboard AHCI SATA controller.
diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index 98ce9fc..b4950d8 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -136,7 +136,7 @@  config COMMON_CLK_CS2000_CP
 config COMMON_CLK_GEMINI
 	bool "Clock driver for Cortina Systems Gemini SoC"
 	depends on ARCH_GEMINI || COMPILE_TEST
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select RESET_CONTROLLER
 	---help---
 	  This driver supports the SoC clocks on the Cortina Systems Gemini
@@ -146,7 +146,7 @@  config COMMON_CLK_ASPEED
 	bool "Clock driver for Aspeed BMC SoCs"
 	depends on ARCH_ASPEED || COMPILE_TEST
 	default ARCH_ASPEED
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select RESET_CONTROLLER
 	---help---
 	  This driver supports the SoC clocks on the Aspeed BMC platforms.
@@ -193,9 +193,8 @@  config COMMON_CLK_XGENE
 	  Sypport for the APM X-Gene SoC reference, PLL, and device clocks.
 
 config COMMON_CLK_NXP
-	def_bool COMMON_CLK && (ARCH_LPC18XX || ARCH_LPC32XX)
+	def_bool COMMON_CLK && ((ARCH_LPC18XX && MFD_SYSCON) || ARCH_LPC32XX)
 	select REGMAP_MMIO if ARCH_LPC32XX
-	select MFD_SYSCON if ARCH_LPC18XX
 	---help---
 	  Support for clock providers on NXP platforms.
 
@@ -224,7 +223,7 @@  config COMMON_CLK_PIC32
 config COMMON_CLK_OXNAS
 	bool "Clock driver for the OXNAS SoC Family"
 	depends on ARCH_OXNAS || COMPILE_TEST
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	---help---
 	  Support for the OXNAS SoC Family clocks.
 
diff --git a/drivers/clk/imgtec/Kconfig b/drivers/clk/imgtec/Kconfig
index f6dcb74..0034a1f 100644
--- a/drivers/clk/imgtec/Kconfig
+++ b/drivers/clk/imgtec/Kconfig
@@ -1,7 +1,7 @@ 
 config COMMON_CLK_BOSTON
 	bool "Clock driver for MIPS Boston boards"
 	depends on MIPS || COMPILE_TEST
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	---help---
 	  Enable this to support the system & CPU clocks on the MIPS Boston
 	  development board from Imagination Technologies. These are simple
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index b3b4ed9..66c0987 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -61,7 +61,7 @@  config FTTMR010_TIMER
 	depends on HAS_IOMEM
 	select CLKSRC_MMIO
 	select TIMER_OF
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Enables support for the Faraday Technology timer block
 	  FTTMR010.
@@ -387,7 +387,7 @@  config ATMEL_PIT
 config ATMEL_ST
 	bool "Atmel ST timer support" if COMPILE_TEST
 	select TIMER_OF
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Support for the Atmel ST timer.
 
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index 27df3e2..19d89d3 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -312,7 +312,7 @@  config LPC18XX_DMAMUX
 	bool "NXP LPC18xx/43xx DMA MUX for PL080"
 	depends on ARCH_LPC18XX || COMPILE_TEST
 	depends on OF && AMBA_PL08X
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Enable support for DMA on NXP LPC18xx/43xx platforms
 	  with PL080 and multiplexed DMA request lines.
diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig
index 735ce47..85fe96a 100644
--- a/drivers/gpu/drm/exynos/Kconfig
+++ b/drivers/gpu/drm/exynos/Kconfig
@@ -20,7 +20,7 @@  comment "CRTCs"
 config DRM_EXYNOS_FIMD
 	bool "FIMD"
 	depends on !FB_S3C
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Choose this option if you want to use Exynos FIMD for DRM.
 
diff --git a/drivers/hwspinlock/Kconfig b/drivers/hwspinlock/Kconfig
index f0f4679..3393b20 100644
--- a/drivers/hwspinlock/Kconfig
+++ b/drivers/hwspinlock/Kconfig
@@ -19,7 +19,7 @@  config HWSPINLOCK_QCOM
 	tristate "Qualcomm Hardware Spinlock device"
 	depends on HWSPINLOCK
 	depends on ARCH_QCOM
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Say y here to support the Qualcomm Hardware Mutex functionality, which
 	  provides a synchronisation mechanism for the various processors on
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 4f15496..96e5e78 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -987,7 +987,7 @@  config TOUCHSCREEN_TS4800
 	tristate "TS-4800 touchscreen"
 	depends on HAS_IOMEM && OF
 	depends on SOC_IMX51 || COMPILE_TEST
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select INPUT_POLLDEV
 	help
 	  Say Y here if you have a touchscreen on a TS-4800 board.
diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index d913aec..92cfe72 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -201,7 +201,7 @@  config RENESAS_IRQC
 config ST_IRQCHIP
 	bool
 	select REGMAP
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Enables SysCfg Controlled IRQs on STi based platforms.
 
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 614fbef..8909ee5 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -89,7 +89,7 @@  config VIDEO_OMAP3
 	depends on OMAP_IOMMU
 	select ARM_DMA_USE_IOMMU
 	select VIDEOBUF2_DMA_CONTIG
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select V4L2_FWNODE
 	---help---
 	  Driver for an OMAP 3 camera controller.
diff --git a/drivers/media/platform/exynos4-is/Kconfig b/drivers/media/platform/exynos4-is/Kconfig
index 7b2c49e..cea6f2b 100644
--- a/drivers/media/platform/exynos4-is/Kconfig
+++ b/drivers/media/platform/exynos4-is/Kconfig
@@ -20,7 +20,7 @@  config VIDEO_S5P_FIMC
 	depends on HAS_DMA
 	select VIDEOBUF2_DMA_CONTIG
 	select V4L2_MEM2MEM_DEV
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select VIDEO_EXYNOS4_IS_COMMON
 	help
 	  This is a V4L2 driver for Samsung S5P and EXYNOS4 SoC camera host
diff --git a/drivers/memory/Kconfig b/drivers/memory/Kconfig
index 19a0e83..924d471 100644
--- a/drivers/memory/Kconfig
+++ b/drivers/memory/Kconfig
@@ -29,7 +29,7 @@  config ATMEL_EBI
 	bool "Atmel EBI driver"
 	default y
 	depends on ARCH_AT91 && OF
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select MFD_ATMEL_SMC
 	help
 	  Driver for Atmel EBI controller.
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index b860eb5..fbbe20a 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -123,7 +123,7 @@  config MFD_ATMEL_HLCDC
 
 config MFD_ATMEL_SMC
 	bool
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 
 config MFD_BCM590XX
 	tristate "Broadcom BCM590xx PMUs"
@@ -1206,6 +1206,7 @@  config MFD_SUN6I_PRCM
 config MFD_SYSCON
 	bool "System Controller Register R/W Based on Regmap"
 	select REGMAP_MMIO
+	default y
 	help
 	  Select this option to enable accessing system control registers
 	  via regmap.
@@ -1843,7 +1844,7 @@  config MFD_VEXPRESS_SYSREG
 	select CLKSRC_MMIO
 	select GPIO_GENERIC_PLATFORM
 	select MFD_CORE
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  System Registers are the platform configuration block
 	  on the ARM Ltd. Versatile Express board.
diff --git a/drivers/net/ethernet/hisilicon/Kconfig b/drivers/net/ethernet/hisilicon/Kconfig
index 8bcf470..ca9d3e8 100644
--- a/drivers/net/ethernet/hisilicon/Kconfig
+++ b/drivers/net/ethernet/hisilicon/Kconfig
@@ -39,7 +39,7 @@  config HIP04_ETH
 	tristate "HISILICON P04 Ethernet support"
 	depends on HAS_IOMEM	# For MFD_SYSCON
 	select MARVELL_PHY
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select HNS_MDIO
 	---help---
 	  If you wish to compile a kernel for a hardware with hisilicon p04 SoC and
diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig
index e28c0d2..518c3f3 100644
--- a/drivers/net/ethernet/stmicro/stmmac/Kconfig
+++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig
@@ -15,7 +15,7 @@  if STMMAC_ETH
 config STMMAC_PLATFORM
 	tristate "STMMAC Platform bus support"
 	depends on STMMAC_ETH
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	default y
 	---help---
 	  This selects the platform specific bus support for the stmmac driver.
@@ -58,7 +58,7 @@  config DWMAC_IPQ806X
 	tristate "QCA IPQ806x DWMAC support"
 	default ARCH_QCOM
 	depends on OF && (ARCH_QCOM || COMPILE_TEST)
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Support for QCA IPQ806X DWMAC Ethernet.
 
@@ -71,7 +71,7 @@  config DWMAC_LPC18XX
 	tristate "NXP LPC18xx/43xx DWMAC support"
 	default ARCH_LPC18XX
 	depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	---help---
 	  Support for NXP LPC18xx/43xx DWMAC Ethernet.
 
@@ -90,7 +90,7 @@  config DWMAC_OXNAS
 	tristate "Oxford Semiconductor OXNAS dwmac support"
 	default ARCH_OXNAS
 	depends on OF && COMMON_CLK && (ARCH_OXNAS || COMPILE_TEST)
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Support for Ethernet controller on Oxford Semiconductor OXNAS SoCs.
 
@@ -101,7 +101,7 @@  config DWMAC_ROCKCHIP
 	tristate "Rockchip dwmac support"
 	default ARCH_ROCKCHIP
 	depends on OF && (ARCH_ROCKCHIP || COMPILE_TEST)
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Support for Ethernet controller on Rockchip RK3288 SoC.
 
@@ -112,7 +112,7 @@  config DWMAC_SOCFPGA
 	tristate "SOCFPGA dwmac support"
 	default ARCH_SOCFPGA
 	depends on OF && (ARCH_SOCFPGA || COMPILE_TEST)
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Support for ethernet controller on Altera SOCFPGA
 
@@ -124,7 +124,7 @@  config DWMAC_STI
 	tristate "STi GMAC support"
 	default ARCH_STI
 	depends on OF && (ARCH_STI || COMPILE_TEST)
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	---help---
 	  Support for ethernet controller on STi SOCs.
 
@@ -136,7 +136,7 @@  config DWMAC_STM32
 	tristate "STM32 DWMAC support"
 	default ARCH_STM32
 	depends on OF && HAS_IOMEM && (ARCH_STM32 || COMPILE_TEST)
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	---help---
 	  Support for ethernet controller on STM32 SOCs.
 
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
index 48a541e..9acad82 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -65,7 +65,7 @@  config TI_CPSW
 	select TI_DAVINCI_MDIO
 	select TI_CPSW_PHY_SEL
 	select TI_CPSW_ALE
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select REGMAP
 	---help---
 	  This driver supports TI's CPSW Ethernet Switch.
diff --git a/drivers/pci/dwc/Kconfig b/drivers/pci/dwc/Kconfig
index 0f666b1..1b13016 100644
--- a/drivers/pci/dwc/Kconfig
+++ b/drivers/pci/dwc/Kconfig
@@ -107,7 +107,7 @@  config PCI_LAYERSCAPE
 	depends on PCI
 	depends on OF && (ARM || ARCH_LAYERSCAPE)
 	depends on PCI_MSI_IRQ_DOMAIN
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select PCIE_DW_HOST
 	help
 	  Say Y here if you want PCIe controller support on Layerscape SoCs.
diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
index a4ed748..58c94ab 100644
--- a/drivers/pci/host/Kconfig
+++ b/drivers/pci/host/Kconfig
@@ -182,7 +182,7 @@  config PCIE_ROCKCHIP
 	depends on ARCH_ROCKCHIP || COMPILE_TEST
 	depends on OF
 	depends on PCI_MSI_IRQ_DOMAIN
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Say Y here if you want internal PCI support on Rockchip SoC.
 	  There is 1 internal PCIe port available to support GEN2 with
diff --git a/drivers/phy/hisilicon/Kconfig b/drivers/phy/hisilicon/Kconfig
index 6164c4c..4279c17 100644
--- a/drivers/phy/hisilicon/Kconfig
+++ b/drivers/phy/hisilicon/Kconfig
@@ -5,7 +5,7 @@  config PHY_HI6220_USB
 	tristate "hi6220 USB PHY support"
 	depends on (ARCH_HISI && ARM64) || COMPILE_TEST
 	select GENERIC_PHY
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Enable this to support the HISILICON HI6220 USB PHY.
 
@@ -15,6 +15,6 @@  config PHY_HIX5HD2_SATA
 	tristate "HIX5HD2 SATA PHY Driver"
 	depends on ARCH_HIX5HD2 && OF && HAS_IOMEM
 	select GENERIC_PHY
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Support for SATA PHY on Hisilicon hix5hd2 Soc.
diff --git a/drivers/phy/ralink/Kconfig b/drivers/phy/ralink/Kconfig
index b17635b..dfb01b6 100644
--- a/drivers/phy/ralink/Kconfig
+++ b/drivers/phy/ralink/Kconfig
@@ -5,7 +5,7 @@  config PHY_RALINK_USB
 	tristate "Ralink USB PHY driver"
 	depends on RALINK || COMPILE_TEST
 	select GENERIC_PHY
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  This option enables support for the Ralink USB PHY found inside
 	  RT3352, MT7620, MT7628 and MT7688.
diff --git a/drivers/phy/rockchip/Kconfig b/drivers/phy/rockchip/Kconfig
index f5325b2..27c8d71 100644
--- a/drivers/phy/rockchip/Kconfig
+++ b/drivers/phy/rockchip/Kconfig
@@ -30,7 +30,7 @@  config PHY_ROCKCHIP_PCIE
 	tristate "Rockchip PCIe PHY Driver"
 	depends on (ARCH_ROCKCHIP && OF) || COMPILE_TEST
 	select GENERIC_PHY
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Enable this to support the Rockchip PCIe PHY.
 
diff --git a/drivers/phy/samsung/Kconfig b/drivers/phy/samsung/Kconfig
index b7e0645..15abc3b 100644
--- a/drivers/phy/samsung/Kconfig
+++ b/drivers/phy/samsung/Kconfig
@@ -33,7 +33,7 @@  config PHY_SAMSUNG_USB2
 	depends on HAS_IOMEM
 	depends on USB_EHCI_EXYNOS || USB_OHCI_EXYNOS || USB_DWC2
 	select GENERIC_PHY
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	default ARCH_EXYNOS
 	help
 	  Enable this to support the Samsung USB 2.0 PHY driver for Samsung
@@ -72,7 +72,7 @@  config PHY_EXYNOS5_USBDRD
 	depends on HAS_IOMEM
 	depends on USB_DWC3_EXYNOS
 	select GENERIC_PHY
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	default y
 	help
 	  Enable USB DRD PHY support for Exynos 5 SoC series.
@@ -87,7 +87,7 @@  config PHY_EXYNOS5250_SATA
 	select GENERIC_PHY
 	select I2C
 	select I2C_S3C2410
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Enable this to support SATA SerDes/Phy found on Samsung's
 	  Exynos5250 based SoCs.This SerDes/Phy supports SATA 1.5 Gb/s,
diff --git a/drivers/phy/ti/Kconfig b/drivers/phy/ti/Kconfig
index 2050356..bfa50d1 100644
--- a/drivers/phy/ti/Kconfig
+++ b/drivers/phy/ti/Kconfig
@@ -5,7 +5,7 @@  config PHY_DA8XX_USB
 	tristate "TI DA8xx USB PHY Driver"
 	depends on ARCH_DAVINCI_DA8XX
 	select GENERIC_PHY
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Enable this to support the USB PHY on DA8xx SoCs.
 
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 0f254b3..6bfb4f1 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -168,7 +168,7 @@  config PINCTRL_GEMINI
 	default ARCH_GEMINI
 	select PINMUX
 	select GENERIC_PINCONF
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 
 config PINCTRL_MCP23S08
 	tristate "Microchip MCP23xxx I/O expander"
@@ -194,14 +194,14 @@  config PINCTRL_OXNAS
 	select GPIOLIB
 	select OF_GPIO
 	select GPIOLIB_IRQCHIP
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 
 config PINCTRL_ROCKCHIP
 	bool
 	select PINMUX
 	select GENERIC_PINCONF
 	select GENERIC_IRQ_CHIP
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 
 config PINCTRL_RZA1
 	bool "Renesas RZ/A1 gpio and pinctrl driver"
diff --git a/drivers/pinctrl/mvebu/Kconfig b/drivers/pinctrl/mvebu/Kconfig
index d9773b7..6ba5f49 100644
--- a/drivers/pinctrl/mvebu/Kconfig
+++ b/drivers/pinctrl/mvebu/Kconfig
@@ -6,7 +6,7 @@  config PINCTRL_MVEBU
 config PINCTRL_DOVE
 	bool
 	select PINCTRL_MVEBU
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 
 config PINCTRL_KIRKWOOD
 	bool
@@ -47,6 +47,6 @@  config PINCTRL_ORION
 config PINCTRL_ARMADA_37XX
        bool
        select GENERIC_PINCONF
-       select MFD_SYSCON
+       depends on MFD_SYSCON
        select PINCONF
        select PINMUX
diff --git a/drivers/pinctrl/stm32/Kconfig b/drivers/pinctrl/stm32/Kconfig
index 1c4e00b2..6896f7e 100644
--- a/drivers/pinctrl/stm32/Kconfig
+++ b/drivers/pinctrl/stm32/Kconfig
@@ -7,7 +7,7 @@  config PINCTRL_STM32
 	select GENERIC_PINCONF
 	select GPIOLIB
 	select IRQ_DOMAIN_HIERARCHY
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 
 config PINCTRL_STM32F429
 	bool "STMicroelectronics STM32F429 pin control" if COMPILE_TEST && !MACH_STM32F429
diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
index a102e74..8f3b7a6 100644
--- a/drivers/power/reset/Kconfig
+++ b/drivers/power/reset/Kconfig
@@ -170,7 +170,7 @@  config POWER_RESET_KEYSTONE
 	bool "Keystone reset driver"
 	depends on ARCH_KEYSTONE || COMPILE_TEST
 	depends on HAS_IOMEM
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Reboot support for the KEYSTONE SoCs.
 
@@ -178,7 +178,7 @@  config POWER_RESET_SYSCON
 	bool "Generic SYSCON regmap reset driver"
 	depends on OF
 	depends on HAS_IOMEM
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Reboot support for generic SYSCON mapped register reset.
 
@@ -186,7 +186,7 @@  config POWER_RESET_SYSCON_POWEROFF
 	bool "Generic SYSCON regmap poweroff driver"
 	depends on OF
 	depends on HAS_IOMEM
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Poweroff support for generic SYSCON mapped register poweroff.
 
diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
index b609e1d..4ef945f 100644
--- a/drivers/remoteproc/Kconfig
+++ b/drivers/remoteproc/Kconfig
@@ -90,7 +90,7 @@  config QCOM_ADSP_PIL
 	depends on QCOM_SMEM
 	depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
 	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select QCOM_MDT_LOADER
 	select QCOM_RPROC_COMMON
 	select QCOM_SCM
@@ -107,7 +107,7 @@  config QCOM_Q6V5_PIL
 	depends on QCOM_SMEM
 	depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
 	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select QCOM_RPROC_COMMON
 	select QCOM_SCM
 	help
diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
index 7fc7769..e2536dc 100644
--- a/drivers/reset/Kconfig
+++ b/drivers/reset/Kconfig
@@ -50,7 +50,7 @@  config RESET_HSDK
 config RESET_IMX7
 	bool "i.MX7 Reset Driver" if COMPILE_TEST
 	default SOC_IMX7D
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  This enables the reset controller driver for i.MX7 SoCs.
 
@@ -110,7 +110,7 @@  config RESET_TI_SCI
 config RESET_TI_SYSCON
 	tristate "TI SYSCON Reset Driver"
 	depends on HAS_IOMEM
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  This enables the reset driver support for TI devices with
 	  memory-mapped reset registers as part of a syscon device node. If
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 8ab5f0a5..7cc8a6f 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -1413,7 +1413,7 @@  config RTC_DRV_AT91RM9200
 config RTC_DRV_AT91SAM9
 	tristate "AT91SAM9 RTT as RTC"
 	depends on ARCH_AT91 || COMPILE_TEST
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Some AT91SAM9 SoCs provide an RTT (Real Time Timer) block which
 	  can be used as an RTC thanks to the backup power supply (e.g. a
diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
index e050eb8..c51f50c 100644
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
@@ -15,7 +15,7 @@  config QCOM_GLINK_SSR
 config QCOM_GSBI
         tristate "QCOM General Serial Bus Interface"
         depends on ARCH_QCOM
-        select MFD_SYSCON
+        depends on MFD_SYSCON
         help
           Say y here to enable GSBI support.  The GSBI provides control
           functions for connecting the underlying serial UART, SPI, and I2C
diff --git a/drivers/staging/media/omap4iss/Kconfig b/drivers/staging/media/omap4iss/Kconfig
index 4618346..616169e 100644
--- a/drivers/staging/media/omap4iss/Kconfig
+++ b/drivers/staging/media/omap4iss/Kconfig
@@ -2,7 +2,7 @@  config VIDEO_OMAP4
 	tristate "OMAP 4 Camera support"
 	depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API && I2C && ARCH_OMAP4
 	depends on HAS_DMA
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	select VIDEOBUF2_DMA_CONTIG
 	---help---
 	  Driver for an OMAP 4 ISS controller.
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 4fcfb30..b26b124 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -54,7 +54,7 @@  config USB_XHCI_PLATFORM
 
 config USB_XHCI_MTK
 	tristate "xHCI support for MediaTek SoCs"
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	depends on (MIPS && SOC_MT7621) || ARCH_MEDIATEK || COMPILE_TEST
 	---help---
 	  Say 'Y' to enable the support for the xHCI host controller
diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
index 11e699f..88ebc5b 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -316,7 +316,7 @@  config PLAT_VERSATILE_CLCD
 	depends on ARM
 	depends on FB_ARMCLCD && FB=y
 	select REGMAP
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 
 config FB_ACORN
 	bool "Acorn VIDC support"
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index aff773b..f0c212f 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -374,8 +374,8 @@  config HAVE_S3C2410_WATCHDOG
 config S3C2410_WATCHDOG
 	tristate "S3C2410 Watchdog"
 	depends on HAVE_S3C2410_WATCHDOG || COMPILE_TEST
+	depends on MFD_SYSCON
 	select WATCHDOG_CORE
-	select MFD_SYSCON if ARCH_EXYNOS
 	help
 	  Watchdog timer block in the Samsung SoCs. This will reboot
 	  the system when the timer expires with the watchdog enabled.
@@ -545,7 +545,7 @@  config TS4800_WATCHDOG
 	depends on HAS_IOMEM && OF
 	depends on SOC_IMX51 || COMPILE_TEST
 	select WATCHDOG_CORE
-	select MFD_SYSCON
+	depends on MFD_SYSCON
 	help
 	  Technologic Systems TS-4800 has watchdog timer implemented in
 	  an external FPGA. Say Y here if you want to support for the