# SPDX-License-Identifier: GPL-2.0-only
config TEGRA_MC
	bool "NVIDIA Tegra Memory Controller support"
	default y
	depends on ARCH_TEGRA
	select INTERCONNECT
	help
	  This driver supports the Memory Controller (MC) hardware found on
	  NVIDIA Tegra SoCs.

config TEGRA20_EMC
	tristate "NVIDIA Tegra20 External Memory Controller driver"
	default y
	depends on TEGRA_MC && ARCH_TEGRA_2x_SOC
	select DEVFREQ_GOV_SIMPLE_ONDEMAND
	select PM_DEVFREQ
	help
	  This driver is for the External Memory Controller (EMC) found on
	  Tegra20 chips. The EMC controls the external DRAM on the board.
	  This driver is required to change memory timings / clock rate for
	  external memory.

config TEGRA30_EMC
	tristate "NVIDIA Tegra30 External Memory Controller driver"
	default y
	depends on TEGRA_MC && ARCH_TEGRA_3x_SOC
	select PM_OPP
	help
	  This driver is for the External Memory Controller (EMC) found on
	  Tegra30 chips. The EMC controls the external DRAM on the board.
	  This driver is required to change memory timings / clock rate for
	  external memory.

config TEGRA124_EMC
	tristate "NVIDIA Tegra124 External Memory Controller driver"
	default y
	depends on TEGRA_MC && ARCH_TEGRA_124_SOC
	select TEGRA124_CLK_EMC
	select PM_OPP
	help
	  This driver is for the External Memory Controller (EMC) found on
	  Tegra124 chips. The EMC controls the external DRAM on the board.
	  This driver is required to change memory timings / clock rate for
	  external memory.

config TEGRA210_EMC_TABLE
	bool
	depends on ARCH_TEGRA_210_SOC

config TEGRA210_EMC
	tristate "NVIDIA Tegra210 External Memory Controller driver"
	depends on TEGRA_MC && ARCH_TEGRA_210_SOC
	select TEGRA210_EMC_TABLE
	help
	  This driver is for the External Memory Controller (EMC) found on
	  Tegra210 chips. The EMC controls the external DRAM on the board.
	  This driver is required to change memory timings / clock rate for
	  external memory.
