From 21bd655e72fb79827fe857c6d4069f4a9487bf68 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=BB=84=E6=B6=9B?= Date: Wed, 9 Mar 2011 15:22:16 +0800 Subject: [PATCH] rk29: no reset while panic and fix gcc warning --- arch/arm/mach-rk29/reset.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/arch/arm/mach-rk29/reset.c b/arch/arm/mach-rk29/reset.c index 24991fc88952..03f4a28cde28 100644 --- a/arch/arm/mach-rk29/reset.c +++ b/arch/arm/mach-rk29/reset.c @@ -1,15 +1,9 @@ #include +#include + #include #include #include -#include -#include -#include - -#include -#include -#include -#include #include #include #include @@ -17,16 +11,16 @@ #include #include - - - +#include +#include #define cru_readl(offset) readl(RK29_CRU_BASE + offset) #define cru_writel(v, offset) do { writel(v, RK29_CRU_BASE + offset); readl(RK29_CRU_BASE + offset); } while (0) static inline void delay_500ns(void) { - int delay = 12; + int delay = 13; + barrier(); while (delay--) barrier(); } @@ -37,7 +31,6 @@ static void pwm2gpiodefault(void) volatile unsigned int * pGRF_GPIO2L_IOMUX = (volatile unsigned int *)(REG_FILE_BASE_ADDR + 0x58); #define GPIO2_BASE_ADDR RK29_GPIO2_BASE volatile unsigned int *pGPIO2_DIR = (volatile unsigned int *)(GPIO2_BASE_ADDR + 0x4); - volatile unsigned int *pGPIO2_LEVEL = (volatile unsigned int *)GPIO2_BASE_ADDR; // iomux pwm2 to gpio2_a[3] *pGRF_GPIO2L_IOMUX &= ~(0x3<<6); @@ -48,7 +41,11 @@ static void pwm2gpiodefault(void) void rk29_arch_reset(int mode, const char *cmd) { - u32 pll, reg; + u32 reg; + + /* from panic? */ + if (system_state != SYSTEM_RESTART) + machine_power_off(); local_irq_disable(); local_fiq_disable(); @@ -106,7 +103,7 @@ void rk29_arch_reset(int mode, const char *cmd) "mcr p15, 0, %0, c1, c0, 0\n\t" // "mcr p15, 0, %0, c8, c7, 0 @ invalidate whole TLB\n\t" // "mcr p15, 0, %0, c7, c5, 6 @ invalidate BTC\n\t" - :: "r" (reg)); + : "=r" (reg)); asm("b 1f\n\t" ".align 5\n\t" -- 2.34.1