menuconfig PM_DEVFREQ
	bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support"
	select SRCU
	select PM_OPP
	help
	  A device may have a list of frequencies and voltages available.
	  devfreq, a generic DVFS framework can be registered for a device
	  in order to let the governor provided to devfreq choose an
	  operating frequency based on the device driver's policy.

	  Each device may have its own governor and policy. Devfreq can
	  reevaluate the device state periodically and/or based on the
	  notification to "nb", a notifier block, of devfreq.

	  Like some CPUs with CPUfreq, a device may have multiple clocks.
	  However, because the clock frequencies of a single device are
	  determined by the single device's state, an instance of devfreq
	  is attached to a single device and returns a "representative"
	  clock frequency of the device, which is also attached
	  to a device by 1-to-1. The device registering devfreq takes the
	  responsibility to "interpret" the representative frequency and
	  to set its every clock accordingly with the "target" callback
	  given to devfreq.

	  When OPP is used with the devfreq device, it is recommended to
	  register devfreq's nb to the OPP's notifier head.  If OPP is
	  used with the devfreq device, you may use OPP helper
	  functions defined in devfreq.h.

if PM_DEVFREQ

comment "DEVFREQ Governors"

config DEVFREQ_GOV_SIMPLE_ONDEMAND
	tristate "Simple Ondemand"
	help
	  Chooses frequency based on the recent load on the device. Works
	  similar as ONDEMAND governor of CPUFREQ does. A device with
	  Simple-Ondemand should be able to provide busy/total counter
	  values that imply the usage rate. A device may provide tuned
	  values to the governor with data field at devfreq_add_device().
config DEVFREQ_GOV_SIMPLE_USAGE
	tristate "Simple Usage"
	help
	  Chooses frequency based on the percentage of target device.

config DEVFREQ_GOV_SIMPLE_EXYNOS
	tristate "Simple Exynos"
	help
	  Chooses frequency based on the threshold of target device.

config DEVFREQ_GOV_SIMPLE_INTERACTIVE
	tristate "Simple Interactive"
	help
	  Chooses frequency based on the requested PM QoS from target device.
	  And This governor uses timer when change frequency.

config DEVFREQ_GOV_PERFORMANCE
	tristate "Performance"
	help
	  Sets the frequency at the maximum available frequency.
	  This governor always returns UINT_MAX as frequency so that
	  the DEVFREQ framework returns the highest frequency available
	  at any time.

config DEVFREQ_GOV_POWERSAVE
	tristate "Powersave"
	help
	  Sets the frequency at the minimum available frequency.
	  This governor always returns 0 as frequency so that
	  the DEVFREQ framework returns the lowest frequency available
	  at any time.

config DEVFREQ_GOV_USERSPACE
	tristate "Userspace"
	help
	  Sets the frequency at the user specified one.
	  This governor returns the user configured frequency if there
	  has been an input to /sys/devices/.../power/devfreq_set_freq.
	  Otherwise, the governor does not change the frequency
	  given at the initialization.

config DEVFREQ_GOV_PASSIVE
	tristate "Passive"
	help
	  Sets the frequency based on the frequency of its parent devfreq
	  device. This governor does not change the frequency by itself
	  through sysfs entries. The passive governor recommends that
	  devfreq device uses the OPP table to get the frequency/voltage.

comment "DEVFREQ Drivers"

config ARM_EXYNOS_DEVFREQ
	bool "ARM Exynos Memory Bus DEVFREQ Common driver"
	depends on ARCH_EXYNOS
	select ARCH_HAS_OPP
	select PM_OPP
	help
	  This adds the DEVFREQ driver for Exynos series common bus.

config ARM_EXYNOS_DEVFREQ_DEBUG
	bool "ARM Exynos DEVFREQ sysfs for Debug"
	depends on ARM_EXYNOS_DEVFREQ

config ARM_EXYNOS_BUS_DEVFREQ
	tristate "ARM EXYNOS Generic Memory Bus DEVFREQ Driver"
	depends on ARCH_EXYNOS || COMPILE_TEST
	select DEVFREQ_GOV_SIMPLE_ONDEMAND
	select DEVFREQ_GOV_PASSIVE
	select DEVFREQ_EVENT_EXYNOS_PPMU
	select PM_DEVFREQ_EVENT
	select PM_OPP
	help
	  This adds the common DEVFREQ driver for Exynos Memory bus. Exynos
	  Memory bus has one more group of memory bus (e.g, MIF and INT block).
	  Each memory bus group could contain many memoby bus block. It reads
	  PPMU counters of memory controllers by using DEVFREQ-event device
	  and adjusts the operating frequencies and voltages with OPP support.
	  This does not yet operate with optimal voltages.

config ARM_TEGRA_DEVFREQ
	tristate "Tegra DEVFREQ Driver"
	depends on ARCH_TEGRA_124_SOC
	select DEVFREQ_GOV_SIMPLE_ONDEMAND
	select PM_OPP
	help
	  This adds the DEVFREQ driver for the Tegra family of SoCs.
	  It reads ACTMON counters of memory controllers and adjusts the
	  operating frequencies and voltages with OPP support.

config ARM_RK3399_DMC_DEVFREQ
	tristate "ARM RK3399 DMC DEVFREQ Driver"
	depends on (ARCH_ROCKCHIP && HAVE_ARM_SMCCC) || \
		(COMPILE_TEST && HAVE_ARM_SMCCC)
	select DEVFREQ_EVENT_ROCKCHIP_DFI
	select DEVFREQ_GOV_SIMPLE_ONDEMAND
	select PM_DEVFREQ_EVENT
	select PM_OPP
	help
          This adds the DEVFREQ driver for the RK3399 DMC(Dynamic Memory Controller).
          It sets the frequency for the memory controller and reads the usage counts
          from hardware.

source "drivers/devfreq/event/Kconfig"

config ARM_EXYNOS9610_BUS_DEVFREQ
	bool "ARM Exynos9610 Memory Bus DEVFREQ Driver"
	default y
	depends on ARM_EXYNOS_DEVFREQ
	depends on SOC_EXYNOS9610
	select DEVFREQ_GOV_SIMPLE_INTERACTIVE
	help
	  This adds the DEVFREQ driver for Exynos9610 memory and int.

endif # PM_DEVFREQ
