[U-Boot] [PATCH v3] POST cleanup v3 (incremental)

Incremental patch. Should be applied above its v2: http://lists.denx.de/pipermail/u-boot/2010-April/070729.html (Sorry for inconvenience. I will use --in-reply-to option next time)
In the patch: - Fix for hcu4 board; - post.h - preprocessor conditional inclusions optimization.
Signed-off-by: Michael Zaidman michael.zaidman@gmail.com --- include/configs/hcu4.h | 2 +- include/post.h | 18 +++++------------- 2 files changed, 6 insertions(+), 14 deletions(-)
diff --git a/include/configs/hcu4.h b/include/configs/hcu4.h index b01f8b1..26992e7 100644 --- a/include/configs/hcu4.h +++ b/include/configs/hcu4.h @@ -72,7 +72,7 @@ #define CONFIG_SYS_INIT_RAM_END CONFIG_SYS_OCM_DATA_SIZE #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/post.h b/include/post.h index 296e1d5..939310b 100644 --- a/include/post.h +++ b/include/post.h @@ -35,31 +35,24 @@
#ifdef CONFIG_MPC5xxx #define _POST_WORD_ADDR (MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE) -#endif
-#if defined(CONFIG_MPC821) || defined(CONFIG_MPC823) || \ - defined(CONFIG_MPC855) || defined(CONFIG_MPC855T)|| \ - defined(CONFIG_MPC850) || defined(CONFIG_MPC86x) +#elif defined(CONFIG_8xx) #define _POST_WORD_ADDR \ (((immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR) -#endif
-#ifdef CONFIG_MPC8260 +#elif defined(CONFIG_MPC8260) #include <asm/cpm_8260.h> #define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) -#endif
-#ifdef CONFIG_MPC8360 +#elif defined(CONFIG_MPC8360) #include <asm/immap_qe.h> #define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) -#endif
-#ifdef CONFIG_MPC85xx +#elif defined (CONFIG_MPC85xx) #include <asm/cpm_85xx.h> #define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) -#endif
-#ifdef CONFIG_4xx +#elif defined (CONFIG_4xx) #define _POST_WORD_ADDR \ (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #endif @@ -67,7 +60,6 @@ #ifndef _POST_WORD_ADDR #error "_POST_WORD_ADDR currently not implemented for this platform!" #endif - #endif /* CONFIG_SYS_POST_WORD_ADDR */
static inline ulong post_word_load (void)

Dear Michael Zaidman,
In message a0610faf1d39c14a57163f3639145e832a2399f6.1272794305.git.michael.zaidman@gmail.com you wrote:
Incremental patch. Should be applied above its v2: http://lists.denx.de/pipermail/u-boot/2010-April/070729.html (Sorry for inconvenience. I will use --in-reply-to option next time)
Please move any such comments which are not supposed to become part of the commit message *below* the "---" line. Thanks.
See previous message - please combine all your remaining patches into one and resubmit. Thanks.
Best regards,
Wolfgang Denk

