提交 3592d7e0 编写于 作者: N Nicolas Pitre 提交者: Russell King

ARM: 8082/1: TC2: test the MCPM loopback during boot

This is not strictly needed on TC2 but still a good idea to exercise
that code.
Signed-off-by: Nnicolas Pitre <nico@linaro.org>
Reviewed-by: NKevin Hilman <khilman@linaro.org>
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 3721924c
...@@ -323,6 +323,21 @@ static void __naked tc2_pm_power_up_setup(unsigned int affinity_level) ...@@ -323,6 +323,21 @@ static void __naked tc2_pm_power_up_setup(unsigned int affinity_level)
" b cci_enable_port_for_self "); " b cci_enable_port_for_self ");
} }
static void __init tc2_cache_off(void)
{
pr_info("TC2: disabling cache during MCPM loopback test\n");
if (read_cpuid_part_number() == ARM_CPU_PART_CORTEX_A15) {
/* disable L2 prefetching on the Cortex-A15 */
asm volatile(
"mcr p15, 1, %0, c15, c0, 3 \n\t"
"isb \n\t"
"dsb "
: : "r" (0x400) );
}
v7_exit_coherency_flush(all);
cci_disable_port_by_cpu(read_cpuid_mpidr());
}
static int __init tc2_pm_init(void) static int __init tc2_pm_init(void)
{ {
int ret, irq; int ret, irq;
...@@ -370,6 +385,8 @@ static int __init tc2_pm_init(void) ...@@ -370,6 +385,8 @@ static int __init tc2_pm_init(void)
ret = mcpm_platform_register(&tc2_pm_power_ops); ret = mcpm_platform_register(&tc2_pm_power_ops);
if (!ret) { if (!ret) {
mcpm_sync_init(tc2_pm_power_up_setup); mcpm_sync_init(tc2_pm_power_up_setup);
/* test if we can (re)enable the CCI on our own */
BUG_ON(mcpm_loopback(tc2_cache_off) != 0);
pr_info("TC2 power management initialized\n"); pr_info("TC2 power management initialized\n");
} }
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册