Commit 084c9cac authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'pm+acpi-3.16-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI and power management fixes from Rafael Wysocki:
 "These are a few recent regression fixes, a revert of the ACPI video
  commit I promised, a system resume fix related to request_firmware(),
  an ACPI video quirk for one more Win8-oriented BIOS, an ACPI device
  enumeration documentation update and a few fixes for ARM cpufreq
  drivers.

  Specifics:

   - Fix for a recently introduced NULL pointer dereference in the core
     system suspend code occuring when platforms without ACPI attempt to
     use the "freeze" sleep state from Zhang Rui.

   - Fix for a recently introduced build warning in cpufreq headers from
     Brian W Hart.

   - Fix for a 3.13 cpufreq regression related to sysem resume that
     triggers on some systems with multiple CPU clusters from Viresh
     Kumar.

   - Fix for a 3.4 regression in request_firmware() resulting in
     WARN_ON()s on some systems during system resume from Takashi Iwai.

   - Revert of the ACPI video commit that changed the default value of
     the video.brightness_switch_enabled command line argument to 0 as
     it has been reported to break existing setups.

   - ACPI device enumeration documentation update to take recent code
     changes into account and make the documentation match the code
     again from Darren Hart.

   - Fixes for the sa1110, imx6q, kirkwood, and cpu0 cpufreq drivers
     from Linus Walleij, Nicolas Del Piano, Quentin Armitage, Viresh
     Kumar.

   - New ACPI video blacklist entry for HP ProBook 4540s from Hans de
     Goede"

* tag 'pm+acpi-3.16-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  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
  ACPI / video: Add use_native_backlight quirk for HP ProBook 4540s
  PM / sleep: fix freeze_ops NULL pointer dereferences
  PM / sleep: Fix request_firmware() error at resume
  Revert "ACPI / video: change acpi-video brightness_switch_enabled default to 0"
  ACPI / documentation: Remove reference to acpi_platform_device_ids from enumeration.txt
parents 3e8e2756 39628080
...@@ -60,12 +60,6 @@ If the driver needs to perform more complex initialization like getting and ...@@ -60,12 +60,6 @@ If the driver needs to perform more complex initialization like getting and
configuring GPIOs it can get its ACPI handle and extract this information configuring GPIOs it can get its ACPI handle and extract this information
from ACPI tables. from ACPI tables.
Currently the kernel is not able to automatically determine from which ACPI
device it should make the corresponding platform device so we need to add
the ACPI device explicitly to acpi_platform_device_ids list defined in
drivers/acpi/acpi_platform.c. This limitation is only for the platform
devices, SPI and I2C devices are created automatically as described below.
DMA support DMA support
~~~~~~~~~~~ ~~~~~~~~~~~
DMA controllers enumerated via ACPI should be registered in the system to DMA controllers enumerated via ACPI should be registered in the system to
......
...@@ -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.
......
...@@ -3526,7 +3526,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. ...@@ -3526,7 +3526,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
the allocated input device; If set to 0, video driver the allocated input device; If set to 0, video driver
will only send out the event without touching backlight will only send out the event without touching backlight
brightness level. brightness level.
default: 0 default: 1
virtio_mmio.device= virtio_mmio.device=
[VMMIO] Memory mapped virtio (platform) device. [VMMIO] Memory mapped virtio (platform) device.
......
...@@ -68,7 +68,7 @@ MODULE_AUTHOR("Bruno Ducrot"); ...@@ -68,7 +68,7 @@ MODULE_AUTHOR("Bruno Ducrot");
MODULE_DESCRIPTION("ACPI Video Driver"); MODULE_DESCRIPTION("ACPI Video Driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
static bool brightness_switch_enabled; static bool brightness_switch_enabled = 1;
module_param(brightness_switch_enabled, bool, 0644); module_param(brightness_switch_enabled, bool, 0644);
/* /*
...@@ -581,6 +581,14 @@ static struct dmi_system_id video_dmi_table[] __initdata = { ...@@ -581,6 +581,14 @@ static struct dmi_system_id video_dmi_table[] __initdata = {
}, },
{ {
.callback = video_set_use_native_backlight, .callback = video_set_use_native_backlight,
.ident = "HP ProBook 4540s",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
DMI_MATCH(DMI_PRODUCT_VERSION, "HP ProBook 4540s"),
},
},
{
.callback = video_set_use_native_backlight,
.ident = "HP ProBook 2013 models", .ident = "HP ProBook 2013 models",
.matches = { .matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
......
...@@ -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