From: Minkyu Kang Date: Fri, 29 Oct 2010 10:25:40 +0000 (+0900) Subject: ramoops: make ramoops command X-Git-Tag: v0.2~302 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9218bbf487b3f0895e995362448b1c0080e34ebf;p=kernel%2Fu-boot.git ramoops: make ramoops command Signed-off-by: Minkyu Kang --- diff --git a/board/samsung/universal_c110/universal.c b/board/samsung/universal_c110/universal.c index 16bee3a..37b9e90 100644 --- a/board/samsung/universal_c110/universal.c +++ b/board/samsung/universal_c110/universal.c @@ -2449,12 +2449,12 @@ static void setup_meminfo(void) setenv("meminfo", meminfo); } -#ifdef CONFIG_RAMOOPS +#ifdef CONFIG_CMD_RAMOOPS static void show_dump_msg(void) { int ret; - ret = ramoops_show_msg(samsung_get_base_modem()); + ret = ramoops_init(samsung_get_base_modem()); if (!ret) setenv("bootdelay", "-1"); @@ -2464,7 +2464,7 @@ static void show_dump_msg(void) int misc_init_r(void) { check_reset_status(); -#ifdef CONFIG_RAMOOPS +#ifdef CONFIG_CMD_RAMOOPS show_dump_msg(); #endif diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c index e117113..c7c4346 100644 --- a/board/samsung/universal_c210/universal.c +++ b/board/samsung/universal_c210/universal.c @@ -934,7 +934,7 @@ static void check_reset_status(void) } } -#ifdef CONFIG_RAMOOPS +#ifdef CONFIG_CMD_RAMOOPS static void show_dump_msg(void) { struct s5pc210_clock *clk = @@ -942,7 +942,7 @@ static void show_dump_msg(void) int ret; unsigned int reg; - ret = ramoops_show_msg(samsung_get_base_modem()); + ret = ramoops_init(samsung_get_base_modem()); if (!ret) setenv("bootdelay", "-1"); @@ -958,7 +958,7 @@ static void show_dump_msg(void) int misc_init_r(void) { check_reset_status(); -#ifdef CONFIG_RAMOOPS +#ifdef CONFIG_CMD_RAMOOPS show_dump_msg(); #endif check_auto_burn(); diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index 6463a6d..209c4b4 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -33,7 +33,7 @@ COBJS-$(CONFIG_NS87308) += ns87308.o COBJS-$(CONFIG_STATUS_LED) += status_led.o COBJS-$(CONFIG_TWL4030_LED) += twl4030_led.o COBJS-$(CONFIG_FSL_PMIC) += fsl_pmic.o -COBJS-$(CONFIG_RAMOOPS) += ramoops.o +COBJS-$(CONFIG_CMD_RAMOOPS) += ramoops.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/drivers/misc/ramoops.c b/drivers/misc/ramoops.c index dda3860..21d9dc5 100644 --- a/drivers/misc/ramoops.c +++ b/drivers/misc/ramoops.c @@ -5,24 +5,64 @@ #include #include -int ramoops_show_msg(unsigned int base) +static char msg[RAMOOPS_SIZE]; +static int dumped; + +static void ramoops_show(void) { - unsigned int *msg_header = (unsigned int *)base; - char msg[RAMOOPS_SIZE]; int i; - if (*msg_header != RAMOOPS_HEADER) - return -1; - - memcpy(msg, (void *)base, RAMOOPS_SIZE); + if (!dumped) { + puts("No Messages\n"); + return; + } printf("\n\n"); - for (i = 0; i < RAMOOPS_SIZE; i++) { + for (i = 0; i < RAMOOPS_SIZE; i++) printf("%c", msg[i]); - } printf("\n\n"); +} + +int ramoops_init(unsigned int base) +{ + unsigned int *msg_header = (unsigned int *)base; + + dumped = 0; + if (*msg_header != RAMOOPS_HEADER) + return -1; + + memcpy(msg, (void *)base, RAMOOPS_SIZE); memset((void *)base, 0x0, RAMOOPS_SIZE); + dumped = 1; + + ramoops_show(); + return 0; } + +static int do_ramoops(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) +{ + switch (argc) { + case 2: + if (strncmp(argv[1], "show", 2) == 0) { + ramoops_show(); + } else { + cmd_usage(cmdtp); + return 1; + } + break; + default: + cmd_usage(cmdtp); + return 1; + } + + return 0; +} + +U_BOOT_CMD( + ramoops, CONFIG_SYS_MAXARGS, 1, do_ramoops, + "RAM Oops/Panic Logger", + "show - show messages\n" +); diff --git a/include/configs/s5pc110_universal.h b/include/configs/s5pc110_universal.h index 98b220b..02e1ce9 100644 --- a/include/configs/s5pc110_universal.h +++ b/include/configs/s5pc110_universal.h @@ -134,6 +134,7 @@ #define CONFIG_CMD_PMIC #define CONFIG_CMD_DEVICE_POWER #define CONFIG_CMD_FAT +#define CONFIG_CMD_RAMOOPS /* disabled commands */ //#define CONFIG_CMD_GPIO @@ -438,6 +439,4 @@ #define CONFIG_SYS_SP_ADDR (CONFIG_SYS_LOAD_ADDR - 0x1000000) #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SP_ADDR - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_RAMOOPS - #endif /* __CONFIG_H */ diff --git a/include/configs/s5pc210_universal.h b/include/configs/s5pc210_universal.h index 54e22d3..22ccce0 100644 --- a/include/configs/s5pc210_universal.h +++ b/include/configs/s5pc210_universal.h @@ -130,6 +130,7 @@ #define CONFIG_CMD_PMIC #define CONFIG_CMD_DEVICE_POWER #define CONFIG_CMD_FAT +#define CONFIG_CMD_RAMOOPS /* disabled commands */ //#define CONFIG_CMD_GPIO @@ -409,8 +410,6 @@ #define CONFIG_SYS_SP_ADDR (CONFIG_SYS_LOAD_ADDR - 0x1000000) #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SP_ADDR - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_RAMOOPS - #define CONFIG_TEST_BOOTTIME #define CONFIG_TEST_BOOTFAIL diff --git a/include/ramoops.h b/include/ramoops.h index 77aa2ea..ebcffdc 100644 --- a/include/ramoops.h +++ b/include/ramoops.h @@ -6,4 +6,4 @@ #define RAMOOPS_SIZE 0x1000 #define RAMOOPS_HEADER 0x3d3d3d3d -int ramoops_show_msg(unsigned int base); +int ramoops_init(unsigned int base);