Combine previously submitted POST cleanup patch series into single patch. Fix plain POST support introduced recently for mpc812x arch.
- Revives POST for blackfin arch; - Removes redundant code: arch/blackfin/lib/post.c board/ssv/common/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c - fixes up the post_word_{load|store} usage;
Signed-off-by: Michael Zaidman michael.zaidman@gmail.com --- arch/blackfin/lib/Makefile | 2 +- arch/blackfin/lib/board.c | 1 - arch/blackfin/lib/post.c | 421 ----------------------------------- arch/powerpc/cpu/mpc512x/Makefile | 1 - arch/powerpc/cpu/mpc512x/common.c | 25 -- arch/powerpc/cpu/mpc8260/commproc.c | 20 -- arch/powerpc/cpu/mpc85xx/commproc.c | 20 -- arch/powerpc/cpu/mpc8xx/commproc.c | 20 -- arch/powerpc/cpu/ppc4xx/Makefile | 1 - arch/powerpc/cpu/ppc4xx/commproc.c | 53 ----- board/barco/barco.c | 9 - board/bc3450/bc3450.c | 20 -- board/bf537-stamp/Makefile | 2 +- board/bf537-stamp/post.c | 14 -- board/cm5200/cm5200.c | 16 -- board/ssv/common/post.c | 44 ---- board/tqc/tqm5200/tqm5200.c | 19 -- board/xes/xpedite1000/xpedite1000.c | 16 -- include/common.h | 5 +- include/configs/ADNPESC1.h | 3 +- include/configs/KAREF.h | 3 +- include/configs/METROBOX.h | 3 +- include/configs/MIP405.h | 4 - include/configs/PMC440.h | 3 +- include/configs/TB5200.h | 2 +- include/configs/XPEDITE1000.h | 3 +- include/configs/alpr.h | 3 +- include/configs/barco.h | 2 + include/configs/bf537-stamp.h | 1 + include/configs/bfin_adi_common.h | 1 + include/configs/hcu4.h | 3 +- include/configs/hcu5.h | 5 +- include/configs/hmi1001.h | 6 +- include/configs/icon.h | 3 +- include/configs/inka4x0.h | 6 +- include/configs/katmai.h | 3 +- include/configs/kilauea.h | 3 +- include/configs/korat.h | 3 +- include/configs/lwmon5.h | 2 +- include/configs/makalu.h | 3 +- include/configs/mcu25.h | 3 +- include/configs/mpc5121-common.h | 3 +- include/configs/ocotea.h | 3 +- include/configs/redwood.h | 3 +- include/configs/sequoia.h | 3 +- include/configs/taishan.h | 3 +- include/configs/yucca.h | 3 +- include/configs/zeus.h | 7 +- include/post.h | 57 +++++- post/Makefile | 3 +- 50 files changed, 103 insertions(+), 759 deletions(-) delete mode 100644 arch/blackfin/lib/post.c delete mode 100644 arch/powerpc/cpu/mpc512x/common.c delete mode 100644 arch/powerpc/cpu/ppc4xx/commproc.c delete mode 100644 board/ssv/common/post.c
diff --git a/arch/blackfin/lib/Makefile b/arch/blackfin/lib/Makefile index 3bdba75..a18bbd6 100644 --- a/arch/blackfin/lib/Makefile +++ b/arch/blackfin/lib/Makefile @@ -46,7 +46,7 @@ COBJS-y += clocks.o COBJS-$(CONFIG_CMD_CACHE_DUMP) += cmd_cache_dump.o COBJS-$(CONFIG_CMD_KGDB) += kgdb.o COBJS-y += muldi3.o -COBJS-$(CONFIG_POST) += post.o tests.o +COBJS-$(CONFIG_POST_ALT_LIST) += tests.o COBJS-y += string.o
SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index 4e9bb19..00a2041 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -321,7 +321,6 @@ void board_init_r(gd_t * id, ulong dest_addr)
#if defined(CONFIG_POST) post_output_backlog(); - post_reloc(); #endif
/* initialize malloc() area */ diff --git a/arch/blackfin/lib/post.c b/arch/blackfin/lib/post.c deleted file mode 100644 index faf6b96..0000000 --- a/arch/blackfin/lib/post.c +++ /dev/null @@ -1,421 +0,0 @@ -/* - * (C) Copyright 2002 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include <common.h> -#include <stdio_dev.h> -#include <watchdog.h> -#include <post.h> - -#ifdef CONFIG_LOGBUFFER -#include <logbuff.h> -#endif - -DECLARE_GLOBAL_DATA_PTR; - -#define POST_MAX_NUMBER 32 - -#define BOOTMODE_MAGIC 0xDEAD0000 - -int post_init_f(void) -{ - int res = 0; - unsigned int i; - - for (i = 0; i < post_list_size; i++) { - struct post_test *test = post_list + i; - - if (test->init_f && test->init_f()) { - res = -1; - } - } - - gd->post_init_f_time = post_time_ms(0); - if (!gd->post_init_f_time) { - printf - ("post/post.c: post_time_ms seems not to be implemented\n"); - } - - return res; -} - -void post_bootmode_init(void) -{ - int bootmode = post_bootmode_get(0); - int newword; - - if (post_hotkeys_pressed() && !(bootmode & POST_POWERTEST)) { - newword = BOOTMODE_MAGIC | POST_SLOWTEST; - } else if (bootmode == 0) { - newword = BOOTMODE_MAGIC | POST_POWERON; - } else if (bootmode == POST_POWERON || bootmode == POST_SLOWTEST) { - newword = BOOTMODE_MAGIC | POST_NORMAL; - } else { - /* Use old value */ - newword = post_word_load() & ~POST_COLDBOOT; - } - - if (bootmode == 0) { - /* We are booting after power-on */ - newword |= POST_COLDBOOT; - } - - post_word_store(newword); - - /* Reset activity record */ - gd->post_log_word = 0; -} - -int post_bootmode_get(unsigned int *last_test) -{ - unsigned long word = post_word_load(); - int bootmode; - - if ((word & 0xFFFF0000) != BOOTMODE_MAGIC) { - return 0; - } - - bootmode = word & 0x7F; - - if (last_test && (bootmode & POST_POWERTEST)) { - *last_test = (word >> 8) & 0xFF; - } - - return bootmode; -} - -/* POST tests run before relocation only mark status bits .... */ -static void post_log_mark_start(unsigned long testid) -{ - gd->post_log_word |= (testid) << 16; -} - -static void post_log_mark_succ(unsigned long testid) -{ - gd->post_log_word |= testid; -} - -/* ... and the messages are output once we are relocated */ -void post_output_backlog(void) -{ - int j; - - for (j = 0; j < post_list_size; j++) { - if (gd->post_log_word & (post_list[j].testid << 16)) { - post_log("POST %s ", post_list[j].cmd); - if (gd->post_log_word & post_list[j].testid) - post_log("PASSED\n"); - else { - post_log("FAILED\n"); - show_boot_progress (-31); - } - } - } -} - -static void post_bootmode_test_on(unsigned int last_test) -{ - unsigned long word = post_word_load(); - - word |= POST_POWERTEST; - - word |= (last_test & 0xFF) << 8; - - post_word_store(word); -} - -static void post_bootmode_test_off(void) -{ - unsigned long word = post_word_load(); - - word &= ~POST_POWERTEST; - - post_word_store(word); -} - -static void post_get_flags(int *test_flags) -{ - int flag[] = { POST_POWERON, POST_NORMAL, POST_SLOWTEST }; - char *var[] = { "post_poweron", "post_normal", "post_slowtest" }; - int varnum = sizeof(var) / sizeof(var[0]); - char list[128]; /* long enough for POST list */ - char *name; - char *s; - int last; - int i, j; - - for (j = 0; j < post_list_size; j++) { - test_flags[j] = post_list[j].flags; - } - - for (i = 0; i < varnum; i++) { - if (getenv_r(var[i], list, sizeof(list)) <= 0) - continue; - - for (j = 0; j < post_list_size; j++) { - test_flags[j] &= ~flag[i]; - } - - last = 0; - name = list; - while (!last) { - while (*name && *name == ' ') - name++; - if (*name == 0) - break; - s = name + 1; - while (*s && *s != ' ') - s++; - if (*s == 0) - last = 1; - else - *s = 0; - - for (j = 0; j < post_list_size; j++) { - if (strcmp(post_list[j].cmd, name) == 0) { - test_flags[j] |= flag[i]; - break; - } - } - - if (j == post_list_size) { - printf("No such test: %s\n", name); - } - - name = s + 1; - } - } - - for (j = 0; j < post_list_size; j++) { - if (test_flags[j] & POST_POWERON) { - test_flags[j] |= POST_SLOWTEST; - } - } -} - -static int post_run_single(struct post_test *test, - int test_flags, int flags, unsigned int i) -{ - if ((flags & test_flags & POST_ALWAYS) && - (flags & test_flags & POST_MEM)) { - WATCHDOG_RESET(); - - if (!(flags & POST_REBOOT)) { - if ((test_flags & POST_REBOOT) - && !(flags & POST_MANUAL)) { - post_bootmode_test_on(i); - } - - if (test_flags & POST_PREREL) - post_log_mark_start(test->testid); - else - post_log("POST %s ", test->cmd); - } - - if (test_flags & POST_PREREL) { - if ((*test->test) (flags) == 0) - post_log_mark_succ(test->testid); - } else { - if ((*test->test) (flags) != 0) { - post_log("FAILED\n"); - show_boot_progress (-32); - } else - post_log("PASSED\n"); - } - - if ((test_flags & POST_REBOOT) && !(flags & POST_MANUAL)) { - post_bootmode_test_off(); - } - - return 0; - } else { - return -1; - } -} - -int post_run(char *name, int flags) -{ - unsigned int i; - int test_flags[POST_MAX_NUMBER]; - - post_get_flags(test_flags); - - if (name == NULL) { - unsigned int last; - - if (post_bootmode_get(&last) & POST_POWERTEST) { - if (last < post_list_size && - (flags & test_flags[last] & POST_ALWAYS) && - (flags & test_flags[last] & POST_MEM)) { - - post_run_single(post_list + last, - test_flags[last], - flags | POST_REBOOT, last); - - for (i = last + 1; i < post_list_size; i++) { - post_run_single(post_list + i, - test_flags[i], - flags, i); - } - } - } else { - for (i = 0; i < post_list_size; i++) { - post_run_single(post_list + i, - test_flags[i], flags, i); - } - } - - return 0; - } else { - for (i = 0; i < post_list_size; i++) { - if (strcmp(post_list[i].cmd, name) == 0) - break; - } - - if (i < post_list_size) { - return post_run_single(post_list + i, - test_flags[i], flags, i); - } else { - return -1; - } - } -} - -static int post_info_single(struct post_test *test, int full) -{ - if (test->flags & POST_MANUAL) { - if (full) - printf("%s - %s\n" - " %s\n", test->cmd, test->name, test->desc); - else - printf(" %-15s - %s\n", test->cmd, test->name); - - return 0; - } else { - return -1; - } -} - -int post_info(char *name) -{ - unsigned int i; - - if (name == NULL) { - for (i = 0; i < post_list_size; i++) { - post_info_single(post_list + i, 0); - } - - return 0; - } else { - for (i = 0; i < post_list_size; i++) { - if (strcmp(post_list[i].cmd, name) == 0) - break; - } - - if (i < post_list_size) { - return post_info_single(post_list + i, 1); - } else { - return -1; - } - } -} - -int post_log(char *format, ...) -{ - va_list args; - uint i; - char printbuffer[CONFIG_SYS_PBSIZE]; - - va_start(args, format); - - /* For this to work, printbuffer must be larger than - * anything we ever want to print. - */ - i = vsprintf(printbuffer, format, args); - va_end(args); - -#ifdef CONFIG_LOGBUFFER - /* Send to the logbuffer */ - logbuff_log(printbuffer); -#else - /* Send to the stdout file */ - puts(printbuffer); -#endif - - return 0; -} - -void post_reloc(void) -{ - unsigned int i; - - /* - * We have to relocate the test table manually - */ - for (i = 0; i < post_list_size; i++) { - ulong addr; - struct post_test *test = post_list + i; - - if (test->name) { - addr = (ulong) (test->name) + gd->reloc_off; - test->name = (char *)addr; - } - - if (test->cmd) { - addr = (ulong) (test->cmd) + gd->reloc_off; - test->cmd = (char *)addr; - } - - if (test->desc) { - addr = (ulong) (test->desc) + gd->reloc_off; - test->desc = (char *)addr; - } - - if (test->test) { - addr = (ulong) (test->test) + gd->reloc_off; - test->test = (int (*)(int flags))addr; - } - - if (test->init_f) { - addr = (ulong) (test->init_f) + gd->reloc_off; - test->init_f = (int (*)(void))addr; - } - - if (test->reloc) { - addr = (ulong) (test->reloc) + gd->reloc_off; - test->reloc = (void (*)(void))addr; - - test->reloc(); - } - } -} - -/* - * Some tests (e.g. SYSMON) need the time when post_init_f started, - * but we cannot use get_timer() at this point. - * - * On PowerPC we implement it using the timebase register. - */ -unsigned long post_time_ms(unsigned long base) -{ - return (unsigned long)get_ticks() / (get_tbclk() / CONFIG_SYS_HZ) - base; -} diff --git a/arch/powerpc/cpu/mpc512x/Makefile b/arch/powerpc/cpu/mpc512x/Makefile index 9cfdb0f..1719c66 100644 --- a/arch/powerpc/cpu/mpc512x/Makefile +++ b/arch/powerpc/cpu/mpc512x/Makefile @@ -29,7 +29,6 @@ LIB = $(obj)lib$(CPU).a START = start.o COBJS-y := cpu.o COBJS-y += traps.o -COBJS-y += common.o COBJS-y += cpu_init.o COBJS-y += fixed_sdram.o COBJS-y += i2c.o diff --git a/arch/powerpc/cpu/mpc512x/common.c b/arch/powerpc/cpu/mpc512x/common.c deleted file mode 100644 index 180d323..0000000 --- a/arch/powerpc/cpu/mpc512x/common.c +++ /dev/null @@ -1,25 +0,0 @@ -#include <common.h> -#include <asm/io.h> - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -#if defined(CONFIG_SYS_POST_WORD_ADDR) -# define _POST_ADDR (CONFIG_SYS_POST_WORD_ADDR) -#else -#error echo "No POST word address defined" -#endif - -void post_word_store(ulong a) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - out_be32(save_addr, a); -} - -ulong post_word_load(void) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - return in_be32(save_addr); -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER */ diff --git a/arch/powerpc/cpu/mpc8260/commproc.c b/arch/powerpc/cpu/mpc8260/commproc.c index c522bc5..082957e 100644 --- a/arch/powerpc/cpu/mpc8260/commproc.c +++ b/arch/powerpc/cpu/mpc8260/commproc.c @@ -175,23 +175,3 @@ m8260_cpm_extcbrg(uint brg, uint rate, uint extclk, int pinsel) else *bp |= CPM_BRG_EXTC_CLK5_15; } - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - return *save_addr; -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/arch/powerpc/cpu/mpc85xx/commproc.c b/arch/powerpc/cpu/mpc85xx/commproc.c index f0fd1cb..292b723 100644 --- a/arch/powerpc/cpu/mpc85xx/commproc.c +++ b/arch/powerpc/cpu/mpc85xx/commproc.c @@ -183,23 +183,3 @@ m8560_cpm_extcbrg(uint brg, uint rate, uint extclk, int pinsel) else *bp |= CPM_BRG_EXTC_CLK5_15; } - -#ifdef CONFIG_POST - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - return *save_addr; -} - -#endif /* CONFIG_POST */ diff --git a/arch/powerpc/cpu/mpc8xx/commproc.c b/arch/powerpc/cpu/mpc8xx/commproc.c index 2c85377..5fe01ff 100644 --- a/arch/powerpc/cpu/mpc8xx/commproc.c +++ b/arch/powerpc/cpu/mpc8xx/commproc.c @@ -83,23 +83,3 @@ uint dpram_base_align (uint align) return (gd->dp_alloc_base + mask) & ~mask; } #endif /* CONFIG_SYS_ALLOC_DPRAM */ - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile void *save_addr = - ((immap_t *) CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR; - - *(volatile ulong *) save_addr = a; -} - -ulong post_word_load (void) -{ - volatile void *save_addr = - ((immap_t *) CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR; - - return *(volatile ulong *) save_addr; -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/arch/powerpc/cpu/ppc4xx/Makefile b/arch/powerpc/cpu/ppc4xx/Makefile index 88d53fb..769b37b 100644 --- a/arch/powerpc/cpu/ppc4xx/Makefile +++ b/arch/powerpc/cpu/ppc4xx/Makefile @@ -45,7 +45,6 @@ COBJS += bedbug_405.o ifdef CONFIG_CMD_CHIP_CONFIG COBJS += cmd_chip_config.o endif -COBJS += commproc.o COBJS += cpu.o COBJS += cpu_init.o COBJS += denali_data_eye.o diff --git a/arch/powerpc/cpu/ppc4xx/commproc.c b/arch/powerpc/cpu/ppc4xx/commproc.c deleted file mode 100644 index 6bf95e6..0000000 --- a/arch/powerpc/cpu/ppc4xx/commproc.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - * - * - * Atapted for ppc4XX by Denis Peter - */ - -#include <common.h> -#include <commproc.h> -#include <asm/io.h> - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -#if defined(CONFIG_SYS_POST_WORD_ADDR) -# define _POST_ADDR ((CONFIG_SYS_OCM_DATA_ADDR) + (CONFIG_SYS_POST_WORD_ADDR)) -#elif defined(CONFIG_SYS_POST_ALT_WORD_ADDR) -# define _POST_ADDR (CONFIG_SYS_POST_ALT_WORD_ADDR) -#endif - -void post_word_store (ulong a) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - out_be32(save_addr, a); -} - -ulong post_word_load (void) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - return in_be32(save_addr); -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/board/barco/barco.c b/board/barco/barco.c index c5fe8c4..2d01f1b 100644 --- a/board/barco/barco.c +++ b/board/barco/barco.c @@ -348,12 +348,3 @@ int serial_tstc (void) { return 0; } - -unsigned long post_word_load (void) -{ - return 0l; -} -void post_word_store (unsigned long val) -{ - return; -} diff --git a/board/bc3450/bc3450.c b/board/bc3450/bc3450.c index 3117b5f..97fb5a4 100644 --- a/board/bc3450/bc3450.c +++ b/board/bc3450/bc3450.c @@ -290,26 +290,6 @@ int post_hotkeys_pressed(void) } #endif
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ - - #ifdef CONFIG_BOARD_EARLY_INIT_R int board_early_init_r (void) { diff --git a/board/bf537-stamp/Makefile b/board/bf537-stamp/Makefile index f728e2c..9ee9e0b 100644 --- a/board/bf537-stamp/Makefile +++ b/board/bf537-stamp/Makefile @@ -32,7 +32,7 @@ LIB = $(obj)lib$(BOARD).a COBJS-y := $(BOARD).o cmd_bf537led.o COBJS-$(CONFIG_BFIN_IDE) += ide-cf.o COBJS-$(CONFIG_CMD_EEPROM) += spi_flash.o -COBJS-$(CONFIG_POST) += post.o post-memory.o +COBJS-$(CONFIG_HAS_POST) += post.o post-memory.o
SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/bf537-stamp/post.c b/board/bf537-stamp/post.c index 4e844ba..c546ab6 100644 --- a/board/bf537-stamp/post.c +++ b/board/bf537-stamp/post.c @@ -13,8 +13,6 @@ #include <command.h> #include <asm/blackfin.h>
-#define POST_WORD_ADDR 0xFF903FFC - /* Using sw10-PF5 as the hotkey */ int post_hotkeys_pressed(void) { @@ -47,18 +45,6 @@ int post_hotkeys_pressed(void) } }
-void post_word_store(ulong a) -{ - volatile ulong *save_addr = (volatile ulong *)POST_WORD_ADDR; - *save_addr = a; -} - -ulong post_word_load(void) -{ - volatile ulong *save_addr = (volatile ulong *)POST_WORD_ADDR; - return *save_addr; -} - int uart_post_test(int flags) { return 0; diff --git a/board/cm5200/cm5200.c b/board/cm5200/cm5200.c index 5ebcd66..b25887b 100644 --- a/board/cm5200/cm5200.c +++ b/board/cm5200/cm5200.c @@ -323,22 +323,6 @@ int board_early_init_r(void) }
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) -void post_word_store(ulong a) -{ - vu_long *save_addr = (vu_long *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - *save_addr = a; -} - - -ulong post_word_load(void) -{ - vu_long *save_addr = (vu_long *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER */ - - #ifdef CONFIG_MISC_INIT_R int misc_init_r(void) { diff --git a/board/ssv/common/post.c b/board/ssv/common/post.c deleted file mode 100644 index c7a9ccc..0000000 --- a/board/ssv/common/post.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * (C) Copyright 2004, Li-Pro.Net <www.li-pro.net> - * Stephan Linz linz@li-pro.net - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include <common.h> - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -#if !defined(CONFIG_SYS_NIOS_POST_WORD_ADDR) -#error "*** CONFIG_SYS_NIOS_POST_WORD_ADDR not defined ***" -#endif - -void post_word_store (ulong a) -{ - volatile void *save_addr = (void *)(CONFIG_SYS_NIOS_POST_WORD_ADDR); - *(volatile ulong *) save_addr = a; -} - -ulong post_word_load (void) -{ - volatile void *save_addr = (void *)(CONFIG_SYS_NIOS_POST_WORD_ADDR); - return *(volatile ulong *) save_addr; -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/board/tqc/tqm5200/tqm5200.c b/board/tqc/tqm5200/tqm5200.c index d90bae8..263a2af 100644 --- a/board/tqc/tqm5200/tqm5200.c +++ b/board/tqc/tqm5200/tqm5200.c @@ -375,25 +375,6 @@ int post_hotkeys_pressed(void) } #endif
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ - #ifdef CONFIG_BOARD_EARLY_INIT_R int board_early_init_r (void) { diff --git a/board/xes/xpedite1000/xpedite1000.c b/board/xes/xpedite1000/xpedite1000.c index b4cbb2f..a3534d2 100644 --- a/board/xes/xpedite1000/xpedite1000.c +++ b/board/xes/xpedite1000/xpedite1000.c @@ -196,20 +196,4 @@ int post_hotkeys_pressed(void) { return ctrlc(); } - -void post_word_store(ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load(void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_POST_WORD_ADDR); - - return *save_addr; -} #endif diff --git a/include/common.h b/include/common.h index 8bca04f..de74b90 100644 --- a/include/common.h +++ b/include/common.h @@ -585,8 +585,6 @@ uint dpram_base(void); uint dpram_base_align(uint align); uint dpram_alloc(uint size); uint dpram_alloc_align(uint size,uint align); -void post_word_store (ulong); -ulong post_word_load (void); void bootcount_store (ulong); ulong bootcount_load (void); #define BOOTCOUNT_MAGIC 0xB001C041 @@ -727,6 +725,9 @@ int cpu_release(int nr, int argc, char *argv[]);
#ifdef CONFIG_POST #define CONFIG_HAS_POST +#ifndef CONFIG_POST_ALT_LIST +#define CONFIG_POST_STD_LIST +#endif #endif
#ifdef CONFIG_INIT_CRITICAL diff --git a/include/configs/ADNPESC1.h b/include/configs/ADNPESC1.h index 2d4fc77..0f94106 100644 --- a/include/configs/ADNPESC1.h +++ b/include/configs/ADNPESC1.h @@ -562,7 +562,8 @@ * Diagnostics / Power On Self Tests *----------------------------------------------------------------------*/ #define CONFIG_POST CONFIG_SYS_POST_RTC -#define CONFIG_SYS_NIOS_POST_WORD_ADDR (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN) +#define CONFIG_SYS_POST_WORD_ADDR \ + (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
/* * BOOTP options diff --git a/include/configs/KAREF.h b/include/configs/KAREF.h index 49a7378..05f7254 100644 --- a/include/configs/KAREF.h +++ b/include/configs/KAREF.h @@ -82,8 +82,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Rsrv 256kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Rsrv 128kB for malloc */ diff --git a/include/configs/METROBOX.h b/include/configs/METROBOX.h index e7429dd..30a3035 100644 --- a/include/configs/METROBOX.h +++ b/include/configs/METROBOX.h @@ -144,8 +144,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Rsrv 256kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Rsrv 128kB for malloc */ diff --git a/include/configs/MIP405.h b/include/configs/MIP405.h index 7e6484e..ff9496b 100644 --- a/include/configs/MIP405.h +++ b/include/configs/MIP405.h @@ -305,10 +305,6 @@ /* reserve some memory for POST and BOOT limit info */ #define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 32)
-#ifdef CONFIG_POST /* reserve one word for POST Info */ -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) -#endif - #ifdef CONFIG_BOOTCOUNT_LIMIT /* reserve 2 word for bootcount limit */ #define CONFIG_SYS_BOOTCOUNT_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 12) #endif diff --git a/include/configs/PMC440.h b/include/configs/PMC440.h index c2fb56c..f716307 100644 --- a/include/configs/PMC440.h +++ b/include/configs/PMC440.h @@ -90,7 +90,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -373,7 +373,6 @@ CONFIG_SYS_POST_ETHER | \ CONFIG_SYS_POST_SPR)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */
diff --git a/include/configs/TB5200.h b/include/configs/TB5200.h index 6da18eb..7a6602c 100644 --- a/include/configs/TB5200.h +++ b/include/configs/TB5200.h @@ -126,7 +126,7 @@ #endif
#ifdef CONFIG_POST -#define CONFIG__CMD_DIAG +#define CONFIG_CMD_DIAG #endif
diff --git a/include/configs/XPEDITE1000.h b/include/configs/XPEDITE1000.h index cf39aea..dfeaf74 100644 --- a/include/configs/XPEDITE1000.h +++ b/include/configs/XPEDITE1000.h @@ -103,8 +103,7 @@ extern void out32(unsigned int, unsigned long); #define CONFIG_SYS_INIT_RAM_END 0x2000 /* End of used area in RAM */ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (512 * 1024) /* Reserve 512 KB for Mon */ #define CONFIG_SYS_MALLOC_LEN (1024 * 1024) /* Reserved for malloc */ diff --git a/include/configs/alpr.h b/include/configs/alpr.h index ee0c14d..326b324 100644 --- a/include/configs/alpr.h +++ b/include/configs/alpr.h @@ -66,8 +66,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Reserve 128 kB for malloc*/ diff --git a/include/configs/barco.h b/include/configs/barco.h index e00f84a..b1af701 100644 --- a/include/configs/barco.h +++ b/include/configs/barco.h @@ -136,6 +136,8 @@ #define CONFIG_LOGBUFFER #ifdef CONFIG_LOGBUFFER #define CONFIG_SYS_STDOUT_ADDR 0x1FFC000 +#define CONFIG_SYS_POST_WORD_ADDR \ + (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_MAX_RAM_SIZE - 4) #else #define CONFIG_SYS_STDOUT_ADDR 0x2B9000 #endif diff --git a/include/configs/bf537-stamp.h b/include/configs/bf537-stamp.h index 92ceb38..a60cb58 100644 --- a/include/configs/bf537-stamp.h +++ b/include/configs/bf537-stamp.h @@ -276,6 +276,7 @@ #define FLASH_START_POST_BLOCK 11 /* Should > = 11 */ #define FLASH_END_POST_BLOCK 71 /* Should < = 71 */ #endif +#define CONFIG_SYS_POST_WORD_ADDR 0xFF903FFC
/* These are for board tests */ #if 0 diff --git a/include/configs/bfin_adi_common.h b/include/configs/bfin_adi_common.h index 1896cf5..8416cc9 100644 --- a/include/configs/bfin_adi_common.h +++ b/include/configs/bfin_adi_common.h @@ -50,6 +50,7 @@ # endif # ifdef CONFIG_POST # define CONFIG_CMD_DIAG +# define CONFIG_POST_ALT_LIST # endif # ifdef CONFIG_RTC_BFIN # define CONFIG_CMD_DATE diff --git a/include/configs/hcu4.h b/include/configs/hcu4.h index 369b368..26992e7 100644 --- a/include/configs/hcu4.h +++ b/include/configs/hcu4.h @@ -72,7 +72,7 @@ #define CONFIG_SYS_INIT_RAM_END CONFIG_SYS_OCM_DATA_SIZE #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -192,7 +192,6 @@ CONFIG_SYS_POST_SPR)
#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #undef CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x00800000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */ diff --git a/include/configs/hcu5.h b/include/configs/hcu5.h index 26d2d0c..5adcc0f 100644 --- a/include/configs/hcu5.h +++ b/include/configs/hcu5.h @@ -86,7 +86,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -212,9 +212,8 @@ CONFIG_SYS_POST_FPU | \ CONFIG_SYS_POST_ETHER | \ CONFIG_SYS_POST_SPR) -#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE}
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) +#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */
diff --git a/include/configs/hmi1001.h b/include/configs/hmi1001.h index f9cdcbc..d40b7a9 100644 --- a/include/configs/hmi1001.h +++ b/include/configs/hmi1001.h @@ -190,14 +190,16 @@
/* Use ON-Chip SRAM until RAM will be available */ #define CONFIG_SYS_INIT_RAM_ADDR MPC5XXX_SRAM -#ifdef CONFIG_POST + /* preserve space for the post_word at end of on-chip SRAM */ +#define MPC5XXX_SRAM_POST_SIZE (MPC5XXX_SRAM_SIZE - 4) + +#ifdef CONFIG_POST #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_POST_SIZE #else #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_SIZE #endif
- #define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET diff --git a/include/configs/icon.h b/include/configs/icon.h index 3a57d69..7fa98c9 100644 --- a/include/configs/icon.h +++ b/include/configs/icon.h @@ -100,8 +100,7 @@
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - \ CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port diff --git a/include/configs/inka4x0.h b/include/configs/inka4x0.h index c5b1565..69365e6 100644 --- a/include/configs/inka4x0.h +++ b/include/configs/inka4x0.h @@ -200,14 +200,16 @@
/* Use ON-Chip SRAM until RAM will be available */ #define CONFIG_SYS_INIT_RAM_ADDR MPC5XXX_SRAM -#ifdef CONFIG_POST + /* preserve space for the post_word at end of on-chip SRAM */ +#define MPC5XXX_SRAM_POST_SIZE (MPC5XXX_SRAM_SIZE - 4) + +#ifdef CONFIG_POST #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_POST_SIZE #else #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_SIZE #endif
- #define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET diff --git a/include/configs/katmai.h b/include/configs/katmai.h index fb8ccae..41bdf1a 100644 --- a/include/configs/katmai.h +++ b/include/configs/katmai.h @@ -106,8 +106,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/kilauea.h b/include/configs/kilauea.h index 48dc946..8f813dd 100644 --- a/include/configs/kilauea.h +++ b/include/configs/kilauea.h @@ -103,11 +103,10 @@
#if defined(CONFIG_SYS_INIT_DCACHE_CS) # define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -# define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) #else # define CONFIG_SYS_INIT_EXTRA_SIZE 16 # define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_EXTRA_SIZE) -# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) # define CONFIG_SYS_OCM_DATA_ADDR CONFIG_SYS_INIT_RAM_ADDR #endif /* defined(CONFIG_SYS_INIT_DCACHE_CS) */
diff --git a/include/configs/korat.h b/include/configs/korat.h index f95df68..23da72f 100644 --- a/include/configs/korat.h +++ b/include/configs/korat.h @@ -88,7 +88,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port @@ -306,7 +306,6 @@ CONFIG_SYS_POST_SPR | \ CONFIG_SYS_POST_UART)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0xC8000000 /* free virtual address */
diff --git a/include/configs/lwmon5.h b/include/configs/lwmon5.h index 6461124..295a18e 100644 --- a/include/configs/lwmon5.h +++ b/include/configs/lwmon5.h @@ -84,7 +84,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data*/ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -#define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) /* unused GPT0 COMP reg */ #define CONFIG_SYS_MEM_TOP_HIDE (4 << 10) /* don't use last 4kbytes */ /* 440EPx errata CHIP 11 */ diff --git a/include/configs/makalu.h b/include/configs/makalu.h index 52339f9..f24d499 100644 --- a/include/configs/makalu.h +++ b/include/configs/makalu.h @@ -101,11 +101,10 @@
#if defined(CONFIG_SYS_INIT_DCACHE_CS) # define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -# define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) #else # define CONFIG_SYS_INIT_EXTRA_SIZE 16 # define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_EXTRA_SIZE) -# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) # define CONFIG_SYS_OCM_DATA_ADDR CONFIG_SYS_INIT_RAM_ADDR #endif /* defined(CONFIG_SYS_INIT_DCACHE_CS) */
diff --git a/include/configs/mcu25.h b/include/configs/mcu25.h index 5f31198..50bed10 100644 --- a/include/configs/mcu25.h +++ b/include/configs/mcu25.h @@ -72,7 +72,7 @@ #define CONFIG_SYS_INIT_RAM_END CONFIG_SYS_OCM_DATA_SIZE #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -200,7 +200,6 @@ CONFIG_SYS_POST_SPR)
#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #undef CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x00800000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */ diff --git a/include/configs/mpc5121-common.h b/include/configs/mpc5121-common.h index 96fab20..afae1ab 100644 --- a/include/configs/mpc5121-common.h +++ b/include/configs/mpc5121-common.h @@ -30,8 +30,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 0x100 /* num bytes of initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - \ CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest region */ #define CONFIG_SYS_MEMTEST_END 0x00400000 diff --git a/include/configs/ocotea.h b/include/configs/ocotea.h index 2e809b0..9cb66b7 100644 --- a/include/configs/ocotea.h +++ b/include/configs/ocotea.h @@ -75,8 +75,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/redwood.h b/include/configs/redwood.h index 4b744a7..87adbf8 100644 --- a/include/configs/redwood.h +++ b/include/configs/redwood.h @@ -87,8 +87,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * DDR SDRAM diff --git a/include/configs/sequoia.h b/include/configs/sequoia.h index 568d9fc..ee4391f 100644 --- a/include/configs/sequoia.h +++ b/include/configs/sequoia.h @@ -100,7 +100,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port @@ -357,7 +357,6 @@ CONFIG_SYS_POST_SPR | \ CONFIG_SYS_POST_UART)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */
diff --git a/include/configs/taishan.h b/include/configs/taishan.h index 6423fd7..394dd8d 100644 --- a/include/configs/taishan.h +++ b/include/configs/taishan.h @@ -71,8 +71,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data*/
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/yucca.h b/include/configs/yucca.h index 0b4dfb8..798c75a 100644 --- a/include/configs/yucca.h +++ b/include/configs/yucca.h @@ -100,8 +100,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/zeus.h b/include/configs/zeus.h index 3b2aede..29ada9e 100644 --- a/include/configs/zeus.h +++ b/include/configs/zeus.h @@ -255,9 +255,10 @@ #define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 16)
/* extra data in OCM */ -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) -#define CONFIG_SYS_POST_MAGIC (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 8) -#define CONFIG_SYS_POST_VAL (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 12) +#define CONFIG_SYS_POST_MAGIC \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 8) +#define CONFIG_SYS_POST_VAL \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 12)
/*----------------------------------------------------------------------- * External Bus Controller (EBC) Setup diff --git a/include/post.h b/include/post.h index 3da959d..625da55 100644 --- a/include/post.h +++ b/include/post.h @@ -2,6 +2,10 @@ * (C) Copyright 2002 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * + * (C) Copyright 2010 + * Michael Zaidman, Kodak, michael.zaidman@kodak.com + * post_word_{load|store} cleanup. + * * See file CREDITS for list of people who contributed to this * project. * @@ -25,8 +29,59 @@
#ifndef __ASSEMBLY__ #include <common.h> +#include <asm/io.h> + +#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) + +#ifdef CONFIG_SYS_POST_WORD_ADDR +#define _POST_WORD_ADDR CONFIG_SYS_POST_WORD_ADDR +#else + +#ifdef CONFIG_MPC5xxx +#define _POST_WORD_ADDR (MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE) + +#elif defined(CONFIG_MPC512X) +#define _POST_WORD_ADDR \ + (CONFIG_SYS_SRAM_BASE + CONFIG_SYS_GBL_DATA_OFFSET - 0x4) + +#elif defined(CONFIG_8xx) +#define _POST_WORD_ADDR \ + (((immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR) + +#elif defined(CONFIG_MPC8260) +#include <asm/cpm_8260.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined(CONFIG_MPC8360) +#include <asm/immap_qe.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined (CONFIG_MPC85xx) +#include <asm/cpm_85xx.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined (CONFIG_4xx) +#define _POST_WORD_ADDR \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #endif
+#ifndef _POST_WORD_ADDR +#error "_POST_WORD_ADDR currently not implemented for this platform!" +#endif +#endif /* CONFIG_SYS_POST_WORD_ADDR */ + +static inline ulong post_word_load (void) +{ + return in_le32((volatile void *)(_POST_WORD_ADDR)); +} + +static inline void post_word_store (ulong value) +{ + out_le32((volatile void *)(_POST_WORD_ADDR), value); +} +#endif /* defined (CONFIG_POST) || defined(CONFIG_LOGBUFFER) */ +#endif /* __ASSEMBLY__ */ + #ifdef CONFIG_POST
#define POST_POWERON 0x01 /* test runs on power-on booting */ @@ -40,7 +95,7 @@ #define POST_RAM 0x0200 /* test runs in RAM */ #define POST_MANUAL 0x0400 /* test runs on diag command */ #define POST_REBOOT 0x0800 /* test may cause rebooting */ -#define POST_PREREL 0x1000 /* test runs before relocation */ +#define POST_PREREL 0x1000 /* test runs before relocation */
#define POST_CRITICAL 0x2000 /* Use failbootcmd if test failed */ #define POST_STOP 0x4000 /* Interrupt POST sequence on fail */ diff --git a/post/Makefile b/post/Makefile index 769e9c6..169d126 100644 --- a/post/Makefile +++ b/post/Makefile @@ -26,7 +26,8 @@ include $(OBJTREE)/include/autoconf.mk
LIB = libpost.a GPLIB-$(CONFIG_HAS_POST) += libgenpost.a -COBJS-$(CONFIG_HAS_POST) += post.o tests.o +COBJS-$(CONFIG_HAS_POST) += post.o +COBJS-$(CONFIG_POST_STD_LIST) += tests.o
SPLIB-$(CONFIG_HAS_POST) = drivers/libpostdrivers.a SPLIB-$(CONFIG_HAS_POST) += $(shell if [ -d lib_$(ARCH) ]; then echo \

Hi Michael,
Combine previously submitted POST cleanup patch series into single patch. Fix plain POST support introduced recently for mpc812x arch.
- Revives POST for blackfin arch;
- Removes redundant code: arch/blackfin/lib/post.c board/ssv/common/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c
- fixes up the post_word_{load|store} usage;
Thanks for the big work.
It would have been really nice if you put the maintainers on CC (simply include a CC: ... in the patch git-send-email does the rest) of the boards that you change config files. This way they knew that there was a change which they should test and ack.
For the powerpc parts, you have my
Acked-by: Detlev Zundel dzu@denx.de
diff --git a/board/barco/barco.c b/board/barco/barco.c index c5fe8c4..2d01f1b 100644 --- a/board/barco/barco.c +++ b/board/barco/barco.c @@ -348,12 +348,3 @@ int serial_tstc (void) { return 0; }
-unsigned long post_word_load (void) -{
- return 0l;
-} -void post_word_store (unsigned long val) -{
- return;
-}
This never worked :) The config file has no trace of any POST, so the change you do is pretty useless:
diff --git a/include/configs/barco.h b/include/configs/barco.h index e00f84a..b1af701 100644 --- a/include/configs/barco.h +++ b/include/configs/barco.h @@ -136,6 +136,8 @@ #define CONFIG_LOGBUFFER #ifdef CONFIG_LOGBUFFER #define CONFIG_SYS_STDOUT_ADDR 0x1FFC000 +#define CONFIG_SYS_POST_WORD_ADDR \
(CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_MAX_RAM_SIZE - 4)
#else #define CONFIG_SYS_STDOUT_ADDR 0x2B9000 #endif
But then again, it doesn't matter.
Cheers Detlev

On Mon, May 10, 2010 at 2:17 PM, Detlev Zundel dzu@denx.de wrote:
Hi Michael,
Combine previously submitted POST cleanup patch series into single patch. Fix plain POST support introduced recently for mpc812x arch.
- Revives POST for blackfin arch;
- Removes redundant code:
arch/blackfin/lib/post.c board/ssv/common/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c
- fixes up the post_word_{load|store} usage;
Thanks for the big work.
It would have been really nice if you put the maintainers on CC (simply include a CC: ... in the patch git-send-email does the rest) of the boards that you change config files. This way they knew that there was a change which they should test and ack.
For the powerpc parts, you have my
Acked-by: Detlev Zundel dzu@denx.de
Ok, will be done.
diff --git a/board/barco/barco.c b/board/barco/barco.c index c5fe8c4..2d01f1b 100644 --- a/board/barco/barco.c +++ b/board/barco/barco.c @@ -348,12 +348,3 @@ int serial_tstc (void) { return 0; }
-unsigned long post_word_load (void) -{
- return 0l;
-} -void post_word_store (unsigned long val) -{
- return;
-}
This never worked :) The config file has no trace of any POST, so the change you do is pretty useless:
These changes are necessary for CONFIG_LOGBUFFER which barco board defines that in turn requires the post_word_load and post_word_store support.
diff --git a/include/configs/barco.h b/include/configs/barco.h index e00f84a..b1af701 100644 --- a/include/configs/barco.h +++ b/include/configs/barco.h @@ -136,6 +136,8 @@ #define CONFIG_LOGBUFFER #ifdef CONFIG_LOGBUFFER #define CONFIG_SYS_STDOUT_ADDR 0x1FFC000 +#define CONFIG_SYS_POST_WORD_ADDR \
- (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_MAX_RAM_SIZE - 4)
#else #define CONFIG_SYS_STDOUT_ADDR 0x2B9000 #endif
But then again, it doesn't matter.
This matters for the CONFIG_LOGBUFFER support as I explained above.
Thanks, Michael

Hi Michael,
diff --git a/board/barco/barco.c b/board/barco/barco.c index c5fe8c4..2d01f1b 100644 --- a/board/barco/barco.c +++ b/board/barco/barco.c @@ -348,12 +348,3 @@ int serial_tstc (void) { return 0; }
-unsigned long post_word_load (void) -{
- return 0l;
-} -void post_word_store (unsigned long val) -{
- return;
-}
This never worked :) The config file has no trace of any POST, so the change you do is pretty useless:
These changes are necessary for CONFIG_LOGBUFFER which barco board defines that in turn requires the post_word_load and post_word_store support.
Hm. It amazes me that CONFIG_LOGBUFFER needs a CONFIG_SYS_POST_WORD_ADDR - I simply did not realize this.
Ah, I see now that post.h produces these values when CONFIG_POST _or_ CONFIG_LOGBUFFER is defined. I guess this works, but it is non-obvious that we need post.h if no POST is used. But still this is no reason to NAK the patch.
Cheers Detlev

