[linux-yocto] [PATCH 2/3] arch/arm/mach-axxia: Clean Up the Mapping of Dickens
Cristian Bercaru
cristian.bercaru at windriver.com
Thu Nov 19 05:30:54 PST 2015
From: John Jacques <john.jacques at intel.com>
Dickens was mapped in a number of places, and inconsistently at that.
This commit changes that; Dickens is mapped in one place.
Signed-off-by: John Jacques <john.jacques at intel.com>
---
arch/arm/mach-axxia/axxia.c | 5 +--
arch/arm/mach-axxia/axxia.h | 2 +-
arch/arm/mach-axxia/ddr_retention.c | 67 +----------------------------------
arch/arm/mach-axxia/platsmp.c | 6 ----
4 files changed, 5 insertions(+), 75 deletions(-)
diff --git a/arch/arm/mach-axxia/axxia.c b/arch/arm/mach-axxia/axxia.c
index 2105c32..1df6353 100644
--- a/arch/arm/mach-axxia/axxia.c
+++ b/arch/arm/mach-axxia/axxia.c
@@ -62,6 +62,7 @@ static const char *axxia_dt_match[] __initconst = {
};
static void __iomem *base;
+void __iomem *dickens;
#ifdef AXXIA_NCR_RESET_CHECK
int ncr_reset_active;
@@ -91,7 +92,7 @@ static void set_l3_pstate(u32 newstate)
}
}
-static void
+void
flush_l3(void)
{
/* Switch to SFONLY to flush */
@@ -202,7 +203,7 @@ void __init axxia_dt_init(void)
{
base = ioremap(0x2010000000, 0x40000);
if (!of_find_compatible_node(NULL, NULL, "lsi,axm5500-sim")) {
- dickens = ioremap(0x2000000000, SZ_4M);
+ dickens = ioremap(0x2000000000, SZ_16M);
#ifdef CONFIG_KEXEC
kexec_reinit = flush_l3;
#endif
diff --git a/arch/arm/mach-axxia/axxia.h b/arch/arm/mach-axxia/axxia.h
index 6fd9474..5b83378 100644
--- a/arch/arm/mach-axxia/axxia.h
+++ b/arch/arm/mach-axxia/axxia.h
@@ -4,8 +4,8 @@ void axxia_init_clocks(int is_sim);
void axxia_ddr_retention_init(void);
void axxia_platform_cpu_die(unsigned int cpu);
int axxia_platform_cpu_kill(unsigned int cpu);
-
void ncp_ddr_shutdown(void *, void *, unsigned long);
+void flush_l3(void);
extern void axxia_secondary_startup(void);
diff --git a/arch/arm/mach-axxia/ddr_retention.c b/arch/arm/mach-axxia/ddr_retention.c
index eb2f571..1bf3e8f 100644
--- a/arch/arm/mach-axxia/ddr_retention.c
+++ b/arch/arm/mach-axxia/ddr_retention.c
@@ -36,9 +36,6 @@
static void __iomem *nca;
static void __iomem *apb;
-#ifndef CONFIG_SMP
-void __iomem *dickens;
-#endif
static int ddr_retention_enabled;
enum {
@@ -80,67 +77,6 @@ ncp_cnal_regions_acp55xx[] = {
NCP_REGION_ID(0xff, 0xff)
};
-
-/*
- ------------------------------------------------------------------------------
- flush_l3
-
- This is NOT a general function to flush the L3 cache. There are a number of
- assumptions that are not usually true...
-
- 1) All other cores are " quiesced".
- 2) There is no need to worry about preemption or interrupts.
-*/
-
-static void
-flush_l3(void)
-{
-
- unsigned long hnf_offsets[] = {
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27
- };
-
- int i;
- unsigned long status;
- int retries;
-
- for (i = 0; i < (sizeof(hnf_offsets) / sizeof(unsigned long)); ++i)
- writel(0x0, dickens + (0x10000 * hnf_offsets[i]) + 0x10);
-
- for (i = 0; i < (sizeof(hnf_offsets) / sizeof(unsigned long)); ++i) {
- retries = 10000;
-
- do {
- status = readl(dickens +
- (0x10000 * hnf_offsets[i]) + 0x18);
- udelay(1);
- } while ((0 < --retries) && (0x0 != (status & 0xf)));
-
- if (0 == retries)
- BUG();
- }
-
- for (i = 0; i < (sizeof(hnf_offsets) / sizeof(unsigned long)); ++i)
- writel(0x3, dickens + (0x10000 * hnf_offsets[i]) + 0x10);
-
- for (i = 0; i < (sizeof(hnf_offsets) / sizeof(unsigned long)); ++i) {
- retries = 10000;
-
- do {
- status = readl(dickens +
- (0x10000 * hnf_offsets[i]) + 0x18);
- udelay(1);
- } while ((0 < --retries) && (0xc != (status & 0xf)));
-
- if (0 == retries)
- BUG();
- }
-
- asm volatile ("dsb" : : : "memory");
-
- return;
-}
-
static void
quiesce_vp_engine(int engine_type)
{
@@ -300,7 +236,7 @@ initiate_retention_reset(void)
return;
}
- if (NULL == nca || NULL == apb || NULL == dickens)
+ if (NULL == nca || NULL == apb)
BUG();
preempt_disable();
@@ -376,7 +312,6 @@ axxia_ddr_retention_init(void)
} else {
apb = ioremap(0x2010000000, 0x80000);
nca = ioremap(0x002020100000ULL, 0x20000);
- dickens = ioremap(0x2000000000, 0x1000000);
ddr_retention_enabled = 1;
pr_info("DDR Retention Reset Initialized\n");
}
diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c
index 6472734..c17063f 100644
--- a/arch/arm/mach-axxia/platsmp.c
+++ b/arch/arm/mach-axxia/platsmp.c
@@ -27,13 +27,11 @@
#include <mach/axxia-gic.h>
#define SYSCON_PHYS_ADDR 0x002010030000ULL
-#define DICKENS_PHYS_ADDR 0x2000000000
static int __cpuinitdata wfe_fixup;
static int wfe_available;
void __iomem *syscon;
-void __iomem *dickens;
inline void
__axxia_arch_wfe(void)
@@ -234,10 +232,6 @@ static void __init axxia_smp_prepare_cpus(unsigned int max_cpus)
if (WARN_ON(!syscon))
return;
- dickens = ioremap(DICKENS_PHYS_ADDR, SZ_4M);
- if (WARN_ON(!dickens))
- return;
-
check_fixup_sev(syscon);
do_fixup_sev();
--
1.7.9.5
More information about the linux-yocto
mailing list