Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ceaed1e3 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

Merge branch 'pm-devfreq'

* pm-devfreq:
  MAINTAINERS: update mailing list for devfreq(DVFS).
  PM / devfreq: fix typo "CPU_EXYNOS4.12" twice
  PM / devfreq: fix missing unlock on error in exynos4_busfreq_pm_notifier_event()
  PM / devfreq: add comments and Documentation
  PM / devfreq: account suspend/resume for stats
  PM / devfreq: Add Exynos5-bus devfreq driver for Exynos5250
  PM / devfreq: Move exynos4 devfreq driver into a new sub-directory
parents 93bc11c3 a02a0cfd
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -78,3 +78,23 @@ Contact: Nishanth Menon <nm@ti.com>
Description:
		The /sys/class/devfreq/.../available_governors shows
		currently available governors in the system.

What:		/sys/class/devfreq/.../min_freq
Date:		January 2013
Contact:	MyungJoo Ham <myungjoo.ham@samsung.com>
Description:
		The /sys/class/devfreq/.../min_freq shows and stores
		the minimum frequency requested by users. It is 0 if
		the user does not care. min_freq overrides the
		frequency requested by governors.

What:		/sys/class/devfreq/.../max_freq
Date:		January 2013
Contact:	MyungJoo Ham <myungjoo.ham@samsung.com>
Description:
		The /sys/class/devfreq/.../max_freq shows and stores
		the maximum frequency requested by users. It is 0 if
		the user does not care. max_freq overrides the
		frequency requested by governors and min_freq.
		The max_freq overrides min_freq because max_freq may be
		used to throttle devices to avoid overheating.
+1 −1
Original line number Diff line number Diff line
@@ -2519,7 +2519,7 @@ F: drivers/usb/dwc3/
DEVICE FREQUENCY (DEVFREQ)
M:	MyungJoo Ham <myungjoo.ham@samsung.com>
M:	Kyungmin Park <kyungmin.park@samsung.com>
L:	linux-kernel@vger.kernel.org
L:	linux-pm@vger.kernel.org
S:	Maintained
F:	drivers/devfreq/

+11 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ comment "DEVFREQ Drivers"

config ARM_EXYNOS4_BUS_DEVFREQ
	bool "ARM Exynos4210/4212/4412 Memory Bus DEVFREQ Driver"
	depends on CPU_EXYNOS4210 || CPU_EXYNOS4212 || CPU_EXYNOS4412
	depends on CPU_EXYNOS4210 || SOC_EXYNOS4212 || SOC_EXYNOS4412
	select ARCH_HAS_OPP
	select DEVFREQ_GOV_SIMPLE_ONDEMAND
	help
@@ -78,4 +78,14 @@ config ARM_EXYNOS4_BUS_DEVFREQ
	  To operate with optimal voltages, ASV support is required
	  (CONFIG_EXYNOS_ASV).

config ARM_EXYNOS5_BUS_DEVFREQ
	bool "ARM Exynos5250 Bus DEVFREQ Driver"
	depends on SOC_EXYNOS5250
	select ARCH_HAS_OPP
	select DEVFREQ_GOV_SIMPLE_ONDEMAND
	help
	  This adds the DEVFREQ driver for Exynos5250 bus interface (vdd_int).
	  It reads PPMU counters of memory controllers and adjusts the
	  operating frequencies and voltages with OPP support.

endif # PM_DEVFREQ
+2 −1
Original line number Diff line number Diff line
@@ -5,4 +5,5 @@ obj-$(CONFIG_DEVFREQ_GOV_POWERSAVE) += governor_powersave.o
obj-$(CONFIG_DEVFREQ_GOV_USERSPACE)	+= governor_userspace.o

# DEVFREQ Drivers
obj-$(CONFIG_ARM_EXYNOS4_BUS_DEVFREQ)	+= exynos4_bus.o
obj-$(CONFIG_ARM_EXYNOS4_BUS_DEVFREQ)	+= exynos/
obj-$(CONFIG_ARM_EXYNOS5_BUS_DEVFREQ)	+= exynos/
+22 −3
Original line number Diff line number Diff line
@@ -271,6 +271,7 @@ void devfreq_monitor_suspend(struct devfreq *devfreq)
		return;
	}

	devfreq_update_status(devfreq, devfreq->previous_freq);
	devfreq->stop_polling = true;
	mutex_unlock(&devfreq->lock);
	cancel_delayed_work_sync(&devfreq->work);
@@ -287,6 +288,8 @@ EXPORT_SYMBOL(devfreq_monitor_suspend);
 */
void devfreq_monitor_resume(struct devfreq *devfreq)
{
	unsigned long freq;

	mutex_lock(&devfreq->lock);
	if (!devfreq->stop_polling)
		goto out;
@@ -295,8 +298,14 @@ void devfreq_monitor_resume(struct devfreq *devfreq)
			devfreq->profile->polling_ms)
		queue_delayed_work(devfreq_wq, &devfreq->work,
			msecs_to_jiffies(devfreq->profile->polling_ms));

	devfreq->last_stat_updated = jiffies;
	devfreq->stop_polling = false;

	if (devfreq->profile->get_cur_freq &&
		!devfreq->profile->get_cur_freq(devfreq->dev.parent, &freq))
		devfreq->previous_freq = freq;

out:
	mutex_unlock(&devfreq->lock);
}
@@ -518,6 +527,8 @@ EXPORT_SYMBOL(devfreq_add_device);
/**
 * devfreq_remove_device() - Remove devfreq feature from a device.
 * @devfreq:	the devfreq instance to be removed
 *
 * The opposite of devfreq_add_device().
 */
int devfreq_remove_device(struct devfreq *devfreq)
{
@@ -533,6 +544,10 @@ EXPORT_SYMBOL(devfreq_remove_device);
/**
 * devfreq_suspend_device() - Suspend devfreq of a device.
 * @devfreq: the devfreq instance to be suspended
 *
 * This function is intended to be called by the pm callbacks
 * (e.g., runtime_suspend, suspend) of the device driver that
 * holds the devfreq.
 */
int devfreq_suspend_device(struct devfreq *devfreq)
{
@@ -550,6 +565,10 @@ EXPORT_SYMBOL(devfreq_suspend_device);
/**
 * devfreq_resume_device() - Resume devfreq of a device.
 * @devfreq: the devfreq instance to be resumed
 *
 * This function is intended to be called by the pm callbacks
 * (e.g., runtime_resume, resume) of the device driver that
 * holds the devfreq.
 */
int devfreq_resume_device(struct devfreq *devfreq)
{
@@ -905,11 +924,11 @@ static ssize_t show_trans_table(struct device *dev, struct device_attribute *att
{
	struct devfreq *devfreq = to_devfreq(dev);
	ssize_t len;
	int i, j, err;
	int i, j;
	unsigned int max_state = devfreq->profile->max_state;

	err = devfreq_update_status(devfreq, devfreq->previous_freq);
	if (err)
	if (!devfreq->stop_polling &&
			devfreq_update_status(devfreq, devfreq->previous_freq))
		return 0;

	len = sprintf(buf, "   From  :   To\n");
Loading