s5pc1xx: sleep: codes clean
authorMinkyu Kang <mk7.kang@samsung.com>
Tue, 5 Jan 2010 03:54:11 +0000 (12:54 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Tue, 5 Jan 2010 03:54:11 +0000 (12:54 +0900)
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
cpu/arm_cortexa8/s5pc1xx/sleep.c
cpu/arm_cortexa8/s5pc1xx/sleep.h

index c9ed1f4..d5febee 100644 (file)
 #include <asm/arch/sys_proto.h>
 #include "sleep.h"
 
-extern int s5pc110_cpu_save(unsigned long *saveblk);
-extern void s5pc110_cpu_resume(void);
-extern unsigned int s5pc110_sleep_return_addr;
-extern unsigned int s5pc110_sleep_save_phys;
-
 struct stack {
        u32 irq[3];
        u32 abt[3];
@@ -48,116 +43,129 @@ struct regs_to_save {
        unsigned int    start_address;
        unsigned int    size;
 };
+
 static struct regs_to_save core_save[] = {
-       { .start_address=0xE0100200, .size=7},
-       { .start_address=0xE0100280, .size=2},
-       { .start_address=0xE0100300, .size=8},
-       { .start_address=0xE0100460, .size=5},
-       { .start_address=0xE0100480, .size=3},
-       { .start_address=0xE0100500, .size=1},
-       { .start_address=0xE0107008, .size=1},
+       { .start_address = 0xE0100200, .size = 7 },
+       { .start_address = 0xE0100280, .size = 2 },
+       { .start_address = 0xE0100300, .size = 8 },
+       { .start_address = 0xE0100460, .size = 5 },
+       { .start_address = 0xE0100480, .size = 3 },
+       { .start_address = 0xE0100500, .size = 1 },
+       { .start_address = 0xE0107008, .size = 1 },
 };
-static unsigned int buf_core_save[7+2+8+5+3+1+1];
+
+static unsigned int buf_core_save[7 + 2 + 8 + 5 + 3 + 1 + 1];
+
 static struct regs_to_save gpio_save[] = {
-       { .start_address=0xE0200000, .size=6},
-       { .start_address=0xE0200020, .size=6},
-       { .start_address=0xE0200040, .size=6},
-       { .start_address=0xE0200060, .size=6},
-       { .start_address=0xE0200080, .size=6},
-       { .start_address=0xE02000A0, .size=6},
-       { .start_address=0xE02000C0, .size=6},
-       { .start_address=0xE02000E0, .size=6},
-       { .start_address=0xE0200100, .size=6},
-       { .start_address=0xE0200120, .size=6},
-       { .start_address=0xE0200140, .size=6},
-       { .start_address=0xE0200160, .size=6},
-       { .start_address=0xE0200180, .size=6},
-       { .start_address=0xE02001A0, .size=6},
-       { .start_address=0xE02001C0, .size=6},
-       { .start_address=0xE02001E0, .size=6},
-       { .start_address=0xE0200200, .size=6},
-       { .start_address=0xE0200220, .size=6},
-       { .start_address=0xE0200240, .size=6},
-       { .start_address=0xE0200260, .size=6},
-       { .start_address=0xE0200280, .size=6},
-       { .start_address=0xE02002A0, .size=6},
-       { .start_address=0xE02002C0, .size=6},
-       { .start_address=0xE02002E0, .size=6},
-       { .start_address=0xE0200300, .size=6},
-       { .start_address=0xE0200320, .size=6},
-       { .start_address=0xE0200340, .size=6},
-       { .start_address=0xE0200360, .size=6},
-       { .start_address=0xE0200380, .size=6},
-       { .start_address=0xE02003A0, .size=6},
-       { .start_address=0xE02003C0, .size=6},
-       { .start_address=0xE02003E0, .size=6},
-       { .start_address=0xE0200400, .size=6},
-       { .start_address=0xE0200420, .size=6},
-       { .start_address=0xE0200440, .size=6},
-       { .start_address=0xE0200460, .size=6},
-       { .start_address=0xE0200480, .size=6},
-       { .start_address=0xE02004A0, .size=6},
-       { .start_address=0xE02004C0, .size=6},
-       { .start_address=0xE02004E0, .size=6},
-       { .start_address=0xE0200500, .size=6},
-       { .start_address=0xE0200520, .size=6},
-       { .start_address=0xE0200540, .size=6},
-       { .start_address=0xE0200560, .size=6},
-       { .start_address=0xE0200580, .size=6},
-       { .start_address=0xE02005A0, .size=6},
-       { .start_address=0xE02005C0, .size=6},
-       { .start_address=0xE02005E0, .size=6},
-       { .start_address=0xE0200700, .size=22},
-       { .start_address=0xE0200900, .size=22},
-       { .start_address=0xE0200A00, .size=22},
+       { .start_address = 0xE0200000, .size = 6 },
+       { .start_address = 0xE0200020, .size = 6 },
+       { .start_address = 0xE0200040, .size = 6 },
+       { .start_address = 0xE0200060, .size = 6 },
+       { .start_address = 0xE0200080, .size = 6 },
+       { .start_address = 0xE02000A0, .size = 6 },
+       { .start_address = 0xE02000C0, .size = 6 },
+       { .start_address = 0xE02000E0, .size = 6 },
+       { .start_address = 0xE0200100, .size = 6 },
+       { .start_address = 0xE0200120, .size = 6 },
+       { .start_address = 0xE0200140, .size = 6 },
+       { .start_address = 0xE0200160, .size = 6 },
+       { .start_address = 0xE0200180, .size = 6 },
+       { .start_address = 0xE02001A0, .size = 6 },
+       { .start_address = 0xE02001C0, .size = 6 },
+       { .start_address = 0xE02001E0, .size = 6 },
+       { .start_address = 0xE0200200, .size = 6 },
+       { .start_address = 0xE0200220, .size = 6 },
+       { .start_address = 0xE0200240, .size = 6 },
+       { .start_address = 0xE0200260, .size = 6 },
+       { .start_address = 0xE0200280, .size = 6 },
+       { .start_address = 0xE02002A0, .size = 6 },
+       { .start_address = 0xE02002C0, .size = 6 },
+       { .start_address = 0xE02002E0, .size = 6 },
+       { .start_address = 0xE0200300, .size = 6 },
+       { .start_address = 0xE0200320, .size = 6 },
+       { .start_address = 0xE0200340, .size = 6 },
+       { .start_address = 0xE0200360, .size = 6 },
+       { .start_address = 0xE0200380, .size = 6 },
+       { .start_address = 0xE02003A0, .size = 6 },
+       { .start_address = 0xE02003C0, .size = 6 },
+       { .start_address = 0xE02003E0, .size = 6 },
+       { .start_address = 0xE0200400, .size = 6 },
+       { .start_address = 0xE0200420, .size = 6 },
+       { .start_address = 0xE0200440, .size = 6 },
+       { .start_address = 0xE0200460, .size = 6 },
+       { .start_address = 0xE0200480, .size = 6 },
+       { .start_address = 0xE02004A0, .size = 6 },
+       { .start_address = 0xE02004C0, .size = 6 },
+       { .start_address = 0xE02004E0, .size = 6 },
+       { .start_address = 0xE0200500, .size = 6 },
+       { .start_address = 0xE0200520, .size = 6 },
+       { .start_address = 0xE0200540, .size = 6 },
+       { .start_address = 0xE0200560, .size = 6 },
+       { .start_address = 0xE0200580, .size = 6 },
+       { .start_address = 0xE02005A0, .size = 6 },
+       { .start_address = 0xE02005C0, .size = 6 },
+       { .start_address = 0xE02005E0, .size = 6 },
+       { .start_address = 0xE0200700, .size = 22 },
+       { .start_address = 0xE0200900, .size = 22 },
+       { .start_address = 0xE0200A00, .size = 22 },
 };
-static unsigned int buf_gpio_save[ 6*8*6 + 22*3 ];
+
+static unsigned int buf_gpio_save[6 * 8 * 6 + 22 * 3];
+
 static struct regs_to_save irq_save[] = {
-       { .start_address=0xF200000C, .size=2},
-       { .start_address=0xF2000018, .size=1},
-       { .start_address=0xF210000C, .size=2},
-       { .start_address=0xF2100018, .size=1},
-       { .start_address=0xF220000C, .size=2},
-       { .start_address=0xF2200018, .size=1},
-       { .start_address=0xF230000C, .size=2},
-       { .start_address=0xF2300018, .size=1},
+       { .start_address = 0xF200000C, .size = 2 },
+       { .start_address = 0xF2000018, .size = 1 },
+       { .start_address = 0xF210000C, .size = 2 },
+       { .start_address = 0xF2100018, .size = 1 },
+       { .start_address = 0xF220000C, .size = 2 },
+       { .start_address = 0xF2200018, .size = 1 },
+       { .start_address = 0xF230000C, .size = 2 },
+       { .start_address = 0xF2300018, .size = 1 },
 };
-static unsigned int buf_irq_save[ (2+1)*4 ];
+
+static unsigned int buf_irq_save[(2 + 1) * 4];
+
 static struct regs_to_save sromc_save[] = {
-       { .start_address=0xE8000000, .size=7},
+       { .start_address = 0xE8000000, .size = 7 },
 };
+
 static unsigned int buf_sromc_save[7];
+
 static struct regs_to_save uart_save[] = {
-       { .start_address=0xE2900000, .size=4},
-       { .start_address=0xE2900028, .size=2},
-       { .start_address=0xE2900038, .size=1},
-       { .start_address=0xE2900400, .size=4},
-       { .start_address=0xE2900428, .size=2},
-       { .start_address=0xE2900438, .size=1},
-       { .start_address=0xE2900800, .size=4},
-       { .start_address=0xE2900828, .size=2},
-       { .start_address=0xE2900838, .size=1},
-       { .start_address=0xE2900C00, .size=4},
-       { .start_address=0xE2900C28, .size=2},
-       { .start_address=0xE2900C38, .size=1},
+       { .start_address = 0xE2900000, .size = 4 },
+       { .start_address = 0xE2900028, .size = 2 },
+       { .start_address = 0xE2900038, .size = 1 },
+       { .start_address = 0xE2900400, .size = 4 },
+       { .start_address = 0xE2900428, .size = 2 },
+       { .start_address = 0xE2900438, .size = 1 },
+       { .start_address = 0xE2900800, .size = 4 },
+       { .start_address = 0xE2900828, .size = 2 },
+       { .start_address = 0xE2900838, .size = 1 },
+       { .start_address = 0xE2900C00, .size = 4 },
+       { .start_address = 0xE2900C28, .size = 2 },
+       { .start_address = 0xE2900C38, .size = 1 },
 };
-static unsigned int buf_uart_save[(4+2+1)*4];
+static unsigned int buf_uart_save[(4 + 2 + 1) * 4];
 
 static unsigned int reg_others;
 
-void s5pc110_save_reg(struct regs_to_save * list, unsigned int * buf, int length)
+void s5pc110_save_reg(struct regs_to_save *list,
+               unsigned int *buf, int length)
 {
        int i;
+       int j;
        int counter = 0;
-       for (i=0; i<length; i++) {
-               int j;
-               for (j=0; j<list[i].size; j++) {
-                       (*buf) = readl((unsigned int *)(list[i].start_address+j*4));
+
+       for (i = 0; i < length; i++) {
+               for (j = 0; j < list[i].size; j++) {
+                       *buf = readl((unsigned int *)
+                                       (list[i].start_address+j * 4));
                        buf++;
                        counter++;
                }
        }
 }
+
 void s5pc110_save_regs(void)
 {
        reg_others = readl(S5PC110_OTHERS);
@@ -167,24 +175,30 @@ void s5pc110_save_regs(void)
        s5pc110_save_reg(sromc_save, buf_sromc_save, ARRAY_SIZE(sromc_save));
        s5pc110_save_reg(uart_save, buf_uart_save, ARRAY_SIZE(uart_save));
 }
-void s5pc110_restore_reg(struct regs_to_save * list, unsigned int * buf, int length)
+
+void s5pc110_restore_reg(struct regs_to_save *list,
+               unsigned int *buf, int length)
 {
        int i;
+       int j;
+
+       for (i = 0; i < length; i++) {
+               for (j = 0; j < list[i].size; j++) {
+                       writel(*buf, (unsigned int *)
+                                       (list[i].start_address+j * 4));
 
-       for (i=0; i<length; i++) {
-               int j;
-               for (j=0; j<list[i].size; j++) {
-                       writel(*buf, (unsigned int *)(list[i].start_address+j*4));
                        if (s5pc1xx_get_cpu_rev() == 0) {
                                unsigned int tmp;
                                tmp = readl((unsigned int *)
-                                       (list[i].start_address+j*4));
+                                               (list[i].start_address+j * 4));
                        }
+
                        buf++;
                }
        }
 
 }
+
 void s5pc110_restore_regs(void)
 {
        s5pc110_restore_reg(uart_save, buf_uart_save, ARRAY_SIZE(uart_save));
@@ -216,25 +230,25 @@ void s5pc110_wakeup(void)
                        "I" (PSR_F_BIT | PSR_I_BIT | SVC_MODE)
                        : "r14");
 
-
        s5pc110_restore_regs();
 
-       reg_others |= 1<<28;
+       reg_others |= (1 << 28);
        writel(reg_others, S5PC110_OTHERS);
 
        printf("%s: Waking up...\n", __func__);
 
        timer_init();
 #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)
-       i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); /* init_func_i2c */
+       /* init_func_i2c */
+       i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
 #endif
 #if defined(CONFIG_CMD_ONENAND)
        onenand_init();
-#endif  
+#endif
 #ifdef CONFIG_SERIAL_MULTI
        serial_initialize();
 #endif
-       stdio_init_resume ();   /* get the devices list going. */
+       stdio_init_resume();   /* get the devices list going. */
 
        return;
 }
@@ -279,7 +293,7 @@ static int s5pc110_sleep(int mode)
        if (s5pc1xx_get_cpu_rev() == 0) {
                value = readl(S5PC110_EINT_WAKEUP_MASK);
                for (i = 0; i < 4; i++)
-                       value = readl(0xE0200F40+i*4);
+                       value = readl(0xE0200F40 + i * 4);
        }
 
        s5pc110_save_regs();
@@ -342,13 +356,13 @@ static int s5pc110_sleep(int mode)
        writel(value, S5PC110_OTHERS);
 
        /* cache flush */
-       asm ("mcr p15, 0, %0, c7, c5, 0": :"r" (0)); 
+       asm ("mcr p15, 0, %0, c7, c5, 0": :"r" (0));
        l2_cache_disable();
        invalidate_dcache(get_device_type());
 
        if (s5pc110_cpu_save(regs_save) == 0) {
                /* cache flush */
-               asm ("mcr p15, 0, %0, c7, c5, 0": :"r" (0)); 
+               asm ("mcr p15, 0, %0, c7, c5, 0": :"r" (0));
                l2_cache_disable();
                invalidate_dcache(get_device_type());
 
@@ -364,17 +378,19 @@ static int s5pc110_sleep(int mode)
                        value |= S5PC110_CFG_STANDBYWFI_SLEEP;
                        writel(value, S5PC110_PWR_CFG);
 
-                       asm("b  1f\n\t"
-                                       ".align 5\n\t"
-                                       "1:\n\t"
-                                       "mcr p15, 0, %0, c7, c10, 5\n\t"
-                                       "mcr p15, 0, %0, c7, c10, 4\n\t"
-                                       ".word 0xe320f003" :: "r" (value));
+                       asm ("b 1f\n\t"
+                               ".align 5\n\t"
+                               "1:\n\t"
+                               "mcr p15, 0, %0, c7, c10, 5\n\t"
+                               "mcr p15, 0, %0, c7, c10, 4\n\t"
+                               ".word 0xe320f003" :: "r" (value));
 
                } else { /* SLEEP_REGISTER */
                        value = (1 << 2);
                        writel(value, S5PC110_PWR_MODE);
-                       while(1);
+
+                       while (1)
+                               ;
                }
        }
 
@@ -383,8 +399,10 @@ static int s5pc110_sleep(int mode)
 
        writel(0, S5PC110_EINT_WAKEUP_MASK);
        readl(S5PC110_EINT_WAKEUP_MASK);
+
        for (i = 0; i < 4; i++)
-               readl(0xE0200F40+i*4);
+               readl(0xE0200F40 + i * 4);
+
        value = readl(S5PC110_WAKEUP_STAT);
        writel(0xFFFF & value, S5PC110_WAKEUP_STAT);
 
@@ -413,6 +431,6 @@ int do_sleep(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 U_BOOT_CMD(
        sleep,          CONFIG_SYS_MAXARGS,     1, do_sleep,
        "S5PC110 sleep",
-       "[sleep mode]\n# sleep: Sleep with SLEEP_WFI mode\n# sleep 1: Sleep with SLEEP_REGISTER mode\n"
+       "- Sleep with SLEEP_WFI mode\n"
+       "sleep 1 - Sleep with SLEEP_REGISTER mode\n"
 );
-
index d8c0462..ce8cb1a 100644 (file)
 
 #ifndef __ASSEMBLY__
 extern void board_sleep_resume(void);
+extern int s5pc110_cpu_save(unsigned long *saveblk);
+extern void s5pc110_cpu_resume(void);
+extern unsigned int s5pc110_sleep_return_addr;
+extern unsigned int s5pc110_sleep_save_phys;
+
 #endif
 
 #endif