Enable CODEC POST with CFG_POST_CODEC rather than with CFG_POST_DSP.
PATCH 1/1 Enable CODEC POST with CFG_POST_CODEC rather than with CFG_POST_DSP.
From: Yuri Tikhonov <[email protected]>
--- post/tests.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
post/tests.c +1 -1
@@ -225,7 +225,7 @@ struct post_test post_list[] = CFG_POST_DSP },#endif -#if CONFIG_POST &CFG_POST_DSP +#if CONFIG_POST &CFG_POST_CODEC {"CODEC test" , "codec",
Signature · 1 line
1.5.4.2
PATCH 1/1 The patch adds new POST tests for the Lwmon5 board.
From: Yuri Tikhonov <[email protected]>
* External Watchdog test;
* dsPIC tests;
* FPGA test;
* GDC test;
* Sysmon tests.
--- board/lwmon5/lwmon5.c | 19 +++ include/configs/lwmon5.h | 92 ++++++++++++++- include/post.h | 5 + include/ppc440.h | 3 + post/board/lwmon5/Makefile | 28 +++++ post/board/lwmon5/dsp.c | 58 +++++++++ post/board/lwmon5/dspic.c | 109 +++++++++++++++++ post/board/lwmon5/fpga.c | 104 ++++++++++++++++ post/board/lwmon5/gdc.c | 94 +++++++++++++++ post/board/lwmon5/sysmon.c | 265 ++++++++++++++++++++++++++++++++++++++++++ post/board/lwmon5/watchdog.c | 132 +++++++++++++++++++++ post/tests.c | 26 ++++ 12 files changed, 931 insertions(+), 4 deletions(-) create mode 100644 post/board/lwmon5/Makefile create mode 100644 post/board/lwmon5/dsp.c create mode 100644 post/board/lwmon5/dspic.c create mode 100644 post/board/lwmon5/fpga.c create mode 100644 post/board/lwmon5/gdc.c create mode 100644 post/board/lwmon5/sysmon.c create mode 100644 post/board/lwmon5/watchdog.c
board/lwmon5/lwmon5.c +19 -0
@@ -96,6 +96,25 @@ int board_early_init_f(void)gpio_write_bit (CFG_GPIO_FLASH_WP ,1 ); +#if CONFIG_POST &CFG_POST_BSPEC1 +gpio_write_bit (CFG_GPIO_HIGHSIDE ,1 ); + + reg =0 ;/* reuse as counter */ +out_be32 ((void *)CFG_DSPIC_TEST_ADDR , +in_be32 ((void *)CFG_DSPIC_TEST_ADDR ) + & ~CFG_DSPIC_TEST_MASK ); +while (!gpio_read_in_bit (CFG_GPIO_DSPIC_READY ) && reg++ <1000 ) { +udelay (1000 ); + } +gpio_write_bit (CFG_GPIO_HIGHSIDE ,0 ); +if (gpio_read_in_bit (CFG_GPIO_DSPIC_READY )) { +/* set "boot error" flag */ +out_be32 ((void *)CFG_DSPIC_TEST_ADDR , +in_be32 ((void *)CFG_DSPIC_TEST_ADDR ) | +CFG_DSPIC_TEST_MASK ); + } +#endif +/* * Reset PHY's: * The PHY's need a 2nd reset pulse, since the MDIO address is latched
include/configs/lwmon5.h +88 -4
126 lines not on this page · raw message
include/post.h +5 -0
@@ -93,6 +93,11 @@ extern int post_hotkeys_pressed(void);#define CFG_POST_CODEC 0x00002000#define CFG_POST_FPU 0x00004000#define CFG_POST_ECC 0x00008000 +#define CFG_POST_BSPEC1 0x00010000 +#define CFG_POST_BSPEC2 0x00020000 +#define CFG_POST_BSPEC3 0x00040000 +#define CFG_POST_BSPEC4 0x00080000 +#define CFG_POST_BSPEC5 0x00100000#endif /* CONFIG_POST */
include/ppc440.h +3 -0
@@ -1431,6 +1431,9 @@#define SDR0_MFR_PKT_REJ_POL 0x00200000/* Packet Reject Polarity */ #define GPT0_COMP6 0x00000098 +#define GPT0_COMP5 0x00000094 +#define GPT0_COMP4 0x00000090 +#define GPT0_COMP3 0x0000008C#if defined(CONFIG_440EPX ) || defined(CONFIG_440GRX )#define SDR0_USB2D0CR 0x0320
post/board/lwmon5/Makefile new file +28 -0
@@ -0,0 +1,28 @@ +# +# (C) Copyright 2008 Dmitry Rakhchev, EmCraft Systems, rda at emcraft.com +# +# Developed for DENX Software Engineering GmbH +# +# 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 + +LIB = libpostlwmon5.a + +COBJS = sysmon.o watchdog.o dspic.o fpga.o dsp.o gdc.o + +include $(TOPDIR)/post/rules.mk
post/board/lwmon5/dsp.c new file +58 -0
58 lines not on this page · raw message
post/board/lwmon5/dspic.c new file +109 -0
109 lines not on this page · raw message
post/board/lwmon5/fpga.c new file +104 -0
104 lines not on this page · raw message
post/board/lwmon5/gdc.c new file +94 -0
94 lines not on this page · raw message
post/board/lwmon5/sysmon.c new file +265 -0
265 lines not on this page · raw message
post/board/lwmon5/watchdog.c new file +132 -0
132 lines not on this page · raw message
post/tests.c +26 -0
@@ -48,6 +48,13 @@ extern int dsp_post_test (int flags);extern int codec_post_test (int flags);extern int ecc_post_test (int flags); +extern int dspic_init_post_test (int flags); +extern int dspic_post_test (int flags); +extern int gdc_post_test (int flags); +extern int fpga_post_test (int flags); +extern int lwmon5_watchdog_post_test (int flags); +extern int sysmon1_post_test (int flags); +extern int sysmon_init_f (void );extern void sysmon_reloc (void );
@@ -68,6 +75,9 @@ struct post_test post_list[] = },#endif #if CONFIG_POST & CFG_POST_WATCHDOG +#if defined(CONFIG_POST_WATCHDOG) + CONFIG_POST_WATCHDOG, +#else { "Watchdog timer test", "watchdog",
@@ -79,6 +89,7 @@ struct post_test post_list[] = CFG_POST_WATCHDOG },#endif +#endif #if CONFIG_POST &CFG_POST_I2C { "I2C test",
@@ -249,6 +260,21 @@ struct post_test post_list[] = CFG_POST_ECC },#endif +#if CONFIG_POST &CFG_POST_BSPEC1 + CONFIG_POST_BSPEC1, +#endif +#if CONFIG_POST &CFG_POST_BSPEC2 + CONFIG_POST_BSPEC2, +#endif +#if CONFIG_POST &CFG_POST_BSPEC3 + CONFIG_POST_BSPEC3, +#endif +#if CONFIG_POST &CFG_POST_BSPEC4 + CONFIG_POST_BSPEC4, +#endif +#if CONFIG_POST &CFG_POST_BSPEC4 + CONFIG_POST_BSPEC5, +#endif };unsigned int post_list_size =sizeof (post_list) /sizeof (struct post_test );
Signature · 1 line
1.5.4.2
PATCH 1/1 The patch introduces the CRITICAL feature of POST tests. If the test
From: Yuri Tikhonov <[email protected]>
--- common/main.c | 8 +++++++- include/asm-arm/global_data.h | 1 + include/asm-avr32/global_data.h | 1 + include/asm-blackfin/global_data.h | 1 + include/asm-i386/global_data.h | 1 + include/asm-m68k/global_data.h | 1 + include/asm-microblaze/global_data.h | 1 + include/asm-mips/global_data.h | 1 + include/asm-nios/global_data.h | 1 + include/asm-nios2/global_data.h | 1 + include/asm-ppc/global_data.h | 1 + include/asm-sh/global_data.h | 1 + include/post.h | 4 ++++ post/post.c | 18 +++++++++++++++--- 14 files changed, 37 insertions(+), 4 deletions(-)
common/main.c +7 -1
@@ -40,7 +40,7 @@#include <post.h> -#ifdef CONFIG_SILENT_CONSOLE +#if defined(CONFIG_SILENT_CONSOLE ) || defined(CONFIG_POST )DECLARE_GLOBAL_DATA_PTR ;#endif
@@ -369,6 +369,12 @@ void main_loop (void)init_cmd_timeout ();# endif /* CONFIG_BOOT_RETRY_TIME */ +#ifdef CONFIG_POST +if (gd->flags &GD_FLG_POSTFAIL ) { + s =getenv ("failbootcmd" ); + } + else +#endif /* CONFIG_POST */ #ifdef CONFIG_BOOTCOUNT_LIMIT if (bootlimit && (bootcount > bootlimit)) { printf ("Warning: Bootlimit (%u) exceeded. Using altbootcmd.\n",
include/asm-arm/global_data.h +1 -0
@@ -60,6 +60,7 @@ typedef struct global_data {#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")
include/asm-avr32/global_data.h +1 -0
@@ -51,6 +51,7 @@ typedef struct global_data {#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm("r5")
include/asm-blackfin/global_data.h +1 -0
@@ -61,6 +61,7 @@ typedef struct global_data {#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ #define DECLARE_GLOBAL_DATA_PTR register gd_t * volatile gd asm ("P5")
include/asm-i386/global_data.h +1 -0
@@ -54,6 +54,7 @@ typedef struct {#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ extern gd_t *global_data;
include/asm-m68k/global_data.h +1 -0
@@ -68,6 +68,7 @@ typedef struct global_data {#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ #if 0 extern gd_t *global_data;
include/asm-microblaze/global_data.h +1 -0
@@ -52,6 +52,7 @@ typedef struct global_data {#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r31")
include/asm-mips/global_data.h +1 -0
@@ -54,6 +54,7 @@ typedef struct global_data {#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("k0")
include/asm-nios/global_data.h +1 -0
@@ -45,6 +45,7 @@ typedef struct global_data {#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("%g7")
include/asm-nios2/global_data.h +1 -0
@@ -44,6 +44,7 @@ typedef struct global_data {#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("r15")
include/asm-ppc/global_data.h +1 -0
@@ -164,6 +164,7 @@ typedef struct global_data {#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ #if 1 #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r2")
include/asm-sh/global_data.h +1 -0
@@ -44,6 +44,7 @@ typedef struct global_data#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ #define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ #define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("r13")
include/post.h +4 -0
@@ -42,12 +42,16 @@#define POST_REBOOT 0x0800/* test may cause rebooting */ #define POST_PREREL 0x1000/* test runs before relocation */ +#define POST_CRITICAL 0x2000/* Use failbootcmd if test failed */ +#define POST_MEM (POST_RAM | POST_ROM)#define POST_ALWAYS (POST_NORMAL | \ POST_SLOWTEST | \ POST_MANUAL | \ POST_POWERON ) +#define POST_FAIL_SAVE 0x80 +#ifndef __ASSEMBLY__ struct post_test {
post/post.c +15 -3
@@ -157,8 +157,10 @@ static void post_bootmode_test_off (void)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 flag[] = {POST_POWERON ,POST_NORMAL ,POST_SLOWTEST , +POST_CRITICAL }; +char *var[] = {"post_poweron" ,"post_normal" ,"post_slowtest" , +"post_critical" };int varnum =sizeof (var) /sizeof (var[0 ]);char list[128 ];/* long enough for POST list */ char *name;
@@ -224,7 +226,9 @@ static int post_run_single (struct post_test *test,if (!(flags &POST_REBOOT )) {if ((test_flags &POST_REBOOT ) && !(flags &POST_MANUAL )) { -post_bootmode_test_on (i); +post_bootmode_test_on ( + (gd->flags &GD_FLG_POSTFAIL ) ? +POST_FAIL_SAVE | i : i); }if (test_flags &POST_PREREL )
@@ -236,10 +240,14 @@ static int post_run_single (struct post_test *test,if (test_flags &POST_PREREL ) {if ((*test->test) (flags) ==0 )post_log_mark_succ ( test->testid ); +else if (test_flags &POST_CRITICAL ) + gd->flags |=GD_FLG_POSTFAIL ; }else {if ((*test->test) (flags) !=0 ) {post_log ("FAILED\n" );show_boot_progress (-32 ); +if (test_flags &POST_CRITICAL ) + gd->flags |=GD_FLG_POSTFAIL ; }else post_log ("PASSED\n" );
@@ -266,6 +274,10 @@ int post_run (char *name, int flags)unsigned int last;if (post_bootmode_get (&last) &POST_POWERTEST ) { +if (last &POST_FAIL_SAVE ) { + last &= ~POST_FAIL_SAVE ; + gd->flags |=GD_FLG_POSTFAIL ; + }if (last < post_list_size && (flags & test_flags[last] &POST_ALWAYS ) && (flags & test_flags[last] &POST_MEM )) {
Signature · 1 line
1.5.4.2
PATCH 1/1 Some fixes to dspic, fpga, and gdc post tests for lwmon5.
From: Yuri Tikhonov <[email protected]>
--- post/board/lwmon5/dspic.c | 2 +- post/board/lwmon5/fpga.c | 4 ++++ post/board/lwmon5/gdc.c | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-)
post/board/lwmon5/dspic.c +1 -1
@@ -94,9 +94,9 @@ int dspic_post_test(int flags) } data =dspic_read (DSPIC_SYS_ERROR_REG ); -if (data !=0 ) ret =1 ;if (data ==-1 ) {post_log ("dsPIC : failed read system error\n" ); + ret =1 ; }else {post_log ("dsPIC SYS-ERROR code: 0x%04X\n" , data); }
post/board/lwmon5/fpga.c +4 -0
@@ -39,6 +39,7 @@ DECLARE_GLOBAL_DATA_PTR;#define FPGA_VERSION_REG 0xC4000040#define FPGA_RAM_START 0xC4200000#define FPGA_RAM_END 0xC4203FFF +#define FPGA_STAT 0xC400000C#define FPGA_PWM_CTRL_REG 0xC4000020#define FPGA_PWM_TV_REG 0xC4000024
@@ -93,6 +94,9 @@ int fpga_post_test(int flags)post_log ("FPGA : version %u.%u\n" , (version >>8 ) &0xFF , version &0xFF ); +/* Enable write to FPGA RAM */ +out_be32 ((void *)FPGA_STAT ,in_be32 ((void *)FPGA_STAT ) |0x1000 ); + read_value =get_ram_size ((void *)CFG_FPGA_BASE_1 ,0x4000 );post_log ("FPGA RAM size: %d bytes\n" , read_value);
post/board/lwmon5/gdc.c +1 -1
@@ -35,7 +35,7 @@DECLARE_GLOBAL_DATA_PTR ; -#define GDC_SCRATCH_REG 0xC1FF8044 +#define GDC_SCRATCH_REG 0xC1FF8008#define GDC_VERSION_REG 0xC1FF8084#define GDC_RAM_START 0xC0000000#define GDC_RAM_END 0xC2000000
Signature · 1 line
1.5.4.2
PATCH 1/1 Add support for the lwmon5 board reset via GPIO58.
From: Yuri Tikhonov <[email protected]>
--- board/lwmon5/lwmon5.c | 5 +++++ include/configs/lwmon5.h | 2 ++ 2 files changed, 7 insertions(+), 0 deletions(-)
board/lwmon5/lwmon5.c +5 -0
@@ -594,3 +594,8 @@ void video_get_info_str (int line_number, char *info) }#endif #endif /* CONFIG_VIDEO */ + +void board_reset (void ) +{ +gpio_write_bit (CFG_GPIO_BOARD_RESET ,1 ); +}
include/configs/lwmon5.h +2 -0
@@ -36,6 +36,7 @@#define CONFIG_BOARD_EARLY_INIT_F 1/* Call board_early_init_f */ #define CONFIG_BOARD_POSTCLK_INIT 1/* Call board_postclk_init */ #define CONFIG_MISC_INIT_R 1/* Call misc_init_r */ +#define CONFIG_BOARD_RESET 1/* Call board_reset */ /*----------------------------------------------------------------------- * Base addresses -- Note these are effective addresses where the
@@ -516,6 +517,7 @@#define CFG_GPIO_EEPROM_EXT_WP 55#define CFG_GPIO_HIGHSIDE 56#define CFG_GPIO_EEPROM_INT_WP 57 +#define CFG_GPIO_BOARD_RESET 58#define CFG_GPIO_LIME_S 59#define CFG_GPIO_LIME_RST 60#define CFG_GPIO_SYSMON_STATUS 62
Signature · 1 line
1.5.4.2
PATCH 1/1 The patch introduces the alternative configuration of the log buffer for
From: Yuri Tikhonov <[email protected]>
To enable this, alternative, configuration the U-Boot board configuration
file for lwmon5 includes the definitions of alternative addresses for header (CONFIG_ALT_LH_ADDR) and buffer (CONFIG_ALT_LB_ADDR).
The Linux shall be configured with the CONFIG_ALT_LB_LOCATION option set,
and has the BOARD_ALT_LH_ADDR and BOARD_ALT_LB_ADDR constants defined in the lwmon5 board-specific header (arch/ppc/platforms/4xx/lwmon5.h).
--- common/cmd_bootm.c | 4 ++++ common/cmd_log.c | 38 ++++++++++++++++++++++++++++++++------ include/configs/lwmon5.h | 2 ++ include/ppc440.h | 2 ++ lib_ppc/board.c | 4 ++++ 5 files changed, 44 insertions(+), 6 deletions(-)
common/cmd_bootm.c +4 -0
@@ -545,11 +545,15 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag, }#ifdef CONFIG_LOGBUFFER +#ifndef CONFIG_ALT_LB_ADDR kbd=gd->bd;/* Prevent initrd from overwriting logbuffer */ if (initrd_high < (kbd->bi_memsize-LOGBUFF_LEN -LOGBUFF_OVERHEAD )) initrd_high = kbd->bi_memsize-LOGBUFF_LEN -LOGBUFF_OVERHEAD ;debug ("## Logbuffer at 0x%08lX " , kbd->bi_memsize-LOGBUFF_LEN ); +#else +debug ("## Logbuffer at 0x%08lX " ,CONFIG_ALT_LB_ADDR ); +#endif #endif /*
common/cmd_log.c +32 -6
@@ -59,14 +59,25 @@ static char buf[1024];static unsigned console_loglevel =3 ;static unsigned default_message_loglevel =4 ;static unsigned log_version =1 ; +#ifdef CONFIG_ALT_LB_ADDR +static volatile logbuff_t *log; +#else static logbuff_t *log; +#endif +static char *lbuf;void logbuff_init_ptrs (void ) {unsigned long tag, post_word;char *s; +#ifdef CONFIG_ALT_LB_ADDR + log = (logbuff_t *)CONFIG_ALT_LH_ADDR ; + lbuf = (char *)CONFIG_ALT_LB_ADDR ; +#else log = (logbuff_t *)(gd->bd->bi_memsize-LOGBUFF_LEN ) -1 ; + lbuf = log->buf; +#endif /* Set up log version */ if ((s =getenv ("logversion" )) !=NULL )
@@ -101,11 +112,26 @@ void logbuff_init_ptrs (void)void logbuff_reset (void ) { +#ifndef CONFIG_ALT_LB_ADDR memset (log,0 ,sizeof (logbuff_t)); -if (log_version ==2 ) +#endif +if (log_version ==2 ) { log->v2.tag =LOGBUFF_MAGIC ; -else +#ifdef CONFIG_ALT_LB_ADDR + log->v2.start =0 ; + log->v2.con =0 ; + log->v2.end =0 ; + log->v2.chars =0 ; +#endif + }else { log->v1.tag =LOGBUFF_MAGIC ; +#ifdef CONFIG_ALT_LB_ADDR + log->v1.dummy =0 ; + log->v1.start =0 ; + log->v1.size =0 ; + log->v1.chars =0 ; +#endif + } }int drv_logbuff_init (void )
@@ -188,7 +214,7 @@ int do_log (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) size = log->v1.size; }for (i=0 ; i < (size&LOGBUFF_MASK ); i++) { - s = (char *)log->buf+((start+i)&LOGBUFF_MASK ); + s = lbuf+((start+i)&LOGBUFF_MASK );putc (*s); }return 0 ;
@@ -196,7 +222,7 @@ int do_log (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])logbuff_reset ();return 0 ; }else if (strcmp (argv[1 ],"info" ) ==0 ) { -printf ("Logbuffer at %08lx\n" , (unsigned long )log->buf); +printf ("Logbuffer at %08lx\n" , (unsigned long )lbuf);if (log_version ==2 ) {printf ("log_start = %08lx\n" , log->v2.start);printf ("log_end = %08lx\n" , log->v2.end);
@@ -257,14 +283,14 @@ static int logbuff_printk(const char *line) line_feed =0 ;for (; p < buf_end; p++) {if (log_version ==2 ) { - log->buf[log->v2.end &LOGBUFF_MASK ] = *p; + lbuf[log->v2.end &LOGBUFF_MASK ] = *p; log->v2.end++;if (log->v2.end - log->v2.start >LOGBUFF_LEN ) log->v2.start++; log->v2.chars++; }else { - log->buf[(log->v1.start + log->v1.size) & + lbuf[(log->v1.start + log->v1.size) &LOGBUFF_MASK ] = *p;if (log->v1.size <LOGBUFF_LEN ) log->v1.size++;
include/configs/lwmon5.h +2 -0
@@ -244,6 +244,8 @@#define CFG_POST_CACHE_ADDR 0x7fff0000/* free virtual address */ #define CONFIG_LOGBUFFER +#define CONFIG_ALT_LH_ADDR (CFG_PERIPHERAL_BASE + GPT0_COMP1) +#define CONFIG_ALT_LB_ADDR (CFG_OCM_BASE)#define CFG_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */ /*-----------------------------------------------------------------------
include/ppc440.h +2 -0
@@ -1434,6 +1434,8 @@#define GPT0_COMP5 0x00000094#define GPT0_COMP4 0x00000090#define GPT0_COMP3 0x0000008C +#define GPT0_COMP2 0x00000088 +#define GPT0_COMP1 0x00000084#if defined(CONFIG_440EPX ) || defined(CONFIG_440GRX )#define SDR0_USB2D0CR 0x0320
lib_ppc/board.c +4 -0
@@ -436,10 +436,12 @@ void board_init_f (ulong bootflag) addr =CFG_SDRAM_BASE +get_effective_memsize ();#ifdef CONFIG_LOGBUFFER +#ifndef CONFIG_ALT_LB_ADDR /* reserve kernel log buffer */ addr -= (LOGBUFF_RESERVE );debug ("Reserving %dk for kernel logbuffer at %08lx\n" ,LOGBUFF_LEN , addr);#endif +#endif #ifdef CONFIG_PRAM /*
@@ -1126,9 +1128,11 @@ void board_init_r (gd_t *id, ulong dest_addr) pram=0 ;#endif #ifdef CONFIG_LOGBUFFER +#ifndef CONFIG_ALT_LB_ADDR /* Also take the logbuffer into account (pram is in kB) */ pram += (LOGBUFF_LEN +LOGBUFF_OVERHEAD )/1024 ;#endif +#endif sprintf ((char *)memsz,"%ldk" , (bd->bi_memsize /1024 ) - pram);setenv ("mem" , (char *)memsz); }
Signature · 1 line
1.5.4.2
PATCH 1/1 Fix backlight in the lwmon5 POST.
From: Yuri Tikhonov <[email protected]>
Backlight was switched on even when temperature was too low.
--- board/lwmon5/lwmon5.c | 24 +++++++++++++++++++++--- post/board/lwmon5/fpga.c | 10 ---------- post/board/lwmon5/sysmon.c | 33 ++++++++------------------------- 3 files changed, 29 insertions(+), 38 deletions(-)
board/lwmon5/lwmon5.c +21 -3
@@ -567,11 +567,13 @@ unsigned int board_video_init (void)return CFG_LIME_BASE_0 ; } -void board_backlight_switch (int flag) +#define DEFAULT_BRIGHTNESS 0x64 + +static void board_backlight_brightness (int brightness) { -if (flag) { +if (brightness >0 ) {/* pwm duty, lamp on */ -out_be32 ((void *)(CFG_FPGA_BASE_0 +0x00000024 ),0x64 ); +out_be32 ((void *)(CFG_FPGA_BASE_0 +0x00000024 ), brightness);out_be32 ((void *)(CFG_FPGA_BASE_0 +0x00000020 ),0x701 ); }else {/* lamp off */
@@ -580,6 +582,22 @@ void board_backlight_switch (int flag) } } +void board_backlight_switch (int flag) +{ +char * param; +int rc; + +if (flag) { + param =getenv ("brightness" ); + rc = param ?simple_strtol (param,NULL ,10 ) :-1 ; +if (rc <0 ) + rc =DEFAULT_BRIGHTNESS ; + }else { + rc =0 ; + } +board_backlight_brightness (rc); +} +#if defined(CONFIG_CONSOLE_EXTRA_INFO )/* * Return text to be printed besides the logo.
post/board/lwmon5/fpga.c +0 -10
@@ -41,16 +41,6 @@ DECLARE_GLOBAL_DATA_PTR;#define FPGA_RAM_END 0xC4203FFF#define FPGA_STAT 0xC400000C -#define FPGA_PWM_CTRL_REG 0xC4000020 -#define FPGA_PWM_TV_REG 0xC4000024 - -/* Turn on backlight, set brightness */ -void fpga_backlight_enable (int pwm) -{ -out_be16 ((void *)FPGA_PWM_CTRL_REG ,0x0701 ); -out_be16 ((void *)FPGA_PWM_TV_REG , pwm); -} -#if CONFIG_POST &CFG_POST_BSPEC3 static int one_scratch_test (uint value)
post/board/lwmon5/sysmon.c +8 -25
@@ -49,18 +49,16 @@#include <watchdog.h> #include <i2c.h> +#if defined(CONFIG_VIDEO ) +#include <mb862xx.h> +#endif +#if CONFIG_POST &CFG_POST_SYSMON DECLARE_GLOBAL_DATA_PTR ; -#define DEFAULT_BRIGHTNESS 50 -/* from dspic.c */ extern int dspic_read (ushort reg); -/* from fpga.c */ -extern void fpga_backlight_enable (int v); - -static int sysmon_temp_invalid;#define RELOC (x) if (x != NULL) x = (void *) ((ulong) (x) + gd->reloc_off)
@@ -70,7 +68,6 @@ typedef struct sysmon_table_s sysmon_table_t;static void sysmon_dspic_init (sysmon_t * this);static int sysmon_dspic_read (sysmon_t * this,uint addr);static void sysmon_backlight_disable (sysmon_table_t * this); -static void sysmon_backlight_enable (sysmon_table_t * this);struct sysmon_s {
@@ -120,7 +117,7 @@ static sysmon_table_t sysmon_table[] = 100, 1000, -0x8000, 0x7FFF, 0xFFFF, 0x8000+4750, 0x8000+5250, 0, 0x8000+4750, 0x8000+5250, 0, 0x12CA}, - {"+ 5 V standby" ,"V" , &sysmon_dspic,NULL , sysmon_backlight_enable, + {"+ 5 V standby" ,"V" , &sysmon_dspic,NULL ,NULL ,100 ,1000 ,-0x8000 ,0x7FFF ,0xFFFF ,0x8000 +4750 ,0x8000 +5250 ,0 , 0x8000+4750, 0x8000+5250, 0, 0x12C6}, };
@@ -205,23 +202,9 @@ static int sysmon_dspic_read (sysmon_t * this, uint addr)static void sysmon_backlight_disable (sysmon_table_t * this) { -if (!this->val_valid_alt) - sysmon_temp_invalid =1 ; -} - -static void sysmon_backlight_enable (sysmon_table_t * this) -{ -char * param; -int rc; - -if (!sysmon_temp_invalid) { - param =getenv ("brightness" ); - rc = param ?simple_strtol (param,NULL ,10 ) :-1 ; -if (rc >=0 ) -fpga_backlight_enable (rc); -else -fpga_backlight_enable (DEFAULT_BRIGHTNESS ); - } +#if defined(CONFIG_VIDEO ) +board_backlight_switch (this->val_valid_alt); +#endif }int sysmon_post_test (int flags)
Signature · 1 line
1.5.4.2
PATCH 1/1 lwmon5: Fix register test logic to match the specific GDC h/w.
From: Yuri Tikhonov <[email protected]>
--- post/board/lwmon5/gdc.c | 18 ++++++++++++------ 1 files changed, 12 insertions(+), 6 deletions(-)
post/board/lwmon5/gdc.c +12 -6
@@ -35,7 +35,7 @@DECLARE_GLOBAL_DATA_PTR ; -#define GDC_SCRATCH_REG 0xC1FF8008 +#define GDC_SCRATCH_REG 0xC1FF8044#define GDC_VERSION_REG 0xC1FF8084#define GDC_RAM_START 0xC0000000#define GDC_RAM_END 0xC2000000
@@ -44,7 +44,7 @@ DECLARE_GLOBAL_DATA_PTR;static int gdc_test_reg_one (uint value) { -int ret =0 ; +int ret;uint read_value;/* write test pattern */
@@ -56,10 +56,9 @@ static int gdc_test_reg_one(uint value)if (read_value != value) {post_log ("GDC SCRATCH test failed write %08X, read %08X\n" , value, read_value); - ret =1 ; } -return ret; +return (read_value != value); }/* Verify GDC, get memory size */
@@ -71,9 +70,16 @@ int gdc_post_test(int flags)post_log ("\n" ); old_value =in_be32 ((void *)GDC_SCRATCH_REG ); -if (gdc_test_reg_one (0x55555555 )) +/* +* GPIOC2 register behaviour: the LIME graphics processor has a +* maximum of 5 GPIO ports that can be used in this hardware +* configuration. Thus only the bits for these 5 GPIOs can be +* activated in the GPIOC2 register. All other bits will always be +* read as zero. +*/ +if (gdc_test_reg_one (0x00150015 )) ret =1 ; -if (gdc_test_reg_one (0xAAAAAAAA )) +if (gdc_test_reg_one (0x000A000A )) ret =1 ;out_be32 ((void *)GDC_SCRATCH_REG , old_value);
Signature · 1 line
1.5.4.2
PATCH 1/1 The patch adds new POST tests for the Lwmon5 board.
In reply to Wolfgang DenkQuoted 14 lines · Wolfgang Denk
From: Yuri Tikhonov <[email protected]>
* External Watchdog test;
* dsPIC tests;
* FPGA test;
* GDC test;
* Sysmon tests.Signed-off-by Dmitry Rakhchev <[email protected]>Signed-off-by Yuri Tikhonov <[email protected]>---
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
post/board/lwmon5/dsp.c line 27
Quoted 4 lines
post/board/lwmon5/dsp.c new file +4
-0+ +#include <common.h> + +#ifdef CONFIG_POST
Please move it to the Makefile
Quoted 54 lines
post/board/lwmon5/dsp.c new file +31
-0+ +#include <post.h> + + +#if CONFIG_POST &CFG_POST_DSP +#include <asm/io.h> + +/* This test verifies DSP status bits in FPGA */ + +DECLARE_GLOBAL_DATA_PTR ; + +#define DSP_STATUS_REG 0xC4000008 + +int dsp_post_test (int flags) +{ +uint read_value; +int ret; + + ret =0 ; + read_value =in_be32 ((void *)DSP_STATUS_REG ) &0x3 ; +if (read_value !=0x3 ) { +post_log ("\nDSP status read %08X\n" , read_value); + ret =1 ; + } + +return ret; +} + +#endif /* CONFIG_POST & CFG_POST_DSP */ +#endif /* CONFIG_POST */ +post/board/lwmon5/dspic.c new file +17
-0@@ -0,0 +1,109 @@ +/* +* (C) Copyright 2008 Dmitry Rakhchev, EmCraft Systems, rda at emcraft.com +* +* Developed for DENX Software Engineering GmbH +* +* 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.
post/board/lwmon5/dspic.c line 27
Quoted 10 lines
post/board/lwmon5/dspic.c new file +10
-0+* +* 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> + +#ifdef CONFIG_POST
Please move it to the Makefile
Quoted 26 lines
post/board/lwmon5/dspic.c new file +6
-0+ +/* There are two tests for dsPIC currently implemented: +* 1. dsPIC ready test. Done in board_early_init_f(). Only result verified here. +* 2. dsPIC POST result test. This test gets dsPIC POST codes and version. +*/ +index 0000000..4e3f1d5
post/board/lwmon5/fpga.c new file +16
-0@@ -0,0 +1,104 @@ +/* +* (C) Copyright 2008 Dmitry Rakhchev, EmCraft Systems, rda at emcraft.com +* +* Developed for DENX Software Engineering GmbH +* +* 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
post/board/lwmon5/fpga.c line 26
Quoted 10 lines
post/board/lwmon5/fpga.c new file +10
-0+* 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> + +#ifdef CONFIG_POST
Please move it to the Makefile
Quoted 22 lines
post/board/lwmon5/fpga.c new file +22
-0+ +/* This test performs testing of FPGA SCRATCH register, +* gets FPGA version and run get_ram_size() on FPGA memory +*/ + +#include <post.h> + +#include <asm/io.h> + + * Developed for DENX Software Engineering GmbH + * + * 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
post/board/lwmon5/fpga.c line 58
Quoted 10 lines
post/board/lwmon5/fpga.c new file +10
-0+* 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> + +#ifdef CONFIG_POST
Please move it to the Makefile
Quoted 29 lines
post/board/lwmon5/fpga.c new file +29
-0+ +/* This test attempts to verify board GDC. A scratch register tested, then +* simple memory test (get_ram_size()) run over GDC memory. +*/ + +#include <post.h> + +#include <asm/io.h> + +DECLARE_GLOBAL_DATA_PTR ; + +#define GDC_SCRATCH_REG 0xC1FF8044 +#define GDC_VERSION_REG 0xC1FF8084 +#define GDC_RAM_START 0xC0000000 +#define GDC_RAM_END 0xC2000000 + + * 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. + *
post/board/lwmon5/fpga.c line 97
Quoted 10 lines
post/board/lwmon5/fpga.c new file +10
-0+* 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 <post.h> +#include <common.h> + +#ifdef CONFIG_POST
Please move it to the Makefile
Quoted 15 lines
post/board/lwmon5/fpga.c new file +15
-0+ +/* +* SYSMON test +* +* 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
post/board/lwmon5/fpga.c
Quoted 10 lines
post/board/lwmon5/fpga.c new file +10
-0+*/ + +#include <common.h> + +/* This test verifies if the reason of last reset was an abnormal voltage +* condition, than it performs watchdog test, measuing time required to +* trigger watchdog reset. +*/ + +#ifdef CONFIG_POST
Please move it to the Makefile
post/board/lwmon5/fpga.c
Quoted 5 lines
post/board/lwmon5/fpga.c new file +5
-0+ +#include <post.h> + +#if CONFIG_POST &CFG_POST_WATCHDOG +
Best Regards,
J.
PATCH 1/1 Enable CODEC POST with CFG_POST_CODEC rather than with CFG_POST_DSP.
In reply to Wolfgang DenkQuoted 12 lines · Wolfgang Denk
From: Yuri Tikhonov <[email protected]>
Signed-off-by Dmitry Rakhchev <[email protected]>--- post/tests.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)post/tests.c +0
-0
post/tests.c struct post_test post_list[] = · line 228
Quoted 5 lines
post/tests.c +1
-1@@ -225,7 +225,7 @@ struct post_test post_list[] =CFG_POST_DSP }, #endif -#if CONFIG_POST & CFG_POST_DSP +#if CONFIG_POST & CFG_POST_CODEC
I think It will be nice to move it to a ifdef style as done for the commands and understand it will not be simple when I read the implementation.
Best Regards,
J.