From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott McNutt Date: Sat, 26 Mar 2011 10:47:11 -0400 Subject: [U-Boot] [PATCH v2] nios2: reset cfi flash before reading env In-Reply-To: <1295320436-31046-1-git-send-email-thomas@wytron.com.tw> References: <20110117210220.CB2EDD1CAD5@gemini.denx.de> <1295320436-31046-1-git-send-email-thomas@wytron.com.tw> Message-ID: <4D8DFC6F.5020801@psyent.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Applied to: git://git.denx.de/u-boot-nios next Thanks, --Scott Thomas Chou wrote: > Flash might be in unknown state when u-boot is started with jtag. > And got wrong env data. So reset it in board early init. > > We cannot use generic cfi flash routines, because flash_init() is > not run yet. > > Signed-off-by: Thomas Chou > --- > v2 use weak func to reset flash, as Wolfgang suggested. > reset the chip where env is located. > > board/altera/nios2-generic/nios2-generic.c | 16 ++++++++++++++++ > 1 files changed, 16 insertions(+), 0 deletions(-) > > diff --git a/board/altera/nios2-generic/nios2-generic.c b/board/altera/nios2-generic/nios2-generic.c > index 89848cf..220a4c4 100644 > --- a/board/altera/nios2-generic/nios2-generic.c > +++ b/board/altera/nios2-generic/nios2-generic.c > @@ -24,12 +24,28 @@ > > #include > #include > +#include > +#include > > void text_base_hook(void); /* nop hook for text_base.S */ > > +#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR) > +static void __early_flash_cmd_reset(void) > +{ > + /* reset flash before we read env */ > + writeb(AMD_CMD_RESET, CONFIG_ENV_ADDR); > + writeb(FLASH_CMD_RESET, CONFIG_ENV_ADDR); > +} > +void early_flash_cmd_reset(void) > + __attribute__((weak,alias("__early_flash_cmd_reset"))); > +#endif > + > int board_early_init_f(void) > { > text_base_hook(); > +#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR) > + early_flash_cmd_reset(); > +#endif > return 0; > } >