On Wed, May 12, 2010 at 3:02 PM, Detlev Zundel dzu@denx.de wrote:
Hi Michael,
diff --git a/board/barco/barco.c b/board/barco/barco.c index c5fe8c4..2d01f1b 100644 --- a/board/barco/barco.c +++ b/board/barco/barco.c @@ -348,12 +348,3 @@ int serial_tstc (void) { return 0; }
-unsigned long post_word_load (void) -{
- return 0l;
-} -void post_word_store (unsigned long val) -{
- return;
-}
This never worked :) The config file has no trace of any POST, so the change you do is pretty useless:
These changes are necessary for CONFIG_LOGBUFFER which barco board defines that in turn requires the post_word_load and post_word_store support.
Hm. It amazes me that CONFIG_LOGBUFFER needs a CONFIG_SYS_POST_WORD_ADDR - I simply did not realize this.
Ah, I see now that post.h produces these values when CONFIG_POST _or_ CONFIG_LOGBUFFER is defined. I guess this works, but it is non-obvious that we need post.h if no POST is used. But still this is no reason to NAK the patch.
Actually we do not need to include post.h if post is not used. Only cmd_log.c includes it. In this respect patch did not change anything.
Regards, Michael

Hi Wolfgang,
Is there any particular reason why this patch is not in the main stream yet?
Thanks, Michael

On Mon, May 10, 2010 at 2:17 PM, Detlev Zundel dzu@denx.de wrote:
It would have been really nice if you put the maintainers on CC (simply include a CC: ... in the patch git-send-email does the rest) of the boards that you change config files. This way they knew that there was a change which they should test and ack.
The following boards are not mentioned in the MAINTAINERS file: TB5200 barco hmi1001 yucca
Regards, Michael.

