summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorRobert Lee <robert.lee@freescale.com>2010-01-18 10:05:02 +0800
committerFrank Li <Frank.Li@freescale.com>2010-01-19 11:38:43 +0800
commited32066f456d97ebdd0d4a93266fa9f2ec93735b (patch)
tree76629a03d566a2e2b466ed0a79ba616554898a3a /arch
parent969fe3d1051c86daf915708b0d73d73b22ec3b1e (diff)
ENGR00116049-1 [imx23] Addition of FIQ system for chip errata/bo's
[imx23] Addition of FIQ system for chip errata and bo's Signed-off-by: Robert Lee <robert.lee@freescale.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-stmp378x/Kconfig6
-rw-r--r--arch/arm/mach-stmp378x/pm.c18
-rw-r--r--arch/arm/plat-stmp3xxx/Kconfig2
-rw-r--r--arch/arm/plat-stmp3xxx/clock.c4
4 files changed, 19 insertions, 11 deletions
diff --git a/arch/arm/mach-stmp378x/Kconfig b/arch/arm/mach-stmp378x/Kconfig
index 27bb5232c5e2..09789086d7d5 100644
--- a/arch/arm/mach-stmp378x/Kconfig
+++ b/arch/arm/mach-stmp378x/Kconfig
@@ -57,6 +57,12 @@ config DMA_ZONE_SIZE
This is the size in MB for the DMA zone. The DMA zone is used for
dedicated memory for large contiguous video buffers
+config VECTORS_PHY_ADDR
+ int "vectors address"
+ default 0
+ help
+ This config set vectors table is located which physical address
+
# set if we need the UTMI transceiver code
config UTMI_MXC
bool
diff --git a/arch/arm/mach-stmp378x/pm.c b/arch/arm/mach-stmp378x/pm.c
index 32f87ee18a9d..15010d9ce313 100644
--- a/arch/arm/mach-stmp378x/pm.c
+++ b/arch/arm/mach-stmp378x/pm.c
@@ -3,7 +3,7 @@
*
* Author: Vitaly Wool <vital@embeddedalley.com>
*
- * Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
* Copyright 2008 Embedded Alley Solutions, Inc All Rights Reserved.
*/
@@ -235,7 +235,7 @@ static inline void do_standby(void)
*/
/* save portion of SRAM to be used by suspend function. */
- memcpy(saved_sram, (void *)STMP3XXX_OCRAM_BASE,
+ memcpy(saved_sram, (void *)(STMP3XXX_OCRAM_BASE + 0x1000),
stmp_standby_alloc_sz);
/* make sure SRAM copy gets physically written into SDRAM.
@@ -244,7 +244,7 @@ static inline void do_standby(void)
flush_cache_all();
/* copy suspend function into SRAM */
- memcpy((void *)STMP3XXX_OCRAM_BASE, stmp378x_standby,
+ memcpy((void *)(STMP3XXX_OCRAM_BASE + 0x1000), stmp378x_standby,
MAX_POWEROFF_CODE_SIZE);
/* now switch the CPU to ref_xtal */
@@ -302,7 +302,7 @@ static inline void do_standby(void)
REGS_CLKCTRL_BASE + HW_CLKCTRL_XTAL);
/* do suspend */
- stmp37xx_cpu_standby_ptr = (void *)STMP3XXX_OCRAM_BASE;
+ stmp37xx_cpu_standby_ptr = (void *)(STMP3XXX_OCRAM_BASE + 0x1000);
stmp37xx_cpu_standby_ptr();
__raw_writel(reg_clkctrl_clkseq, REGS_CLKCTRL_BASE + HW_CLKCTRL_CLKSEQ);
@@ -329,7 +329,7 @@ static inline void do_standby(void)
clk_put(cpu_clk);
/* restoring portion of SRAM that was used by suspend function */
- memcpy((void *)STMP3XXX_OCRAM_BASE, saved_sram,
+ memcpy((void *)(STMP3XXX_OCRAM_BASE + 0x1000), saved_sram,
stmp_standby_alloc_sz);
}
@@ -400,7 +400,7 @@ static noinline void do_mem(void)
hbus_rate = clk_get_rate(hbus_clk);
/* save portion of SRAM to be used by suspend function. */
- memcpy(saved_sram, (void *)STMP3XXX_OCRAM_BASE, stmp_s2ram_alloc_sz);
+ memcpy(saved_sram, (void *)(STMP3XXX_OCRAM_BASE + 0x1000), stmp_s2ram_alloc_sz);
/* set the PERSISTENT_SLEEP_BIT for bootloader */
__raw_writel(1 << 10,
@@ -413,17 +413,17 @@ static noinline void do_mem(void)
flush_cache_all();
/*copy suspend function into SRAM */
- memcpy((void *)STMP3XXX_OCRAM_BASE, stmp37xx_cpu_suspend,
+ memcpy((void *)(STMP3XXX_OCRAM_BASE + 0x1000), stmp37xx_cpu_suspend,
stmp_s2ram_alloc_sz);
/* do suspend */
- stmp37xx_cpu_suspend_ptr = (void *)STMP3XXX_OCRAM_BASE;
+ stmp37xx_cpu_suspend_ptr = (void *)(STMP3XXX_OCRAM_BASE + 0x1000);
stmp37xx_cpu_suspend_ptr(0);
saved_sleep_state = 1; /* waking from non-standby state */
/* restoring portion of SRAM that was used by suspend function */
- memcpy((void *)STMP3XXX_OCRAM_BASE, saved_sram, stmp_s2ram_alloc_sz);
+ memcpy((void *)(STMP3XXX_OCRAM_BASE + 0x1000), saved_sram, stmp_s2ram_alloc_sz);
/* clocks */
for (i = 0; i < ARRAY_SIZE(clk_regs); i++)
diff --git a/arch/arm/plat-stmp3xxx/Kconfig b/arch/arm/plat-stmp3xxx/Kconfig
index e211f2604307..e6253bed6f4c 100644
--- a/arch/arm/plat-stmp3xxx/Kconfig
+++ b/arch/arm/plat-stmp3xxx/Kconfig
@@ -8,12 +8,14 @@ choice
config ARCH_STMP37XX
bool "Freescale SMTP37xx"
select CPU_ARM926T
+ select FIQ
---help---
STMP37xx refers to 3700 through 3769 chips
config ARCH_STMP378X
bool "Freescale STMP378x"
select CPU_ARM926T
+ select FIQ
---help---
STMP378x refers to 3780 through 3789 chips
diff --git a/arch/arm/plat-stmp3xxx/clock.c b/arch/arm/plat-stmp3xxx/clock.c
index 62823d08f3f1..6007461942cd 100644
--- a/arch/arm/plat-stmp3xxx/clock.c
+++ b/arch/arm/plat-stmp3xxx/clock.c
@@ -3,7 +3,7 @@
*
* Author: Vitaly Wool <vital@embeddedalley.com>
*
- * Copyright 2009 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
* Copyright 2008 Embedded Alley Solutions, Inc All Rights Reserved.
*/
@@ -442,7 +442,7 @@ static int emi_set_rate(struct clk *clk, u32 rate)
int i;
struct stmp3xxx_emi_scaling_data sc_data;
int (*scale)(struct stmp3xxx_emi_scaling_data *) =
- (void *)STMP3XXX_OCRAM_BASE;
+ (void *)(STMP3XXX_OCRAM_BASE + 0x1000);
void *saved_ocram;
u32 clkctrl_emi;
u32 clkctrl_frac;