summaryrefslogtreecommitdiffstats
path: root/arch/arm/include/asm
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2014-03-20 14:35:13 -0700
committerOlof Johansson <olof@lixom.net>2014-03-20 14:35:13 -0700
commit5d4089a4ad06980c67c8e5a2527f73e085d02423 (patch)
tree15fab8a00860e5ca5277e09f7fdb45daf08b13c2 /arch/arm/include/asm
parent6df5132aeeae041038ed2396697df5ff558a4291 (diff)
parent338f2aadca7ed4e30e5937fdebc3ff72fda210b6 (diff)
downloadop-kernel-dev-5d4089a4ad06980c67c8e5a2527f73e085d02423.zip
op-kernel-dev-5d4089a4ad06980c67c8e5a2527f73e085d02423.tar.gz
Merge tag 'tegra-for-3.15-tf' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into next/soc
Merge "ARM: tegra: Trusted Foundations work for 3.15" from Stephen Warren: This pull request contains a number of cleanups and enhancements for the Trusted Foundations firmware used on production Tegra SoCs. The changes allow kernels without TF support to run on HW that uses TF, albeit with reduced functionality, and also fix the cpuidle feature. * tag 'tegra-for-3.15-tf' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux: ARM: tegra: cpuidle: use firmware for power down ARM: trusted_foundations: implement prepare_idle() ARM: firmware: add prepare_idle() operation ARM: firmware: enable Trusted Foundations by default ARM: trusted_foundations: fallback when TF support is missing ARM: trusted_foundations: fix vendor prefix typos Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch/arm/include/asm')
-rw-r--r--arch/arm/include/asm/firmware.h4
-rw-r--r--arch/arm/include/asm/trusted_foundations.h13
2 files changed, 13 insertions, 4 deletions
diff --git a/arch/arm/include/asm/firmware.h b/arch/arm/include/asm/firmware.h
index 1563130..2c9f10d 100644
--- a/arch/arm/include/asm/firmware.h
+++ b/arch/arm/include/asm/firmware.h
@@ -22,6 +22,10 @@
*/
struct firmware_ops {
/*
+ * Inform the firmware we intend to enter CPU idle mode
+ */
+ int (*prepare_idle)(void);
+ /*
* Enters CPU idle mode
*/
int (*do_idle)(void);
diff --git a/arch/arm/include/asm/trusted_foundations.h b/arch/arm/include/asm/trusted_foundations.h
index 3bd36e2..b5f7705 100644
--- a/arch/arm/include/asm/trusted_foundations.h
+++ b/arch/arm/include/asm/trusted_foundations.h
@@ -30,6 +30,8 @@
#include <linux/printk.h>
#include <linux/bug.h>
#include <linux/of.h>
+#include <linux/cpu.h>
+#include <linux/smp.h>
struct trusted_foundations_platform_data {
unsigned int version_major;
@@ -47,10 +49,13 @@ static inline void register_trusted_foundations(
struct trusted_foundations_platform_data *pd)
{
/*
- * If we try to register TF, this means the system needs it to continue.
- * Its absence if thus a fatal error.
+ * If the system requires TF and we cannot provide it, continue booting
+ * but disable features that cannot be provided.
*/
- panic("No support for Trusted Foundations, stopping...\n");
+ pr_err("No support for Trusted Foundations, continuing in degraded mode.\n");
+ pr_err("Secondary processors as well as CPU PM will be disabled.\n");
+ setup_max_cpus = 0;
+ cpu_idle_poll_ctrl(true);
}
static inline void of_register_trusted_foundations(void)
@@ -59,7 +64,7 @@ static inline void of_register_trusted_foundations(void)
* If we find the target should enable TF but does not support it,
* fail as the system won't be able to do much anyway
*/
- if (of_find_compatible_node(NULL, NULL, "tl,trusted-foundations"))
+ if (of_find_compatible_node(NULL, NULL, "tlm,trusted-foundations"))
register_trusted_foundations(NULL);
}
#endif /* CONFIG_TRUSTED_FOUNDATIONS */
OpenPOWER on IntegriCloud