Combine previously submitted POST cleanup patch series into single patch. Fix plain POST support introduced recently for mpc812x arch.
- Revives POST for blackfin arch; - Removes redundant code: arch/blackfin/lib/post.c board/ssv/common/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c - fixes up the post_word_{load|store} usage;
Signed-off-by: Michael Zaidman michael.zaidman@gmail.com Acked-by: Detlev Zundel dzu@denx.de Tested-by: Anatolij Gustschin agust@denx.de
List of the maintainers of the affected by patch boards: Cc: Stephan Linz linz@li-pro.net Cc: Travis Sawyer travis.sawyer@sandburst.com Cc: Denis Peter d.peter@mpl.ch Cc: Matthias Fuchs matthias.fuchs@esd-electronics.com Cc: Peter Tyser ptyser@xes-inc.com Cc: Stefan Roese sr@denx.de Cc: Mike Frysinger vapier@gentoo.org Cc: Niklaus Giger niklaus.giger@netstal.com Cc: Larry Johnson lrj@acm.org Cc: Feng Kan fkan@amcc.com --- arch/blackfin/lib/Makefile | 2 +- arch/blackfin/lib/board.c | 1 - arch/blackfin/lib/post.c | 421 ----------------------------------- arch/powerpc/cpu/mpc512x/Makefile | 1 - arch/powerpc/cpu/mpc512x/common.c | 25 -- arch/powerpc/cpu/mpc8260/commproc.c | 20 -- arch/powerpc/cpu/mpc85xx/commproc.c | 20 -- arch/powerpc/cpu/mpc8xx/commproc.c | 20 -- arch/powerpc/cpu/ppc4xx/Makefile | 1 - arch/powerpc/cpu/ppc4xx/commproc.c | 53 ----- board/barco/barco.c | 9 - board/bc3450/bc3450.c | 20 -- board/bf537-stamp/Makefile | 2 +- board/bf537-stamp/post.c | 14 -- board/cm5200/cm5200.c | 16 -- board/ssv/common/post.c | 44 ---- board/tqc/tqm5200/tqm5200.c | 19 -- board/xes/xpedite1000/xpedite1000.c | 16 -- include/common.h | 5 +- include/configs/ADNPESC1.h | 3 +- include/configs/KAREF.h | 3 +- include/configs/METROBOX.h | 3 +- include/configs/MIP405.h | 4 - include/configs/PMC440.h | 3 +- include/configs/TB5200.h | 2 +- include/configs/XPEDITE1000.h | 3 +- include/configs/alpr.h | 3 +- include/configs/barco.h | 2 + include/configs/bf537-stamp.h | 1 + include/configs/bfin_adi_common.h | 1 + include/configs/hcu4.h | 3 +- include/configs/hcu5.h | 5 +- include/configs/hmi1001.h | 6 +- include/configs/icon.h | 3 +- include/configs/inka4x0.h | 6 +- include/configs/katmai.h | 3 +- include/configs/kilauea.h | 3 +- include/configs/korat.h | 3 +- include/configs/lwmon5.h | 2 +- include/configs/makalu.h | 3 +- include/configs/mcu25.h | 3 +- include/configs/mpc5121-common.h | 3 +- include/configs/ocotea.h | 3 +- include/configs/redwood.h | 3 +- include/configs/sequoia.h | 3 +- include/configs/taishan.h | 3 +- include/configs/yucca.h | 3 +- include/configs/zeus.h | 7 +- include/post.h | 57 +++++- post/Makefile | 3 +- 50 files changed, 103 insertions(+), 759 deletions(-) delete mode 100644 arch/blackfin/lib/post.c delete mode 100644 arch/powerpc/cpu/mpc512x/common.c delete mode 100644 arch/powerpc/cpu/ppc4xx/commproc.c delete mode 100644 board/ssv/common/post.c
diff --git a/arch/blackfin/lib/Makefile b/arch/blackfin/lib/Makefile index 3bdba75..a18bbd6 100644 --- a/arch/blackfin/lib/Makefile +++ b/arch/blackfin/lib/Makefile @@ -46,7 +46,7 @@ COBJS-y += clocks.o COBJS-$(CONFIG_CMD_CACHE_DUMP) += cmd_cache_dump.o COBJS-$(CONFIG_CMD_KGDB) += kgdb.o COBJS-y += muldi3.o -COBJS-$(CONFIG_POST) += post.o tests.o +COBJS-$(CONFIG_POST_ALT_LIST) += tests.o COBJS-y += string.o
SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index 4e9bb19..00a2041 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -321,7 +321,6 @@ void board_init_r(gd_t * id, ulong dest_addr)
#if defined(CONFIG_POST) post_output_backlog(); - post_reloc(); #endif
/* initialize malloc() area */ diff --git a/arch/blackfin/lib/post.c b/arch/blackfin/lib/post.c deleted file mode 100644 index faf6b96..0000000 --- a/arch/blackfin/lib/post.c +++ /dev/null @@ -1,421 +0,0 @@ -/* - * (C) Copyright 2002 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include <common.h> -#include <stdio_dev.h> -#include <watchdog.h> -#include <post.h> - -#ifdef CONFIG_LOGBUFFER -#include <logbuff.h> -#endif - -DECLARE_GLOBAL_DATA_PTR; - -#define POST_MAX_NUMBER 32 - -#define BOOTMODE_MAGIC 0xDEAD0000 - -int post_init_f(void) -{ - int res = 0; - unsigned int i; - - for (i = 0; i < post_list_size; i++) { - struct post_test *test = post_list + i; - - if (test->init_f && test->init_f()) { - res = -1; - } - } - - gd->post_init_f_time = post_time_ms(0); - if (!gd->post_init_f_time) { - printf - ("post/post.c: post_time_ms seems not to be implemented\n"); - } - - return res; -} - -void post_bootmode_init(void) -{ - int bootmode = post_bootmode_get(0); - int newword; - - if (post_hotkeys_pressed() && !(bootmode & POST_POWERTEST)) { - newword = BOOTMODE_MAGIC | POST_SLOWTEST; - } else if (bootmode == 0) { - newword = BOOTMODE_MAGIC | POST_POWERON; - } else if (bootmode == POST_POWERON || bootmode == POST_SLOWTEST) { - newword = BOOTMODE_MAGIC | POST_NORMAL; - } else { - /* Use old value */ - newword = post_word_load() & ~POST_COLDBOOT; - } - - if (bootmode == 0) { - /* We are booting after power-on */ - newword |= POST_COLDBOOT; - } - - post_word_store(newword); - - /* Reset activity record */ - gd->post_log_word = 0; -} - -int post_bootmode_get(unsigned int *last_test) -{ - unsigned long word = post_word_load(); - int bootmode; - - if ((word & 0xFFFF0000) != BOOTMODE_MAGIC) { - return 0; - } - - bootmode = word & 0x7F; - - if (last_test && (bootmode & POST_POWERTEST)) { - *last_test = (word >> 8) & 0xFF; - } - - return bootmode; -} - -/* POST tests run before relocation only mark status bits .... */ -static void post_log_mark_start(unsigned long testid) -{ - gd->post_log_word |= (testid) << 16; -} - -static void post_log_mark_succ(unsigned long testid) -{ - gd->post_log_word |= testid; -} - -/* ... and the messages are output once we are relocated */ -void post_output_backlog(void) -{ - int j; - - for (j = 0; j < post_list_size; j++) { - if (gd->post_log_word & (post_list[j].testid << 16)) { - post_log("POST %s ", post_list[j].cmd); - if (gd->post_log_word & post_list[j].testid) - post_log("PASSED\n"); - else { - post_log("FAILED\n"); - show_boot_progress (-31); - } - } - } -} - -static void post_bootmode_test_on(unsigned int last_test) -{ - unsigned long word = post_word_load(); - - word |= POST_POWERTEST; - - word |= (last_test & 0xFF) << 8; - - post_word_store(word); -} - -static void post_bootmode_test_off(void) -{ - unsigned long word = post_word_load(); - - word &= ~POST_POWERTEST; - - post_word_store(word); -} - -static void post_get_flags(int *test_flags) -{ - int flag[] = { POST_POWERON, POST_NORMAL, POST_SLOWTEST }; - char *var[] = { "post_poweron", "post_normal", "post_slowtest" }; - int varnum = sizeof(var) / sizeof(var[0]); - char list[128]; /* long enough for POST list */ - char *name; - char *s; - int last; - int i, j; - - for (j = 0; j < post_list_size; j++) { - test_flags[j] = post_list[j].flags; - } - - for (i = 0; i < varnum; i++) { - if (getenv_r(var[i], list, sizeof(list)) <= 0) - continue; - - for (j = 0; j < post_list_size; j++) { - test_flags[j] &= ~flag[i]; - } - - last = 0; - name = list; - while (!last) { - while (*name && *name == ' ') - name++; - if (*name == 0) - break; - s = name + 1; - while (*s && *s != ' ') - s++; - if (*s == 0) - last = 1; - else - *s = 0; - - for (j = 0; j < post_list_size; j++) { - if (strcmp(post_list[j].cmd, name) == 0) { - test_flags[j] |= flag[i]; - break; - } - } - - if (j == post_list_size) { - printf("No such test: %s\n", name); - } - - name = s + 1; - } - } - - for (j = 0; j < post_list_size; j++) { - if (test_flags[j] & POST_POWERON) { - test_flags[j] |= POST_SLOWTEST; - } - } -} - -static int post_run_single(struct post_test *test, - int test_flags, int flags, unsigned int i) -{ - if ((flags & test_flags & POST_ALWAYS) && - (flags & test_flags & POST_MEM)) { - WATCHDOG_RESET(); - - if (!(flags & POST_REBOOT)) { - if ((test_flags & POST_REBOOT) - && !(flags & POST_MANUAL)) { - post_bootmode_test_on(i); - } - - if (test_flags & POST_PREREL) - post_log_mark_start(test->testid); - else - post_log("POST %s ", test->cmd); - } - - if (test_flags & POST_PREREL) { - if ((*test->test) (flags) == 0) - post_log_mark_succ(test->testid); - } else { - if ((*test->test) (flags) != 0) { - post_log("FAILED\n"); - show_boot_progress (-32); - } else - post_log("PASSED\n"); - } - - if ((test_flags & POST_REBOOT) && !(flags & POST_MANUAL)) { - post_bootmode_test_off(); - } - - return 0; - } else { - return -1; - } -} - -int post_run(char *name, int flags) -{ - unsigned int i; - int test_flags[POST_MAX_NUMBER]; - - post_get_flags(test_flags); - - if (name == NULL) { - unsigned int last; - - if (post_bootmode_get(&last) & POST_POWERTEST) { - if (last < post_list_size && - (flags & test_flags[last] & POST_ALWAYS) && - (flags & test_flags[last] & POST_MEM)) { - - post_run_single(post_list + last, - test_flags[last], - flags | POST_REBOOT, last); - - for (i = last + 1; i < post_list_size; i++) { - post_run_single(post_list + i, - test_flags[i], - flags, i); - } - } - } else { - for (i = 0; i < post_list_size; i++) { - post_run_single(post_list + i, - test_flags[i], flags, i); - } - } - - return 0; - } else { - for (i = 0; i < post_list_size; i++) { - if (strcmp(post_list[i].cmd, name) == 0) - break; - } - - if (i < post_list_size) { - return post_run_single(post_list + i, - test_flags[i], flags, i); - } else { - return -1; - } - } -} - -static int post_info_single(struct post_test *test, int full) -{ - if (test->flags & POST_MANUAL) { - if (full) - printf("%s - %s\n" - " %s\n", test->cmd, test->name, test->desc); - else - printf(" %-15s - %s\n", test->cmd, test->name); - - return 0; - } else { - return -1; - } -} - -int post_info(char *name) -{ - unsigned int i; - - if (name == NULL) { - for (i = 0; i < post_list_size; i++) { - post_info_single(post_list + i, 0); - } - - return 0; - } else { - for (i = 0; i < post_list_size; i++) { - if (strcmp(post_list[i].cmd, name) == 0) - break; - } - - if (i < post_list_size) { - return post_info_single(post_list + i, 1); - } else { - return -1; - } - } -} - -int post_log(char *format, ...) -{ - va_list args; - uint i; - char printbuffer[CONFIG_SYS_PBSIZE]; - - va_start(args, format); - - /* For this to work, printbuffer must be larger than - * anything we ever want to print. - */ - i = vsprintf(printbuffer, format, args); - va_end(args); - -#ifdef CONFIG_LOGBUFFER - /* Send to the logbuffer */ - logbuff_log(printbuffer); -#else - /* Send to the stdout file */ - puts(printbuffer); -#endif - - return 0; -} - -void post_reloc(void) -{ - unsigned int i; - - /* - * We have to relocate the test table manually - */ - for (i = 0; i < post_list_size; i++) { - ulong addr; - struct post_test *test = post_list + i; - - if (test->name) { - addr = (ulong) (test->name) + gd->reloc_off; - test->name = (char *)addr; - } - - if (test->cmd) { - addr = (ulong) (test->cmd) + gd->reloc_off; - test->cmd = (char *)addr; - } - - if (test->desc) { - addr = (ulong) (test->desc) + gd->reloc_off; - test->desc = (char *)addr; - } - - if (test->test) { - addr = (ulong) (test->test) + gd->reloc_off; - test->test = (int (*)(int flags))addr; - } - - if (test->init_f) { - addr = (ulong) (test->init_f) + gd->reloc_off; - test->init_f = (int (*)(void))addr; - } - - if (test->reloc) { - addr = (ulong) (test->reloc) + gd->reloc_off; - test->reloc = (void (*)(void))addr; - - test->reloc(); - } - } -} - -/* - * Some tests (e.g. SYSMON) need the time when post_init_f started, - * but we cannot use get_timer() at this point. - * - * On PowerPC we implement it using the timebase register. - */ -unsigned long post_time_ms(unsigned long base) -{ - return (unsigned long)get_ticks() / (get_tbclk() / CONFIG_SYS_HZ) - base; -} diff --git a/arch/powerpc/cpu/mpc512x/Makefile b/arch/powerpc/cpu/mpc512x/Makefile index 9cfdb0f..1719c66 100644 --- a/arch/powerpc/cpu/mpc512x/Makefile +++ b/arch/powerpc/cpu/mpc512x/Makefile @@ -29,7 +29,6 @@ LIB = $(obj)lib$(CPU).a START = start.o COBJS-y := cpu.o COBJS-y += traps.o -COBJS-y += common.o COBJS-y += cpu_init.o COBJS-y += fixed_sdram.o COBJS-y += i2c.o diff --git a/arch/powerpc/cpu/mpc512x/common.c b/arch/powerpc/cpu/mpc512x/common.c deleted file mode 100644 index 180d323..0000000 --- a/arch/powerpc/cpu/mpc512x/common.c +++ /dev/null @@ -1,25 +0,0 @@ -#include <common.h> -#include <asm/io.h> - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -#if defined(CONFIG_SYS_POST_WORD_ADDR) -# define _POST_ADDR (CONFIG_SYS_POST_WORD_ADDR) -#else -#error echo "No POST word address defined" -#endif - -void post_word_store(ulong a) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - out_be32(save_addr, a); -} - -ulong post_word_load(void) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - return in_be32(save_addr); -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER */ diff --git a/arch/powerpc/cpu/mpc8260/commproc.c b/arch/powerpc/cpu/mpc8260/commproc.c index c522bc5..082957e 100644 --- a/arch/powerpc/cpu/mpc8260/commproc.c +++ b/arch/powerpc/cpu/mpc8260/commproc.c @@ -175,23 +175,3 @@ m8260_cpm_extcbrg(uint brg, uint rate, uint extclk, int pinsel) else *bp |= CPM_BRG_EXTC_CLK5_15; } - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - return *save_addr; -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/arch/powerpc/cpu/mpc85xx/commproc.c b/arch/powerpc/cpu/mpc85xx/commproc.c index f0fd1cb..292b723 100644 --- a/arch/powerpc/cpu/mpc85xx/commproc.c +++ b/arch/powerpc/cpu/mpc85xx/commproc.c @@ -183,23 +183,3 @@ m8560_cpm_extcbrg(uint brg, uint rate, uint extclk, int pinsel) else *bp |= CPM_BRG_EXTC_CLK5_15; } - -#ifdef CONFIG_POST - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - return *save_addr; -} - -#endif /* CONFIG_POST */ diff --git a/arch/powerpc/cpu/mpc8xx/commproc.c b/arch/powerpc/cpu/mpc8xx/commproc.c index 2c85377..5fe01ff 100644 --- a/arch/powerpc/cpu/mpc8xx/commproc.c +++ b/arch/powerpc/cpu/mpc8xx/commproc.c @@ -83,23 +83,3 @@ uint dpram_base_align (uint align) return (gd->dp_alloc_base + mask) & ~mask; } #endif /* CONFIG_SYS_ALLOC_DPRAM */ - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile void *save_addr = - ((immap_t *) CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR; - - *(volatile ulong *) save_addr = a; -} - -ulong post_word_load (void) -{ - volatile void *save_addr = - ((immap_t *) CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR; - - return *(volatile ulong *) save_addr; -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/arch/powerpc/cpu/ppc4xx/Makefile b/arch/powerpc/cpu/ppc4xx/Makefile index 88d53fb..769b37b 100644 --- a/arch/powerpc/cpu/ppc4xx/Makefile +++ b/arch/powerpc/cpu/ppc4xx/Makefile @@ -45,7 +45,6 @@ COBJS += bedbug_405.o ifdef CONFIG_CMD_CHIP_CONFIG COBJS += cmd_chip_config.o endif -COBJS += commproc.o COBJS += cpu.o COBJS += cpu_init.o COBJS += denali_data_eye.o diff --git a/arch/powerpc/cpu/ppc4xx/commproc.c b/arch/powerpc/cpu/ppc4xx/commproc.c deleted file mode 100644 index 6bf95e6..0000000 --- a/arch/powerpc/cpu/ppc4xx/commproc.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - * - * - * Atapted for ppc4XX by Denis Peter - */ - -#include <common.h> -#include <commproc.h> -#include <asm/io.h> - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -#if defined(CONFIG_SYS_POST_WORD_ADDR) -# define _POST_ADDR ((CONFIG_SYS_OCM_DATA_ADDR) + (CONFIG_SYS_POST_WORD_ADDR)) -#elif defined(CONFIG_SYS_POST_ALT_WORD_ADDR) -# define _POST_ADDR (CONFIG_SYS_POST_ALT_WORD_ADDR) -#endif - -void post_word_store (ulong a) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - out_be32(save_addr, a); -} - -ulong post_word_load (void) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - return in_be32(save_addr); -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/board/barco/barco.c b/board/barco/barco.c index c5fe8c4..2d01f1b 100644 --- a/board/barco/barco.c +++ b/board/barco/barco.c @@ -348,12 +348,3 @@ int serial_tstc (void) { return 0; } - -unsigned long post_word_load (void) -{ - return 0l; -} -void post_word_store (unsigned long val) -{ - return; -} diff --git a/board/bc3450/bc3450.c b/board/bc3450/bc3450.c index 3117b5f..97fb5a4 100644 --- a/board/bc3450/bc3450.c +++ b/board/bc3450/bc3450.c @@ -290,26 +290,6 @@ int post_hotkeys_pressed(void) } #endif
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ - - #ifdef CONFIG_BOARD_EARLY_INIT_R int board_early_init_r (void) { diff --git a/board/bf537-stamp/Makefile b/board/bf537-stamp/Makefile index f728e2c..9ee9e0b 100644 --- a/board/bf537-stamp/Makefile +++ b/board/bf537-stamp/Makefile @@ -32,7 +32,7 @@ LIB = $(obj)lib$(BOARD).a COBJS-y := $(BOARD).o cmd_bf537led.o COBJS-$(CONFIG_BFIN_IDE) += ide-cf.o COBJS-$(CONFIG_CMD_EEPROM) += spi_flash.o -COBJS-$(CONFIG_POST) += post.o post-memory.o +COBJS-$(CONFIG_HAS_POST) += post.o post-memory.o
SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/bf537-stamp/post.c b/board/bf537-stamp/post.c index 4e844ba..c546ab6 100644 --- a/board/bf537-stamp/post.c +++ b/board/bf537-stamp/post.c @@ -13,8 +13,6 @@ #include <command.h> #include <asm/blackfin.h>
-#define POST_WORD_ADDR 0xFF903FFC - /* Using sw10-PF5 as the hotkey */ int post_hotkeys_pressed(void) { @@ -47,18 +45,6 @@ int post_hotkeys_pressed(void) } }
-void post_word_store(ulong a) -{ - volatile ulong *save_addr = (volatile ulong *)POST_WORD_ADDR; - *save_addr = a; -} - -ulong post_word_load(void) -{ - volatile ulong *save_addr = (volatile ulong *)POST_WORD_ADDR; - return *save_addr; -} - int uart_post_test(int flags) { return 0; diff --git a/board/cm5200/cm5200.c b/board/cm5200/cm5200.c index 5ebcd66..b25887b 100644 --- a/board/cm5200/cm5200.c +++ b/board/cm5200/cm5200.c @@ -323,22 +323,6 @@ int board_early_init_r(void) }
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) -void post_word_store(ulong a) -{ - vu_long *save_addr = (vu_long *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - *save_addr = a; -} - - -ulong post_word_load(void) -{ - vu_long *save_addr = (vu_long *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER */ - - #ifdef CONFIG_MISC_INIT_R int misc_init_r(void) { diff --git a/board/ssv/common/post.c b/board/ssv/common/post.c deleted file mode 100644 index c7a9ccc..0000000 --- a/board/ssv/common/post.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * (C) Copyright 2004, Li-Pro.Net <www.li-pro.net> - * Stephan Linz linz@li-pro.net - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include <common.h> - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -#if !defined(CONFIG_SYS_NIOS_POST_WORD_ADDR) -#error "*** CONFIG_SYS_NIOS_POST_WORD_ADDR not defined ***" -#endif - -void post_word_store (ulong a) -{ - volatile void *save_addr = (void *)(CONFIG_SYS_NIOS_POST_WORD_ADDR); - *(volatile ulong *) save_addr = a; -} - -ulong post_word_load (void) -{ - volatile void *save_addr = (void *)(CONFIG_SYS_NIOS_POST_WORD_ADDR); - return *(volatile ulong *) save_addr; -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/board/tqc/tqm5200/tqm5200.c b/board/tqc/tqm5200/tqm5200.c index d90bae8..263a2af 100644 --- a/board/tqc/tqm5200/tqm5200.c +++ b/board/tqc/tqm5200/tqm5200.c @@ -375,25 +375,6 @@ int post_hotkeys_pressed(void) } #endif
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ - #ifdef CONFIG_BOARD_EARLY_INIT_R int board_early_init_r (void) { diff --git a/board/xes/xpedite1000/xpedite1000.c b/board/xes/xpedite1000/xpedite1000.c index b4cbb2f..a3534d2 100644 --- a/board/xes/xpedite1000/xpedite1000.c +++ b/board/xes/xpedite1000/xpedite1000.c @@ -196,20 +196,4 @@ int post_hotkeys_pressed(void) { return ctrlc(); } - -void post_word_store(ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load(void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_POST_WORD_ADDR); - - return *save_addr; -} #endif diff --git a/include/common.h b/include/common.h index 8bca04f..de74b90 100644 --- a/include/common.h +++ b/include/common.h @@ -585,8 +585,6 @@ uint dpram_base(void); uint dpram_base_align(uint align); uint dpram_alloc(uint size); uint dpram_alloc_align(uint size,uint align); -void post_word_store (ulong); -ulong post_word_load (void); void bootcount_store (ulong); ulong bootcount_load (void); #define BOOTCOUNT_MAGIC 0xB001C041 @@ -727,6 +725,9 @@ int cpu_release(int nr, int argc, char *argv[]);
#ifdef CONFIG_POST #define CONFIG_HAS_POST +#ifndef CONFIG_POST_ALT_LIST +#define CONFIG_POST_STD_LIST +#endif #endif
#ifdef CONFIG_INIT_CRITICAL diff --git a/include/configs/ADNPESC1.h b/include/configs/ADNPESC1.h index 2d4fc77..0f94106 100644 --- a/include/configs/ADNPESC1.h +++ b/include/configs/ADNPESC1.h @@ -562,7 +562,8 @@ * Diagnostics / Power On Self Tests *----------------------------------------------------------------------*/ #define CONFIG_POST CONFIG_SYS_POST_RTC -#define CONFIG_SYS_NIOS_POST_WORD_ADDR (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN) +#define CONFIG_SYS_POST_WORD_ADDR \ + (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
/* * BOOTP options diff --git a/include/configs/KAREF.h b/include/configs/KAREF.h index 49a7378..05f7254 100644 --- a/include/configs/KAREF.h +++ b/include/configs/KAREF.h @@ -82,8 +82,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Rsrv 256kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Rsrv 128kB for malloc */ diff --git a/include/configs/METROBOX.h b/include/configs/METROBOX.h index e7429dd..30a3035 100644 --- a/include/configs/METROBOX.h +++ b/include/configs/METROBOX.h @@ -144,8 +144,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Rsrv 256kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Rsrv 128kB for malloc */ diff --git a/include/configs/MIP405.h b/include/configs/MIP405.h index 7e6484e..ff9496b 100644 --- a/include/configs/MIP405.h +++ b/include/configs/MIP405.h @@ -305,10 +305,6 @@ /* reserve some memory for POST and BOOT limit info */ #define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 32)
-#ifdef CONFIG_POST /* reserve one word for POST Info */ -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) -#endif - #ifdef CONFIG_BOOTCOUNT_LIMIT /* reserve 2 word for bootcount limit */ #define CONFIG_SYS_BOOTCOUNT_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 12) #endif diff --git a/include/configs/PMC440.h b/include/configs/PMC440.h index c2fb56c..f716307 100644 --- a/include/configs/PMC440.h +++ b/include/configs/PMC440.h @@ -90,7 +90,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -373,7 +373,6 @@ CONFIG_SYS_POST_ETHER | \ CONFIG_SYS_POST_SPR)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */
diff --git a/include/configs/TB5200.h b/include/configs/TB5200.h index 6da18eb..7a6602c 100644 --- a/include/configs/TB5200.h +++ b/include/configs/TB5200.h @@ -126,7 +126,7 @@ #endif
#ifdef CONFIG_POST -#define CONFIG__CMD_DIAG +#define CONFIG_CMD_DIAG #endif
diff --git a/include/configs/XPEDITE1000.h b/include/configs/XPEDITE1000.h index cf39aea..dfeaf74 100644 --- a/include/configs/XPEDITE1000.h +++ b/include/configs/XPEDITE1000.h @@ -103,8 +103,7 @@ extern void out32(unsigned int, unsigned long); #define CONFIG_SYS_INIT_RAM_END 0x2000 /* End of used area in RAM */ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (512 * 1024) /* Reserve 512 KB for Mon */ #define CONFIG_SYS_MALLOC_LEN (1024 * 1024) /* Reserved for malloc */ diff --git a/include/configs/alpr.h b/include/configs/alpr.h index ee0c14d..326b324 100644 --- a/include/configs/alpr.h +++ b/include/configs/alpr.h @@ -66,8 +66,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Reserve 128 kB for malloc*/ diff --git a/include/configs/barco.h b/include/configs/barco.h index e00f84a..b1af701 100644 --- a/include/configs/barco.h +++ b/include/configs/barco.h @@ -136,6 +136,8 @@ #define CONFIG_LOGBUFFER #ifdef CONFIG_LOGBUFFER #define CONFIG_SYS_STDOUT_ADDR 0x1FFC000 +#define CONFIG_SYS_POST_WORD_ADDR \ + (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_MAX_RAM_SIZE - 4) #else #define CONFIG_SYS_STDOUT_ADDR 0x2B9000 #endif diff --git a/include/configs/bf537-stamp.h b/include/configs/bf537-stamp.h index 92ceb38..a60cb58 100644 --- a/include/configs/bf537-stamp.h +++ b/include/configs/bf537-stamp.h @@ -276,6 +276,7 @@ #define FLASH_START_POST_BLOCK 11 /* Should > = 11 */ #define FLASH_END_POST_BLOCK 71 /* Should < = 71 */ #endif +#define CONFIG_SYS_POST_WORD_ADDR 0xFF903FFC
/* These are for board tests */ #if 0 diff --git a/include/configs/bfin_adi_common.h b/include/configs/bfin_adi_common.h index 1896cf5..8416cc9 100644 --- a/include/configs/bfin_adi_common.h +++ b/include/configs/bfin_adi_common.h @@ -50,6 +50,7 @@ # endif # ifdef CONFIG_POST # define CONFIG_CMD_DIAG +# define CONFIG_POST_ALT_LIST # endif # ifdef CONFIG_RTC_BFIN # define CONFIG_CMD_DATE diff --git a/include/configs/hcu4.h b/include/configs/hcu4.h index 369b368..26992e7 100644 --- a/include/configs/hcu4.h +++ b/include/configs/hcu4.h @@ -72,7 +72,7 @@ #define CONFIG_SYS_INIT_RAM_END CONFIG_SYS_OCM_DATA_SIZE #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -192,7 +192,6 @@ CONFIG_SYS_POST_SPR)
#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #undef CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x00800000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */ diff --git a/include/configs/hcu5.h b/include/configs/hcu5.h index 26d2d0c..5adcc0f 100644 --- a/include/configs/hcu5.h +++ b/include/configs/hcu5.h @@ -86,7 +86,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -212,9 +212,8 @@ CONFIG_SYS_POST_FPU | \ CONFIG_SYS_POST_ETHER | \ CONFIG_SYS_POST_SPR) -#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE}
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) +#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */
diff --git a/include/configs/hmi1001.h b/include/configs/hmi1001.h index f9cdcbc..d40b7a9 100644 --- a/include/configs/hmi1001.h +++ b/include/configs/hmi1001.h @@ -190,14 +190,16 @@
/* Use ON-Chip SRAM until RAM will be available */ #define CONFIG_SYS_INIT_RAM_ADDR MPC5XXX_SRAM -#ifdef CONFIG_POST + /* preserve space for the post_word at end of on-chip SRAM */ +#define MPC5XXX_SRAM_POST_SIZE (MPC5XXX_SRAM_SIZE - 4) + +#ifdef CONFIG_POST #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_POST_SIZE #else #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_SIZE #endif
- #define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET diff --git a/include/configs/icon.h b/include/configs/icon.h index 3a57d69..7fa98c9 100644 --- a/include/configs/icon.h +++ b/include/configs/icon.h @@ -100,8 +100,7 @@
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - \ CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port diff --git a/include/configs/inka4x0.h b/include/configs/inka4x0.h index c5b1565..69365e6 100644 --- a/include/configs/inka4x0.h +++ b/include/configs/inka4x0.h @@ -200,14 +200,16 @@
/* Use ON-Chip SRAM until RAM will be available */ #define CONFIG_SYS_INIT_RAM_ADDR MPC5XXX_SRAM -#ifdef CONFIG_POST + /* preserve space for the post_word at end of on-chip SRAM */ +#define MPC5XXX_SRAM_POST_SIZE (MPC5XXX_SRAM_SIZE - 4) + +#ifdef CONFIG_POST #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_POST_SIZE #else #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_SIZE #endif
- #define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET diff --git a/include/configs/katmai.h b/include/configs/katmai.h index fb8ccae..41bdf1a 100644 --- a/include/configs/katmai.h +++ b/include/configs/katmai.h @@ -106,8 +106,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/kilauea.h b/include/configs/kilauea.h index 48dc946..8f813dd 100644 --- a/include/configs/kilauea.h +++ b/include/configs/kilauea.h @@ -103,11 +103,10 @@
#if defined(CONFIG_SYS_INIT_DCACHE_CS) # define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -# define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) #else # define CONFIG_SYS_INIT_EXTRA_SIZE 16 # define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_EXTRA_SIZE) -# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) # define CONFIG_SYS_OCM_DATA_ADDR CONFIG_SYS_INIT_RAM_ADDR #endif /* defined(CONFIG_SYS_INIT_DCACHE_CS) */
diff --git a/include/configs/korat.h b/include/configs/korat.h index f95df68..23da72f 100644 --- a/include/configs/korat.h +++ b/include/configs/korat.h @@ -88,7 +88,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port @@ -306,7 +306,6 @@ CONFIG_SYS_POST_SPR | \ CONFIG_SYS_POST_UART)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0xC8000000 /* free virtual address */
diff --git a/include/configs/lwmon5.h b/include/configs/lwmon5.h index 6461124..295a18e 100644 --- a/include/configs/lwmon5.h +++ b/include/configs/lwmon5.h @@ -84,7 +84,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data*/ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -#define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) /* unused GPT0 COMP reg */ #define CONFIG_SYS_MEM_TOP_HIDE (4 << 10) /* don't use last 4kbytes */ /* 440EPx errata CHIP 11 */ diff --git a/include/configs/makalu.h b/include/configs/makalu.h index 52339f9..f24d499 100644 --- a/include/configs/makalu.h +++ b/include/configs/makalu.h @@ -101,11 +101,10 @@
#if defined(CONFIG_SYS_INIT_DCACHE_CS) # define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -# define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) #else # define CONFIG_SYS_INIT_EXTRA_SIZE 16 # define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_EXTRA_SIZE) -# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) # define CONFIG_SYS_OCM_DATA_ADDR CONFIG_SYS_INIT_RAM_ADDR #endif /* defined(CONFIG_SYS_INIT_DCACHE_CS) */
diff --git a/include/configs/mcu25.h b/include/configs/mcu25.h index 5f31198..50bed10 100644 --- a/include/configs/mcu25.h +++ b/include/configs/mcu25.h @@ -72,7 +72,7 @@ #define CONFIG_SYS_INIT_RAM_END CONFIG_SYS_OCM_DATA_SIZE #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -200,7 +200,6 @@ CONFIG_SYS_POST_SPR)
#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #undef CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x00800000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */ diff --git a/include/configs/mpc5121-common.h b/include/configs/mpc5121-common.h index 96fab20..afae1ab 100644 --- a/include/configs/mpc5121-common.h +++ b/include/configs/mpc5121-common.h @@ -30,8 +30,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 0x100 /* num bytes of initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - \ CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest region */ #define CONFIG_SYS_MEMTEST_END 0x00400000 diff --git a/include/configs/ocotea.h b/include/configs/ocotea.h index 2e809b0..9cb66b7 100644 --- a/include/configs/ocotea.h +++ b/include/configs/ocotea.h @@ -75,8 +75,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/redwood.h b/include/configs/redwood.h index 4b744a7..87adbf8 100644 --- a/include/configs/redwood.h +++ b/include/configs/redwood.h @@ -87,8 +87,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * DDR SDRAM diff --git a/include/configs/sequoia.h b/include/configs/sequoia.h index 568d9fc..ee4391f 100644 --- a/include/configs/sequoia.h +++ b/include/configs/sequoia.h @@ -100,7 +100,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port @@ -357,7 +357,6 @@ CONFIG_SYS_POST_SPR | \ CONFIG_SYS_POST_UART)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */
diff --git a/include/configs/taishan.h b/include/configs/taishan.h index 6423fd7..394dd8d 100644 --- a/include/configs/taishan.h +++ b/include/configs/taishan.h @@ -71,8 +71,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data*/
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/yucca.h b/include/configs/yucca.h index 0b4dfb8..798c75a 100644 --- a/include/configs/yucca.h +++ b/include/configs/yucca.h @@ -100,8 +100,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/zeus.h b/include/configs/zeus.h index 3b2aede..29ada9e 100644 --- a/include/configs/zeus.h +++ b/include/configs/zeus.h @@ -255,9 +255,10 @@ #define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 16)
/* extra data in OCM */ -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) -#define CONFIG_SYS_POST_MAGIC (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 8) -#define CONFIG_SYS_POST_VAL (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 12) +#define CONFIG_SYS_POST_MAGIC \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 8) +#define CONFIG_SYS_POST_VAL \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 12)
/*----------------------------------------------------------------------- * External Bus Controller (EBC) Setup diff --git a/include/post.h b/include/post.h index 3da959d..625da55 100644 --- a/include/post.h +++ b/include/post.h @@ -2,6 +2,10 @@ * (C) Copyright 2002 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * + * (C) Copyright 2010 + * Michael Zaidman, Kodak, michael.zaidman@kodak.com + * post_word_{load|store} cleanup. + * * See file CREDITS for list of people who contributed to this * project. * @@ -25,8 +29,59 @@
#ifndef __ASSEMBLY__ #include <common.h> +#include <asm/io.h> + +#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) + +#ifdef CONFIG_SYS_POST_WORD_ADDR +#define _POST_WORD_ADDR CONFIG_SYS_POST_WORD_ADDR +#else + +#ifdef CONFIG_MPC5xxx +#define _POST_WORD_ADDR (MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE) + +#elif defined(CONFIG_MPC512X) +#define _POST_WORD_ADDR \ + (CONFIG_SYS_SRAM_BASE + CONFIG_SYS_GBL_DATA_OFFSET - 0x4) + +#elif defined(CONFIG_8xx) +#define _POST_WORD_ADDR \ + (((immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR) + +#elif defined(CONFIG_MPC8260) +#include <asm/cpm_8260.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined(CONFIG_MPC8360) +#include <asm/immap_qe.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined (CONFIG_MPC85xx) +#include <asm/cpm_85xx.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined (CONFIG_4xx) +#define _POST_WORD_ADDR \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #endif
+#ifndef _POST_WORD_ADDR +#error "_POST_WORD_ADDR currently not implemented for this platform!" +#endif +#endif /* CONFIG_SYS_POST_WORD_ADDR */ + +static inline ulong post_word_load (void) +{ + return in_le32((volatile void *)(_POST_WORD_ADDR)); +} + +static inline void post_word_store (ulong value) +{ + out_le32((volatile void *)(_POST_WORD_ADDR), value); +} +#endif /* defined (CONFIG_POST) || defined(CONFIG_LOGBUFFER) */ +#endif /* __ASSEMBLY__ */ + #ifdef CONFIG_POST
#define POST_POWERON 0x01 /* test runs on power-on booting */ @@ -40,7 +95,7 @@ #define POST_RAM 0x0200 /* test runs in RAM */ #define POST_MANUAL 0x0400 /* test runs on diag command */ #define POST_REBOOT 0x0800 /* test may cause rebooting */ -#define POST_PREREL 0x1000 /* test runs before relocation */ +#define POST_PREREL 0x1000 /* test runs before relocation */
#define POST_CRITICAL 0x2000 /* Use failbootcmd if test failed */ #define POST_STOP 0x4000 /* Interrupt POST sequence on fail */ diff --git a/post/Makefile b/post/Makefile index 769e9c6..169d126 100644 --- a/post/Makefile +++ b/post/Makefile @@ -26,7 +26,8 @@ include $(OBJTREE)/include/autoconf.mk
LIB = libpost.a GPLIB-$(CONFIG_HAS_POST) += libgenpost.a -COBJS-$(CONFIG_HAS_POST) += post.o tests.o +COBJS-$(CONFIG_HAS_POST) += post.o +COBJS-$(CONFIG_POST_STD_LIST) += tests.o
SPLIB-$(CONFIG_HAS_POST) = drivers/libpostdrivers.a SPLIB-$(CONFIG_HAS_POST) += $(shell if [ -d lib_$(ARCH) ]; then echo \

Dear Michael Zaidman,
In message 630a18874b3365b814e6d28288770f2d9b437dfa.1273498052.git.michael.zaidman@gmail.com you wrote:
Combine previously submitted POST cleanup patch series into single patch. Fix plain POST support introduced recently for mpc812x arch.
Please remove this part from the commit message (or replace it by a better desccription).
- Revives POST for blackfin arch;
- Removes redundant code: arch/blackfin/lib/post.c board/ssv/common/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c
- fixes up the post_word_{load|store} usage;
Signed-off-by: Michael Zaidman michael.zaidman@gmail.com Acked-by: Detlev Zundel dzu@denx.de Tested-by: Anatolij Gustschin agust@denx.de
List of the maintainers of the affected by patch boards: Cc: Stephan Linz linz@li-pro.net Cc: Travis Sawyer travis.sawyer@sandburst.com Cc: Denis Peter d.peter@mpl.ch Cc: Matthias Fuchs matthias.fuchs@esd-electronics.com Cc: Peter Tyser ptyser@xes-inc.com Cc: Stefan Roese sr@denx.de Cc: Mike Frysinger vapier@gentoo.org Cc: Niklaus Giger niklaus.giger@netstal.com Cc: Larry Johnson lrj@acm.org Cc: Feng Kan fkan@amcc.com
arch/blackfin/lib/Makefile | 2 +- arch/blackfin/lib/board.c | 1 - arch/blackfin/lib/post.c | 421 ----------------------------------- arch/powerpc/cpu/mpc512x/Makefile | 1 - arch/powerpc/cpu/mpc512x/common.c | 25 -- arch/powerpc/cpu/mpc8260/commproc.c | 20 -- arch/powerpc/cpu/mpc85xx/commproc.c | 20 -- arch/powerpc/cpu/mpc8xx/commproc.c | 20 -- arch/powerpc/cpu/ppc4xx/Makefile | 1 - arch/powerpc/cpu/ppc4xx/commproc.c | 53 ----- board/barco/barco.c | 9 - board/bc3450/bc3450.c | 20 -- board/bf537-stamp/Makefile | 2 +- board/bf537-stamp/post.c | 14 -- board/cm5200/cm5200.c | 16 -- board/ssv/common/post.c | 44 ---- board/tqc/tqm5200/tqm5200.c | 19 -- board/xes/xpedite1000/xpedite1000.c | 16 -- include/common.h | 5 +- include/configs/ADNPESC1.h | 3 +- include/configs/KAREF.h | 3 +- include/configs/METROBOX.h | 3 +- include/configs/MIP405.h | 4 - include/configs/PMC440.h | 3 +- include/configs/TB5200.h | 2 +- include/configs/XPEDITE1000.h | 3 +- include/configs/alpr.h | 3 +- include/configs/barco.h | 2 + include/configs/bf537-stamp.h | 1 + include/configs/bfin_adi_common.h | 1 + include/configs/hcu4.h | 3 +- include/configs/hcu5.h | 5 +- include/configs/hmi1001.h | 6 +- include/configs/icon.h | 3 +- include/configs/inka4x0.h | 6 +- include/configs/katmai.h | 3 +- include/configs/kilauea.h | 3 +- include/configs/korat.h | 3 +- include/configs/lwmon5.h | 2 +- include/configs/makalu.h | 3 +- include/configs/mcu25.h | 3 +- include/configs/mpc5121-common.h | 3 +- include/configs/ocotea.h | 3 +- include/configs/redwood.h | 3 +- include/configs/sequoia.h | 3 +- include/configs/taishan.h | 3 +- include/configs/yucca.h | 3 +- include/configs/zeus.h | 7 +- include/post.h | 57 +++++- post/Makefile | 3 +- 50 files changed, 103 insertions(+), 759 deletions(-) delete mode 100644 arch/blackfin/lib/post.c delete mode 100644 arch/powerpc/cpu/mpc512x/common.c delete mode 100644 arch/powerpc/cpu/ppc4xx/commproc.c delete mode 100644 board/ssv/common/post.c
This doesn't apply any more:
Applying: POST cleanup. Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... CONFLICT (rename/delete): Rename board/ssv/common/post.c->tools/gen_eth_addr.c in HEAD and deleted in POST cleanup. Removing arch/blackfin/lib/post.c Auto-merging arch/powerpc/cpu/mpc512x/Makefile Removing arch/powerpc/cpu/mpc512x/common.c Removing arch/powerpc/cpu/ppc4xx/commproc.c CONFLICT (delete/modify): include/configs/ADNPESC1.h deleted in HEAD and modified in POST cleanup.. Version POST cleanup. of include/configs/ADNPESC1.h left in tree. Auto-merging include/configs/icon.h Failed to merge in the changes. Patch failed at 0001 POST cleanup. When you have resolved this problem run "git am -i -3 --resolved". If you would prefer to skip this patch, instead run "git am -i -3 --skip". To restore the original branch and stop patching run "git am -i -3 --abort".
Please rebase against "next" branch and resubmit. Sorry for the inconvenience.
Best regards,
Wolfgang Denk

- Revives POST for blackfin arch; - Removes redundant code: arch/blackfin/lib/post.c board/ssv/common/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c - fixes up the post_word_{load|store} usage;
Signed-off-by: Michael Zaidman michael.zaidman@gmail.com Acked-by: Detlev Zundel dzu@denx.de Tested-by: Anatolij Gustschin agust@denx.de
List of the maintainers of the affected by patch boards: Cc: Stephan Linz linz@li-pro.net Cc: Denis Peter d.peter@mpl.ch Cc: Matthias Fuchs matthias.fuchs@esd-electronics.com Cc: Peter Tyser ptyser@xes-inc.com Cc: Stefan Roese sr@denx.de Cc: Mike Frysinger vapier@gentoo.org Cc: Niklaus Giger niklaus.giger@netstal.com Cc: Larry Johnson lrj@acm.org Cc: Feng Kan fkan@amcc.com --- arch/blackfin/lib/Makefile | 2 +- arch/blackfin/lib/board.c | 1 - arch/blackfin/lib/post.c | 421 ----------------------------------- arch/powerpc/cpu/mpc512x/common.c | 25 -- arch/powerpc/cpu/mpc8260/commproc.c | 20 -- arch/powerpc/cpu/mpc85xx/commproc.c | 20 -- arch/powerpc/cpu/mpc8xx/commproc.c | 20 -- arch/powerpc/cpu/ppc4xx/Makefile | 1 - arch/powerpc/cpu/ppc4xx/commproc.c | 53 ----- board/barco/barco.c | 9 - board/bc3450/bc3450.c | 20 -- board/bf537-stamp/Makefile | 2 +- board/bf537-stamp/post.c | 14 -- board/cm5200/cm5200.c | 16 -- board/tqc/tqm5200/tqm5200.c | 19 -- board/xes/xpedite1000/xpedite1000.c | 16 -- include/common.h | 5 +- include/configs/KAREF.h | 3 +- include/configs/METROBOX.h | 3 +- include/configs/MIP405.h | 4 - include/configs/PMC440.h | 3 +- include/configs/TB5200.h | 2 +- include/configs/XPEDITE1000.h | 3 +- include/configs/alpr.h | 3 +- include/configs/barco.h | 2 + include/configs/bf537-stamp.h | 1 + include/configs/bfin_adi_common.h | 1 + include/configs/hcu4.h | 3 +- include/configs/hcu5.h | 5 +- include/configs/hmi1001.h | 6 +- include/configs/icon.h | 3 +- include/configs/inka4x0.h | 6 +- include/configs/katmai.h | 3 +- include/configs/kilauea.h | 3 +- include/configs/korat.h | 3 +- include/configs/lwmon5.h | 2 +- include/configs/makalu.h | 3 +- include/configs/mcu25.h | 3 +- include/configs/mpc5121-common.h | 3 +- include/configs/ocotea.h | 3 +- include/configs/redwood.h | 3 +- include/configs/sequoia.h | 3 +- include/configs/taishan.h | 3 +- include/configs/yucca.h | 3 +- include/configs/zeus.h | 7 +- include/post.h | 57 +++++- post/Makefile | 3 +- 47 files changed, 101 insertions(+), 713 deletions(-) delete mode 100644 arch/blackfin/lib/post.c delete mode 100644 arch/powerpc/cpu/mpc512x/common.c delete mode 100644 arch/powerpc/cpu/ppc4xx/commproc.c
diff --git a/arch/blackfin/lib/Makefile b/arch/blackfin/lib/Makefile index 3bdba75..a18bbd6 100644 --- a/arch/blackfin/lib/Makefile +++ b/arch/blackfin/lib/Makefile @@ -46,7 +46,7 @@ COBJS-y += clocks.o COBJS-$(CONFIG_CMD_CACHE_DUMP) += cmd_cache_dump.o COBJS-$(CONFIG_CMD_KGDB) += kgdb.o COBJS-y += muldi3.o -COBJS-$(CONFIG_POST) += post.o tests.o +COBJS-$(CONFIG_POST_ALT_LIST) += tests.o COBJS-y += string.o
SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index 4e9bb19..00a2041 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -321,7 +321,6 @@ void board_init_r(gd_t * id, ulong dest_addr)
#if defined(CONFIG_POST) post_output_backlog(); - post_reloc(); #endif
/* initialize malloc() area */ diff --git a/arch/blackfin/lib/post.c b/arch/blackfin/lib/post.c deleted file mode 100644 index faf6b96..0000000 --- a/arch/blackfin/lib/post.c +++ /dev/null @@ -1,421 +0,0 @@ -/* - * (C) Copyright 2002 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include <common.h> -#include <stdio_dev.h> -#include <watchdog.h> -#include <post.h> - -#ifdef CONFIG_LOGBUFFER -#include <logbuff.h> -#endif - -DECLARE_GLOBAL_DATA_PTR; - -#define POST_MAX_NUMBER 32 - -#define BOOTMODE_MAGIC 0xDEAD0000 - -int post_init_f(void) -{ - int res = 0; - unsigned int i; - - for (i = 0; i < post_list_size; i++) { - struct post_test *test = post_list + i; - - if (test->init_f && test->init_f()) { - res = -1; - } - } - - gd->post_init_f_time = post_time_ms(0); - if (!gd->post_init_f_time) { - printf - ("post/post.c: post_time_ms seems not to be implemented\n"); - } - - return res; -} - -void post_bootmode_init(void) -{ - int bootmode = post_bootmode_get(0); - int newword; - - if (post_hotkeys_pressed() && !(bootmode & POST_POWERTEST)) { - newword = BOOTMODE_MAGIC | POST_SLOWTEST; - } else if (bootmode == 0) { - newword = BOOTMODE_MAGIC | POST_POWERON; - } else if (bootmode == POST_POWERON || bootmode == POST_SLOWTEST) { - newword = BOOTMODE_MAGIC | POST_NORMAL; - } else { - /* Use old value */ - newword = post_word_load() & ~POST_COLDBOOT; - } - - if (bootmode == 0) { - /* We are booting after power-on */ - newword |= POST_COLDBOOT; - } - - post_word_store(newword); - - /* Reset activity record */ - gd->post_log_word = 0; -} - -int post_bootmode_get(unsigned int *last_test) -{ - unsigned long word = post_word_load(); - int bootmode; - - if ((word & 0xFFFF0000) != BOOTMODE_MAGIC) { - return 0; - } - - bootmode = word & 0x7F; - - if (last_test && (bootmode & POST_POWERTEST)) { - *last_test = (word >> 8) & 0xFF; - } - - return bootmode; -} - -/* POST tests run before relocation only mark status bits .... */ -static void post_log_mark_start(unsigned long testid) -{ - gd->post_log_word |= (testid) << 16; -} - -static void post_log_mark_succ(unsigned long testid) -{ - gd->post_log_word |= testid; -} - -/* ... and the messages are output once we are relocated */ -void post_output_backlog(void) -{ - int j; - - for (j = 0; j < post_list_size; j++) { - if (gd->post_log_word & (post_list[j].testid << 16)) { - post_log("POST %s ", post_list[j].cmd); - if (gd->post_log_word & post_list[j].testid) - post_log("PASSED\n"); - else { - post_log("FAILED\n"); - show_boot_progress (-31); - } - } - } -} - -static void post_bootmode_test_on(unsigned int last_test) -{ - unsigned long word = post_word_load(); - - word |= POST_POWERTEST; - - word |= (last_test & 0xFF) << 8; - - post_word_store(word); -} - -static void post_bootmode_test_off(void) -{ - unsigned long word = post_word_load(); - - word &= ~POST_POWERTEST; - - post_word_store(word); -} - -static void post_get_flags(int *test_flags) -{ - int flag[] = { POST_POWERON, POST_NORMAL, POST_SLOWTEST }; - char *var[] = { "post_poweron", "post_normal", "post_slowtest" }; - int varnum = sizeof(var) / sizeof(var[0]); - char list[128]; /* long enough for POST list */ - char *name; - char *s; - int last; - int i, j; - - for (j = 0; j < post_list_size; j++) { - test_flags[j] = post_list[j].flags; - } - - for (i = 0; i < varnum; i++) { - if (getenv_r(var[i], list, sizeof(list)) <= 0) - continue; - - for (j = 0; j < post_list_size; j++) { - test_flags[j] &= ~flag[i]; - } - - last = 0; - name = list; - while (!last) { - while (*name && *name == ' ') - name++; - if (*name == 0) - break; - s = name + 1; - while (*s && *s != ' ') - s++; - if (*s == 0) - last = 1; - else - *s = 0; - - for (j = 0; j < post_list_size; j++) { - if (strcmp(post_list[j].cmd, name) == 0) { - test_flags[j] |= flag[i]; - break; - } - } - - if (j == post_list_size) { - printf("No such test: %s\n", name); - } - - name = s + 1; - } - } - - for (j = 0; j < post_list_size; j++) { - if (test_flags[j] & POST_POWERON) { - test_flags[j] |= POST_SLOWTEST; - } - } -} - -static int post_run_single(struct post_test *test, - int test_flags, int flags, unsigned int i) -{ - if ((flags & test_flags & POST_ALWAYS) && - (flags & test_flags & POST_MEM)) { - WATCHDOG_RESET(); - - if (!(flags & POST_REBOOT)) { - if ((test_flags & POST_REBOOT) - && !(flags & POST_MANUAL)) { - post_bootmode_test_on(i); - } - - if (test_flags & POST_PREREL) - post_log_mark_start(test->testid); - else - post_log("POST %s ", test->cmd); - } - - if (test_flags & POST_PREREL) { - if ((*test->test) (flags) == 0) - post_log_mark_succ(test->testid); - } else { - if ((*test->test) (flags) != 0) { - post_log("FAILED\n"); - show_boot_progress (-32); - } else - post_log("PASSED\n"); - } - - if ((test_flags & POST_REBOOT) && !(flags & POST_MANUAL)) { - post_bootmode_test_off(); - } - - return 0; - } else { - return -1; - } -} - -int post_run(char *name, int flags) -{ - unsigned int i; - int test_flags[POST_MAX_NUMBER]; - - post_get_flags(test_flags); - - if (name == NULL) { - unsigned int last; - - if (post_bootmode_get(&last) & POST_POWERTEST) { - if (last < post_list_size && - (flags & test_flags[last] & POST_ALWAYS) && - (flags & test_flags[last] & POST_MEM)) { - - post_run_single(post_list + last, - test_flags[last], - flags | POST_REBOOT, last); - - for (i = last + 1; i < post_list_size; i++) { - post_run_single(post_list + i, - test_flags[i], - flags, i); - } - } - } else { - for (i = 0; i < post_list_size; i++) { - post_run_single(post_list + i, - test_flags[i], flags, i); - } - } - - return 0; - } else { - for (i = 0; i < post_list_size; i++) { - if (strcmp(post_list[i].cmd, name) == 0) - break; - } - - if (i < post_list_size) { - return post_run_single(post_list + i, - test_flags[i], flags, i); - } else { - return -1; - } - } -} - -static int post_info_single(struct post_test *test, int full) -{ - if (test->flags & POST_MANUAL) { - if (full) - printf("%s - %s\n" - " %s\n", test->cmd, test->name, test->desc); - else - printf(" %-15s - %s\n", test->cmd, test->name); - - return 0; - } else { - return -1; - } -} - -int post_info(char *name) -{ - unsigned int i; - - if (name == NULL) { - for (i = 0; i < post_list_size; i++) { - post_info_single(post_list + i, 0); - } - - return 0; - } else { - for (i = 0; i < post_list_size; i++) { - if (strcmp(post_list[i].cmd, name) == 0) - break; - } - - if (i < post_list_size) { - return post_info_single(post_list + i, 1); - } else { - return -1; - } - } -} - -int post_log(char *format, ...) -{ - va_list args; - uint i; - char printbuffer[CONFIG_SYS_PBSIZE]; - - va_start(args, format); - - /* For this to work, printbuffer must be larger than - * anything we ever want to print. - */ - i = vsprintf(printbuffer, format, args); - va_end(args); - -#ifdef CONFIG_LOGBUFFER - /* Send to the logbuffer */ - logbuff_log(printbuffer); -#else - /* Send to the stdout file */ - puts(printbuffer); -#endif - - return 0; -} - -void post_reloc(void) -{ - unsigned int i; - - /* - * We have to relocate the test table manually - */ - for (i = 0; i < post_list_size; i++) { - ulong addr; - struct post_test *test = post_list + i; - - if (test->name) { - addr = (ulong) (test->name) + gd->reloc_off; - test->name = (char *)addr; - } - - if (test->cmd) { - addr = (ulong) (test->cmd) + gd->reloc_off; - test->cmd = (char *)addr; - } - - if (test->desc) { - addr = (ulong) (test->desc) + gd->reloc_off; - test->desc = (char *)addr; - } - - if (test->test) { - addr = (ulong) (test->test) + gd->reloc_off; - test->test = (int (*)(int flags))addr; - } - - if (test->init_f) { - addr = (ulong) (test->init_f) + gd->reloc_off; - test->init_f = (int (*)(void))addr; - } - - if (test->reloc) { - addr = (ulong) (test->reloc) + gd->reloc_off; - test->reloc = (void (*)(void))addr; - - test->reloc(); - } - } -} - -/* - * Some tests (e.g. SYSMON) need the time when post_init_f started, - * but we cannot use get_timer() at this point. - * - * On PowerPC we implement it using the timebase register. - */ -unsigned long post_time_ms(unsigned long base) -{ - return (unsigned long)get_ticks() / (get_tbclk() / CONFIG_SYS_HZ) - base; -} diff --git a/arch/powerpc/cpu/mpc512x/common.c b/arch/powerpc/cpu/mpc512x/common.c deleted file mode 100644 index 180d323..0000000 --- a/arch/powerpc/cpu/mpc512x/common.c +++ /dev/null @@ -1,25 +0,0 @@ -#include <common.h> -#include <asm/io.h> - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -#if defined(CONFIG_SYS_POST_WORD_ADDR) -# define _POST_ADDR (CONFIG_SYS_POST_WORD_ADDR) -#else -#error echo "No POST word address defined" -#endif - -void post_word_store(ulong a) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - out_be32(save_addr, a); -} - -ulong post_word_load(void) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - return in_be32(save_addr); -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER */ diff --git a/arch/powerpc/cpu/mpc8260/commproc.c b/arch/powerpc/cpu/mpc8260/commproc.c index c522bc5..082957e 100644 --- a/arch/powerpc/cpu/mpc8260/commproc.c +++ b/arch/powerpc/cpu/mpc8260/commproc.c @@ -175,23 +175,3 @@ m8260_cpm_extcbrg(uint brg, uint rate, uint extclk, int pinsel) else *bp |= CPM_BRG_EXTC_CLK5_15; } - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - return *save_addr; -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/arch/powerpc/cpu/mpc85xx/commproc.c b/arch/powerpc/cpu/mpc85xx/commproc.c index f0fd1cb..292b723 100644 --- a/arch/powerpc/cpu/mpc85xx/commproc.c +++ b/arch/powerpc/cpu/mpc85xx/commproc.c @@ -183,23 +183,3 @@ m8560_cpm_extcbrg(uint brg, uint rate, uint extclk, int pinsel) else *bp |= CPM_BRG_EXTC_CLK5_15; } - -#ifdef CONFIG_POST - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - return *save_addr; -} - -#endif /* CONFIG_POST */ diff --git a/arch/powerpc/cpu/mpc8xx/commproc.c b/arch/powerpc/cpu/mpc8xx/commproc.c index 2c85377..5fe01ff 100644 --- a/arch/powerpc/cpu/mpc8xx/commproc.c +++ b/arch/powerpc/cpu/mpc8xx/commproc.c @@ -83,23 +83,3 @@ uint dpram_base_align (uint align) return (gd->dp_alloc_base + mask) & ~mask; } #endif /* CONFIG_SYS_ALLOC_DPRAM */ - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile void *save_addr = - ((immap_t *) CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR; - - *(volatile ulong *) save_addr = a; -} - -ulong post_word_load (void) -{ - volatile void *save_addr = - ((immap_t *) CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR; - - return *(volatile ulong *) save_addr; -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/arch/powerpc/cpu/ppc4xx/Makefile b/arch/powerpc/cpu/ppc4xx/Makefile index 88d53fb..769b37b 100644 --- a/arch/powerpc/cpu/ppc4xx/Makefile +++ b/arch/powerpc/cpu/ppc4xx/Makefile @@ -45,7 +45,6 @@ COBJS += bedbug_405.o ifdef CONFIG_CMD_CHIP_CONFIG COBJS += cmd_chip_config.o endif -COBJS += commproc.o COBJS += cpu.o COBJS += cpu_init.o COBJS += denali_data_eye.o diff --git a/arch/powerpc/cpu/ppc4xx/commproc.c b/arch/powerpc/cpu/ppc4xx/commproc.c deleted file mode 100644 index 6bf95e6..0000000 --- a/arch/powerpc/cpu/ppc4xx/commproc.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - * - * - * Atapted for ppc4XX by Denis Peter - */ - -#include <common.h> -#include <commproc.h> -#include <asm/io.h> - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -#if defined(CONFIG_SYS_POST_WORD_ADDR) -# define _POST_ADDR ((CONFIG_SYS_OCM_DATA_ADDR) + (CONFIG_SYS_POST_WORD_ADDR)) -#elif defined(CONFIG_SYS_POST_ALT_WORD_ADDR) -# define _POST_ADDR (CONFIG_SYS_POST_ALT_WORD_ADDR) -#endif - -void post_word_store (ulong a) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - out_be32(save_addr, a); -} - -ulong post_word_load (void) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - return in_be32(save_addr); -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/board/barco/barco.c b/board/barco/barco.c index c5fe8c4..2d01f1b 100644 --- a/board/barco/barco.c +++ b/board/barco/barco.c @@ -348,12 +348,3 @@ int serial_tstc (void) { return 0; } - -unsigned long post_word_load (void) -{ - return 0l; -} -void post_word_store (unsigned long val) -{ - return; -} diff --git a/board/bc3450/bc3450.c b/board/bc3450/bc3450.c index 3117b5f..97fb5a4 100644 --- a/board/bc3450/bc3450.c +++ b/board/bc3450/bc3450.c @@ -290,26 +290,6 @@ int post_hotkeys_pressed(void) } #endif
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ - - #ifdef CONFIG_BOARD_EARLY_INIT_R int board_early_init_r (void) { diff --git a/board/bf537-stamp/Makefile b/board/bf537-stamp/Makefile index f728e2c..9ee9e0b 100644 --- a/board/bf537-stamp/Makefile +++ b/board/bf537-stamp/Makefile @@ -32,7 +32,7 @@ LIB = $(obj)lib$(BOARD).a COBJS-y := $(BOARD).o cmd_bf537led.o COBJS-$(CONFIG_BFIN_IDE) += ide-cf.o COBJS-$(CONFIG_CMD_EEPROM) += spi_flash.o -COBJS-$(CONFIG_POST) += post.o post-memory.o +COBJS-$(CONFIG_HAS_POST) += post.o post-memory.o
SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/bf537-stamp/post.c b/board/bf537-stamp/post.c index 4e844ba..c546ab6 100644 --- a/board/bf537-stamp/post.c +++ b/board/bf537-stamp/post.c @@ -13,8 +13,6 @@ #include <command.h> #include <asm/blackfin.h>
-#define POST_WORD_ADDR 0xFF903FFC - /* Using sw10-PF5 as the hotkey */ int post_hotkeys_pressed(void) { @@ -47,18 +45,6 @@ int post_hotkeys_pressed(void) } }
-void post_word_store(ulong a) -{ - volatile ulong *save_addr = (volatile ulong *)POST_WORD_ADDR; - *save_addr = a; -} - -ulong post_word_load(void) -{ - volatile ulong *save_addr = (volatile ulong *)POST_WORD_ADDR; - return *save_addr; -} - int uart_post_test(int flags) { return 0; diff --git a/board/cm5200/cm5200.c b/board/cm5200/cm5200.c index 5ebcd66..b25887b 100644 --- a/board/cm5200/cm5200.c +++ b/board/cm5200/cm5200.c @@ -323,22 +323,6 @@ int board_early_init_r(void) }
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) -void post_word_store(ulong a) -{ - vu_long *save_addr = (vu_long *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - *save_addr = a; -} - - -ulong post_word_load(void) -{ - vu_long *save_addr = (vu_long *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER */ - - #ifdef CONFIG_MISC_INIT_R int misc_init_r(void) { diff --git a/board/tqc/tqm5200/tqm5200.c b/board/tqc/tqm5200/tqm5200.c index d90bae8..263a2af 100644 --- a/board/tqc/tqm5200/tqm5200.c +++ b/board/tqc/tqm5200/tqm5200.c @@ -375,25 +375,6 @@ int post_hotkeys_pressed(void) } #endif
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ - #ifdef CONFIG_BOARD_EARLY_INIT_R int board_early_init_r (void) { diff --git a/board/xes/xpedite1000/xpedite1000.c b/board/xes/xpedite1000/xpedite1000.c index b4cbb2f..a3534d2 100644 --- a/board/xes/xpedite1000/xpedite1000.c +++ b/board/xes/xpedite1000/xpedite1000.c @@ -196,20 +196,4 @@ int post_hotkeys_pressed(void) { return ctrlc(); } - -void post_word_store(ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load(void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_POST_WORD_ADDR); - - return *save_addr; -} #endif diff --git a/include/common.h b/include/common.h index 8bca04f..de74b90 100644 --- a/include/common.h +++ b/include/common.h @@ -585,8 +585,6 @@ uint dpram_base(void); uint dpram_base_align(uint align); uint dpram_alloc(uint size); uint dpram_alloc_align(uint size,uint align); -void post_word_store (ulong); -ulong post_word_load (void); void bootcount_store (ulong); ulong bootcount_load (void); #define BOOTCOUNT_MAGIC 0xB001C041 @@ -727,6 +725,9 @@ int cpu_release(int nr, int argc, char *argv[]);
#ifdef CONFIG_POST #define CONFIG_HAS_POST +#ifndef CONFIG_POST_ALT_LIST +#define CONFIG_POST_STD_LIST +#endif #endif
#ifdef CONFIG_INIT_CRITICAL diff --git a/include/configs/KAREF.h b/include/configs/KAREF.h index 49a7378..05f7254 100644 --- a/include/configs/KAREF.h +++ b/include/configs/KAREF.h @@ -82,8 +82,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Rsrv 256kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Rsrv 128kB for malloc */ diff --git a/include/configs/METROBOX.h b/include/configs/METROBOX.h index e7429dd..30a3035 100644 --- a/include/configs/METROBOX.h +++ b/include/configs/METROBOX.h @@ -144,8 +144,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Rsrv 256kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Rsrv 128kB for malloc */ diff --git a/include/configs/MIP405.h b/include/configs/MIP405.h index 7e6484e..ff9496b 100644 --- a/include/configs/MIP405.h +++ b/include/configs/MIP405.h @@ -305,10 +305,6 @@ /* reserve some memory for POST and BOOT limit info */ #define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 32)
-#ifdef CONFIG_POST /* reserve one word for POST Info */ -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) -#endif - #ifdef CONFIG_BOOTCOUNT_LIMIT /* reserve 2 word for bootcount limit */ #define CONFIG_SYS_BOOTCOUNT_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 12) #endif diff --git a/include/configs/PMC440.h b/include/configs/PMC440.h index c2fb56c..f716307 100644 --- a/include/configs/PMC440.h +++ b/include/configs/PMC440.h @@ -90,7 +90,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -373,7 +373,6 @@ CONFIG_SYS_POST_ETHER | \ CONFIG_SYS_POST_SPR)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */
diff --git a/include/configs/TB5200.h b/include/configs/TB5200.h index 6da18eb..7a6602c 100644 --- a/include/configs/TB5200.h +++ b/include/configs/TB5200.h @@ -126,7 +126,7 @@ #endif
#ifdef CONFIG_POST -#define CONFIG__CMD_DIAG +#define CONFIG_CMD_DIAG #endif
diff --git a/include/configs/XPEDITE1000.h b/include/configs/XPEDITE1000.h index cf39aea..dfeaf74 100644 --- a/include/configs/XPEDITE1000.h +++ b/include/configs/XPEDITE1000.h @@ -103,8 +103,7 @@ extern void out32(unsigned int, unsigned long); #define CONFIG_SYS_INIT_RAM_END 0x2000 /* End of used area in RAM */ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (512 * 1024) /* Reserve 512 KB for Mon */ #define CONFIG_SYS_MALLOC_LEN (1024 * 1024) /* Reserved for malloc */ diff --git a/include/configs/alpr.h b/include/configs/alpr.h index ee0c14d..326b324 100644 --- a/include/configs/alpr.h +++ b/include/configs/alpr.h @@ -66,8 +66,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Reserve 128 kB for malloc*/ diff --git a/include/configs/barco.h b/include/configs/barco.h index e00f84a..b1af701 100644 --- a/include/configs/barco.h +++ b/include/configs/barco.h @@ -136,6 +136,8 @@ #define CONFIG_LOGBUFFER #ifdef CONFIG_LOGBUFFER #define CONFIG_SYS_STDOUT_ADDR 0x1FFC000 +#define CONFIG_SYS_POST_WORD_ADDR \ + (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_MAX_RAM_SIZE - 4) #else #define CONFIG_SYS_STDOUT_ADDR 0x2B9000 #endif diff --git a/include/configs/bf537-stamp.h b/include/configs/bf537-stamp.h index 92ceb38..a60cb58 100644 --- a/include/configs/bf537-stamp.h +++ b/include/configs/bf537-stamp.h @@ -276,6 +276,7 @@ #define FLASH_START_POST_BLOCK 11 /* Should > = 11 */ #define FLASH_END_POST_BLOCK 71 /* Should < = 71 */ #endif +#define CONFIG_SYS_POST_WORD_ADDR 0xFF903FFC
/* These are for board tests */ #if 0 diff --git a/include/configs/bfin_adi_common.h b/include/configs/bfin_adi_common.h index 1896cf5..8416cc9 100644 --- a/include/configs/bfin_adi_common.h +++ b/include/configs/bfin_adi_common.h @@ -50,6 +50,7 @@ # endif # ifdef CONFIG_POST # define CONFIG_CMD_DIAG +# define CONFIG_POST_ALT_LIST # endif # ifdef CONFIG_RTC_BFIN # define CONFIG_CMD_DATE diff --git a/include/configs/hcu4.h b/include/configs/hcu4.h index 369b368..26992e7 100644 --- a/include/configs/hcu4.h +++ b/include/configs/hcu4.h @@ -72,7 +72,7 @@ #define CONFIG_SYS_INIT_RAM_END CONFIG_SYS_OCM_DATA_SIZE #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -192,7 +192,6 @@ CONFIG_SYS_POST_SPR)
#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #undef CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x00800000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */ diff --git a/include/configs/hcu5.h b/include/configs/hcu5.h index 26d2d0c..5adcc0f 100644 --- a/include/configs/hcu5.h +++ b/include/configs/hcu5.h @@ -86,7 +86,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -212,9 +212,8 @@ CONFIG_SYS_POST_FPU | \ CONFIG_SYS_POST_ETHER | \ CONFIG_SYS_POST_SPR) -#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE}
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) +#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */
diff --git a/include/configs/hmi1001.h b/include/configs/hmi1001.h index f9cdcbc..d40b7a9 100644 --- a/include/configs/hmi1001.h +++ b/include/configs/hmi1001.h @@ -190,14 +190,16 @@
/* Use ON-Chip SRAM until RAM will be available */ #define CONFIG_SYS_INIT_RAM_ADDR MPC5XXX_SRAM -#ifdef CONFIG_POST + /* preserve space for the post_word at end of on-chip SRAM */ +#define MPC5XXX_SRAM_POST_SIZE (MPC5XXX_SRAM_SIZE - 4) + +#ifdef CONFIG_POST #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_POST_SIZE #else #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_SIZE #endif
- #define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET diff --git a/include/configs/icon.h b/include/configs/icon.h index 7a4e60c..eb419eb 100644 --- a/include/configs/icon.h +++ b/include/configs/icon.h @@ -100,8 +100,7 @@
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - \ CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port diff --git a/include/configs/inka4x0.h b/include/configs/inka4x0.h index c5b1565..69365e6 100644 --- a/include/configs/inka4x0.h +++ b/include/configs/inka4x0.h @@ -200,14 +200,16 @@
/* Use ON-Chip SRAM until RAM will be available */ #define CONFIG_SYS_INIT_RAM_ADDR MPC5XXX_SRAM -#ifdef CONFIG_POST + /* preserve space for the post_word at end of on-chip SRAM */ +#define MPC5XXX_SRAM_POST_SIZE (MPC5XXX_SRAM_SIZE - 4) + +#ifdef CONFIG_POST #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_POST_SIZE #else #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_SIZE #endif
- #define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET diff --git a/include/configs/katmai.h b/include/configs/katmai.h index fb8ccae..41bdf1a 100644 --- a/include/configs/katmai.h +++ b/include/configs/katmai.h @@ -106,8 +106,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/kilauea.h b/include/configs/kilauea.h index 48dc946..8f813dd 100644 --- a/include/configs/kilauea.h +++ b/include/configs/kilauea.h @@ -103,11 +103,10 @@
#if defined(CONFIG_SYS_INIT_DCACHE_CS) # define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -# define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) #else # define CONFIG_SYS_INIT_EXTRA_SIZE 16 # define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_EXTRA_SIZE) -# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) # define CONFIG_SYS_OCM_DATA_ADDR CONFIG_SYS_INIT_RAM_ADDR #endif /* defined(CONFIG_SYS_INIT_DCACHE_CS) */
diff --git a/include/configs/korat.h b/include/configs/korat.h index f95df68..23da72f 100644 --- a/include/configs/korat.h +++ b/include/configs/korat.h @@ -88,7 +88,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port @@ -306,7 +306,6 @@ CONFIG_SYS_POST_SPR | \ CONFIG_SYS_POST_UART)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0xC8000000 /* free virtual address */
diff --git a/include/configs/lwmon5.h b/include/configs/lwmon5.h index 6461124..295a18e 100644 --- a/include/configs/lwmon5.h +++ b/include/configs/lwmon5.h @@ -84,7 +84,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data*/ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -#define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) /* unused GPT0 COMP reg */ #define CONFIG_SYS_MEM_TOP_HIDE (4 << 10) /* don't use last 4kbytes */ /* 440EPx errata CHIP 11 */ diff --git a/include/configs/makalu.h b/include/configs/makalu.h index 52339f9..f24d499 100644 --- a/include/configs/makalu.h +++ b/include/configs/makalu.h @@ -101,11 +101,10 @@
#if defined(CONFIG_SYS_INIT_DCACHE_CS) # define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -# define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) #else # define CONFIG_SYS_INIT_EXTRA_SIZE 16 # define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_EXTRA_SIZE) -# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) # define CONFIG_SYS_OCM_DATA_ADDR CONFIG_SYS_INIT_RAM_ADDR #endif /* defined(CONFIG_SYS_INIT_DCACHE_CS) */
diff --git a/include/configs/mcu25.h b/include/configs/mcu25.h index 5f31198..50bed10 100644 --- a/include/configs/mcu25.h +++ b/include/configs/mcu25.h @@ -72,7 +72,7 @@ #define CONFIG_SYS_INIT_RAM_END CONFIG_SYS_OCM_DATA_SIZE #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -200,7 +200,6 @@ CONFIG_SYS_POST_SPR)
#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #undef CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x00800000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */ diff --git a/include/configs/mpc5121-common.h b/include/configs/mpc5121-common.h index 96fab20..afae1ab 100644 --- a/include/configs/mpc5121-common.h +++ b/include/configs/mpc5121-common.h @@ -30,8 +30,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 0x100 /* num bytes of initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - \ CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest region */ #define CONFIG_SYS_MEMTEST_END 0x00400000 diff --git a/include/configs/ocotea.h b/include/configs/ocotea.h index 2e809b0..9cb66b7 100644 --- a/include/configs/ocotea.h +++ b/include/configs/ocotea.h @@ -75,8 +75,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/redwood.h b/include/configs/redwood.h index 4b744a7..87adbf8 100644 --- a/include/configs/redwood.h +++ b/include/configs/redwood.h @@ -87,8 +87,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * DDR SDRAM diff --git a/include/configs/sequoia.h b/include/configs/sequoia.h index 568d9fc..ee4391f 100644 --- a/include/configs/sequoia.h +++ b/include/configs/sequoia.h @@ -100,7 +100,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port @@ -357,7 +357,6 @@ CONFIG_SYS_POST_SPR | \ CONFIG_SYS_POST_UART)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */
diff --git a/include/configs/taishan.h b/include/configs/taishan.h index 6423fd7..394dd8d 100644 --- a/include/configs/taishan.h +++ b/include/configs/taishan.h @@ -71,8 +71,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data*/
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/yucca.h b/include/configs/yucca.h index 0b4dfb8..798c75a 100644 --- a/include/configs/yucca.h +++ b/include/configs/yucca.h @@ -100,8 +100,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/zeus.h b/include/configs/zeus.h index 3b2aede..29ada9e 100644 --- a/include/configs/zeus.h +++ b/include/configs/zeus.h @@ -255,9 +255,10 @@ #define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 16)
/* extra data in OCM */ -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) -#define CONFIG_SYS_POST_MAGIC (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 8) -#define CONFIG_SYS_POST_VAL (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 12) +#define CONFIG_SYS_POST_MAGIC \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 8) +#define CONFIG_SYS_POST_VAL \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 12)
/*----------------------------------------------------------------------- * External Bus Controller (EBC) Setup diff --git a/include/post.h b/include/post.h index 3da959d..625da55 100644 --- a/include/post.h +++ b/include/post.h @@ -2,6 +2,10 @@ * (C) Copyright 2002 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * + * (C) Copyright 2010 + * Michael Zaidman, Kodak, michael.zaidman@kodak.com + * post_word_{load|store} cleanup. + * * See file CREDITS for list of people who contributed to this * project. * @@ -25,8 +29,59 @@
#ifndef __ASSEMBLY__ #include <common.h> +#include <asm/io.h> + +#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) + +#ifdef CONFIG_SYS_POST_WORD_ADDR +#define _POST_WORD_ADDR CONFIG_SYS_POST_WORD_ADDR +#else + +#ifdef CONFIG_MPC5xxx +#define _POST_WORD_ADDR (MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE) + +#elif defined(CONFIG_MPC512X) +#define _POST_WORD_ADDR \ + (CONFIG_SYS_SRAM_BASE + CONFIG_SYS_GBL_DATA_OFFSET - 0x4) + +#elif defined(CONFIG_8xx) +#define _POST_WORD_ADDR \ + (((immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR) + +#elif defined(CONFIG_MPC8260) +#include <asm/cpm_8260.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined(CONFIG_MPC8360) +#include <asm/immap_qe.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined (CONFIG_MPC85xx) +#include <asm/cpm_85xx.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined (CONFIG_4xx) +#define _POST_WORD_ADDR \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #endif
+#ifndef _POST_WORD_ADDR +#error "_POST_WORD_ADDR currently not implemented for this platform!" +#endif +#endif /* CONFIG_SYS_POST_WORD_ADDR */ + +static inline ulong post_word_load (void) +{ + return in_le32((volatile void *)(_POST_WORD_ADDR)); +} + +static inline void post_word_store (ulong value) +{ + out_le32((volatile void *)(_POST_WORD_ADDR), value); +} +#endif /* defined (CONFIG_POST) || defined(CONFIG_LOGBUFFER) */ +#endif /* __ASSEMBLY__ */ + #ifdef CONFIG_POST
#define POST_POWERON 0x01 /* test runs on power-on booting */ @@ -40,7 +95,7 @@ #define POST_RAM 0x0200 /* test runs in RAM */ #define POST_MANUAL 0x0400 /* test runs on diag command */ #define POST_REBOOT 0x0800 /* test may cause rebooting */ -#define POST_PREREL 0x1000 /* test runs before relocation */ +#define POST_PREREL 0x1000 /* test runs before relocation */
#define POST_CRITICAL 0x2000 /* Use failbootcmd if test failed */ #define POST_STOP 0x4000 /* Interrupt POST sequence on fail */ diff --git a/post/Makefile b/post/Makefile index 769e9c6..169d126 100644 --- a/post/Makefile +++ b/post/Makefile @@ -26,7 +26,8 @@ include $(OBJTREE)/include/autoconf.mk
LIB = libpost.a GPLIB-$(CONFIG_HAS_POST) += libgenpost.a -COBJS-$(CONFIG_HAS_POST) += post.o tests.o +COBJS-$(CONFIG_HAS_POST) += post.o +COBJS-$(CONFIG_POST_STD_LIST) += tests.o
SPLIB-$(CONFIG_HAS_POST) = drivers/libpostdrivers.a SPLIB-$(CONFIG_HAS_POST) += $(shell if [ -d lib_$(ARCH) ]; then echo \

Dear Wolfgang,
On Wed, Jun 30, 2010 at 7:16 PM, Michael Zaidman michael.zaidman@gmail.com wrote:
- Revives POST for blackfin arch;
- Removes redundant code:
arch/blackfin/lib/post.c board/ssv/common/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c
- fixes up the post_word_{load|store} usage;
Signed-off-by: Michael Zaidman michael.zaidman@gmail.com Acked-by: Detlev Zundel dzu@denx.de Tested-by: Anatolij Gustschin agust@denx.de
List of the maintainers of the affected by patch boards: Cc: Stephan Linz linz@li-pro.net Cc: Denis Peter d.peter@mpl.ch Cc: Matthias Fuchs matthias.fuchs@esd-electronics.com Cc: Peter Tyser ptyser@xes-inc.com Cc: Stefan Roese sr@denx.de Cc: Mike Frysinger vapier@gentoo.org Cc: Niklaus Giger niklaus.giger@netstal.com Cc: Larry Johnson lrj@acm.org Cc: Feng Kan fkan@amcc.com
More than 5 week ago I rebased and resubmitted this patch as you asked but did not receive any response yet.
Best regards, Michael.

Dear Michael Zaidman,
In message AANLkTi=S9aoPB6G6zcwii9hnoB02BAtUAM3j_hSKu4mZ@mail.gmail.com you wrote:
On Wed, Jun 30, 2010 at 7:16 PM, Michael Zaidman michael.zaidman@gmail.com wrote:
- Revives POST for blackfin arch;
- Removes redundant code: arch/blackfin/lib/post.c board/ssv/common/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c
- fixes up the post_word_{load|store} usage;
Signed-off-by: Michael Zaidman michael.zaidman@gmail.com Acked-by: Detlev Zundel dzu@denx.de Tested-by: Anatolij Gustschin agust@denx.de
List of the maintainers of the affected by patch boards: Cc: Stephan Linz linz@li-pro.net Cc: Denis Peter d.peter@mpl.ch Cc: Matthias Fuchs matthias.fuchs@esd-electronics.com Cc: Peter Tyser ptyser@xes-inc.com Cc: Stefan Roese sr@denx.de Cc: Mike Frysinger vapier@gentoo.org Cc: Niklaus Giger niklaus.giger@netstal.com Cc: Larry Johnson lrj@acm.org Cc: Feng Kan fkan@amcc.com
More than 5 week ago I rebased and resubmitted this patch as you asked but did not receive any response yet.
Sorry, but this does not apply any more:
Applying: POST cleanup. Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merging arch/blackfin/lib/board.c CONFLICT (delete/modify): arch/blackfin/lib/post.c deleted in POST cleanup. and modified in HEAD. Version HEAD of arch/blackfin/lib/post.c left in tree. Removing arch/powerpc/cpu/mpc512x/common.c Auto-merging arch/powerpc/cpu/ppc4xx/Makefile Removing arch/powerpc/cpu/ppc4xx/commproc.c Auto-merging board/barco/barco.c Auto-merging board/bf537-stamp/Makefile CONFLICT (content): Merge conflict in board/bf537-stamp/Makefile Auto-merging include/common.h Auto-merging include/configs/bf537-stamp.h Auto-merging include/configs/bfin_adi_common.h Auto-merging include/configs/katmai.h Failed to merge in the changes. Patch failed at 0001 POST cleanup.
The merge conflict in board/bf537-stamp/Makefile is trivial to resolve, but I'm not sure about the "arch/blackfin/lib/post.c deleted in POST cleanup. and modified in HEAD."
Please rebase and resubmit. Thanks.
Best regards,
Wolfgang Denk

Dear Wolfgang,
On Sun, Aug 8, 2010 at 11:30 PM, Wolfgang Denk wd@denx.de wrote:
Dear Michael Zaidman,
On Wed, Jun 30, 2010 at 7:16 PM, Michael Zaidman michael.zaidman@gmail.com wrote:
...
More than 5 week ago I rebased and resubmitted this patch as you asked but did not receive any response yet.
Sorry, but this does not apply any more:
...
The merge conflict in board/bf537-stamp/Makefile is trivial to resolve, but I'm not sure about the "arch/blackfin/lib/post.c deleted in POST cleanup. and modified in HEAD."
Please rebase and resubmit. Thanks.
Best regards,
Wolfgang Denk
I will do it in the second half of September after returning from vacation.
Best regards,
Michael

- Revives POST for blackfin arch; - Removes redundant code: arch/blackfin/lib/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c - fixes up the post_word_{load|store} usage.
Signed-off-by: Michael Zaidman michael.zaidman@gmail.com Acked-by: Detlev Zundel dzu@denx.de Tested-by: Anatolij Gustschin agust@denx.de
List of the maintainers of the affected by patch boards: Cc: Stephan Linz linz@li-pro.net Cc: Denis Peter d.peter@mpl.ch Cc: Matthias Fuchs matthias.fuchs@esd-electronics.com Cc: Peter Tyser ptyser@xes-inc.com Cc: Stefan Roese sr@denx.de Cc: Mike Frysinger vapier@gentoo.org Cc: Niklaus Giger niklaus.giger@netstal.com Cc: Larry Johnson lrj@acm.org Cc: Feng Kan fkan@amcc.com --- arch/blackfin/lib/Makefile | 2 +- arch/blackfin/lib/board.c | 1 - arch/blackfin/lib/post.c | 421 ----------------------------------- arch/powerpc/cpu/mpc512x/common.c | 25 -- arch/powerpc/cpu/mpc8260/commproc.c | 20 -- arch/powerpc/cpu/mpc85xx/commproc.c | 20 -- arch/powerpc/cpu/mpc8xx/commproc.c | 20 -- arch/powerpc/cpu/ppc4xx/Makefile | 1 - arch/powerpc/cpu/ppc4xx/commproc.c | 53 ----- board/barco/barco.c | 9 - board/bc3450/bc3450.c | 20 -- board/bf537-stamp/Makefile | 2 +- board/bf537-stamp/post.c | 14 -- board/cm5200/cm5200.c | 16 -- board/tqc/tqm5200/tqm5200.c | 19 -- board/xes/xpedite1000/xpedite1000.c | 16 -- include/common.h | 5 +- include/configs/KAREF.h | 3 +- include/configs/METROBOX.h | 3 +- include/configs/MIP405.h | 4 - include/configs/PMC440.h | 3 +- include/configs/TB5200.h | 2 +- include/configs/XPEDITE1000.h | 3 +- include/configs/alpr.h | 3 +- include/configs/barco.h | 2 + include/configs/bf537-stamp.h | 1 + include/configs/bfin_adi_common.h | 1 + include/configs/hcu4.h | 3 +- include/configs/hcu5.h | 5 +- include/configs/hmi1001.h | 6 +- include/configs/icon.h | 3 +- include/configs/inka4x0.h | 6 +- include/configs/katmai.h | 3 +- include/configs/kilauea.h | 3 +- include/configs/korat.h | 3 +- include/configs/lwmon5.h | 2 +- include/configs/makalu.h | 3 +- include/configs/mcu25.h | 3 +- include/configs/mpc5121-common.h | 3 +- include/configs/ocotea.h | 3 +- include/configs/redwood.h | 3 +- include/configs/sequoia.h | 3 +- include/configs/taishan.h | 3 +- include/configs/yucca.h | 3 +- include/configs/zeus.h | 7 +- include/post.h | 57 +++++- post/Makefile | 3 +- 47 files changed, 101 insertions(+), 713 deletions(-) delete mode 100644 arch/blackfin/lib/post.c delete mode 100644 arch/powerpc/cpu/mpc512x/common.c delete mode 100644 arch/powerpc/cpu/ppc4xx/commproc.c
diff --git a/arch/blackfin/lib/Makefile b/arch/blackfin/lib/Makefile index 3bdba75..a18bbd6 100644 --- a/arch/blackfin/lib/Makefile +++ b/arch/blackfin/lib/Makefile @@ -46,7 +46,7 @@ COBJS-y += clocks.o COBJS-$(CONFIG_CMD_CACHE_DUMP) += cmd_cache_dump.o COBJS-$(CONFIG_CMD_KGDB) += kgdb.o COBJS-y += muldi3.o -COBJS-$(CONFIG_POST) += post.o tests.o +COBJS-$(CONFIG_POST_ALT_LIST) += tests.o COBJS-y += string.o
SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index 46e36c8..7643250 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -322,7 +322,6 @@ void board_init_r(gd_t * id, ulong dest_addr)
#if defined(CONFIG_POST) post_output_backlog(); - post_reloc(); #endif
/* initialize malloc() area */ diff --git a/arch/blackfin/lib/post.c b/arch/blackfin/lib/post.c deleted file mode 100644 index bd6aaf5..0000000 --- a/arch/blackfin/lib/post.c +++ /dev/null @@ -1,421 +0,0 @@ -/* - * (C) Copyright 2002 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include <common.h> -#include <stdio_dev.h> -#include <watchdog.h> -#include <post.h> - -#ifdef CONFIG_LOGBUFFER -#include <logbuff.h> -#endif - -DECLARE_GLOBAL_DATA_PTR; - -#define POST_MAX_NUMBER 32 - -#define BOOTMODE_MAGIC 0xDEAD0000 - -int post_init_f(void) -{ - int res = 0; - unsigned int i; - - for (i = 0; i < post_list_size; i++) { - struct post_test *test = post_list + i; - - if (test->init_f && test->init_f()) { - res = -1; - } - } - - gd->post_init_f_time = post_time_ms(0); - if (!gd->post_init_f_time) { - printf - ("post/post.c: post_time_ms seems not to be implemented\n"); - } - - return res; -} - -void post_bootmode_init(void) -{ - int bootmode = post_bootmode_get(0); - int newword; - - if (post_hotkeys_pressed() && !(bootmode & POST_POWERTEST)) { - newword = BOOTMODE_MAGIC | POST_SLOWTEST; - } else if (bootmode == 0) { - newword = BOOTMODE_MAGIC | POST_POWERON; - } else if (bootmode == POST_POWERON || bootmode == POST_SLOWTEST) { - newword = BOOTMODE_MAGIC | POST_NORMAL; - } else { - /* Use old value */ - newword = post_word_load() & ~POST_COLDBOOT; - } - - if (bootmode == 0) { - /* We are booting after power-on */ - newword |= POST_COLDBOOT; - } - - post_word_store(newword); - - /* Reset activity record */ - gd->post_log_word = 0; -} - -int post_bootmode_get(unsigned int *last_test) -{ - unsigned long word = post_word_load(); - int bootmode; - - if ((word & 0xFFFF0000) != BOOTMODE_MAGIC) { - return 0; - } - - bootmode = word & 0x7F; - - if (last_test && (bootmode & POST_POWERTEST)) { - *last_test = (word >> 8) & 0xFF; - } - - return bootmode; -} - -/* POST tests run before relocation only mark status bits .... */ -static void post_log_mark_start(unsigned long testid) -{ - gd->post_log_word |= (testid) << 16; -} - -static void post_log_mark_succ(unsigned long testid) -{ - gd->post_log_word |= testid; -} - -/* ... and the messages are output once we are relocated */ -void post_output_backlog(void) -{ - int j; - - for (j = 0; j < post_list_size; j++) { - if (gd->post_log_word & (post_list[j].testid << 16)) { - post_log("POST %s ", post_list[j].cmd); - if (gd->post_log_word & post_list[j].testid) - post_log("PASSED\n"); - else { - post_log("FAILED\n"); - show_boot_progress (-31); - } - } - } -} - -static void post_bootmode_test_on(unsigned int last_test) -{ - unsigned long word = post_word_load(); - - word |= POST_POWERTEST; - - word |= (last_test & 0xFF) << 8; - - post_word_store(word); -} - -static void post_bootmode_test_off(void) -{ - unsigned long word = post_word_load(); - - word &= ~POST_POWERTEST; - - post_word_store(word); -} - -static void post_get_flags(int *test_flags) -{ - int flag[] = { POST_POWERON, POST_NORMAL, POST_SLOWTEST }; - char *var[] = { "post_poweron", "post_normal", "post_slowtest" }; - int varnum = sizeof(var) / sizeof(var[0]); - char list[128]; /* long enough for POST list */ - char *name; - char *s; - int last; - int i, j; - - for (j = 0; j < post_list_size; j++) { - test_flags[j] = post_list[j].flags; - } - - for (i = 0; i < varnum; i++) { - if (getenv_f(var[i], list, sizeof(list)) <= 0) - continue; - - for (j = 0; j < post_list_size; j++) { - test_flags[j] &= ~flag[i]; - } - - last = 0; - name = list; - while (!last) { - while (*name && *name == ' ') - name++; - if (*name == 0) - break; - s = name + 1; - while (*s && *s != ' ') - s++; - if (*s == 0) - last = 1; - else - *s = 0; - - for (j = 0; j < post_list_size; j++) { - if (strcmp(post_list[j].cmd, name) == 0) { - test_flags[j] |= flag[i]; - break; - } - } - - if (j == post_list_size) { - printf("No such test: %s\n", name); - } - - name = s + 1; - } - } - - for (j = 0; j < post_list_size; j++) { - if (test_flags[j] & POST_POWERON) { - test_flags[j] |= POST_SLOWTEST; - } - } -} - -static int post_run_single(struct post_test *test, - int test_flags, int flags, unsigned int i) -{ - if ((flags & test_flags & POST_ALWAYS) && - (flags & test_flags & POST_MEM)) { - WATCHDOG_RESET(); - - if (!(flags & POST_REBOOT)) { - if ((test_flags & POST_REBOOT) - && !(flags & POST_MANUAL)) { - post_bootmode_test_on(i); - } - - if (test_flags & POST_PREREL) - post_log_mark_start(test->testid); - else - post_log("POST %s ", test->cmd); - } - - if (test_flags & POST_PREREL) { - if ((*test->test) (flags) == 0) - post_log_mark_succ(test->testid); - } else { - if ((*test->test) (flags) != 0) { - post_log("FAILED\n"); - show_boot_progress (-32); - } else - post_log("PASSED\n"); - } - - if ((test_flags & POST_REBOOT) && !(flags & POST_MANUAL)) { - post_bootmode_test_off(); - } - - return 0; - } else { - return -1; - } -} - -int post_run(char *name, int flags) -{ - unsigned int i; - int test_flags[POST_MAX_NUMBER]; - - post_get_flags(test_flags); - - if (name == NULL) { - unsigned int last; - - if (post_bootmode_get(&last) & POST_POWERTEST) { - if (last < post_list_size && - (flags & test_flags[last] & POST_ALWAYS) && - (flags & test_flags[last] & POST_MEM)) { - - post_run_single(post_list + last, - test_flags[last], - flags | POST_REBOOT, last); - - for (i = last + 1; i < post_list_size; i++) { - post_run_single(post_list + i, - test_flags[i], - flags, i); - } - } - } else { - for (i = 0; i < post_list_size; i++) { - post_run_single(post_list + i, - test_flags[i], flags, i); - } - } - - return 0; - } else { - for (i = 0; i < post_list_size; i++) { - if (strcmp(post_list[i].cmd, name) == 0) - break; - } - - if (i < post_list_size) { - return post_run_single(post_list + i, - test_flags[i], flags, i); - } else { - return -1; - } - } -} - -static int post_info_single(struct post_test *test, int full) -{ - if (test->flags & POST_MANUAL) { - if (full) - printf("%s - %s\n" - " %s\n", test->cmd, test->name, test->desc); - else - printf(" %-15s - %s\n", test->cmd, test->name); - - return 0; - } else { - return -1; - } -} - -int post_info(char *name) -{ - unsigned int i; - - if (name == NULL) { - for (i = 0; i < post_list_size; i++) { - post_info_single(post_list + i, 0); - } - - return 0; - } else { - for (i = 0; i < post_list_size; i++) { - if (strcmp(post_list[i].cmd, name) == 0) - break; - } - - if (i < post_list_size) { - return post_info_single(post_list + i, 1); - } else { - return -1; - } - } -} - -int post_log(char *format, ...) -{ - va_list args; - uint i; - char printbuffer[CONFIG_SYS_PBSIZE]; - - va_start(args, format); - - /* For this to work, printbuffer must be larger than - * anything we ever want to print. - */ - i = vsprintf(printbuffer, format, args); - va_end(args); - -#ifdef CONFIG_LOGBUFFER - /* Send to the logbuffer */ - logbuff_log(printbuffer); -#else - /* Send to the stdout file */ - puts(printbuffer); -#endif - - return 0; -} - -void post_reloc(void) -{ - unsigned int i; - - /* - * We have to relocate the test table manually - */ - for (i = 0; i < post_list_size; i++) { - ulong addr; - struct post_test *test = post_list + i; - - if (test->name) { - addr = (ulong) (test->name) + gd->reloc_off; - test->name = (char *)addr; - } - - if (test->cmd) { - addr = (ulong) (test->cmd) + gd->reloc_off; - test->cmd = (char *)addr; - } - - if (test->desc) { - addr = (ulong) (test->desc) + gd->reloc_off; - test->desc = (char *)addr; - } - - if (test->test) { - addr = (ulong) (test->test) + gd->reloc_off; - test->test = (int (*)(int flags))addr; - } - - if (test->init_f) { - addr = (ulong) (test->init_f) + gd->reloc_off; - test->init_f = (int (*)(void))addr; - } - - if (test->reloc) { - addr = (ulong) (test->reloc) + gd->reloc_off; - test->reloc = (void (*)(void))addr; - - test->reloc(); - } - } -} - -/* - * Some tests (e.g. SYSMON) need the time when post_init_f started, - * but we cannot use get_timer() at this point. - * - * On PowerPC we implement it using the timebase register. - */ -unsigned long post_time_ms(unsigned long base) -{ - return (unsigned long)get_ticks() / (get_tbclk() / CONFIG_SYS_HZ) - base; -} diff --git a/arch/powerpc/cpu/mpc512x/common.c b/arch/powerpc/cpu/mpc512x/common.c deleted file mode 100644 index 180d323..0000000 --- a/arch/powerpc/cpu/mpc512x/common.c +++ /dev/null @@ -1,25 +0,0 @@ -#include <common.h> -#include <asm/io.h> - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -#if defined(CONFIG_SYS_POST_WORD_ADDR) -# define _POST_ADDR (CONFIG_SYS_POST_WORD_ADDR) -#else -#error echo "No POST word address defined" -#endif - -void post_word_store(ulong a) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - out_be32(save_addr, a); -} - -ulong post_word_load(void) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - return in_be32(save_addr); -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER */ diff --git a/arch/powerpc/cpu/mpc8260/commproc.c b/arch/powerpc/cpu/mpc8260/commproc.c index c522bc5..082957e 100644 --- a/arch/powerpc/cpu/mpc8260/commproc.c +++ b/arch/powerpc/cpu/mpc8260/commproc.c @@ -175,23 +175,3 @@ m8260_cpm_extcbrg(uint brg, uint rate, uint extclk, int pinsel) else *bp |= CPM_BRG_EXTC_CLK5_15; } - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - return *save_addr; -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/arch/powerpc/cpu/mpc85xx/commproc.c b/arch/powerpc/cpu/mpc85xx/commproc.c index f0fd1cb..292b723 100644 --- a/arch/powerpc/cpu/mpc85xx/commproc.c +++ b/arch/powerpc/cpu/mpc85xx/commproc.c @@ -183,23 +183,3 @@ m8560_cpm_extcbrg(uint brg, uint rate, uint extclk, int pinsel) else *bp |= CPM_BRG_EXTC_CLK5_15; } - -#ifdef CONFIG_POST - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR); - - return *save_addr; -} - -#endif /* CONFIG_POST */ diff --git a/arch/powerpc/cpu/mpc8xx/commproc.c b/arch/powerpc/cpu/mpc8xx/commproc.c index 2c85377..5fe01ff 100644 --- a/arch/powerpc/cpu/mpc8xx/commproc.c +++ b/arch/powerpc/cpu/mpc8xx/commproc.c @@ -83,23 +83,3 @@ uint dpram_base_align (uint align) return (gd->dp_alloc_base + mask) & ~mask; } #endif /* CONFIG_SYS_ALLOC_DPRAM */ - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile void *save_addr = - ((immap_t *) CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR; - - *(volatile ulong *) save_addr = a; -} - -ulong post_word_load (void) -{ - volatile void *save_addr = - ((immap_t *) CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR; - - return *(volatile ulong *) save_addr; -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/arch/powerpc/cpu/ppc4xx/Makefile b/arch/powerpc/cpu/ppc4xx/Makefile index c9c1a33..fa8d10c 100644 --- a/arch/powerpc/cpu/ppc4xx/Makefile +++ b/arch/powerpc/cpu/ppc4xx/Makefile @@ -45,7 +45,6 @@ COBJS += bedbug_405.o ifdef CONFIG_CMD_CHIP_CONFIG COBJS += cmd_chip_config.o endif -COBJS += commproc.o COBJS += cpu.o COBJS += cpu_init.o COBJS += denali_data_eye.o diff --git a/arch/powerpc/cpu/ppc4xx/commproc.c b/arch/powerpc/cpu/ppc4xx/commproc.c deleted file mode 100644 index 6bf95e6..0000000 --- a/arch/powerpc/cpu/ppc4xx/commproc.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - * - * - * Atapted for ppc4XX by Denis Peter - */ - -#include <common.h> -#include <commproc.h> -#include <asm/io.h> - -#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -#if defined(CONFIG_SYS_POST_WORD_ADDR) -# define _POST_ADDR ((CONFIG_SYS_OCM_DATA_ADDR) + (CONFIG_SYS_POST_WORD_ADDR)) -#elif defined(CONFIG_SYS_POST_ALT_WORD_ADDR) -# define _POST_ADDR (CONFIG_SYS_POST_ALT_WORD_ADDR) -#endif - -void post_word_store (ulong a) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - out_be32(save_addr, a); -} - -ulong post_word_load (void) -{ - volatile void *save_addr = (volatile void *)(_POST_ADDR); - - return in_be32(save_addr); -} - -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ diff --git a/board/barco/barco.c b/board/barco/barco.c index 6ce3480..263a288 100644 --- a/board/barco/barco.c +++ b/board/barco/barco.c @@ -342,12 +342,3 @@ int serial_tstc (void) { return 0; } - -unsigned long post_word_load (void) -{ - return 0l; -} -void post_word_store (unsigned long val) -{ - return; -} diff --git a/board/bc3450/bc3450.c b/board/bc3450/bc3450.c index 3117b5f..97fb5a4 100644 --- a/board/bc3450/bc3450.c +++ b/board/bc3450/bc3450.c @@ -290,26 +290,6 @@ int post_hotkeys_pressed(void) } #endif
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ - - #ifdef CONFIG_BOARD_EARLY_INIT_R int board_early_init_r (void) { diff --git a/board/bf537-stamp/Makefile b/board/bf537-stamp/Makefile index 4f8985b..47bf905 100644 --- a/board/bf537-stamp/Makefile +++ b/board/bf537-stamp/Makefile @@ -31,7 +31,7 @@ LIB = $(obj)lib$(BOARD).a
COBJS-y := $(BOARD).o COBJS-$(CONFIG_BFIN_IDE) += ide-cf.o -COBJS-$(CONFIG_POST) += post.o post-memory.o +COBJS-$(CONFIG_HAS_POST) += post.o post-memory.o
SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/bf537-stamp/post.c b/board/bf537-stamp/post.c index 4e844ba..c546ab6 100644 --- a/board/bf537-stamp/post.c +++ b/board/bf537-stamp/post.c @@ -13,8 +13,6 @@ #include <command.h> #include <asm/blackfin.h>
-#define POST_WORD_ADDR 0xFF903FFC - /* Using sw10-PF5 as the hotkey */ int post_hotkeys_pressed(void) { @@ -47,18 +45,6 @@ int post_hotkeys_pressed(void) } }
-void post_word_store(ulong a) -{ - volatile ulong *save_addr = (volatile ulong *)POST_WORD_ADDR; - *save_addr = a; -} - -ulong post_word_load(void) -{ - volatile ulong *save_addr = (volatile ulong *)POST_WORD_ADDR; - return *save_addr; -} - int uart_post_test(int flags) { return 0; diff --git a/board/cm5200/cm5200.c b/board/cm5200/cm5200.c index 5ebcd66..b25887b 100644 --- a/board/cm5200/cm5200.c +++ b/board/cm5200/cm5200.c @@ -323,22 +323,6 @@ int board_early_init_r(void) }
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) -void post_word_store(ulong a) -{ - vu_long *save_addr = (vu_long *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - *save_addr = a; -} - - -ulong post_word_load(void) -{ - vu_long *save_addr = (vu_long *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER */ - - #ifdef CONFIG_MISC_INIT_R int misc_init_r(void) { diff --git a/board/tqc/tqm5200/tqm5200.c b/board/tqc/tqm5200/tqm5200.c index d90bae8..263a2af 100644 --- a/board/tqc/tqm5200/tqm5200.c +++ b/board/tqc/tqm5200/tqm5200.c @@ -375,25 +375,6 @@ int post_hotkeys_pressed(void) } #endif
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) - -void post_word_store (ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - *save_addr = a; -} - -ulong post_word_load (void) -{ - volatile ulong *save_addr = - (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE); - - return *save_addr; -} -#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/ - #ifdef CONFIG_BOARD_EARLY_INIT_R int board_early_init_r (void) { diff --git a/board/xes/xpedite1000/xpedite1000.c b/board/xes/xpedite1000/xpedite1000.c index b4cbb2f..a3534d2 100644 --- a/board/xes/xpedite1000/xpedite1000.c +++ b/board/xes/xpedite1000/xpedite1000.c @@ -196,20 +196,4 @@ int post_hotkeys_pressed(void) { return ctrlc(); } - -void post_word_store(ulong a) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_POST_WORD_ADDR); - - *save_addr = a; -} - -ulong post_word_load(void) -{ - volatile ulong *save_addr = - (volatile ulong *)(CONFIG_SYS_POST_WORD_ADDR); - - return *save_addr; -} #endif diff --git a/include/common.h b/include/common.h index 6a79ec2..b7193e6 100644 --- a/include/common.h +++ b/include/common.h @@ -585,8 +585,6 @@ uint dpram_base(void); uint dpram_base_align(uint align); uint dpram_alloc(uint size); uint dpram_alloc_align(uint size,uint align); -void post_word_store (ulong); -ulong post_word_load (void); void bootcount_store (ulong); ulong bootcount_load (void); #define BOOTCOUNT_MAGIC 0xB001C041 @@ -727,6 +725,9 @@ int cpu_release(int nr, int argc, char * const argv[]);
#ifdef CONFIG_POST #define CONFIG_HAS_POST +#ifndef CONFIG_POST_ALT_LIST +#define CONFIG_POST_STD_LIST +#endif #endif
#ifdef CONFIG_INIT_CRITICAL diff --git a/include/configs/KAREF.h b/include/configs/KAREF.h index 49a7378..05f7254 100644 --- a/include/configs/KAREF.h +++ b/include/configs/KAREF.h @@ -82,8 +82,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Rsrv 256kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Rsrv 128kB for malloc */ diff --git a/include/configs/METROBOX.h b/include/configs/METROBOX.h index e7429dd..30a3035 100644 --- a/include/configs/METROBOX.h +++ b/include/configs/METROBOX.h @@ -144,8 +144,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Rsrv 256kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Rsrv 128kB for malloc */ diff --git a/include/configs/MIP405.h b/include/configs/MIP405.h index 7e6484e..ff9496b 100644 --- a/include/configs/MIP405.h +++ b/include/configs/MIP405.h @@ -305,10 +305,6 @@ /* reserve some memory for POST and BOOT limit info */ #define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 32)
-#ifdef CONFIG_POST /* reserve one word for POST Info */ -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) -#endif - #ifdef CONFIG_BOOTCOUNT_LIMIT /* reserve 2 word for bootcount limit */ #define CONFIG_SYS_BOOTCOUNT_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 12) #endif diff --git a/include/configs/PMC440.h b/include/configs/PMC440.h index 3c19f52..cc0ea7f 100644 --- a/include/configs/PMC440.h +++ b/include/configs/PMC440.h @@ -90,7 +90,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -373,7 +373,6 @@ CONFIG_SYS_POST_ETHER | \ CONFIG_SYS_POST_SPR)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */
diff --git a/include/configs/TB5200.h b/include/configs/TB5200.h index 6da18eb..7a6602c 100644 --- a/include/configs/TB5200.h +++ b/include/configs/TB5200.h @@ -126,7 +126,7 @@ #endif
#ifdef CONFIG_POST -#define CONFIG__CMD_DIAG +#define CONFIG_CMD_DIAG #endif
diff --git a/include/configs/XPEDITE1000.h b/include/configs/XPEDITE1000.h index cf39aea..dfeaf74 100644 --- a/include/configs/XPEDITE1000.h +++ b/include/configs/XPEDITE1000.h @@ -103,8 +103,7 @@ extern void out32(unsigned int, unsigned long); #define CONFIG_SYS_INIT_RAM_END 0x2000 /* End of used area in RAM */ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (512 * 1024) /* Reserve 512 KB for Mon */ #define CONFIG_SYS_MALLOC_LEN (1024 * 1024) /* Reserved for malloc */ diff --git a/include/configs/alpr.h b/include/configs/alpr.h index ee0c14d..326b324 100644 --- a/include/configs/alpr.h +++ b/include/configs/alpr.h @@ -66,8 +66,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (128 * 1024) /* Reserve 128 kB for malloc*/ diff --git a/include/configs/barco.h b/include/configs/barco.h index e00f84a..b1af701 100644 --- a/include/configs/barco.h +++ b/include/configs/barco.h @@ -136,6 +136,8 @@ #define CONFIG_LOGBUFFER #ifdef CONFIG_LOGBUFFER #define CONFIG_SYS_STDOUT_ADDR 0x1FFC000 +#define CONFIG_SYS_POST_WORD_ADDR \ + (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_MAX_RAM_SIZE - 4) #else #define CONFIG_SYS_STDOUT_ADDR 0x2B9000 #endif diff --git a/include/configs/bf537-stamp.h b/include/configs/bf537-stamp.h index 96704d7..fc9784e 100644 --- a/include/configs/bf537-stamp.h +++ b/include/configs/bf537-stamp.h @@ -265,6 +265,7 @@ #define FLASH_START_POST_BLOCK 11 /* Should > = 11 */ #define FLASH_END_POST_BLOCK 71 /* Should < = 71 */ #endif +#define CONFIG_SYS_POST_WORD_ADDR 0xFF903FFC
/* These are for board tests */ #if 0 diff --git a/include/configs/bfin_adi_common.h b/include/configs/bfin_adi_common.h index 4476268..91dcacc 100644 --- a/include/configs/bfin_adi_common.h +++ b/include/configs/bfin_adi_common.h @@ -50,6 +50,7 @@ # endif # ifdef CONFIG_POST # define CONFIG_CMD_DIAG +# define CONFIG_POST_ALT_LIST # endif # ifdef CONFIG_RTC_BFIN # define CONFIG_CMD_DATE diff --git a/include/configs/hcu4.h b/include/configs/hcu4.h index 369b368..26992e7 100644 --- a/include/configs/hcu4.h +++ b/include/configs/hcu4.h @@ -72,7 +72,7 @@ #define CONFIG_SYS_INIT_RAM_END CONFIG_SYS_OCM_DATA_SIZE #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -192,7 +192,6 @@ CONFIG_SYS_POST_SPR)
#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #undef CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x00800000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */ diff --git a/include/configs/hcu5.h b/include/configs/hcu5.h index 26d2d0c..5adcc0f 100644 --- a/include/configs/hcu5.h +++ b/include/configs/hcu5.h @@ -86,7 +86,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -212,9 +212,8 @@ CONFIG_SYS_POST_FPU | \ CONFIG_SYS_POST_ETHER | \ CONFIG_SYS_POST_SPR) -#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE}
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) +#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */
diff --git a/include/configs/hmi1001.h b/include/configs/hmi1001.h index f9cdcbc..d40b7a9 100644 --- a/include/configs/hmi1001.h +++ b/include/configs/hmi1001.h @@ -190,14 +190,16 @@
/* Use ON-Chip SRAM until RAM will be available */ #define CONFIG_SYS_INIT_RAM_ADDR MPC5XXX_SRAM -#ifdef CONFIG_POST + /* preserve space for the post_word at end of on-chip SRAM */ +#define MPC5XXX_SRAM_POST_SIZE (MPC5XXX_SRAM_SIZE - 4) + +#ifdef CONFIG_POST #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_POST_SIZE #else #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_SIZE #endif
- #define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET diff --git a/include/configs/icon.h b/include/configs/icon.h index 7a4e60c..eb419eb 100644 --- a/include/configs/icon.h +++ b/include/configs/icon.h @@ -100,8 +100,7 @@
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - \ CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port diff --git a/include/configs/inka4x0.h b/include/configs/inka4x0.h index c5b1565..69365e6 100644 --- a/include/configs/inka4x0.h +++ b/include/configs/inka4x0.h @@ -200,14 +200,16 @@
/* Use ON-Chip SRAM until RAM will be available */ #define CONFIG_SYS_INIT_RAM_ADDR MPC5XXX_SRAM -#ifdef CONFIG_POST + /* preserve space for the post_word at end of on-chip SRAM */ +#define MPC5XXX_SRAM_POST_SIZE (MPC5XXX_SRAM_SIZE - 4) + +#ifdef CONFIG_POST #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_POST_SIZE #else #define CONFIG_SYS_INIT_RAM_END MPC5XXX_SRAM_SIZE #endif
- #define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET diff --git a/include/configs/katmai.h b/include/configs/katmai.h index 2a7ab8d..5d14a10 100644 --- a/include/configs/katmai.h +++ b/include/configs/katmai.h @@ -99,8 +99,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/kilauea.h b/include/configs/kilauea.h index 48dc946..8f813dd 100644 --- a/include/configs/kilauea.h +++ b/include/configs/kilauea.h @@ -103,11 +103,10 @@
#if defined(CONFIG_SYS_INIT_DCACHE_CS) # define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -# define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) #else # define CONFIG_SYS_INIT_EXTRA_SIZE 16 # define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_EXTRA_SIZE) -# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) # define CONFIG_SYS_OCM_DATA_ADDR CONFIG_SYS_INIT_RAM_ADDR #endif /* defined(CONFIG_SYS_INIT_DCACHE_CS) */
diff --git a/include/configs/korat.h b/include/configs/korat.h index f95df68..23da72f 100644 --- a/include/configs/korat.h +++ b/include/configs/korat.h @@ -88,7 +88,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port @@ -306,7 +306,6 @@ CONFIG_SYS_POST_SPR | \ CONFIG_SYS_POST_UART)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0xC8000000 /* free virtual address */
diff --git a/include/configs/lwmon5.h b/include/configs/lwmon5.h index 6461124..295a18e 100644 --- a/include/configs/lwmon5.h +++ b/include/configs/lwmon5.h @@ -84,7 +84,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data*/ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -#define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) /* unused GPT0 COMP reg */ #define CONFIG_SYS_MEM_TOP_HIDE (4 << 10) /* don't use last 4kbytes */ /* 440EPx errata CHIP 11 */ diff --git a/include/configs/makalu.h b/include/configs/makalu.h index 52339f9..f24d499 100644 --- a/include/configs/makalu.h +++ b/include/configs/makalu.h @@ -101,11 +101,10 @@
#if defined(CONFIG_SYS_INIT_DCACHE_CS) # define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET -# define CONFIG_SYS_POST_ALT_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) +# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6) #else # define CONFIG_SYS_INIT_EXTRA_SIZE 16 # define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_EXTRA_SIZE) -# define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) # define CONFIG_SYS_OCM_DATA_ADDR CONFIG_SYS_INIT_RAM_ADDR #endif /* defined(CONFIG_SYS_INIT_DCACHE_CS) */
diff --git a/include/configs/mcu25.h b/include/configs/mcu25.h index 5f31198..50bed10 100644 --- a/include/configs/mcu25.h +++ b/include/configs/mcu25.h @@ -72,7 +72,7 @@ #define CONFIG_SYS_INIT_RAM_END CONFIG_SYS_OCM_DATA_SIZE #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port @@ -200,7 +200,6 @@ CONFIG_SYS_POST_SPR)
#define CONFIG_SYS_POST_UART_TABLE {UART0_BASE} -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #undef CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x00800000 /* free virtual address */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */ diff --git a/include/configs/mpc5121-common.h b/include/configs/mpc5121-common.h index 96fab20..afae1ab 100644 --- a/include/configs/mpc5121-common.h +++ b/include/configs/mpc5121-common.h @@ -30,8 +30,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 0x100 /* num bytes of initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - \ CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest region */ #define CONFIG_SYS_MEMTEST_END 0x00400000 diff --git a/include/configs/ocotea.h b/include/configs/ocotea.h index 2e809b0..9cb66b7 100644 --- a/include/configs/ocotea.h +++ b/include/configs/ocotea.h @@ -75,8 +75,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/redwood.h b/include/configs/redwood.h index 4b744a7..87adbf8 100644 --- a/include/configs/redwood.h +++ b/include/configs/redwood.h @@ -87,8 +87,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * DDR SDRAM diff --git a/include/configs/sequoia.h b/include/configs/sequoia.h index 568d9fc..ee4391f 100644 --- a/include/configs/sequoia.h +++ b/include/configs/sequoia.h @@ -100,7 +100,7 @@ #define CONFIG_SYS_INIT_RAM_END (4 << 10) #define CONFIG_SYS_GBL_DATA_SIZE 256 /* num bytes initial data */ #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/* * Serial Port @@ -357,7 +357,6 @@ CONFIG_SYS_POST_SPR | \ CONFIG_SYS_POST_UART)
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #define CONFIG_LOGBUFFER #define CONFIG_SYS_POST_CACHE_ADDR 0x7fff0000 /* free virtual address */
diff --git a/include/configs/taishan.h b/include/configs/taishan.h index 6423fd7..394dd8d 100644 --- a/include/configs/taishan.h +++ b/include/configs/taishan.h @@ -71,8 +71,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data*/
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/yucca.h b/include/configs/yucca.h index 0b4dfb8..798c75a 100644 --- a/include/configs/yucca.h +++ b/include/configs/yucca.h @@ -100,8 +100,7 @@ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* num bytes initial data */
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
/*----------------------------------------------------------------------- * Serial Port diff --git a/include/configs/zeus.h b/include/configs/zeus.h index 3b2aede..29ada9e 100644 --- a/include/configs/zeus.h +++ b/include/configs/zeus.h @@ -255,9 +255,10 @@ #define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 16)
/* extra data in OCM */ -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 4) -#define CONFIG_SYS_POST_MAGIC (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 8) -#define CONFIG_SYS_POST_VAL (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 12) +#define CONFIG_SYS_POST_MAGIC \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 8) +#define CONFIG_SYS_POST_VAL \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 12)
/*----------------------------------------------------------------------- * External Bus Controller (EBC) Setup diff --git a/include/post.h b/include/post.h index 3da959d..625da55 100644 --- a/include/post.h +++ b/include/post.h @@ -2,6 +2,10 @@ * (C) Copyright 2002 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * + * (C) Copyright 2010 + * Michael Zaidman, Kodak, michael.zaidman@kodak.com + * post_word_{load|store} cleanup. + * * See file CREDITS for list of people who contributed to this * project. * @@ -25,8 +29,59 @@
#ifndef __ASSEMBLY__ #include <common.h> +#include <asm/io.h> + +#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) + +#ifdef CONFIG_SYS_POST_WORD_ADDR +#define _POST_WORD_ADDR CONFIG_SYS_POST_WORD_ADDR +#else + +#ifdef CONFIG_MPC5xxx +#define _POST_WORD_ADDR (MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE) + +#elif defined(CONFIG_MPC512X) +#define _POST_WORD_ADDR \ + (CONFIG_SYS_SRAM_BASE + CONFIG_SYS_GBL_DATA_OFFSET - 0x4) + +#elif defined(CONFIG_8xx) +#define _POST_WORD_ADDR \ + (((immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_dpmem + CPM_POST_WORD_ADDR) + +#elif defined(CONFIG_MPC8260) +#include <asm/cpm_8260.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined(CONFIG_MPC8360) +#include <asm/immap_qe.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined (CONFIG_MPC85xx) +#include <asm/cpm_85xx.h> +#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR) + +#elif defined (CONFIG_4xx) +#define _POST_WORD_ADDR \ + (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 0x4) #endif
+#ifndef _POST_WORD_ADDR +#error "_POST_WORD_ADDR currently not implemented for this platform!" +#endif +#endif /* CONFIG_SYS_POST_WORD_ADDR */ + +static inline ulong post_word_load (void) +{ + return in_le32((volatile void *)(_POST_WORD_ADDR)); +} + +static inline void post_word_store (ulong value) +{ + out_le32((volatile void *)(_POST_WORD_ADDR), value); +} +#endif /* defined (CONFIG_POST) || defined(CONFIG_LOGBUFFER) */ +#endif /* __ASSEMBLY__ */ + #ifdef CONFIG_POST
#define POST_POWERON 0x01 /* test runs on power-on booting */ @@ -40,7 +95,7 @@ #define POST_RAM 0x0200 /* test runs in RAM */ #define POST_MANUAL 0x0400 /* test runs on diag command */ #define POST_REBOOT 0x0800 /* test may cause rebooting */ -#define POST_PREREL 0x1000 /* test runs before relocation */ +#define POST_PREREL 0x1000 /* test runs before relocation */
#define POST_CRITICAL 0x2000 /* Use failbootcmd if test failed */ #define POST_STOP 0x4000 /* Interrupt POST sequence on fail */ diff --git a/post/Makefile b/post/Makefile index 769e9c6..169d126 100644 --- a/post/Makefile +++ b/post/Makefile @@ -26,7 +26,8 @@ include $(OBJTREE)/include/autoconf.mk
LIB = libpost.a GPLIB-$(CONFIG_HAS_POST) += libgenpost.a -COBJS-$(CONFIG_HAS_POST) += post.o tests.o +COBJS-$(CONFIG_HAS_POST) += post.o +COBJS-$(CONFIG_POST_STD_LIST) += tests.o
SPLIB-$(CONFIG_HAS_POST) = drivers/libpostdrivers.a SPLIB-$(CONFIG_HAS_POST) += $(shell if [ -d lib_$(ARCH) ]; then echo \

Dear Michael Zaidman,
In message d520c6ef298416a03789ebfa4e05e257b5331693.1284965175.git.michael.zaidman@gmail.com you wrote:
- Revives POST for blackfin arch;
- Removes redundant code: arch/blackfin/lib/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c
- fixes up the post_word_{load|store} usage.
Signed-off-by: Michael Zaidman michael.zaidman@gmail.com Acked-by: Detlev Zundel dzu@denx.de Tested-by: Anatolij Gustschin agust@denx.de
List of the maintainers of the affected by patch boards: Cc: Stephan Linz linz@li-pro.net Cc: Denis Peter d.peter@mpl.ch Cc: Matthias Fuchs matthias.fuchs@esd-electronics.com Cc: Peter Tyser ptyser@xes-inc.com Cc: Stefan Roese sr@denx.de Cc: Mike Frysinger vapier@gentoo.org Cc: Niklaus Giger niklaus.giger@netstal.com Cc: Larry Johnson lrj@acm.org Cc: Feng Kan fkan@amcc.com
arch/blackfin/lib/Makefile | 2 +- arch/blackfin/lib/board.c | 1 - arch/blackfin/lib/post.c | 421 ----------------------------------- arch/powerpc/cpu/mpc512x/common.c | 25 -- arch/powerpc/cpu/mpc8260/commproc.c | 20 -- arch/powerpc/cpu/mpc85xx/commproc.c | 20 -- arch/powerpc/cpu/mpc8xx/commproc.c | 20 -- arch/powerpc/cpu/ppc4xx/Makefile | 1 - arch/powerpc/cpu/ppc4xx/commproc.c | 53 ----- board/barco/barco.c | 9 - board/bc3450/bc3450.c | 20 -- board/bf537-stamp/Makefile | 2 +- board/bf537-stamp/post.c | 14 -- board/cm5200/cm5200.c | 16 -- board/tqc/tqm5200/tqm5200.c | 19 -- board/xes/xpedite1000/xpedite1000.c | 16 -- include/common.h | 5 +- include/configs/KAREF.h | 3 +- include/configs/METROBOX.h | 3 +- include/configs/MIP405.h | 4 - include/configs/PMC440.h | 3 +- include/configs/TB5200.h | 2 +- include/configs/XPEDITE1000.h | 3 +- include/configs/alpr.h | 3 +- include/configs/barco.h | 2 + include/configs/bf537-stamp.h | 1 + include/configs/bfin_adi_common.h | 1 + include/configs/hcu4.h | 3 +- include/configs/hcu5.h | 5 +- include/configs/hmi1001.h | 6 +- include/configs/icon.h | 3 +- include/configs/inka4x0.h | 6 +- include/configs/katmai.h | 3 +- include/configs/kilauea.h | 3 +- include/configs/korat.h | 3 +- include/configs/lwmon5.h | 2 +- include/configs/makalu.h | 3 +- include/configs/mcu25.h | 3 +- include/configs/mpc5121-common.h | 3 +- include/configs/ocotea.h | 3 +- include/configs/redwood.h | 3 +- include/configs/sequoia.h | 3 +- include/configs/taishan.h | 3 +- include/configs/yucca.h | 3 +- include/configs/zeus.h | 7 +- include/post.h | 57 +++++- post/Makefile | 3 +- 47 files changed, 101 insertions(+), 713 deletions(-) delete mode 100644 arch/blackfin/lib/post.c delete mode 100644 arch/powerpc/cpu/mpc512x/common.c delete mode 100644 arch/powerpc/cpu/ppc4xx/commproc.c
Applied, thanks.
Best regards,
Wolfgang Denk

Dear Michael Zaidman,
In message d520c6ef298416a03789ebfa4e05e257b5331693.1284965175.git.michael.zaidman@gmail.com you wrote:
- Revives POST for blackfin arch;
- Removes redundant code: arch/blackfin/lib/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c
- fixes up the post_word_{load|store} usage.
Unfortunately it turns out that the code now contains a few nasty bugs...
...
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
This is a seriously broken design, as it sneaks in storage for a variable in a storage location where it is not expected.
The "official" layout is that we have CONFIG_SYS_INIT_RAM_BYTES available; the top CONFIG_SYS_GBL_DATA_SIZE bytes (now GENERATED_GBL_DATA_SIZE) are used for global data, and the part below is used for the stack. No other room is reserved there.
Shifting down the stack by 4 bytes as it's done here causes that the stack is not correctly aligned any more, which may cause really nasty subsequent errors.
But it's even worse.
diff --git a/include/configs/mpc5121-common.h b/include/configs/mpc5121-common.h index 96fab20..afae1ab 100644 --- a/include/configs/mpc5121-common.h +++ b/include/configs/mpc5121-common.h
...
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
There the same is done, but what happens actually?
Have a look how the stack setup gets implemented in "arch/powerpc/cpu/mpc512x/start.S":
... 244 in_flash: 245 lis r1, (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)@h 246 ori r1, r1, (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)@l 247 248 li r0, 0 /* Make room for stack frame header and */ 249 stwu r0, -4(r1) /* clear final stack frame so that */ 250 stwu r0, -4(r1) /* stack backtraces terminate cleanly */ ...
As you can see, the code does not use CONFIG_SYS_INIT_SP_OFFSET at all; instead it performs a calculation which should be redundant, but in the current code it means that the location of the POST_WORD is right in the initial stack.
I did not check if the code for other processors has similar issues.
"Reserving" private storage like that is bad, as other involved parties probably have no knowledge of such a private reservation.
Why do we not simply reserve a word in the global data structure instead?
This bug needs pretty urgent fixing.
Best regards,
Wolfgang Denk

Dear Michael,
Ping!
In message 20101026210959.518031365D8@gemini.denx.de I wrote:
Dear Michael Zaidman,
In message d520c6ef298416a03789ebfa4e05e257b5331693.1284965175.git.michael.zaidman@gmail.com you wrote:
- Revives POST for blackfin arch;
- Removes redundant code: arch/blackfin/lib/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c
- fixes up the post_word_{load|store} usage.
Unfortunately it turns out that the code now contains a few nasty bugs...
...
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
This is a seriously broken design, as it sneaks in storage for a variable in a storage location where it is not expected.
The "official" layout is that we have CONFIG_SYS_INIT_RAM_BYTES available; the top CONFIG_SYS_GBL_DATA_SIZE bytes (now GENERATED_GBL_DATA_SIZE) are used for global data, and the part below is used for the stack. No other room is reserved there.
Shifting down the stack by 4 bytes as it's done here causes that the stack is not correctly aligned any more, which may cause really nasty subsequent errors.
But it's even worse.
diff --git a/include/configs/mpc5121-common.h b/include/configs/mpc5121-common.h index 96fab20..afae1ab 100644 --- a/include/configs/mpc5121-common.h +++ b/include/configs/mpc5121-common.h
...
-#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
There the same is done, but what happens actually?
Have a look how the stack setup gets implemented in "arch/powerpc/cpu/mpc512x/start.S":
... 244 in_flash: 245 lis r1, (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)@h 246 ori r1, r1, (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)@l 247 248 li r0, 0 /* Make room for stack frame header and */ 249 stwu r0, -4(r1) /* clear final stack frame so that */ 250 stwu r0, -4(r1) /* stack backtraces terminate cleanly */ ...
As you can see, the code does not use CONFIG_SYS_INIT_SP_OFFSET at all; instead it performs a calculation which should be redundant, but in the current code it means that the location of the POST_WORD is right in the initial stack.
I did not check if the code for other processors has similar issues.
"Reserving" private storage like that is bad, as other involved parties probably have no knowledge of such a private reservation.
Why do we not simply reserve a word in the global data structure instead?
This bug needs pretty urgent fixing.
Best regards,
Wolfgang Denk
Viele Grüße,
Wolfgang Denk

Dear Wolfgang,
Sorry for delayed response, I did not follow the u-boot list for few weeks an missed your e-mails somehow. Please see my comments below.
On Tue, Oct 26, 2010 at 11:09 PM, Wolfgang Denk wd@denx.de wrote:
Dear Michael Zaidman,
In message d520c6ef298416a03789ebfa4e05e257b5331693.1284965175.git.michael.zaidman@gmail.com you wrote:
- Revives POST for blackfin arch;
- Removes redundant code:
arch/blackfin/lib/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c
- fixes up the post_word_{load|store} usage.
Unfortunately it turns out that the code now contains a few nasty bugs...
Thanks for catching this, I expected a feedback due to a huge number of boards and architectures the patch has touched...
...
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE) -#define CONFIG_SYS_POST_WORD_ADDR (CONFIG_SYS_GBL_DATA_OFFSET - 0x4) -#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_POST_WORD_ADDR +#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
This is a seriously broken design, as it sneaks in storage for a variable in a storage location where it is not expected.
There were a number of boards implemented this design (alpr, karef, katmai, metrobox, ocotea, redwood, taishan, xpedite1000, yucca, etc...) I just grouped their definitions in a single place. But, you are right, it should be fixed.
But it's even worse.
244 in_flash: 245 lis r1, (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)@h 246 ori r1, r1, (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)@l 247 248 li r0, 0 /* Make room for stack frame header and */ 249 stwu r0, -4(r1) /* clear final stack frame so that */ 250 stwu r0, -4(r1) /* stack backtraces terminate cleanly */ ...
As you can see, the code does not use CONFIG_SYS_INIT_SP_OFFSET at all; instead it performs a calculation which should be redundant, but in the current code it means that the location of the POST_WORD is right in the initial stack.
This code should use the CONFIG_SYS_INIT_SP_OFFSET. This should be fixed regardless of the POST_WORD location. I figured out that there a number of architectures that implement this redundancy.
Why do we not simply reserve a word in the global data structure instead?
I guess, because the global data structure is cleared in the cpu_init_f() upon startup? memset ((void *) gd, 0, sizeof (gd_t));
We can prevent part or single field of the gd structure from to be cleared. Does this make sense to you?
Regards, Michael

