Skip to content

Commit

Permalink
PM: Drop CONFIG_PM_RUNTIME from the driver core
Browse files Browse the repository at this point in the history
After commit b2b49cc (PM: Kconfig: Set PM_RUNTIME if PM_SLEEP is
selected) PM_RUNTIME is always set if PM is set, so quite a few
depend on CONFIG_PM or even may be dropped entirely in some cases.

Replace CONFIG_PM_RUNTIME with CONFIG_PM in the PM core code.

Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Rafael J. Wysocki committed Dec 3, 2014
1 parent ef9cc99 commit d30d819
Show file tree
Hide file tree
Showing 12 changed files with 60 additions and 216 deletions.
69 changes: 2 additions & 67 deletions drivers/base/power/clock_ops.c
Original file line number Diff line number Diff line change
Expand Up @@ -256,10 +256,6 @@ void pm_clk_destroy(struct device *dev)
}
}

#endif /* CONFIG_PM */

#ifdef CONFIG_PM_RUNTIME

/**
* pm_clk_suspend - Disable clocks in a device's PM clock list.
* @dev: Device to disable the clocks for.
Expand Down Expand Up @@ -373,68 +369,7 @@ static int pm_clk_notify(struct notifier_block *nb,
return 0;
}

#else /* !CONFIG_PM_RUNTIME */

#ifdef CONFIG_PM

/**
* pm_clk_suspend - Disable clocks in a device's PM clock list.
* @dev: Device to disable the clocks for.
*/
int pm_clk_suspend(struct device *dev)
{
struct pm_subsys_data *psd = dev_to_psd(dev);
struct pm_clock_entry *ce;
unsigned long flags;

dev_dbg(dev, "%s()\n", __func__);

/* If there is no driver, the clocks are already disabled. */
if (!psd || !dev->driver)
return 0;

spin_lock_irqsave(&psd->lock, flags);

list_for_each_entry_reverse(ce, &psd->clock_list, node) {
if (ce->status < PCE_STATUS_ERROR) {
if (ce->status == PCE_STATUS_ENABLED)
clk_disable(ce->clk);
ce->status = PCE_STATUS_ACQUIRED;
}
}

spin_unlock_irqrestore(&psd->lock, flags);

return 0;
}

/**
* pm_clk_resume - Enable clocks in a device's PM clock list.
* @dev: Device to enable the clocks for.
*/
int pm_clk_resume(struct device *dev)
{
struct pm_subsys_data *psd = dev_to_psd(dev);
struct pm_clock_entry *ce;
unsigned long flags;

dev_dbg(dev, "%s()\n", __func__);

/* If there is no driver, the clocks should remain disabled. */
if (!psd || !dev->driver)
return 0;

spin_lock_irqsave(&psd->lock, flags);

list_for_each_entry(ce, &psd->clock_list, node)
__pm_clk_enable(dev, ce);

spin_unlock_irqrestore(&psd->lock, flags);

return 0;
}

#endif /* CONFIG_PM */
#else /* !CONFIG_PM */

/**
* enable_clock - Enable a device clock.
Expand Down Expand Up @@ -514,7 +449,7 @@ static int pm_clk_notify(struct notifier_block *nb,
return 0;
}

#endif /* !CONFIG_PM_RUNTIME */
#endif /* !CONFIG_PM */

/**
* pm_clk_add_notifier - Add bus type notifier for power management clocks.
Expand Down
34 changes: 3 additions & 31 deletions drivers/base/power/domain.c
Original file line number Diff line number Diff line change
Expand Up @@ -280,8 +280,6 @@ int pm_genpd_name_poweron(const char *domain_name)
return genpd ? pm_genpd_poweron(genpd) : -EINVAL;
}

#ifdef CONFIG_PM_RUNTIME

static int genpd_start_dev_no_timing(struct generic_pm_domain *genpd,
struct device *dev)
{
Expand Down Expand Up @@ -755,24 +753,6 @@ static int __init genpd_poweroff_unused(void)
}
late_initcall(genpd_poweroff_unused);

#else

static inline int genpd_dev_pm_qos_notifier(struct notifier_block *nb,
unsigned long val, void *ptr)
{
return NOTIFY_DONE;
}

static inline void
genpd_queue_power_off_work(struct generic_pm_domain *genpd) {}

static inline void genpd_power_off_work_fn(struct work_struct *work) {}

#define pm_genpd_runtime_suspend NULL
#define pm_genpd_runtime_resume NULL

#endif /* CONFIG_PM_RUNTIME */

