As ppc4xx currently only supports the deprecated nand_spl infrastructure and nobody seems to have time / resources to port this over to the newer SPL infrastructure, lets remove NAND booting completely. This should not affect the "normal", non NAND-booting ppc4xx platforms that are currently supported. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Wolfgang Denk <wd@denx.de> Cc: Tirumala Marri <tmarri@apm.com> Cc: Matthias Fuchs <matthias.fuchs@esd.eu> Cc: Masahiro Yamada <yamada.m@jp.panasonic.com> Cc: Tom Rini <trini@ti.com> Tested-by: Matthias Fuchs <matthias.fuchs@esd.eu>master
parent
dc116bd6c4
commit
345b77baca
@ -1,88 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2007
|
||||
# Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk |
||||
|
||||
nandobj := $(OBJTREE)/nand_spl/
|
||||
|
||||
LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
|
||||
LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
|
||||
$(LDFLAGS_FINAL)
|
||||
asflags-y += -DCONFIG_NAND_SPL
|
||||
ccflags-y += -DCONFIG_NAND_SPL
|
||||
|
||||
SOBJS = start.o resetvec.o cache.o
|
||||
COBJS = gpio.o nand_boot.o nand_ecc.o memory.o ndfc.o pll.o
|
||||
|
||||
OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
|
||||
__OBJS := $(SOBJS) $(COBJS)
|
||||
LNDIR := $(nandobj)board/$(BOARDDIR)
|
||||
|
||||
targets += $(__OBJS)
|
||||
|
||||
all: $(nandobj)u-boot-spl.bin $(nandobj)u-boot-spl-16k.bin \
|
||||
$(nandobj)System.map
|
||||
|
||||
$(nandobj)u-boot-spl-16k.bin: $(nandobj)u-boot-spl |
||||
$(OBJCOPY) $(OBJCOPYFLAGS) --pad-to=$(PAD_TO) -O binary $< $@
|
||||
|
||||
$(nandobj)u-boot-spl.bin: $(nandobj)u-boot-spl |
||||
$(OBJCOPY) $(OBJCOPYFLAGS) -O binary $< $@
|
||||
|
||||
$(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot.lds |
||||
cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) $(PLATFORM_LIBS) \
|
||||
-Map $(nandobj)u-boot-spl.map -o $@
|
||||
|
||||
$(nandobj)System.map: $(nandobj)u-boot-spl |
||||
@$(NM) $< | \
|
||||
grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
|
||||
sort > $@
|
||||
|
||||
$(nandobj)u-boot.lds: $(LDSCRIPT) |
||||
$(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
|
||||
|
||||
# create symbolic links for common files
|
||||
|
||||
# from cpu directory
|
||||
$(obj)/cache.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/cache.S $@
|
||||
|
||||
$(obj)/gpio.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/gpio.c $@
|
||||
|
||||
$(obj)/ndfc.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/drivers/mtd/nand/ndfc.c $@
|
||||
|
||||
$(obj)/resetvec.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/resetvec.S $@
|
||||
|
||||
$(obj)/start.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/start.S $@
|
||||
|
||||
# from board directory
|
||||
$(obj)/memory.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/board/amcc/acadia/memory.c $@
|
||||
|
||||
$(obj)/pll.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/board/amcc/acadia/pll.c $@
|
||||
|
||||
# from nand_spl directory
|
||||
$(obj)/nand_boot.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/nand_spl/nand_boot.c $@
|
||||
|
||||
# from drivers/mtd/nand directory
|
||||
$(obj)/nand_ecc.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $@
|
@ -1,31 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2007
|
||||
# Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
#
|
||||
# AMCC 405EZ Reference Platform (Acadia) board
|
||||
#
|
||||
|
||||
#
|
||||
# CONFIG_SYS_TEXT_BASE for SPL:
|
||||
#
|
||||
# On 4xx platforms the SPL is located at 0xfffff000...0xffffffff,
|
||||
# in the last 4kBytes of memory space in cache.
|
||||
# We will copy this SPL into internal SRAM in start.S. So we set
|
||||
# CONFIG_SYS_TEXT_BASE to starting address in internal SRAM here.
|
||||
#
|
||||
CONFIG_SYS_TEXT_BASE = 0xf8004000
|
||||
|
||||
# PAD_TO used to generate a 16kByte binary needed for the combined image
|
||||
# -> PAD_TO = CONFIG_SYS_TEXT_BASE + 0x4000
|
||||
PAD_TO = 0xf8008000
|
||||
|
||||
ifeq ($(debug),1) |
||||
PLATFORM_CPPFLAGS += -DDEBUG
|
||||
endif |
||||
|
||||
ifeq ($(dbcr),1) |
||||
PLATFORM_CPPFLAGS += -DCONFIG_SYS_INIT_DBCR=0x8cff0000
|
||||
endif |
@ -1,48 +0,0 @@ |
||||
/* |
||||
* (C) Copyright 2007 |
||||
* Stefan Roese, DENX Software Engineering, sr@denx.de. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
OUTPUT_ARCH(powerpc:common) |
||||
SECTIONS |
||||
{ |
||||
.resetvec 0xf8004ffc : |
||||
{ |
||||
KEEP(*(.resetvec)) |
||||
} = 0xffff |
||||
|
||||
.text : |
||||
{ |
||||
start.o (.text) |
||||
nand_boot.o (.text) |
||||
ndfc.o (.text) |
||||
|
||||
*(.text) |
||||
*(.fixup) |
||||
} |
||||
_etext = .; |
||||
|
||||
.data : |
||||
{ |
||||
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) |
||||
*(.data*) |
||||
*(.sdata*) |
||||
__got2_start = .; |
||||
*(.got2) |
||||
__got2_end = .; |
||||
} |
||||
|
||||
_edata = .; |
||||
|
||||
__bss_start = .; |
||||
.bss (NOLOAD) : |
||||
{ |
||||
*(.sbss) |
||||
*(.bss) |
||||
. = ALIGN(4); |
||||
} |
||||
|
||||
__bss_end = . ; |
||||
} |
@ -1,70 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2007
|
||||
# Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk |
||||
|
||||
nandobj := $(OBJTREE)/nand_spl/
|
||||
|
||||
LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
|
||||
LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
|
||||
$(LDFLAGS_FINAL)
|
||||
asflags-y += -DCONFIG_NAND_SPL
|
||||
ccflags-y += -DCONFIG_NAND_SPL
|
||||
|
||||
SOBJS = start.o init.o resetvec.o
|
||||
COBJS = nand_boot.o nand_ecc.o ndfc.o sdram.o
|
||||
|
||||
OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
|
||||
__OBJS := $(SOBJS) $(COBJS)
|
||||
LNDIR := $(nandobj)board/$(BOARDDIR)
|
||||
|
||||
targets += $(__OBJS)
|
||||
|
||||
all: $(nandobj)u-boot-spl.bin $(nandobj)u-boot-spl-16k.bin |
||||
|
||||
$(nandobj)u-boot-spl-16k.bin: $(nandobj)u-boot-spl |
||||
$(OBJCOPY) $(OBJCOPYFLAGS) --pad-to=$(PAD_TO) -O binary $< $@
|
||||
|
||||
$(nandobj)u-boot-spl.bin: $(nandobj)u-boot-spl |
||||
$(OBJCOPY) $(OBJCOPYFLAGS) -O binary $< $@
|
||||
|
||||
$(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot.lds |
||||
cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) $(PLATFORM_LIBS) \
|
||||
-Map $(nandobj)u-boot-spl.map -o $@
|
||||
|
||||
$(nandobj)u-boot.lds: $(LDSCRIPT) |
||||
$(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
|
||||
|
||||
# create symbolic links for common files
|
||||
|
||||
# from cpu directory
|
||||
$(obj)/ndfc.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/drivers/mtd/nand/ndfc.c $@
|
||||
|
||||
$(obj)/resetvec.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/resetvec.S $@
|
||||
|
||||
$(obj)/start.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/start.S $@
|
||||
|
||||
# from board directory
|
||||
$(obj)/init.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/board/amcc/bamboo/init.S $@
|
||||
|
||||
# from nand_spl directory
|
||||
$(obj)/nand_boot.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/nand_spl/nand_boot.c $@
|
||||
|
||||
# from drivers/mtd/nand directory
|
||||
$(obj)/nand_ecc.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $@
|
@ -1,33 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2007
|
||||
# Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
#
|
||||
# AMCC 440EP Reference Platform (Bamboo) board
|
||||
#
|
||||
|
||||
#
|
||||
# CONFIG_SYS_TEXT_BASE for SPL:
|
||||
#
|
||||
# On 440EP(x) platforms the SPL is located at 0xfffff000...0xffffffff,
|
||||
# in the last 4kBytes of memory space in cache.
|
||||
# We will copy this SPL into instruction-cache in start.S. So we set
|
||||
# CONFIG_SYS_TEXT_BASE to starting address in i-cache here.
|
||||
#
|
||||
CONFIG_SYS_TEXT_BASE = 0x00800000
|
||||
|
||||
# PAD_TO used to generate a 16kByte binary needed for the combined image
|
||||
# -> PAD_TO = CONFIG_SYS_TEXT_BASE + 0x4000
|
||||
PAD_TO = 0x00804000
|
||||
|
||||
PLATFORM_CPPFLAGS += -DCONFIG_440=1
|
||||
|
||||
ifeq ($(debug),1) |
||||
PLATFORM_CPPFLAGS += -DDEBUG
|
||||
endif |
||||
|
||||
ifeq ($(dbcr),1) |
||||
PLATFORM_CPPFLAGS += -DCONFIG_SYS_INIT_DBCR=0x8cff0000
|
||||
endif |
@ -1,76 +0,0 @@ |
||||
/*
|
||||
* (C) Copyright 2007 |
||||
* Stefan Roese, DENX Software Engineering, sr@denx.de. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <asm/ppc4xx.h> |
||||
#include <asm/processor.h> |
||||
#include <asm/io.h> |
||||
|
||||
static void wait_init_complete(void) |
||||
{ |
||||
u32 val; |
||||
|
||||
do { |
||||
mfsdram(SDRAM0_MCSTS, val); |
||||
} while (!(val & 0x80000000)); |
||||
} |
||||
|
||||
/*
|
||||
* phys_size_t initdram(int board_type) |
||||
* |
||||
* As the name already indicates, this function is called very early |
||||
* from start.S and configures the SDRAM with fixed values. This is needed, |
||||
* since the 440EP has no internal SRAM and the 4kB NAND_SPL loader has |
||||
* not enough free space to implement the complete I2C SPD DDR autodetection |
||||
* routines. Therefore the Bamboo only supports the onboard 64MBytes of SDRAM |
||||
* when booting from NAND flash. |
||||
* |
||||
* Note: |
||||
* As found out by Eugene O'Brien <eugene.obrien@advantechamt.com>, the fixed |
||||
* DDR setup has problems (U-Boot crashes randomly upon TFTP), when the DIMM |
||||
* modules are still plugged in. So it is recommended to remove the DIMM |
||||
* modules while using the NAND booting code with the fixed SDRAM setup! |
||||
*/ |
||||
phys_size_t initdram(int board_type) |
||||
{ |
||||
/*
|
||||
* Soft-reset SDRAM controller. |
||||
*/ |
||||
mtsdr(SDR0_SRST, SDR0_SRST_DMC); |
||||
mtsdr(SDR0_SRST, 0x00000000); |
||||
|
||||
/*
|
||||
* Disable memory controller. |
||||
*/ |
||||
mtsdram(SDRAM0_CFG0, 0x00000000); |
||||
|
||||
/*
|
||||
* Setup some default |
||||
*/ |
||||
mtsdram(SDRAM0_UABBA, 0x00000000); /* ubba=0 (default) */ |
||||
mtsdram(SDRAM0_SLIO, 0x00000000); /* rdre=0 wrre=0 rarw=0 */ |
||||
mtsdram(SDRAM0_DEVOPT, 0x00000000); /* dll=0 ds=0 (normal) */ |
||||
mtsdram(SDRAM0_WDDCTR, 0x00000000); /* wrcp=0 dcd=0 */ |
||||
mtsdram(SDRAM0_CLKTR, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */ |
||||
|
||||
/*
|
||||
* Following for CAS Latency = 2.5 @ 133 MHz PLB |
||||
*/ |
||||
mtsdram(SDRAM0_B0CR, 0x00082001); |
||||
mtsdram(SDRAM0_TR0, 0x41094012); |
||||
mtsdram(SDRAM0_TR1, 0x8080083d); /* SS=T2 SL=STAGE 3 CD=1 CT=0x00*/ |
||||
mtsdram(SDRAM0_RTR, 0x04100000); /* Interval 7.8µs @ 133MHz PLB */ |
||||
mtsdram(SDRAM0_CFG1, 0x00000000); /* Self-refresh exit, disable PM*/ |
||||
|
||||
/*
|
||||
* Enable the controller, then wait for DCEN to complete |
||||
*/ |
||||
mtsdram(SDRAM0_CFG0, 0x80000000); /* DCEN=1, PMUD=0*/ |
||||
wait_init_complete(); |
||||
|
||||
return CONFIG_SYS_MBYTES_SDRAM << 20; |
||||
} |
@ -1,50 +0,0 @@ |
||||
/* |
||||
* (C) Copyright 2007 |
||||
* Stefan Roese, DENX Software Engineering, sr@denx.de. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
OUTPUT_ARCH(powerpc:common) |
||||
SECTIONS |
||||
{ |
||||
.resetvec 0x00800FFC : |
||||
{ |
||||
KEEP(*(.resetvec)) |
||||
} = 0xffff |
||||
|
||||
.text : |
||||
{ |
||||
start.o (.text) |
||||
init.o (.text) |
||||
nand_boot.o (.text) |
||||
sdram.o (.text) |
||||
ndfc.o (.text) |
||||
|
||||
*(.text) |
||||
*(.fixup) |
||||
} |
||||
_etext = .; |
||||
|
||||
.data : |
||||
{ |
||||
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) |
||||
*(.data*) |
||||
*(.sdata*) |
||||
__got2_start = .; |
||||
*(.got2) |
||||
__got2_end = .; |
||||
} |
||||
|
||||
_edata = .; |
||||
|
||||
__bss_start = .; |
||||
.bss (NOLOAD) : |
||||
{ |
||||
*(.sbss) |
||||
*(.bss) |
||||
. = ALIGN(4); |
||||
} |
||||
|
||||
__bss_end = . ; |
||||
} |
@ -1,75 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2008
|
||||
# Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk |
||||
|
||||
nandobj := $(OBJTREE)/nand_spl/
|
||||
|
||||
LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
|
||||
LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
|
||||
$(LDFLAGS_FINAL)
|
||||
asflags-y += -DCONFIG_NAND_SPL
|
||||
ccflags-y += -DCONFIG_NAND_SPL
|
||||
|
||||
SOBJS := start.o
|
||||
SOBJS += init.o
|
||||
SOBJS += resetvec.o
|
||||
COBJS := ddr2_fixed.o
|
||||
COBJS += nand_boot.o
|
||||
COBJS += nand_ecc.o
|
||||
COBJS += ndfc.o
|
||||
|
||||
OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
|
||||
__OBJS := $(SOBJS) $(COBJS)
|
||||
LNDIR := $(nandobj)board/$(BOARDDIR)
|
||||
|
||||
targets += $(__OBJS)
|
||||
|
||||
all: $(nandobj)u-boot-spl.bin $(nandobj)u-boot-spl-16k.bin |
||||
|
||||
$(nandobj)u-boot-spl-16k.bin: $(nandobj)u-boot-spl |
||||
$(OBJCOPY) $(OBJCOPYFLAGS) --pad-to=$(PAD_TO) -O binary $< $@
|
||||
|
||||
$(nandobj)u-boot-spl.bin: $(nandobj)u-boot-spl |
||||
$(OBJCOPY) $(OBJCOPYFLAGS) -O binary $< $@
|
||||
|
||||
$(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot.lds |
||||
cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) $(PLATFORM_LIBS) \
|
||||
-Map $(nandobj)u-boot-spl.map -o $@
|
||||
|
||||
$(nandobj)u-boot.lds: $(LDSCRIPT) |
||||
$(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
|
||||
|
||||
# create symbolic links for common files
|
||||
|
||||
# from cpu directory
|
||||
$(obj)/ndfc.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/drivers/mtd/nand/ndfc.c $@
|
||||
|
||||
$(obj)/resetvec.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/resetvec.S $@
|
||||
|
||||
$(obj)/start.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/start.S $@
|
||||
|
||||
# from board directory
|
||||
$(obj)/init.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/board/amcc/canyonlands/init.S $@
|
||||
|
||||
# from nand_spl directory
|
||||
$(obj)/nand_boot.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/nand_spl/nand_boot.c $@
|
||||
|
||||
# from drivers/mtd/nand directory
|
||||
$(obj)/nand_ecc.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $@
|
@ -1,33 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2008
|
||||
# Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
#
|
||||
# AMCC 460EX Reference Platform (Canyonlands) board
|
||||
#
|
||||
|
||||
#
|
||||
# CONFIG_SYS_TEXT_BASE for SPL:
|
||||
#
|
||||
# On 460EX platforms the SPL is located at 0xfffff000...0xffffffff,
|
||||
# in the last 4kBytes of memory space in cache.
|
||||
# We will copy this SPL into internal SRAM in start.S. So we set
|
||||
# CONFIG_SYS_TEXT_BASE to starting address in internal SRAM here.
|
||||
#
|
||||
CONFIG_SYS_TEXT_BASE = 0xE3003000
|
||||
|
||||
# PAD_TO used to generate a 128kByte binary needed for the combined image
|
||||
# -> PAD_TO = CONFIG_SYS_TEXT_BASE + 0x20000
|
||||
PAD_TO = 0xE3023000
|
||||
|
||||
PLATFORM_CPPFLAGS += -DCONFIG_440=1
|
||||
|
||||
ifeq ($(debug),1) |
||||
PLATFORM_CPPFLAGS += -DDEBUG
|
||||
endif |
||||
|
||||
ifeq ($(dbcr),1) |
||||
PLATFORM_CPPFLAGS += -DCONFIG_SYS_INIT_DBCR=0x8cff0000
|
||||
endif |
@ -1,130 +0,0 @@ |
||||
/*
|
||||
* (C) Copyright 2008-2009 |
||||
* Stefan Roese, DENX Software Engineering, sr@denx.de. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <asm/ppc4xx.h> |
||||
#include <asm/io.h> |
||||
#include <asm/processor.h> |
||||
|
||||
/*
|
||||
* This code can configure those two Crucial SODIMM's: |
||||
* |
||||
* Crucial CT6464AC667.4FE - 512MB SO-DIMM (single rank) |
||||
* Crucial CT6464AC667.8FB - 512MB SO-DIMM (dual rank) |
||||
* |
||||
*/ |
||||
|
||||
#define TEST_ADDR 0x10000000 |
||||
#define TEST_MAGIC 0x11223344 |
||||
|
||||
static void wait_init_complete(void) |
||||
{ |
||||
u32 val; |
||||
|
||||
do { |
||||
mfsdram(SDRAM_MCSTAT, val); |
||||
} while (!(val & 0x80000000)); |
||||
} |
||||
|
||||
static void ddr_start(void) |
||||
{ |
||||
mtsdram(SDRAM_MCOPT2, 0x28000000); |
||||
wait_init_complete(); |
||||
} |
||||
|
||||
static void ddr_init_common(void) |
||||
{ |
||||
/*
|
||||
* Reset the DDR-SDRAM controller. |
||||
*/ |
||||
mtsdr(SDR0_SRST, SDR0_SRST0_DMC); |
||||
mtsdr(SDR0_SRST, 0x00000000); |
||||
|
||||
/*
|
||||
* These values are cloned from a running NOR booting |
||||
* Canyonlands with SPD-DDR2 detection and calibration |
||||
* enabled. This will only work for the same memory |
||||
* configuration as used here: |
||||
* |
||||
*/ |
||||
mtsdram(SDRAM_MCOPT2, 0x00000000); |
||||
mtsdram(SDRAM_MODT0, 0x01000000); |
||||
mtsdram(SDRAM_WRDTR, 0x82000823); |
||||
mtsdram(SDRAM_CLKTR, 0x40000000); |
||||
mtsdram(SDRAM_MB0CF, 0x00000201); |
||||
mtsdram(SDRAM_RTR, 0x06180000); |
||||
mtsdram(SDRAM_SDTR1, 0x80201000); |
||||
mtsdram(SDRAM_SDTR2, 0x42103243); |
||||
mtsdram(SDRAM_SDTR3, 0x0A0D0D16); |
||||
mtsdram(SDRAM_MMODE, 0x00000632); |
||||
mtsdram(SDRAM_MEMODE, 0x00000040); |
||||
mtsdram(SDRAM_INITPLR0, 0xB5380000); |
||||
mtsdram(SDRAM_INITPLR1, 0x82100400); |
||||
mtsdram(SDRAM_INITPLR2, 0x80820000); |
||||
mtsdram(SDRAM_INITPLR3, 0x80830000); |
||||
mtsdram(SDRAM_INITPLR4, 0x80810040); |
||||
mtsdram(SDRAM_INITPLR5, 0x80800532); |
||||
mtsdram(SDRAM_INITPLR6, 0x82100400); |
||||
mtsdram(SDRAM_INITPLR7, 0x8A080000); |
||||
mtsdram(SDRAM_INITPLR8, 0x8A080000); |
||||
mtsdram(SDRAM_INITPLR9, 0x8A080000); |
||||
mtsdram(SDRAM_INITPLR10, 0x8A080000); |
||||
mtsdram(SDRAM_INITPLR11, 0x80000432); |
||||
mtsdram(SDRAM_INITPLR12, 0x808103C0); |
||||
mtsdram(SDRAM_INITPLR13, 0x80810040); |
||||
mtsdram(SDRAM_RDCC, 0x40000000); |
||||
mtsdram(SDRAM_RQDC, 0x80000038); |
||||
mtsdram(SDRAM_RFDC, 0x00000257); |
||||
|
||||
mtdcr(SDRAM_R0BAS, 0x0000F800); /* MQ0_B0BAS */ |
||||
} |
||||
|
||||
phys_size_t initdram(int board_type) |
||||
{ |
||||
/*
|
||||
* First try init for this module: |
||||
* |
||||
* Crucial CT6464AC667.8FB - 512MB SO-DIMM (dual rank) |
||||
*/ |
||||
|
||||
ddr_init_common(); |
||||
|
||||
/*
|
||||
* Crucial CT6464AC667.8FB - 512MB SO-DIMM |
||||
*/ |
||||
mtdcr(SDRAM_R0BAS, 0x0000F800); |
||||
mtdcr(SDRAM_R1BAS, 0x0400F800); |
||||
mtsdram(SDRAM_MCOPT1, 0x05122000); |
||||
mtsdram(SDRAM_CODT, 0x02800021); |
||||
mtsdram(SDRAM_MB1CF, 0x00000201); |
||||
|
||||
ddr_start(); |
||||
|
||||
/*
|
||||
* Now test if the dual-ranked module is really installed |
||||
* by checking an address in the upper 256MByte region |
||||
*/ |
||||
out_be32((void *)TEST_ADDR, TEST_MAGIC); |
||||
if (in_be32((void *)TEST_ADDR) != TEST_MAGIC) { |
||||
/*
|
||||
* The test failed, so we assume that the single |
||||
* ranked module is installed: |
||||
* |
||||
* Crucial CT6464AC667.4FE - 512MB SO-DIMM (single rank) |
||||
*/ |
||||
|
||||
ddr_init_common(); |
||||
|
||||
mtdcr(SDRAM_R0BAS, 0x0000F000); |
||||
mtsdram(SDRAM_MCOPT1, 0x05322000); |
||||
mtsdram(SDRAM_CODT, 0x00800021); |
||||
|
||||
ddr_start(); |
||||
} |
||||
|
||||
return CONFIG_SYS_MBYTES_SDRAM << 20; |
||||
} |
@ -1,50 +0,0 @@ |
||||
/* |
||||
* (C) Copyright 2008 |
||||
* Stefan Roese, DENX Software Engineering, sr@denx.de. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
OUTPUT_ARCH(powerpc:common) |
||||
SECTIONS |
||||
{ |
||||
.resetvec 0xE3003FFC : |
||||
{ |
||||
KEEP(*(.resetvec)) |
||||
} = 0xffff |
||||
|
||||
.text : |
||||
{ |
||||
start.o (.text) |
||||
init.o (.text) |
||||
nand_boot.o (.text) |
||||
ddr2_fixed.o (.text) |
||||
ndfc.o (.text) |
||||
|
||||
*(.text) |
||||
*(.fixup) |
||||
} |
||||
_etext = .; |
||||
|
||||
.data : |
||||
{ |
||||
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) |
||||
*(.data*) |
||||
*(.sdata*) |
||||
__got2_start = .; |
||||
*(.got2) |
||||
__got2_end = .; |
||||
} |
||||
|
||||
_edata = .; |
||||
|
||||
__bss_start = .; |
||||
.bss (NOLOAD) : |
||||
{ |
||||
*(.sbss) |
||||
*(.bss) |
||||
. = ALIGN(4); |
||||
} |
||||
|
||||
__bss_end = . ; |
||||
} |
@ -1,77 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2007
|
||||
# Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk |
||||
|
||||
nandobj := $(OBJTREE)/nand_spl/
|
||||
|
||||
LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
|
||||
LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
|
||||
$(LDFLAGS_FINAL)
|
||||
asflags-y += -DCONFIG_NAND_SPL
|
||||
ccflags-y += -DCONFIG_NAND_SPL
|
||||
|
||||
SOBJS = start.o resetvec.o cache.o
|
||||
COBJS = 44x_spd_ddr2.o nand_boot.o nand_ecc.o ndfc.o
|
||||
|
||||
OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
|
||||
__OBJS := $(SOBJS) $(COBJS)
|
||||
LNDIR := $(nandobj)board/$(BOARDDIR)
|
||||
|
||||
targets += $(__OBJS)
|
||||
|
||||
all: $(nandobj)u-boot-spl.bin $(nandobj)u-boot-spl-16k.bin |
||||
|
||||
$(nandobj)u-boot-spl-16k.bin: $(nandobj)u-boot-spl |
||||
$(OBJCOPY) $(OBJCOPYFLAGS) --pad-to=$(PAD_TO) -O binary $< $@
|
||||
|
||||
$(nandobj)u-boot-spl.bin: $(nandobj)u-boot-spl |
||||
$(OBJCOPY) $(OBJCOPYFLAGS) -O binary $< $@
|
||||
|
||||
$(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot.lds |
||||
cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) $(PLATFORM_LIBS) \
|
||||
-Map $(nandobj)u-boot-spl.map -o $@
|
||||
|
||||
$(nandobj)u-boot.lds: $(LDSCRIPT) |
||||
$(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
|
||||
|
||||
# create symbolic links for common files
|
||||
|
||||
# from cpu directory
|
||||
$(obj)/44x_spd_ddr2.c: $(obj)/ecc.h |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/44x_spd_ddr2.c $@
|
||||
|
||||
$(obj)/cache.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/cache.S $@
|
||||
|
||||
$(obj)/ecc.h: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/ecc.h $@
|
||||
|
||||
$(obj)/ndfc.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/drivers/mtd/nand/ndfc.c $@
|
||||
|
||||
$(obj)/resetvec.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/resetvec.S $@
|
||||
|
||||
$(obj)/start.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/start.S $@
|
||||
|
||||
# from nand_spl directory
|
||||
$(obj)/nand_boot.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/nand_spl/nand_boot.c $@
|
||||
|
||||
# from drivers/nand directory
|
||||
$(obj)/nand_ecc.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $@
|
@ -1,32 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2007
|
||||
# Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
#
|
||||
# AMCC 405EX Reference Platform (Kilauea) board
|
||||
#
|
||||
|
||||
#
|
||||
# CONFIG_SYS_TEXT_BASE for SPL:
|
||||
#
|
||||
# On 4xx platforms the SPL is located at 0xfffff000...0xffffffff,
|
||||
# in the last 4kBytes of memory space in cache.
|
||||
# We will copy this SPL into SDRAM since we can't access the NAND
|
||||
# controller at CS0 while running from this location. So we set
|
||||
# CONFIG_SYS_TEXT_BASE to starting address in SDRAM here.
|
||||
#
|
||||
CONFIG_SYS_TEXT_BASE = 0x00800000
|
||||
|
||||
# PAD_TO used to generate a 16kByte binary needed for the combined image
|
||||
# -> PAD_TO = CONFIG_SYS_TEXT_BASE + 0x4000
|
||||
PAD_TO = 0x00804000
|
||||
|
||||
ifeq ($(debug),1) |
||||
PLATFORM_CPPFLAGS += -DDEBUG
|
||||
endif |
||||
|
||||
ifeq ($(dbcr),1) |
||||
PLATFORM_CPPFLAGS += -DCONFIG_SYS_INIT_DBCR=0x8cff0000
|
||||
endif |
@ -1,48 +0,0 @@ |
||||
/* |
||||
* (C) Copyright 2007 |
||||
* Stefan Roese, DENX Software Engineering, sr@denx.de. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
OUTPUT_ARCH(powerpc:common) |
||||
SECTIONS |
||||
{ |
||||
.resetvec 0x00800FFC : |
||||
{ |
||||
KEEP(*(.resetvec)) |
||||
} = 0xffff |
||||
|
||||
.text : |
||||
{ |
||||
start.o (.text) |
||||
nand_boot.o (.text) |
||||
ndfc.o (.text) |
||||
|
||||
*(.text) |
||||
*(.fixup) |
||||
} |
||||
_etext = .; |
||||
|
||||
.data : |
||||
{ |
||||
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) |
||||
*(.data*) |
||||
*(.sdata*) |
||||
__got2_start = .; |
||||
*(.got2) |
||||
__got2_end = .; |
||||
} |
||||
|
||||
_edata = .; |
||||
|
||||
__bss_start = .; |
||||
.bss (NOLOAD) : |
||||
{ |
||||
*(.sbss) |
||||
*(.bss) |
||||
. = ALIGN(4); |
||||
} |
||||
|
||||
__bss_end = . ; |
||||
} |
@ -1,80 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2006-2007
|
||||
# Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk |
||||
|
||||
nandobj := $(OBJTREE)/nand_spl/
|
||||
|
||||
LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
|
||||
LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
|
||||
$(LDFLAGS_FINAL)
|
||||
asflags-y += -DCONFIG_NAND_SPL
|
||||
ccflags-y += -DCONFIG_NAND_SPL
|
||||
|
||||
SOBJS = start.o init.o resetvec.o
|
||||
COBJS = denali_data_eye.o nand_boot.o nand_ecc.o ndfc.o sdram.o
|
||||
|
||||
OBJS := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
|
||||
__OBJS := $(SOBJS) $(COBJS)
|
||||
LNDIR := $(nandobj)board/$(BOARDDIR)
|
||||
|
||||
targets += $(__OBJS)
|
||||
|
||||
all: $(nandobj)u-boot-spl.bin $(nandobj)u-boot-spl-16k.bin |
||||
|
||||
$(nandobj)u-boot-spl-16k.bin: $(nandobj)u-boot-spl |
||||
$(OBJCOPY) $(OBJCOPYFLAGS) --pad-to=$(PAD_TO) -O binary $< $@
|
||||
|
||||
$(nandobj)u-boot-spl.bin: $(nandobj)u-boot-spl |
||||
$(OBJCOPY) $(OBJCOPYFLAGS) -O binary $< $@
|
||||
|
||||
$(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot.lds |
||||
cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) $(PLATFORM_LIBS) \
|
||||
-Map $(nandobj)u-boot-spl.map -o $@
|
||||
|
||||
$(nandobj)u-boot.lds: $(LDSCRIPT) |
||||
$(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
|
||||
|
||||
# create symbolic links for common files
|
||||
|
||||
# from cpu directory
|
||||
$(obj)/denali_data_eye.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/denali_data_eye.c $@
|
||||
|
||||
$(obj)/ndfc.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/drivers/mtd/nand/ndfc.c $@
|
||||
|
||||
$(obj)/resetvec.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/resetvec.S $@
|
||||
|
||||
$(obj)/start.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/arch/powerpc/cpu/ppc4xx/start.S $@
|
||||
|
||||
# from board directory
|
||||
$(obj)/init.S: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/board/amcc/sequoia/init.S $@
|
||||
|
||||
$(obj)/sdram.c: |
||||
@rm -f $@
|
||||
@rm -f $(obj)/sdram.h
|
||||
ln -s $(SRCTREE)/board/amcc/sequoia/sdram.c $@
|
||||
ln -s $(SRCTREE)/board/amcc/sequoia/sdram.h $(obj)/sdram.h
|
||||
|
||||
# from nand_spl directory
|
||||
$(obj)/nand_boot.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/nand_spl/nand_boot.c $@
|
||||
|
||||
# from drivers/mtd/nand directory
|
||||
$(obj)/nand_ecc.c: |
||||
@rm -f $@
|
||||
ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $@
|
@ -1,33 +0,0 @@ |
||||
#
|
||||
# (C) Copyright 2006
|
||||
# Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
#
|
||||
# AMCC 440EPx Reference Platform (Sequoia) board
|
||||
#
|
||||
|
||||
#
|
||||
# CONFIG_SYS_TEXT_BASE for SPL:
|
||||
#
|
||||
# On 440EP(x) platforms the SPL is located at 0xfffff000...0xffffffff,
|
||||
# in the last 4kBytes of memory space in cache.
|
||||
# We will copy this SPL into internal SRAM in start.S. So we set
|
||||
# CONFIG_SYS_TEXT_BASE to starting address in internal SRAM here.
|
||||
#
|
||||
CONFIG_SYS_TEXT_BASE = 0xE0013000
|
||||
|
||||
# PAD_TO used to generate a 16kByte binary needed for the combined image
|
||||
# -> PAD_TO = CONFIG_SYS_TEXT_BASE + 0x4000
|
||||
PAD_TO = 0xE0017000
|
||||
|
||||
PLATFORM_CPPFLAGS += -DCONFIG_440=1
|
||||
|
||||
ifeq ($(debug),1) |
||||
PLATFORM_CPPFLAGS += -DDEBUG
|
||||
endif |
||||
|
||||
ifeq ($(dbcr),1) |
||||
PLATFORM_CPPFLAGS += -DCONFIG_SYS_INIT_DBCR=0x8cff0000
|
||||
endif |
@ -1,50 +0,0 @@ |
||||
/* |
||||
* (C) Copyright 2006-2010 |
||||
* Stefan Roese, DENX Software Engineering, sr@denx.de. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
OUTPUT_ARCH(powerpc:common) |
||||
SECTIONS |
||||
{ |
||||
.resetvec 0xE0013FFC : |
||||
{ |
||||
KEEP(*(.resetvec)) |
||||
} = 0xffff |
||||
|
||||
.text : |
||||
{ |
||||
start.o (.text) |
||||
init.o (.text) |
||||
nand_boot.o (.text) |
||||
sdram.o (.text) |
||||
ndfc.o (.text) |
||||
|
||||
*(.text) |
||||
*(.fixup) |
||||
} |
||||
_etext = .; |
||||
|
||||
.data : |
||||
{ |
||||
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) |
||||
*(.data*) |
||||
*(.sdata*) |
||||
__got2_start = .; |
||||
*(.got2) |
||||
__got2_end = .; |
||||
} |
||||
|
||||
_edata = .; |
||||
|
||||
__bss_start = .; |
||||
.bss (NOLOAD) : |
||||
{ |
||||
*(.sbss) |
||||
*(.bss) |
||||
. = ALIGN(4); |
||||
} |
||||
|
||||
__bss_end = . ; |
||||
} |
Loading…
Reference in new issue