spl/85xx: new SPL support
Update CONFIG_RAMBOOT and CONFIG_NAND_SPL references to accept CONFIG_SPL and CONFIG_SPL_BUILD, respectively. CONFIG_NAND_SPL can be removed once the last mpc85xx nand_spl target is gone. CONFIG_RAMBOOT will need to remain for other use cases, but it doesn't seem right to overload it for meaning SPL as well as nand_spl does. Even if it's somewhat appropriate for the main u-boot, the SPL itself isn't (necessarily) ramboot, and we don't have separate configs for SPL and main u-boot. It was also inconsistent, as other platforms such as mpc83xx didn't use CONFIG_RAMBOOT in this way. Signed-off-by: Scott Wood <scottwood@freescale.com> Cc: Andy Fleming <afleming@freescale.com>
This commit is contained in:
parent
4b919725b6
commit
c97cd1ba48
|
@ -332,7 +332,8 @@ void mpc85xx_reginfo(void)
|
||||||
|
|
||||||
/* Common ddr init for non-corenet fsl 85xx platforms */
|
/* Common ddr init for non-corenet fsl 85xx platforms */
|
||||||
#ifndef CONFIG_FSL_CORENET
|
#ifndef CONFIG_FSL_CORENET
|
||||||
#if defined(CONFIG_SYS_RAMBOOT) && !defined(CONFIG_SYS_INIT_L2_ADDR)
|
#if (defined(CONFIG_SYS_RAMBOOT) || defined(CONFIG_SPL)) && \
|
||||||
|
!defined(CONFIG_SYS_INIT_L2_ADDR)
|
||||||
phys_size_t initdram(int board_type)
|
phys_size_t initdram(int board_type)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_SPD_EEPROM) || defined(CONFIG_DDR_SPD)
|
#if defined(CONFIG_SPD_EEPROM) || defined(CONFIG_DDR_SPD)
|
||||||
|
|
|
@ -30,7 +30,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
void cpu_init_f(void)
|
void cpu_init_f(void)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L2_ADDR)
|
#ifdef CONFIG_SYS_INIT_L2_ADDR
|
||||||
ccsr_l2cache_t *l2cache = (void *)CONFIG_SYS_MPC85xx_L2_ADDR;
|
ccsr_l2cache_t *l2cache = (void *)CONFIG_SYS_MPC85xx_L2_ADDR;
|
||||||
|
|
||||||
out_be32(&l2cache->l2srbar0, CONFIG_SYS_INIT_L2_ADDR);
|
out_be32(&l2cache->l2srbar0, CONFIG_SYS_INIT_L2_ADDR);
|
||||||
|
|
|
@ -55,7 +55,7 @@ void init_tlbs(void)
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_NAND_SPL
|
#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_SPL_BUILD)
|
||||||
void read_tlbcam_entry(int idx, u32 *valid, u32 *tsize, unsigned long *epn,
|
void read_tlbcam_entry(int idx, u32 *valid, u32 *tsize, unsigned long *epn,
|
||||||
phys_addr_t *rpn)
|
phys_addr_t *rpn)
|
||||||
{
|
{
|
||||||
|
@ -332,4 +332,4 @@ void clear_ddr_tlbs(unsigned int memsize_in_meg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* !CONFIG_NAND_SPL */
|
#endif /* not SPL */
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
/*
|
||||||
|
* (C) Copyright 2006
|
||||||
|
* Wolfgang Denk, DENX Software Engineering, wd@denx.de
|
||||||
|
*
|
||||||
|
* Copyright 2009 Freescale Semiconductor, Inc.
|
||||||
|
*
|
||||||
|
* 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 "config.h" /* CONFIG_BOARDDIR */
|
||||||
|
|
||||||
|
OUTPUT_ARCH(powerpc)
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = CONFIG_SPL_TEXT_BASE;
|
||||||
|
.text : {
|
||||||
|
*(.text*)
|
||||||
|
}
|
||||||
|
_etext = .;
|
||||||
|
|
||||||
|
.reloc : {
|
||||||
|
_GOT2_TABLE_ = .;
|
||||||
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
|
_FIXUP_TABLE_ = .;
|
||||||
|
KEEP(*(.fixup))
|
||||||
|
}
|
||||||
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
|
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
||||||
|
|
||||||
|
. = ALIGN(8);
|
||||||
|
.data : {
|
||||||
|
*(.rodata*)
|
||||||
|
*(.data*)
|
||||||
|
*(.sdata*)
|
||||||
|
}
|
||||||
|
_edata = .;
|
||||||
|
|
||||||
|
. = ALIGN(8);
|
||||||
|
__init_begin = .;
|
||||||
|
__init_end = .;
|
||||||
|
/* FIXME for non-NAND SPL */
|
||||||
|
#if defined(CONFIG_FSL_IFC) /* Restrict bootpg at 4K boundry for IFC */
|
||||||
|
.bootpg ADDR(.text) + 0x1000 :
|
||||||
|
{
|
||||||
|
start.o (.bootpg)
|
||||||
|
}
|
||||||
|
#define RESET_VECTOR_OFFSET 0x1ffc /* IFC has 8K sram */
|
||||||
|
#elif defined(CONFIG_FSL_ELBC)
|
||||||
|
#define RESET_VECTOR_OFFSET 0xffc /* LBC has 4k sram */
|
||||||
|
#else
|
||||||
|
#error unknown NAND controller
|
||||||
|
#endif
|
||||||
|
.resetvec ADDR(.text) + RESET_VECTOR_OFFSET : {
|
||||||
|
KEEP(*(.resetvec))
|
||||||
|
} = 0xffff
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make sure that the bss segment isn't linked at 0x0, otherwise its
|
||||||
|
* address won't be updated during relocation fixups.
|
||||||
|
*/
|
||||||
|
. |= 0x10;
|
||||||
|
|
||||||
|
__bss_start = .;
|
||||||
|
.bss : {
|
||||||
|
*(.sbss*)
|
||||||
|
*(.bss*)
|
||||||
|
}
|
||||||
|
__bss_end__ = .;
|
||||||
|
}
|
|
@ -92,7 +92,7 @@ void disable_law(u8 idx)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_NAND_SPL
|
#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_SPL_BUILD)
|
||||||
static int get_law_entry(u8 i, struct law_entry *e)
|
static int get_law_entry(u8 i, struct law_entry *e)
|
||||||
{
|
{
|
||||||
u32 lawar;
|
u32 lawar;
|
||||||
|
@ -122,7 +122,7 @@ int set_next_law(phys_addr_t addr, enum law_size sz, enum law_trgt_if id)
|
||||||
return idx;
|
return idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_NAND_SPL
|
#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_SPL_BUILD)
|
||||||
int set_last_law(phys_addr_t addr, enum law_size sz, enum law_trgt_if id)
|
int set_last_law(phys_addr_t addr, enum law_size sz, enum law_trgt_if id)
|
||||||
{
|
{
|
||||||
u32 idx;
|
u32 idx;
|
||||||
|
@ -233,7 +233,7 @@ int set_ddr_laws(u64 start, u64 sz, enum law_trgt_if id)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* not SPL */
|
||||||
|
|
||||||
void init_laws(void)
|
void init_laws(void)
|
||||||
{
|
{
|
||||||
|
@ -258,9 +258,10 @@ void init_laws(void)
|
||||||
gd->used_laws |= (1 << i);
|
gd->used_laws |= (1 << i);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_NAND_SPL)
|
#if (defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_NAND_SPL)) || \
|
||||||
|
(defined(CONFIG_SPL) && !defined(CONFIG_SPL_BUILD))
|
||||||
/*
|
/*
|
||||||
* in NAND boot we've already parsed the law_table and setup those LAWs
|
* in SPL boot we've already parsed the law_table and setup those LAWs
|
||||||
* so don't do it again.
|
* so don't do it again.
|
||||||
*/
|
*/
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -26,7 +26,7 @@ Major Config Switches during various boot Modes
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
||||||
NOR boot
|
NOR boot
|
||||||
!defined(CONFIG_SYS_RAMBOOT)
|
!defined(CONFIG_SYS_RAMBOOT) && !defined(CONFIG_SPL)
|
||||||
NOR boot Secure
|
NOR boot Secure
|
||||||
!defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SECURE_BOOT)
|
!defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SECURE_BOOT)
|
||||||
RAMBOOT(SD, SPI & NAND boot)
|
RAMBOOT(SD, SPI & NAND boot)
|
||||||
|
|
Loading…
Reference in New Issue