#ifdef CONFIG_PM_SLEEP

/**
Expand Down Expand Up @@ -1364,7 +1344,7 @@ void pm_genpd_syscore_poweron(struct device *dev)
}
EXPORT_SYMBOL_GPL(pm_genpd_syscore_poweron);

#else
#else /* !CONFIG_PM_SLEEP */

#define pm_genpd_prepare NULL
#define pm_genpd_suspend NULL
Expand Down Expand Up @@ -2220,7 +2200,7 @@ int genpd_dev_pm_attach(struct device *dev)
return 0;
}
EXPORT_SYMBOL_GPL(genpd_dev_pm_attach);
#endif
#endif /* CONFIG_PM_GENERIC_DOMAINS_OF */


/*** debugfs support ***/
Expand All @@ -2236,10 +2216,8 @@ static struct dentry *pm_genpd_debugfs_dir;

/*
* TODO: This function is a slightly modified version of rtpm_status_show
* from sysfs.c, but dependencies between PM_GENERIC_DOMAINS and PM_RUNTIME
* are too loose to generalize it.
* from sysfs.c, so generalize it.
*/
#ifdef CONFIG_PM_RUNTIME
static void rtpm_status_str(struct seq_file *s, struct device *dev)
{
static const char * const status_lookup[] = {
Expand All @@ -2261,12 +2239,6 @@ static void rtpm_status_str(struct seq_file *s, struct device *dev)

seq_puts(s, p);
}
#else
static void rtpm_status_str(struct seq_file *s, struct device *dev)
{
seq_puts(s, "active");
}
#endif

static int pm_genpd_summary_one(struct seq_file *s,
struct generic_pm_domain *gpd)
Expand Down
11 changes: 0 additions & 11 deletions drivers/base/power/domain_governor.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
#include <linux/pm_qos.h>
#include <linux/hrtimer.h>

#ifdef CONFIG_PM_RUNTIME

static int dev_update_qos_constraint(struct device *dev, void *data)
{
s64 *constraint_ns_p = data;
Expand Down Expand Up @@ -227,15 +225,6 @@ static bool always_on_power_down_ok(struct dev_pm_domain *domain)
return false;
}

#else /* !CONFIG_PM_RUNTIME */

static inline bool default_stop_ok(struct device *dev) { return false; }

#define default_power_down_ok NULL
#define always_on_power_down_ok NULL

#endif /* !CONFIG_PM_RUNTIME */

struct dev_power_governor simple_qos_governor = {
.stop_ok = default_stop_ok,
.power_down_ok = default_power_down_ok,
Expand Down
56 changes: 25 additions & 31 deletions drivers/base/power/power.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ static inline void device_pm_init_common(struct device *dev)
}
}

#ifdef CONFIG_PM_RUNTIME
#ifdef CONFIG_PM

static inline void pm_runtime_early_init(struct device *dev)
{
Expand All @@ -20,7 +20,21 @@ static inline void pm_runtime_early_init(struct device *dev)
extern void pm_runtime_init(struct device *dev);
extern void pm_runtime_remove(struct device *dev);

#else /* !CONFIG_PM_RUNTIME */
/*
* sysfs.c
*/

extern int dpm_sysfs_add(struct device *dev);
extern void dpm_sysfs_remove(struct device *dev);
extern void rpm_sysfs_remove(struct device *dev);
extern int wakeup_sysfs_add(struct device *dev);
extern void wakeup_sysfs_remove(struct device *dev);
extern int pm_qos_sysfs_add_resume_latency(struct device *dev);
extern void pm_qos_sysfs_remove_resume_latency(struct device *dev);
extern int pm_qos_sysfs_add_flags(struct device *dev);
extern void pm_qos_sysfs_remove_flags(struct device *dev);

#else /* CONFIG_PM */

static inline void pm_runtime_early_init(struct device *dev)
{
Expand All @@ -30,7 +44,15 @@ static inline void pm_runtime_early_init(struct device *dev)
static inline void pm_runtime_init(struct device *dev) {}
static inline void pm_runtime_remove(struct device *dev) {}

#endif /* !CONFIG_PM_RUNTIME */
static inline int dpm_sysfs_add(struct device *dev) { return 0; }
static inline void dpm_sysfs_remove(struct device *dev) {}
static inline void rpm_sysfs_remove(struct device *dev) {}
static inline int wakeup_sysfs_add(struct device *dev) { return 0; }
static inline void wakeup_sysfs_remove(struct device *dev) {}
static inline int pm_qos_sysfs_add(struct device *dev) { return 0; }
static inline void pm_qos_sysfs_remove(struct device *dev) {}

#endif

#ifdef CONFIG_PM_SLEEP

Expand Down Expand Up @@ -77,31 +99,3 @@ static inline void device_pm_init(struct device *dev)
device_pm_sleep_init(dev);
pm_runtime_init(dev);
}

#ifdef CONFIG_PM

/*
* sysfs.c
*/

extern int dpm_sysfs_add(struct device *dev);
extern void dpm_sysfs_remove(struct device *dev);
extern void rpm_sysfs_remove(struct device *dev);
extern int wakeup_sysfs_add(struct device *dev);
extern void wakeup_sysfs_remove(struct device *dev);
extern int pm_qos_sysfs_add_resume_latency(struct device *dev);
extern void pm_qos_sysfs_remove_resume_latency(struct device *dev);
extern int pm_qos_sysfs_add_flags(struct device *dev);
extern void pm_qos_sysfs_remove_flags(struct device *dev);

#else /* CONFIG_PM */

static inline int dpm_sysfs_add(struct device *dev) { return 0; }
static inline void dpm_sysfs_remove(struct device *dev) {}
static inline void rpm_sysfs_remove(struct device *dev) {}
static inline int wakeup_sysfs_add(struct device *dev) { return 0; }
static inline void wakeup_sysfs_remove(struct device *dev) {}
static inline int pm_qos_sysfs_add(struct device *dev) { return 0; }
static inline void pm_qos_sysfs_remove(struct device *dev) {}

#endif
5 changes: 0 additions & 5 deletions drivers/base/power/qos.c
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,6 @@ int dev_pm_qos_add_ancestor_request(struct device *dev,
}
EXPORT_SYMBOL_GPL(dev_pm_qos_add_ancestor_request);

#ifdef CONFIG_PM_RUNTIME
static void __dev_pm_qos_drop_user_request(struct device *dev,
enum dev_pm_qos_req_type type)
{
Expand Down Expand Up @@ -880,7 +879,3 @@ int dev_pm_qos_update_user_latency_tolerance(struct device *dev, s32 val)
mutex_unlock(&dev_pm_qos_mtx);
return ret;
}
#else /* !CONFIG_PM_RUNTIME */
static void __dev_pm_qos_hide_latency_limit(struct device *dev) {}
static void __dev_pm_qos_hide_flags(struct device *dev) {}
#endif /* CONFIG_PM_RUNTIME */
9 changes: 0 additions & 9 deletions drivers/base/power/runtime.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ static pm_callback_t __rpm_get_callback(struct device *dev, size_t cb_offset)
#define RPM_GET_CALLBACK(dev, callback) \
__rpm_get_callback(dev, offsetof(struct dev_pm_ops, callback))

#ifdef CONFIG_PM_RUNTIME

static int rpm_resume(struct device *dev, int rpmflags);
static int rpm_suspend(struct device *dev, int rpmflags);

Expand Down Expand Up @@ -1399,7 +1397,6 @@ void pm_runtime_remove(struct device *dev)
if (dev->power.irq_safe && dev->parent)
pm_runtime_put(dev->parent);
}
#endif

/**
* pm_runtime_force_suspend - Force a device into suspend state if needed.
Expand All @@ -1419,12 +1416,6 @@ int pm_runtime_force_suspend(struct device *dev)
int ret = 0;

pm_runtime_disable(dev);

/*
* Note that pm_runtime_status_suspended() returns false while
* !CONFIG_PM_RUNTIME, which means the device will be put into low
* power state.
*/
if (pm_runtime_status_suspended(dev))
return 0;

Expand Down
Loading

0 comments on commit d30d819

Please sign in to comment.