config GKI_HIDDEN_DRM_CONFIGS
	bool "Hidden DRM configs needed for GKI"
	select DRM_KMS_HELPER if (HAS_IOMEM && DRM)
	select DRM_GEM_CMA_HELPER
	select DRM_KMS_CMA_HELPER
	select DRM_MIPI_DSI
	select VIDEOMODE_HELPERS
	help
	  Dummy config option used to enable hidden DRM configs.
	  These are normally selected implicitly when including a
	  DRM module, but for GKI, the modules are built out-of-tree.

config GKI_HIDDEN_REGMAP_CONFIGS
	bool "Hidden Regmap configs needed for GKI"
	select REGMAP_IRQ
	help
	  Dummy config option used to enable hidden regmap configs.
	  These are normally selected implicitly when a module
	  that relies on it is configured.

config GKI_HIDDEN_CRYPTO_CONFIGS
	bool "Hidden CRYPTO configs needed for GKI"
	select CRYPTO_ENGINE
	help
	  Dummy config option used to enable hidden CRYPTO configs.
	  These are normally selected implicitly when a module
	  that relies on it is configured.

config GKI_HIDDEN_SND_CONFIGS
	bool "Hidden SND configs needed for GKI"
	select SND_VMASTER
	select SND_PCM_ELD
	select SND_JACK
	select SND_JACK_INPUT_DEV
	help
	  Dummy config option used to enable hidden SND configs.
	  These are normally selected implicitly when a module
	  that relies on it is configured.

config GKI_HIDDEN_SND_SOC_CONFIGS
	bool "Hidden SND_SOC configs needed for GKI"
	select SND_SOC_GENERIC_DMAENGINE_PCM if (SND_SOC && SND)
	help
	  Dummy config option used to enable hidden SND_SOC configs.
	  These are normally selected implicitly when a module
	  that relies on it is configured.

config GKI_HIDDEN_GPIO_CONFIGS
	bool "Hidden GPIO configs needed for GKI"
	select PINCTRL_SINGLE if (PINCTRL && OF && HAS_IOMEM)
	select GPIO_PL061 if (HAS_IOMEM && ARM_AMBA && GPIOLIB)
	help
	  Dummy config option used to enable hidden GPIO configs.
	  These are normally selected implicitly when a module
	  that relies on it is configured.

config GKI_HIDDEN_VIRTUAL_CONFIGS
	bool "Hidden Virtual configs needed for GKI"
	select HVC_DRIVER
	help
	  Dummy config option used to enable hidden virtual device configs.
	  These are normally selected implicitly when a module
	  that relies on it is configured.

# LEGACY_WEXT_ALLCONFIG Discussed upstream, soundly rejected as a unique
# problem for GKI to solve.  It should be noted that these extensions are
# in-effect deprecated and generally unsupported and we should pressure
# the SOC vendors to drop any modules that require these extensions.
config GKI_LEGACY_WEXT_ALLCONFIG
	bool "Hidden wireless extension configs needed for GKI"
	select WIRELESS_EXT
	select WEXT_CORE
	select WEXT_PROC
	select WEXT_SPY
	select WEXT_PRIV
	help
	  Dummy config option used to enable all the hidden legacy wireless
	  extensions to the core wireless network functionality used by
	  add-in modules.

	  If you are not building a kernel to be used for a variety of
	  out-of-kernel built wireless modules, say N here.

config GKI_HIDDEN_SOC_PM_CONFIGS
	bool "Hidden SOC Power Management configs for GKI"
	select PM_GENERIC_DOMAINS if PM
	help
	  Dummy config option used to enable all the hidden SOC specific power
	  management add-in modules.

config GKI_HIDDEN_VIDEOBUF2_CONFIGS
	bool "Hidden v4l2 configs for GKI"
	select VIDEOBUF2_CORE if VIDEO_V4L2
	select VIDEOBUF2_V4L2 if VIDEO_V4L2
	select VIDEOBUF2_MEMOPS if VIDEO_V4L2
	select VIDEOBUF2_VMALLOC if VIDEO_V4L2
	help
	  Dummy config option used to enable all the hidden v4l2 media module.

config GKI_HIDDEN_USB_CONFIGS
	bool "Hiddel USB configurations needed for GKI"
	select USB_PHY
	help
	  Dummy config option used to enable all USB related hidden configs.
	  These configurations are usually only selected by another config
	  option or a combination of them.

	  If you are not building a kernel to be used for a variety of
	  out-of-kernel build USB drivers, say N here.

config GKI_HIDDEN_SOC_BUS_CONFIGS
	bool "Hidden SoC bus configuration needed for GKI"
	select SOC_BUS
	  help
	    Dummy config option used to enable SOC_BUS hidden Kconfig.
	    The configuration is required for SoCs to register themselves to the bus.

	    If you are not building a kernel to be used for a variety of SoCs and
	    out-of-tree drivers, say N here.

# Atrocities needed for
# a) building GKI modules in separate tree, or
# b) building drivers that are not modularizable
#
# All of these should be reworked into an upstream solution
# if possible.
#
config GKI_HACKS_TO_FIX
	bool "GKI Dummy config options"
	select GKI_HIDDEN_CRYPTO_CONFIGS
	select GKI_HIDDEN_DRM_CONFIGS
	select GKI_HIDDEN_REGMAP_CONFIGS
	select GKI_HIDDEN_SND_CONFIGS
	select GKI_HIDDEN_SND_SOC_CONFIGS
	select GKI_HIDDEN_GPIO_CONFIGS
	select GKI_LEGACY_WEXT_ALLCONFIG
	select GKI_HIDDEN_VIRTUAL_CONFIGS
	select GKI_HIDDEN_SOC_PM_CONFIGS
	select GKI_HIDDEN_VIDEOBUF2_CONFIGS
	select GKI_HIDDEN_USB_CONFIGS
	select GKI_HIDDEN_SOC_BUS_CONFIGS
	help
	  Dummy config option used to enable core functionality used by
	  modules that may not be selectable in this config.

	  Unless you are building a GKI kernel to be used with modules
	  built from a different config, say N here.
