Commit 39628080 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

Merge branches 'pm-sleep' and 'pm-cpufreq'

* pm-sleep:
  PM / sleep: fix freeze_ops NULL pointer dereferences
  PM / sleep: Fix request_firmware() error at resume

* pm-cpufreq:
  cpufreq: make table sentinel macros unsigned to match use
  cpufreq: move policy kobj to policy->cpu at resume
  cpufreq: cpu0: OPPs can be populated at runtime
  cpufreq: kirkwood: Reinstate cpufreq driver for ARCH_KIRKWOOD
  cpufreq: imx6q: Select PM_OPP
  cpufreq: sa1110: set memory type for h3600
...@@ -8,10 +8,12 @@ Both required and optional properties listed below must be defined ...@@ -8,10 +8,12 @@ Both required and optional properties listed below must be defined
under node /cpus/cpu@0. under node /cpus/cpu@0.
Required properties: Required properties:
- operating-points: Refer to Documentation/devicetree/bindings/power/opp.txt - None
for details
Optional properties: Optional properties:
- operating-points: Refer to Documentation/devicetree/bindings/power/opp.txt for
details. OPPs *must* be supplied either via DT, i.e. this property, or
populated at runtime.
- clock-latency: Specify the possible maximum transition latency for clock, - clock-latency: Specify the possible maximum transition latency for clock,
in unit of nanoseconds. in unit of nanoseconds.
- voltage-tolerance: Specify the CPU voltage tolerance in percentage. - voltage-tolerance: Specify the CPU voltage tolerance in percentage.
......
...@@ -104,6 +104,7 @@ config ARM_IMX6Q_CPUFREQ ...@@ -104,6 +104,7 @@ config ARM_IMX6Q_CPUFREQ
tristate "Freescale i.MX6 cpufreq support" tristate "Freescale i.MX6 cpufreq support"
depends on ARCH_MXC depends on ARCH_MXC
depends on REGULATOR_ANATOP depends on REGULATOR_ANATOP
select PM_OPP
help help
This adds cpufreq driver support for Freescale i.MX6 series SoCs. This adds cpufreq driver support for Freescale i.MX6 series SoCs.
...@@ -118,7 +119,7 @@ config ARM_INTEGRATOR ...@@ -118,7 +119,7 @@ config ARM_INTEGRATOR
If in doubt, say Y. If in doubt, say Y.
config ARM_KIRKWOOD_CPUFREQ config ARM_KIRKWOOD_CPUFREQ
def_bool MACH_KIRKWOOD def_bool ARCH_KIRKWOOD || MACH_KIRKWOOD
help help
This adds the CPUFreq driver for Marvell Kirkwood This adds the CPUFreq driver for Marvell Kirkwood
SoCs. SoCs.
......
...@@ -152,11 +152,8 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev) ...@@ -152,11 +152,8 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev)
goto out_put_reg; goto out_put_reg;
} }
ret = of_init_opp_table(cpu_dev); /* OPPs might be populated at runtime, don't check for error here */
if (ret) { of_init_opp_table(cpu_dev);
pr_err("failed to init OPP table: %d\n", ret);
goto out_put_clk;
}
ret = dev_pm_opp_init_cpufreq_table(cpu_dev, &freq_table); ret = dev_pm_opp_init_cpufreq_table(cpu_dev, &freq_table);
if (ret) { if (ret) {
......
...@@ -1153,10 +1153,12 @@ static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif) ...@@ -1153,10 +1153,12 @@ static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
* the creation of a brand new one. So we need to perform this update * the creation of a brand new one. So we need to perform this update
* by invoking update_policy_cpu(). * by invoking update_policy_cpu().
*/ */
if (recover_policy && cpu != policy->cpu) if (recover_policy && cpu != policy->cpu) {
update_policy_cpu(policy, cpu); update_policy_cpu(policy, cpu);
else WARN_ON(kobject_move(&policy->kobj, &dev->kobj));
} else {
policy->cpu = cpu; policy->cpu = cpu;
}
cpumask_copy(policy->cpus, cpumask_of(cpu)); cpumask_copy(policy->cpus, cpumask_of(cpu));
......
...@@ -349,7 +349,7 @@ static int __init sa1110_clk_init(void) ...@@ -349,7 +349,7 @@ static int __init sa1110_clk_init(void)
name = "K4S641632D"; name = "K4S641632D";
if (machine_is_h3100()) if (machine_is_h3100())
name = "KM416S4030CT"; name = "KM416S4030CT";
if (machine_is_jornada720()) if (machine_is_jornada720() || machine_is_h3600())
name = "K4S281632B-1H"; name = "K4S281632B-1H";
if (machine_is_nanoengine()) if (machine_is_nanoengine())
name = "MT48LC8M16A2TG-75"; name = "MT48LC8M16A2TG-75";
......
...@@ -482,8 +482,8 @@ extern struct cpufreq_governor cpufreq_gov_conservative; ...@@ -482,8 +482,8 @@ extern struct cpufreq_governor cpufreq_gov_conservative;
*********************************************************************/ *********************************************************************/
/* Special Values of .frequency field */ /* Special Values of .frequency field */
#define CPUFREQ_ENTRY_INVALID ~0 #define CPUFREQ_ENTRY_INVALID ~0u
#define CPUFREQ_TABLE_END ~1 #define CPUFREQ_TABLE_END ~1u
/* Special Values of .flags field */ /* Special Values of .flags field */
#define CPUFREQ_BOOST_FREQ (1 << 0) #define CPUFREQ_BOOST_FREQ (1 << 0)
......
...@@ -186,6 +186,7 @@ void thaw_processes(void) ...@@ -186,6 +186,7 @@ void thaw_processes(void)
printk("Restarting tasks ... "); printk("Restarting tasks ... ");
__usermodehelper_set_disable_depth(UMH_FREEZING);
thaw_workqueues(); thaw_workqueues();
read_lock(&tasklist_lock); read_lock(&tasklist_lock);
......
...@@ -306,7 +306,7 @@ int suspend_devices_and_enter(suspend_state_t state) ...@@ -306,7 +306,7 @@ int suspend_devices_and_enter(suspend_state_t state)
error = suspend_ops->begin(state); error = suspend_ops->begin(state);
if (error) if (error)
goto Close; goto Close;
} else if (state == PM_SUSPEND_FREEZE && freeze_ops->begin) { } else if (state == PM_SUSPEND_FREEZE && freeze_ops && freeze_ops->begin) {
error = freeze_ops->begin(); error = freeze_ops->begin();
if (error) if (error)
goto Close; goto Close;
...@@ -335,7 +335,7 @@ int suspend_devices_and_enter(suspend_state_t state) ...@@ -335,7 +335,7 @@ int suspend_devices_and_enter(suspend_state_t state)
Close: Close:
if (need_suspend_ops(state) && suspend_ops->end) if (need_suspend_ops(state) && suspend_ops->end)
suspend_ops->end(); suspend_ops->end();
else if (state == PM_SUSPEND_FREEZE && freeze_ops->end) else if (state == PM_SUSPEND_FREEZE && freeze_ops && freeze_ops->end)
freeze_ops->end(); freeze_ops->end();
return error; return error;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment