提交 81cca645 编写于 作者: O Olof Johansson

Merge tag 'mvebu-fixes-3.16-3' of git://git.infradead.org/linux-mvebu into fixes

Merge "mvebu fixes for v3.16 (round 3)" from Jason Cooper:

 - Fix SMP boot on 38x/375 in big endian
 - Fix operand list for pmsu on 370/XP
 - Fix coherency bus notifiers

* tag 'mvebu-fixes-3.16-3' of git://git.infradead.org/linux-mvebu:
  ARM: mvebu: Fix coherency bus notifiers by using separate notifiers
  ARM: mvebu: Fix the operand list in the inline asm of armada_370_xp_pmsu_idle_enter
  ARM: mvebu: fix SMP boot for Armada 38x and Armada 375 Z1 in big endian
Signed-off-by: NOlof Johansson <olof@lixom.net>
...@@ -292,6 +292,10 @@ static struct notifier_block mvebu_hwcc_nb = { ...@@ -292,6 +292,10 @@ static struct notifier_block mvebu_hwcc_nb = {
.notifier_call = mvebu_hwcc_notifier, .notifier_call = mvebu_hwcc_notifier,
}; };
static struct notifier_block mvebu_hwcc_pci_nb = {
.notifier_call = mvebu_hwcc_notifier,
};
static void __init armada_370_coherency_init(struct device_node *np) static void __init armada_370_coherency_init(struct device_node *np)
{ {
struct resource res; struct resource res;
...@@ -427,7 +431,7 @@ static int __init coherency_pci_init(void) ...@@ -427,7 +431,7 @@ static int __init coherency_pci_init(void)
{ {
if (coherency_available()) if (coherency_available())
bus_register_notifier(&pci_bus_type, bus_register_notifier(&pci_bus_type,
&mvebu_hwcc_nb); &mvebu_hwcc_pci_nb);
return 0; return 0;
} }
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/init.h> #include <linux/init.h>
#include <asm/assembler.h>
__CPUINIT __CPUINIT
#define CPU_RESUME_ADDR_REG 0xf10182d4 #define CPU_RESUME_ADDR_REG 0xf10182d4
...@@ -22,13 +24,18 @@ ...@@ -22,13 +24,18 @@
.global armada_375_smp_cpu1_enable_code_end .global armada_375_smp_cpu1_enable_code_end
armada_375_smp_cpu1_enable_code_start: armada_375_smp_cpu1_enable_code_start:
ldr r0, [pc, #4] ARM_BE8(setend be)
adr r0, 1f
ldr r0, [r0]
ldr r1, [r0] ldr r1, [r0]
ARM_BE8(rev r1, r1)
mov pc, r1 mov pc, r1
1:
.word CPU_RESUME_ADDR_REG .word CPU_RESUME_ADDR_REG
armada_375_smp_cpu1_enable_code_end: armada_375_smp_cpu1_enable_code_end:
ENTRY(mvebu_cortex_a9_secondary_startup) ENTRY(mvebu_cortex_a9_secondary_startup)
ARM_BE8(setend be)
bl v7_invalidate_l1 bl v7_invalidate_l1
b secondary_startup b secondary_startup
ENDPROC(mvebu_cortex_a9_secondary_startup) ENDPROC(mvebu_cortex_a9_secondary_startup)
...@@ -201,12 +201,12 @@ static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle) ...@@ -201,12 +201,12 @@ static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle)
/* Test the CR_C bit and set it if it was cleared */ /* Test the CR_C bit and set it if it was cleared */
asm volatile( asm volatile(
"mrc p15, 0, %0, c1, c0, 0 \n\t" "mrc p15, 0, r0, c1, c0, 0 \n\t"
"tst %0, #(1 << 2) \n\t" "tst r0, #(1 << 2) \n\t"
"orreq %0, %0, #(1 << 2) \n\t" "orreq r0, r0, #(1 << 2) \n\t"
"mcreq p15, 0, %0, c1, c0, 0 \n\t" "mcreq p15, 0, r0, c1, c0, 0 \n\t"
"isb " "isb "
: : "r" (0)); : : : "r0");
pr_warn("Failed to suspend the system\n"); pr_warn("Failed to suspend the system\n");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册