Dear Wolfgang,
On Sun, Nov 21, 2010 at 2:34 PM, Michael Zaidman michael.zaidman@gmail.com wrote: ...
On Tue, Oct 26, 2010 at 11:09 PM, Wolfgang Denk wd@denx.de wrote:
...
Why do we not simply reserve a word in the global data structure instead?
Please correct me if I am wrong, but the global data structure is destined to keep its data integrity while switching from flash to RAM. For this purpose, it is temporary located in the data cache (for those architectures that do not have static ram on chip) which is available from very beginning before RAM controller is initialized, afterwards it is moved into RAM. The POST_WORD is destined for different purpose - to preserve the data while passing through the watchdog reset and this is the reason why it was placed into some kind of on chip memory such as one of unused locations of the PowerQUICC dual port RAM for mpc8xx/mpc8xxx architectures. In order to achieve the same effect with data cache the desired data should be locked in the cache prior the reset and unlocked afterwards. The data cache reaction on the SW reset is architecture dependent and even if it is possible, that is not obvious, not sure it worth the effort. For example, any kind of mpc83xx reset will cause hard reseting of e300 core which in turn will invalidate caches.
Regards, Michael

On Sun, 9 May 2010 18:27:10 +0300 Michael Zaidman michael.zaidman@gmail.com wrote:
Combine previously submitted POST cleanup patch series into single patch. Fix plain POST support introduced recently for mpc812x arch.
- Revives POST for blackfin arch;
- Removes redundant code: arch/blackfin/lib/post.c board/ssv/common/post.c arch/powerpc/cpu/ppc4xx/commproc.c arch/powerpc/cpu/mpc512x/common.c
- fixes up the post_word_{load|store} usage;
mpc512x related changes are OK. I tested them on mpc5121 based pdm360ng board. Thanks again for this work! For mpc5121 part you can add Tested-by: Anatolij Gustschin agust@denx.de
Best regards, Anatolij

On Mon, May 10, 2010 at 2:51 PM, Anatolij Gustschin agust@denx.de wrote: ...
mpc512x related changes are OK. I tested them on mpc5121 based pdm360ng board. Thanks again for this work! For mpc5121 part you can add Tested-by: Anatolij Gustschin agust@denx.de
Ok, thanks for testing. Michael
participants (4)
-
Anatolij Gustschin
-
Detlev Zundel
-
Michael Zaidman
-
Wolfgang Denk