The current code considers every wakeup as spurious, which is not
correct. Handle the same way as other arm platforms are doing.
Signed-off-by: Sanjay Singh Rawat <sanjay.rawat(a)linaro.org>
---
arch/arm/mach-zynq/hotplug.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm/mach-zynq/hotplug.c b/arch/arm/mach-zynq/hotplug.c
index c89672b..a1ab22c 100644
--- a/arch/arm/mach-zynq/hotplug.c
+++ b/arch/arm/mach-zynq/hotplug.c
@@ -67,6 +67,13 @@ static inline void zynq_platform_do_lowpower(unsigned int cpu, int *spurious)
dsb();
wfi();
+ if (pen_release == cpu_logical_map(cpu)) {
+ /*
+ * OK, proper wakeup, we're done
+ */
+ break;
+ }
+
/*
* Getting here, means that we have come out of WFI without
* having been woken up - this shouldn't happen
--
1.7.9.5
This patch series adds support for DP on Exynos5250 based Arndale Board
Is based on branch "for-next"
http://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung.git
Vikas Sajjan (3):
ARM: dts: Add DT node for DP controller for Arndale Board
ARM: dts: Add clock provider information for DP controller in
Exynos5250 SoC
ARM: dts: Add display timing node to exynos5250-arndale.dts
arch/arm/boot/dts/exynos5250-arndale.dts | 26 ++++++++++++++++++++++++++
arch/arm/boot/dts/exynos5250.dtsi | 2 ++
2 files changed, 28 insertions(+)
--
1.7.9.5
== Linus Walleij linusw ==
=== Highlights ===
* Collected and prepared a set of new GPIO patches
targeted at v3.11, handshake with Grant on IRC.
* Continued to apply DMA40 patches from Lee on a
specific DMA40 branch targeted for ARM SoC. The first
batch of patches has been pulled into ARM SoC and
we're now waiting for some final ACKs from Vinod on
the remaining patches.
* Applied and queued various ux500 patches, including
a patch I prepared for abx500 pinctrl tables. I now have
these pending ux500 branches:
ux500-core
ux500-defconfig
ux500-devicetree
ux500-dma40
ux500-fixes
ux500-pinctrl
ux500-fixes will be send to ARM SoC ASAP, ux500-dma40
is partly landed in ARM SoC (for v3.11) and the rest remain
to be funneled when stabilized.
* Reviewed lots of pinctrl and GPIO code. Much time has
been spent on DT issues.
* Discussed at length about the option to create generic
DT bindings and DT parsing code for the pinconf-generic
consumers so we do not need to replicate this in all
pinctrl drivers using the generic pinconf library.
* Iterated the U300 device tree + multiplatform patch
series. Arnd has some final comments so we'll iterate
it some more.
* Nomadik DT clocks and some more Nomadik changes
like DT pinctrl were pulled into ARM SoC.
* Ethernet fix for the Nomadik S8815 is upstream.
* Tested an IRQ branch from Grant on the Integrator/AP.
=== Plans ===
* Finalize U300 DT+multiplatform patch set.
* Integrate Integrator PCI patch set, then start to delete
board files and convert to multiplatform.
* Convert Nomadik pinctrl driver to register GPIO ranges
from the gpiochip side.
* Test the PL08x patches on the Ericsson Research
PB11MPCore and submit platform data for using
pl08x DMA on that platform.
* Get hands dirty with regmap.
=== Issues ===
* Subsystem maintainers in the kernel community are forced
to act as standardization comittee for device tree bindings
due to lack of review power. As they have to merge the
bindings in the end, reviewing fall upward to the subsystem
maintainers, this is something of a workload issue.
* Need a PCI branch at ARM SoC to request Integrator PCI
DT patches to be pulled into. (Still blocked on this for
Integrator single zImage.)
* Some impediments from internal turmoil @ST-Ericsson.
Thanks,
Linus Walleij
This patch series adds support for DP on Exynos5250 based Arndale Board
changes since v1:
- moved display-timimg node inside fimd DT node as suggested by
Steffen Trumtrar s.trumtrar(a)pengutronix.de
Is based on branch "for-next"
http://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung.git
Vikas Sajjan (3):
ARM: dts: Add DT node for DP controller for Arndale Board
ARM: dts: Add clock provider information for DP controller in
Exynos5250 SoC
ARM: dts: Add display timing node to exynos5250-arndale.dts
arch/arm/boot/dts/exynos5250-arndale.dts | 28 ++++++++++++++++++++++++++++
arch/arm/boot/dts/exynos5250.dtsi | 2 ++
2 files changed, 30 insertions(+)
--
1.7.9.5
The governors are defined as module in the code, but the Kconfig options do not
allow to compile them as module. This is not really a problem but the init
order is: the cpuidle init functions (framework and driver) and then the
governors. That leads to some weirdness in the cpuidle framework because the
function cpuidle_register_device calls cpuidle_enable_device which in turns
fails at the first attempt because no governor is registered. When the
governor is registered, the framework calls cpuidle_enable_device again which
will invoke the __cpuidle_register_device function. Of course, in order to make
this to work, the return code of cpuidle_enable_device is not checked by the
caller in cpuidle_register_device.
Instead of having this cyclic call graph and relying on a positive side effect
of the hackish back and forth call to cpuidle_enable_device, let's change the
init order for the governor in order to clean up the cpuidle_enable_device
function.
Signed-off-by: Daniel Lezcano <daniel.lezcano(a)linaro.org>
---
drivers/cpuidle/Makefile | 2 +-
drivers/cpuidle/governors/ladder.c | 14 ++------------
drivers/cpuidle/governors/menu.c | 14 ++------------
3 files changed, 5 insertions(+), 25 deletions(-)
diff --git a/drivers/cpuidle/Makefile b/drivers/cpuidle/Makefile
index 0d8bd55..05e2035 100644
--- a/drivers/cpuidle/Makefile
+++ b/drivers/cpuidle/Makefile
@@ -2,7 +2,7 @@
# Makefile for cpuidle.
#
-obj-y += cpuidle.o driver.o governor.o sysfs.o governors/
+obj-y += governors/ cpuidle.o driver.o governor.o sysfs.o
obj-$(CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED) += coupled.o
obj-$(CONFIG_CPU_IDLE_CALXEDA) += cpuidle-calxeda.o
diff --git a/drivers/cpuidle/governors/ladder.c b/drivers/cpuidle/governors/ladder.c
index 9b78405..928dc59 100644
--- a/drivers/cpuidle/governors/ladder.c
+++ b/drivers/cpuidle/governors/ladder.c
@@ -187,19 +187,9 @@ static struct cpuidle_governor ladder_governor = {
/**
* init_ladder - initializes the governor
*/
-static int __init init_ladder(void)
+static int __init ladder_init(void)
{
return cpuidle_register_governor(&ladder_governor);
}
-/**
- * exit_ladder - exits the governor
- */
-static void __exit exit_ladder(void)
-{
- cpuidle_unregister_governor(&ladder_governor);
-}
-
-MODULE_LICENSE("GPL");
-module_init(init_ladder);
-module_exit(exit_ladder);
+core_initcall(ladder_init);
diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
index fe343a0..483bac1 100644
--- a/drivers/cpuidle/governors/menu.c
+++ b/drivers/cpuidle/governors/menu.c
@@ -535,19 +535,9 @@ static struct cpuidle_governor menu_governor = {
/**
* init_menu - initializes the governor
*/
-static int __init init_menu(void)
+static int __init menu_init(void)
{
return cpuidle_register_governor(&menu_governor);
}
-/**
- * exit_menu - exits the governor
- */
-static void __exit exit_menu(void)
-{
- cpuidle_unregister_governor(&menu_governor);
-}
-
-MODULE_LICENSE("GPL");
-module_init(init_menu);
-module_exit(exit_menu);
+core_initcall(menu_init);
--
1.7.9.5