Re: [PATCH v2 3/4] drivers: reset: Add STM32 reset driver
From: Paul Gortmaker
Date: Fri Jul 22 2016 - 17:03:39 EST
[Re: [PATCH v2 3/4] drivers: reset: Add STM32 reset driver] On 22/07/2016 (Fri 21:25) Arnd Bergmann wrote:
> On Thursday, July 21, 2016 7:16:02 PM CEST Paul Gortmaker wrote:
>
> > > > ...we probably don't need module.h here or any of the other
> > > > MODULE_<blah> tags/macros either. Use the builtin for the
> > > > register and all should be good.
> > >
> > > I wonder if we should have separate symbols for each reset driver
> > > instead. Those could be allowed to be tristate, and could also
> > > be enabled for compile testing on other architectures.
> >
> > I'm not quite clear on what you mean by the above. Maybe if you have a
> > pointer to an example -- say like the work you mention below -- then
> > I'll understand what you have in mind.
>
> I mean instead of having each driver compiled implicitly when the
> ARCH_* symbol is enabled, make the drivers user-selectable
> and just default to 'y' when the platform is enabled. This would
> let us actually use modular reset drivers where appropriate
> (which might be nowhere, but at least we wouldn't forbid it
> for no reason).
Aha, OK now I understand. I suppose that would also allow them to be
exposed to allyesconfig and/or COMPILE_TEST too, although I still think
in the case of ARM one has to walk the defconfigs to get good compile
test coverage -- at least for the treewide stuff I tend to do.
Paul.
--
>
> Another annoying thing is that all platforms today need to
> select two symbols
>
> select ARCH_HAS_RESET_CONTROLLER
> select RESET_CONTROLLER
>
> in order to actually build the driver, and the second one is
> user-selectable, meaning you can still disable all of them today,
> just not individual drivers.
>
> The patch below is something I did a long time ago for my
> randconfig test branch and have kept forward-ported. It's
> probably bitrotten by now and wrong, but you should get the
> idea.
>
> Arnd
>
> commit ee86e4aad86ddce56a5858ddb5bb62d08b54e8f0
> Author: Arnd Bergmann <arnd@xxxxxxxx>
> Date: Tue Feb 24 15:30:30 2015 +0100
>
> rework RESET_CONTROLLER handling
>
> arch/arm/mach-berlin/Kconfig | 1 -
> arch/arm/mach-imx/Kconfig | 1 -
> arch/arm/mach-mmp/Kconfig | 2 ++
> arch/arm/mach-prima2/Kconfig | 3 +--
> arch/arm/mach-rockchip/Kconfig | 2 +-
> arch/arm/mach-sti/Kconfig | 2 --
> arch/arm/mach-sunxi/Kconfig | 1 -
> arch/arm/mach-sunxi/sunxi.c | 2 +-
> arch/arm/mach-tegra/Kconfig | 1 -
> drivers/dma/Kconfig | 1 -
> drivers/gpu/drm/rockchip/Kconfig | 1 -
> drivers/gpu/drm/tegra/Kconfig | 1 -
> drivers/gpu/ipu-v3/Kconfig | 1 -
> drivers/i2c/busses/Kconfig | 1 -
> drivers/phy/Kconfig | 6 ++----
> drivers/pinctrl/sunxi/Kconfig | 2 --
> drivers/reset/Kconfig | 27 ++++++++++++++++-----------
> drivers/reset/Makefile | 10 +++++-----
> drivers/reset/sti/Kconfig | 22 +++++++++++-----------
> drivers/reset/sti/Makefile | 8 ++++----
> drivers/soc/mediatek/Kconfig | 1 -
> drivers/spi/Kconfig | 7 ++-----
> drivers/thermal/Kconfig | 1 -
> drivers/usb/phy/Kconfig | 1 -
> include/linux/reset.h | 34 +++++++++++++++++++++++++---------
> sound/soc/tegra/Kconfig | 1 -
> 26 files changed, 70 insertions(+), 70 deletions(-)
>
> diff --git a/arch/arm/mach-berlin/Kconfig b/arch/arm/mach-berlin/Kconfig
> index 63ab1d368625..9ca262538e91 100644
> --- a/arch/arm/mach-berlin/Kconfig
> +++ b/arch/arm/mach-berlin/Kconfig
> @@ -1,7 +1,6 @@
> menuconfig ARCH_BERLIN
> bool "Marvell Berlin SoCs"
> depends on ARCH_MULTI_V7
> - select ARCH_HAS_RESET_CONTROLLER
> select ARM_GIC
> select DW_APB_ICTL
> select DW_APB_TIMER_OF
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> index ee9a318cab31..e72c5dcb2ea3 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -56,7 +56,6 @@ config HAVE_IMX_MMDC
>
> config HAVE_IMX_SRC
> def_bool y if SMP
> - select ARCH_HAS_RESET_CONTROLLER
>
> config IMX_HAVE_IOMUX_V1
> bool
> diff --git a/arch/arm/mach-mmp/Kconfig b/arch/arm/mach-mmp/Kconfig
> index 94500bed56ab..e2130e051d7f 100644
> --- a/arch/arm/mach-mmp/Kconfig
> +++ b/arch/arm/mach-mmp/Kconfig
> @@ -111,6 +111,7 @@ config MACH_MMP_DT
> select PINCTRL_SINGLE
> select COMMON_CLK
> select ARCH_HAS_RESET_CONTROLLER
> + select RESET_CONTROLLER
> select CPU_MOHAWK
> help
> Include support for Marvell MMP2 based platforms using
> @@ -123,6 +124,7 @@ config MACH_MMP2_DT
> select PINCTRL
> select PINCTRL_SINGLE
> select ARCH_HAS_RESET_CONTROLLER
> + select RESET_CONTROLLER
> select CPU_PJ4
> help
> Include support for Marvell MMP2 based platforms using
> diff --git a/arch/arm/mach-prima2/Kconfig b/arch/arm/mach-prima2/Kconfig
> index 85e874a97337..6a28cfa89069 100644
> --- a/arch/arm/mach-prima2/Kconfig
> +++ b/arch/arm/mach-prima2/Kconfig
> @@ -1,14 +1,13 @@
> menuconfig ARCH_SIRF
> bool "CSR SiRF"
> depends on ARCH_MULTI_V7
> - select ARCH_HAS_RESET_CONTROLLER
> - select RESET_CONTROLLER
> select GENERIC_IRQ_CHIP
> select GPIOLIB
> select NO_IOPORT_MAP
> select REGMAP
> select PINCTRL
> select PINCTRL_SIRF
> + select RESET_CONTROLLER
> help
> Support for CSR SiRFprimaII/Marco/Polo platforms
>
> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
> index 9ad84cd01ba0..b67dfc23ddbb 100644
> --- a/arch/arm/mach-rockchip/Kconfig
> +++ b/arch/arm/mach-rockchip/Kconfig
> @@ -3,7 +3,6 @@ config ARCH_ROCKCHIP
> depends on ARCH_MULTI_V7
> select PINCTRL
> select PINCTRL_ROCKCHIP
> - select ARCH_HAS_RESET_CONTROLLER
> select ARM_AMBA
> select ARM_GIC
> select CACHE_L2X0
> @@ -13,6 +12,7 @@ config ARCH_ROCKCHIP
> select HAVE_ARM_TWD if SMP
> select DW_APB_TIMER_OF
> select REGULATOR if PM
> + select RESET_CONTROLLER
> select ROCKCHIP_TIMER
> select ARM_GLOBAL_TIMER
> select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
> diff --git a/arch/arm/mach-sti/Kconfig b/arch/arm/mach-sti/Kconfig
> index 119e1108b1f8..7ceb3f9a0ca5 100644
> --- a/arch/arm/mach-sti/Kconfig
> +++ b/arch/arm/mach-sti/Kconfig
> @@ -8,7 +8,6 @@ menuconfig ARCH_STI
> select PINCTRL
> select PINCTRL_ST
> select MFD_SYSCON
> - select ARCH_HAS_RESET_CONTROLLER
> select HAVE_ARM_SCU if SMP
> select GPIOLIB
> select ARM_ERRATA_754322
> @@ -16,7 +15,6 @@ menuconfig ARCH_STI
> select ARM_ERRATA_775420
> select PL310_ERRATA_753970 if CACHE_L2X0
> select PL310_ERRATA_769419 if CACHE_L2X0
> - select RESET_CONTROLLER
> help
> Include support for STMicroelectronics' STiH415/416, STiH407/10 and
> STiH418 family SoCs using the Device Tree for discovery. More
> diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
> index 096ed216c6d5..b6427c08a7ff 100644
> --- a/arch/arm/mach-sunxi/Kconfig
> +++ b/arch/arm/mach-sunxi/Kconfig
> @@ -1,7 +1,6 @@
> menuconfig ARCH_SUNXI
> bool "Allwinner SoCs"
> depends on ARCH_MULTI_V7
> - select ARCH_HAS_RESET_CONTROLLER
> select CLKSRC_MMIO
> select GENERIC_IRQ_CHIP
> select GPIOLIB
> diff --git a/arch/arm/mach-sunxi/sunxi.c b/arch/arm/mach-sunxi/sunxi.c
> index 95dca8c2c9ed..1f7093166792 100644
> --- a/arch/arm/mach-sunxi/sunxi.c
> +++ b/arch/arm/mach-sunxi/sunxi.c
> @@ -39,7 +39,7 @@ extern void __init sun6i_reset_init(void);
> static void __init sun6i_timer_init(void)
> {
> of_clk_init(NULL);
> - if (IS_ENABLED(CONFIG_RESET_CONTROLLER))
> + if (IS_ENABLED(CONFIG_RESET_SUNXI))
> sun6i_reset_init();
> clocksource_probe();
> }
> diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
> index 329f01c5b6f8..6986fee549cb 100644
> --- a/arch/arm/mach-tegra/Kconfig
> +++ b/arch/arm/mach-tegra/Kconfig
> @@ -10,7 +10,6 @@ menuconfig ARCH_TEGRA
> select HAVE_ARM_TWD if SMP
> select PINCTRL
> select PM_OPP
> - select ARCH_HAS_RESET_CONTROLLER
> select RESET_CONTROLLER
> select SOC_BUS
> help
> diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
> index 739f797b40d9..675dcef0ac85 100644
> --- a/drivers/dma/Kconfig
> +++ b/drivers/dma/Kconfig
> @@ -159,7 +159,6 @@ config DMA_SUN4I
> config DMA_SUN6I
> tristate "Allwinner A31 SoCs DMA support"
> depends on MACH_SUN6I || MACH_SUN8I || COMPILE_TEST
> - depends on RESET_CONTROLLER
> select DMA_ENGINE
> select DMA_VIRTUAL_CHANNELS
> help
> diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kconfig
> index 3c58669a06ce..6f7f9c59f05b 100644
> --- a/drivers/gpu/drm/rockchip/Kconfig
> +++ b/drivers/gpu/drm/rockchip/Kconfig
> @@ -1,7 +1,6 @@
> config DRM_ROCKCHIP
> tristate "DRM Support for Rockchip"
> depends on DRM && ROCKCHIP_IOMMU
> - depends on RESET_CONTROLLER
> select DRM_GEM_CMA_HELPER
> select DRM_KMS_HELPER
> select DRM_PANEL
> diff --git a/drivers/gpu/drm/tegra/Kconfig b/drivers/gpu/drm/tegra/Kconfig
> index 63ebb154b9b5..bbf5a4b7e0b6 100644
> --- a/drivers/gpu/drm/tegra/Kconfig
> +++ b/drivers/gpu/drm/tegra/Kconfig
> @@ -3,7 +3,6 @@ config DRM_TEGRA
> depends on ARCH_TEGRA || (ARM && COMPILE_TEST)
> depends on COMMON_CLK
> depends on DRM
> - depends on RESET_CONTROLLER
> select DRM_KMS_HELPER
> select DRM_MIPI_DSI
> select DRM_PANEL
> diff --git a/drivers/gpu/ipu-v3/Kconfig b/drivers/gpu/ipu-v3/Kconfig
> index aefdff95356d..08766c6e7856 100644
> --- a/drivers/gpu/ipu-v3/Kconfig
> +++ b/drivers/gpu/ipu-v3/Kconfig
> @@ -1,7 +1,6 @@
> config IMX_IPUV3_CORE
> tristate "IPUv3 core support"
> depends on SOC_IMX5 || SOC_IMX6Q || ARCH_MULTIPLATFORM
> - depends on RESET_CONTROLLER
> select GENERIC_IRQ_CHIP
> help
> Choose this if you have a i.MX5/6 system and want to use the Image
> diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
> index 5c3993b26129..5913f7c7318a 100644
> --- a/drivers/i2c/busses/Kconfig
> +++ b/drivers/i2c/busses/Kconfig
> @@ -891,7 +891,6 @@ config I2C_STU300
>
> config I2C_SUN6I_P2WI
> tristate "Allwinner sun6i internal P2WI controller"
> - depends on RESET_CONTROLLER
> depends on MACH_SUN6I || COMPILE_TEST
> help
> If you say yes to this option, support will be included for the
> diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
> index 19bff3a10f69..f685397fd3ac 100644
> --- a/drivers/phy/Kconfig
> +++ b/drivers/phy/Kconfig
> @@ -26,7 +26,8 @@ config PHY_BCM_NS_USB2
>
> config PHY_BERLIN_USB
> tristate "Marvell Berlin USB PHY Driver"
> - depends on ARCH_BERLIN && RESET_CONTROLLER && HAS_IOMEM && OF
> + depends on ARCH_BERLIN || COMPILE_TEST
> + depends on HAS_IOMEM && OF
> select GENERIC_PHY
> help
> Enable this to support the USB PHY on Marvell Berlin SoCs.
> @@ -255,7 +256,6 @@ config PHY_HI6220_USB
> config PHY_SUN4I_USB
> tristate "Allwinner sunxi SoC USB PHY driver"
> depends on ARCH_SUNXI && HAS_IOMEM && OF
> - depends on RESET_CONTROLLER
> depends on EXTCON
> depends on POWER_SUPPLY
> select GENERIC_PHY
> @@ -269,7 +269,6 @@ config PHY_SUN4I_USB
> config PHY_SUN9I_USB
> tristate "Allwinner sun9i SoC USB PHY driver"
> depends on ARCH_SUNXI && HAS_IOMEM && OF
> - depends on RESET_CONTROLLER
> depends on USB_SUPPORT
> select USB_COMMON
> select GENERIC_PHY
> @@ -395,7 +394,6 @@ config PHY_XGENE
>
> config PHY_STIH407_USB
> tristate "STMicroelectronics USB2 picoPHY driver for STiH407 family"
> - depends on RESET_CONTROLLER
> depends on ARCH_STI || COMPILE_TEST
> select GENERIC_PHY
> help
> diff --git a/drivers/pinctrl/sunxi/Kconfig b/drivers/pinctrl/sunxi/Kconfig
> index aaf075b972f5..c55a6750f4b8 100644
> --- a/drivers/pinctrl/sunxi/Kconfig
> +++ b/drivers/pinctrl/sunxi/Kconfig
> @@ -27,7 +27,6 @@ config PINCTRL_SUN6I_A31S
>
> config PINCTRL_SUN6I_A31_R
> def_bool MACH_SUN6I
> - depends on RESET_CONTROLLER
> select PINCTRL_SUNXI
>
> config PINCTRL_SUN7I_A20
> @@ -48,7 +47,6 @@ config PINCTRL_SUN8I_A83T
>
> config PINCTRL_SUN8I_A23_R
> def_bool MACH_SUN8I
> - depends on RESET_CONTROLLER
> select PINCTRL_SUNXI
>
> config PINCTRL_SUN8I_H3
> diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
> index 4be1b8c21f6f..05d6afc8cff8 100644
> --- a/drivers/reset/Kconfig
> +++ b/drivers/reset/Kconfig
> @@ -1,18 +1,23 @@
> -config ARCH_HAS_RESET_CONTROLLER
> +config RESET_CONTROLLER
> bool
>
> -menuconfig RESET_CONTROLLER
> - bool "Reset Controller Support"
> - default y if ARCH_HAS_RESET_CONTROLLER
> - help
> - Generic Reset Controller support.
> +menu "Reset Controller Support"
> + depends on ARCH_HAS_RESET_CONTROLLER || COMPILE_TEST
>
> - This framework is designed to abstract reset handling of devices
> - via GPIOs or SoC-internal reset controller modules.
> +config RESET_SOCFPGA
> + bool "Altera SOCFPGA reset controller" if COMPILE_TEST
> + default ARCH_SOCFPGA
> + select RESET_CONTROLLER
>
> - If unsure, say no.
> +config RESET_BERLIN
> + bool "Marvell Berlin reset controller" if COMPILE_TEST
> + default ARCH_BERLIN
> + select RESET_CONTROLLER
>
> -if RESET_CONTROLLER
> +config RESET_SUNXI
> + bool "Allwinner reset controller" if COMPILE_TEST
> + default ARCH_SUNXI
> + select RESET_CONTROLLER
>
> config RESET_OXNAS
> bool
> @@ -30,4 +35,4 @@ config TI_SYSCON_RESET
> source "drivers/reset/sti/Kconfig"
> source "drivers/reset/hisilicon/Kconfig"
>
> -endif
> +endmenu
> diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
> index 5d65a93d3c43..7e610e409dae 100644
> --- a/drivers/reset/Makefile
> +++ b/drivers/reset/Makefile
> @@ -1,11 +1,11 @@
> obj-y += core.o
> -obj-$(CONFIG_ARCH_LPC18XX) += reset-lpc18xx.o
> -obj-$(CONFIG_ARCH_SOCFPGA) += reset-socfpga.o
> -obj-$(CONFIG_ARCH_BERLIN) += reset-berlin.o
> obj-$(CONFIG_MACH_PISTACHIO) += reset-pistachio.o
> +obj-$(CONFIG_RESET_SOCFPGA) += reset-socfpga.o
> +obj-$(CONFIG_RESET_BERLIN) += reset-berlin.o
> +obj-$(CONFIG_RESET_HISI) += hisilicon/
> obj-$(CONFIG_ARCH_MESON) += reset-meson.o
> -obj-$(CONFIG_ARCH_SUNXI) += reset-sunxi.o
> -obj-$(CONFIG_ARCH_STI) += sti/
> +obj-$(CONFIG_RESET_SUNXI) += reset-sunxi.o
> +obj-$(CONFIG_RESET_STI_SYSCFG) += sti/
> obj-$(CONFIG_ARCH_HISI) += hisilicon/
> obj-$(CONFIG_ARCH_ZYNQ) += reset-zynq.o
> obj-$(CONFIG_ATH79) += reset-ath79.o
> diff --git a/drivers/reset/sti/Kconfig b/drivers/reset/sti/Kconfig
> index 613178553612..20ea1a147afb 100644
> --- a/drivers/reset/sti/Kconfig
> +++ b/drivers/reset/sti/Kconfig
> @@ -1,18 +1,18 @@
> -if ARCH_STI
> +if ARCH_STI || COMPILE_TEST
>
> -config STI_RESET_SYSCFG
> +config RESET_STI_SYSCFG
> bool
>
> -config STIH415_RESET
> - bool
> - select STI_RESET_SYSCFG
> +config RESET_STIH415
> + bool "STmicroelectronics STiH415 reset controller" if COMPILE_TEST
> + select RESET_STI_SYSCFG
>
> -config STIH416_RESET
> - bool
> - select STI_RESET_SYSCFG
> +config RESET_STIH416
> + bool "STmicroelectronics STiH416 reset controller" if COMPILE_TEST
> + select RESET_STI_SYSCFG
>
> -config STIH407_RESET
> - bool
> - select STI_RESET_SYSCFG
> +config RESET_STIH407
> + bool "STmicroelectronics STiH407 reset controller" if COMPILE_TEST
> + select RESET_STI_SYSCFG
>
> endif
> diff --git a/drivers/reset/sti/Makefile b/drivers/reset/sti/Makefile
> index dc85dfbe56a9..445bdddf45b9 100644
> --- a/drivers/reset/sti/Makefile
> +++ b/drivers/reset/sti/Makefile
> @@ -1,5 +1,5 @@
> -obj-$(CONFIG_STI_RESET_SYSCFG) += reset-syscfg.o
> +obj-$(CONFIG_RESET_STI_SYSCFG) += reset-syscfg.o
>
> -obj-$(CONFIG_STIH415_RESET) += reset-stih415.o
> -obj-$(CONFIG_STIH416_RESET) += reset-stih416.o
> -obj-$(CONFIG_STIH407_RESET) += reset-stih407.o
> +obj-$(CONFIG_RESET_STIH415) += reset-stih415.o
> +obj-$(CONFIG_RESET_STIH416) += reset-stih416.o
> +obj-$(CONFIG_RESET_STIH407) += reset-stih407.o
> diff --git a/drivers/soc/mediatek/Kconfig b/drivers/soc/mediatek/Kconfig
> index 0a4ea809a61b..8e47d52766b7 100644
> --- a/drivers/soc/mediatek/Kconfig
> +++ b/drivers/soc/mediatek/Kconfig
> @@ -13,7 +13,6 @@ config MTK_INFRACFG
> config MTK_PMIC_WRAP
> tristate "MediaTek PMIC Wrapper Support"
> depends on ARCH_MEDIATEK
> - depends on RESET_CONTROLLER
> select REGMAP
> help
> Say yes here to add support for MediaTek PMIC Wrapper found
> diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
> index c91493613238..c606e136f3c6 100644
> --- a/drivers/spi/Kconfig
> +++ b/drivers/spi/Kconfig
> @@ -575,7 +575,6 @@ config SPI_SH_HSPI
> config SPI_SIRF
> tristate "CSR SiRFprimaII SPI controller"
> depends on SIRF_DMA
> - depends on RESET_CONTROLLER
> select SPI_BITBANG
> help
> SPI driver for CSR SiRFprimaII SoCs
> @@ -596,7 +595,6 @@ config SPI_SUN4I
> config SPI_SUN6I
> tristate "Allwinner A31 SPI controller"
> depends on ARCH_SUNXI || COMPILE_TEST
> - depends on RESET_CONTROLLER
> help
> This enables using the SPI controller on the Allwinner A31 SoCs.
>
> @@ -610,7 +608,7 @@ config SPI_MXS
> config SPI_TEGRA114
> tristate "NVIDIA Tegra114 SPI Controller"
> depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
> - depends on RESET_CONTROLLER && HAS_DMA
> + depends on HAS_DMA
> help
> SPI driver for NVIDIA Tegra114 SPI Controller interface. This controller
> is different than the older SoCs SPI controller and also register interface
> @@ -619,7 +617,6 @@ config SPI_TEGRA114
> config SPI_TEGRA20_SFLASH
> tristate "Nvidia Tegra20 Serial flash Controller"
> depends on ARCH_TEGRA || COMPILE_TEST
> - depends on RESET_CONTROLLER
> help
> SPI driver for Nvidia Tegra20 Serial flash Controller interface.
> The main usecase of this controller is to use spi flash as boot
> @@ -628,7 +625,7 @@ config SPI_TEGRA20_SFLASH
> config SPI_TEGRA20_SLINK
> tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
> depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
> - depends on RESET_CONTROLLER && HAS_DMA
> + depends on HAS_DMA
> help
> SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
>
> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
> index 8303823d7f07..e4e59701f7df 100644
> --- a/drivers/thermal/Kconfig
> +++ b/drivers/thermal/Kconfig
> @@ -207,7 +207,6 @@ config SPEAR_THERMAL
> config ROCKCHIP_THERMAL
> tristate "Rockchip thermal driver"
> depends on ARCH_ROCKCHIP || COMPILE_TEST
> - depends on RESET_CONTROLLER
> depends on HAS_IOMEM
> help
> Rockchip thermal driver provides support for Temperature sensor
> diff --git a/drivers/usb/phy/Kconfig b/drivers/usb/phy/Kconfig
> index 4b5e5c8ecefd..5538e04c3356 100644
> --- a/drivers/usb/phy/Kconfig
> +++ b/drivers/usb/phy/Kconfig
> @@ -146,7 +146,6 @@ config USB_MSM_OTG
> tristate "Qualcomm on-chip USB OTG controller support"
> depends on (USB || USB_GADGET) && (ARCH_QCOM || COMPILE_TEST)
> depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y'
> - depends on RESET_CONTROLLER
> depends on EXTCON
> select USB_PHY
> select QCOM_TCSR if ARCH_QCOM
> diff --git a/include/linux/reset.h b/include/linux/reset.h
> index 5daff15722d3..4ec41b11e090 100644
> --- a/include/linux/reset.h
> +++ b/include/linux/reset.h
> @@ -27,33 +27,41 @@ static inline int device_reset_optional(struct device *dev)
>
> #else
>
> +#include <linux/device.h>
> +#include <linux/of.h>
> +
> +static inline int __must_check device_reset(struct device *dev)
> +{
> + return -ENOSYS;
> +}
> +
> static inline int reset_control_reset(struct reset_control *rstc)
> {
> - WARN_ON(1);
> + WARN_ON(rstc != NULL);
> return 0;
> }
>
> static inline int reset_control_assert(struct reset_control *rstc)
> {
> - WARN_ON(1);
> + WARN_ON(rstc != NULL);
> return 0;
> }
>
> static inline int reset_control_deassert(struct reset_control *rstc)
> {
> - WARN_ON(1);
> + WARN_ON(rstc != NULL);
> return 0;
> }
>
> static inline int reset_control_status(struct reset_control *rstc)
> {
> - WARN_ON(1);
> + WARN_ON(rstc != NULL);
> return 0;
> }
>
> static inline void reset_control_put(struct reset_control *rstc)
> {
> - WARN_ON(1);
> + WARN_ON(rstc != NULL);
> }
>
> static inline int __must_check device_reset(struct device *dev)
> @@ -64,21 +72,24 @@ static inline int __must_check device_reset(struct device *dev)
>
> static inline int device_reset_optional(struct device *dev)
> {
> - return -ENOTSUPP;
> + if (of_property_read_bool(dev->of_node, "resets"))
> + return -ENOSYS;
> +
> + return 0;
> }
>
> static inline struct reset_control *__of_reset_control_get(
> struct device_node *node,
> const char *id, int index, int shared)
> {
> - return ERR_PTR(-ENOTSUPP);
> + return ERR_PTR(device_reset_optional(dev));
> }
>
> static inline struct reset_control *__devm_reset_control_get(
> struct device *dev,
> const char *id, int index, int shared)
> {
> - return ERR_PTR(-ENOTSUPP);
> + return ERR_PTR(device_reset_optional(dev));
> }
>
> #endif /* CONFIG_RESET_CONTROLLER */
> @@ -330,10 +341,15 @@ static inline struct reset_control *reset_control_get(
> return reset_control_get_exclusive(dev, id);
> }
>
> +/*
> + * We intentionally return NULL here when no resets are specified
> + * or when building without DT, which is interpreted as 'success'
> + * if reset controller support is left out from the kernel.
> + */
> static inline struct reset_control *reset_control_get_optional(
> struct device *dev, const char *id)
> {
> - return reset_control_get_optional_exclusive(dev, id);
> + return __of_reset_control_get(dev ? dev->of_node : NULL, id, 0, 0);
> }
>
> static inline struct reset_control *of_reset_control_get(
> diff --git a/sound/soc/tegra/Kconfig b/sound/soc/tegra/Kconfig
> index a6768f832c6f..70f58bd43a56 100644
> --- a/sound/soc/tegra/Kconfig
> +++ b/sound/soc/tegra/Kconfig
> @@ -2,7 +2,6 @@ config SND_SOC_TEGRA
> tristate "SoC Audio for the Tegra System-on-Chip"
> depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
> depends on COMMON_CLK
> - depends on RESET_CONTROLLER
> select REGMAP_MMIO
> select SND_SOC_GENERIC_DMAENGINE_PCM
> help
>