diff options
author | Robert Lee <robert.lee@freescale.com> | 2010-01-18 10:05:02 +0800 |
---|---|---|
committer | Frank Li <Frank.Li@freescale.com> | 2010-01-19 11:38:43 +0800 |
commit | ed32066f456d97ebdd0d4a93266fa9f2ec93735b (patch) | |
tree | 76629a03d566a2e2b466ed0a79ba616554898a3a /arch | |
parent | 969fe3d1051c86daf915708b0d73d73b22ec3b1e (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/Kconfig | 6 | ||||
-rw-r--r-- | arch/arm/mach-stmp378x/pm.c | 18 | ||||
-rw-r--r-- | arch/arm/plat-stmp3xxx/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/plat-stmp3xxx/clock.c | 4 |
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; |