2004-12-16 18:24:06 +00:00
|
|
|
/*
|
|
|
|
* (C) Copyright 2001
|
|
|
|
* Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
|
|
|
|
*
|
2013-07-08 07:37:19 +00:00
|
|
|
* SPDX-License-Identifier: GPL-2.0+
|
2004-12-16 18:24:06 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#include <common.h>
|
2010-09-09 17:18:00 +00:00
|
|
|
/*#include <asm/ppc4xx.h>*/
|
2004-12-16 18:24:06 +00:00
|
|
|
#include <asm/processor.h>
|
|
|
|
|
|
|
|
/*
|
|
|
|
* include common flash code (for esd boards)
|
|
|
|
*/
|
|
|
|
#include "../common/flash.c"
|
|
|
|
|
|
|
|
/*-----------------------------------------------------------------------
|
|
|
|
* Functions
|
|
|
|
*/
|
|
|
|
static ulong flash_get_size (vu_long * addr, flash_info_t * info);
|
|
|
|
static void flash_get_offsets (ulong base, flash_info_t * info);
|
|
|
|
|
|
|
|
/*-----------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
|
|
|
|
unsigned long flash_init (void)
|
|
|
|
{
|
|
|
|
unsigned long size_b0;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
/* Init: no FLASHes known */
|
2008-10-16 13:01:15 +00:00
|
|
|
for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
|
2004-12-16 18:24:06 +00:00
|
|
|
flash_info[i].flash_id = FLASH_UNKNOWN;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Static FLASH Bank configuration here - FIXME XXX */
|
|
|
|
|
2008-10-16 13:01:15 +00:00
|
|
|
size_b0 = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
|
2004-12-16 18:24:06 +00:00
|
|
|
|
|
|
|
if (flash_info[0].flash_id == FLASH_UNKNOWN) {
|
|
|
|
printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
|
|
|
|
size_b0, size_b0<<20);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Setup offsets */
|
|
|
|
flash_get_offsets (-size_b0, &flash_info[0]);
|
|
|
|
|
|
|
|
/* test-only: todo: Re-do sizing to get full correct info */
|
|
|
|
|
|
|
|
/* Monitor protection ON by default */
|
|
|
|
(void)flash_protect(FLAG_PROTECT_SET,
|
2008-10-16 13:01:15 +00:00
|
|
|
CONFIG_SYS_FLASH_BASE,
|
|
|
|
CONFIG_SYS_FLASH_BASE+CONFIG_SYS_MONITOR_LEN-1,
|
2004-12-16 18:24:06 +00:00
|
|
|
&flash_info[0]);
|
|
|
|
|
|
|
|
flash_info[0].size = size_b0;
|
|
|
|
|
|
|
|
return (size_b0);
|
|
|
|
}
|