add patch from calxeda enabling the kernel to boot on physical hardware
http://lists.arm.linux.org.uk/lurker/message/20120605.031140.e7d9b601.en.html
This commit is contained in:
parent
0ee1a3499d
commit
dac218827a
2 changed files with 117 additions and 0 deletions
110
highbank-secure-smc.patch
Normal file
110
highbank-secure-smc.patch
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
Linux runs in non-secure mode on highbank, so we need secure monitor calls
|
||||
to enable and disable the PL310. Rather than invent new smc calls, the same
|
||||
calling convention used by OMAP is used here.
|
||||
|
||||
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
|
||||
---
|
||||
arch/arm/mach-highbank/Makefile | 6 +++++-
|
||||
arch/arm/mach-highbank/core.h | 1 +
|
||||
arch/arm/mach-highbank/highbank.c | 14 ++++++++++++++
|
||||
arch/arm/mach-highbank/smc.S | 29 +++++++++++++++++++++++++++++
|
||||
4 files changed, 49 insertions(+), 1 deletion(-)
|
||||
create mode 100644 arch/arm/mach-highbank/smc.S
|
||||
|
||||
|
||||
|
||||
diff --git a/arch/arm/mach-highbank/Makefile b/arch/arm/mach-highbank/Makefile
|
||||
index f8437dd..ded4652 100644
|
||||
--- a/arch/arm/mach-highbank/Makefile
|
||||
+++ b/arch/arm/mach-highbank/Makefile
|
||||
@@ -1,4 +1,8 @@
|
||||
-obj-y := clock.o highbank.o system.o
|
||||
+obj-y := clock.o highbank.o system.o smc.o
|
||||
+
|
||||
+plus_sec := $(call as-instr,.arch_extension sec,+sec)
|
||||
+AFLAGS_smc.o :=-Wa,-march=armv7-a$(plus_sec)
|
||||
+
|
||||
obj-$(CONFIG_DEBUG_HIGHBANK_UART) += lluart.o
|
||||
obj-$(CONFIG_SMP) += platsmp.o
|
||||
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
||||
diff --git a/arch/arm/mach-highbank/core.h b/arch/arm/mach-highbank/core.h
|
||||
index d8e2d0b..141ed51 100644
|
||||
--- a/arch/arm/mach-highbank/core.h
|
||||
+++ b/arch/arm/mach-highbank/core.h
|
||||
@@ -8,3 +8,4 @@ extern void highbank_lluart_map_io(void);
|
||||
static inline void highbank_lluart_map_io(void) {}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
+extern void highbank_smc1(int fn, int arg);
|
||||
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c
|
||||
index 410a112..8777612 100644
|
||||
--- a/arch/arm/mach-highbank/highbank.c
|
||||
+++ b/arch/arm/mach-highbank/highbank.c
|
||||
@@ -85,10 +85,24 @@ const static struct of_device_id irq_match[] = {
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
|
||||
+#ifdef CONFIG_CACHE_L2X0
|
||||
+static void highbank_l2x0_disable(void)
|
||||
+{
|
||||
+ /* Disable PL310 L2 Cache controller */
|
||||
+ highbank_smc1(0x102, 0x0);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
static void __init highbank_init_irq(void)
|
||||
{
|
||||
of_irq_init(irq_match);
|
||||
+
|
||||
+#ifdef CONFIG_CACHE_L2X0
|
||||
+ /* Enable PL310 L2 Cache controller */
|
||||
+ highbank_smc1(0x102, 0x1);
|
||||
l2x0_of_init(0, ~0UL);
|
||||
+ outer_cache.disable = highbank_l2x0_disable;
|
||||
+#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void __init highbank_timer_init(void)
|
||||
diff --git a/arch/arm/mach-highbank/smc.S b/arch/arm/mach-highbank/smc.S
|
||||
new file mode 100644
|
||||
index 0000000..bba369e
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/mach-highbank/smc.S
|
||||
@@ -0,0 +1,29 @@
|
||||
+/*
|
||||
+ * Copied from omap44xx-smc.S Copyright (C) 2010 Texas Instruments, Inc.
|
||||
+ * Copyright 2012 Calxeda, Inc.
|
||||
+ *
|
||||
+ * This program is free software,you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/linkage.h>
|
||||
+
|
||||
+/*
|
||||
+ * This is common routine to manage secure monitor API
|
||||
+ * used to modify the PL310 secure registers.
|
||||
+ * 'r0' contains the value to be modified and 'r12' contains
|
||||
+ * the monitor API number. It uses few CPU registers
|
||||
+ * internally and hence they need be backed up including
|
||||
+ * link register "lr".
|
||||
+ * Function signature : void highbank_smc1(u32 fn, u32 arg)
|
||||
+ */
|
||||
+
|
||||
+ENTRY(highbank_smc1)
|
||||
+ stmfd sp!, {r2-r12, lr}
|
||||
+ mov r12, r0
|
||||
+ mov r0, r1
|
||||
+ dsb
|
||||
+ smc #0
|
||||
+ ldmfd sp!, {r2-r12, pc}
|
||||
+ENDPROC(highbank_smc1)
|
||||
--
|
||||
1.7.9.5
|
||||
|
|
@ -724,6 +724,8 @@ Patch21006: arm-beagle-usb-init.patch
|
|||
# ARM highbank patches
|
||||
# Highbank clock functions need to be EXPORT for module builds
|
||||
Patch21010: highbank-export-clock-functions.patch
|
||||
# http://lists.arm.linux.org.uk/lurker/message/20120605.031140.e7d9b601.en.html
|
||||
Patch21011: highbank-secure-smc.patch
|
||||
|
||||
Patch21094: power-x86-destdir.patch
|
||||
|
||||
|
|
@ -1449,6 +1451,7 @@ ApplyPatch weird-root-dentry-name-debug.patch
|
|||
|
||||
#Highbank clock functions
|
||||
ApplyPatch highbank-export-clock-functions.patch
|
||||
ApplyPatch highbank-secure-smc.patch
|
||||
|
||||
#selinux ptrace child permissions
|
||||
ApplyPatch selinux-apply-different-permission-to-ptrace-child.patch
|
||||
|
|
@ -2333,6 +2336,10 @@ fi
|
|||
# '-' | |
|
||||
# '-'
|
||||
%changelog
|
||||
* Wed Jun 06 2012 Dennis Gilmore <dennis@ausil.us> 3.4.1-2
|
||||
- add patch from calxeda to enable the highbank kernel to boot
|
||||
- on real hardware
|
||||
|
||||
* Tue Jun 05 2012 Dennis Gilmore <dennis@ausil.us>
|
||||
- add patch to register omapdrm to the platforms so that we get
|
||||
- working console framebuffer and X on panda and beagle boards
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue