9
0
Fork 0

Update make target for ARM supported boards.

Use lowlevel_init() instead of platformsetup() [rename].
Patch by Peter Pearse, 06 Oct 2005
This commit is contained in:
Wolfgang Denk 2005-10-06 17:08:18 +02:00
parent bccae9039e
commit 87cb6862b9
42 changed files with 444 additions and 243 deletions

View File

@ -2,6 +2,10 @@
Changes for U-Boot 1.1.4: Changes for U-Boot 1.1.4:
====================================================================== ======================================================================
* Update make target for ARM supported boards.
Use lowlevel_init() instead of platformsetup() [rename].
Patch by Peter Pearse, 06 Oct 2005
* Fix booting from serial dataflash on AT91RM9200 * Fix booting from serial dataflash on AT91RM9200
Patch by Peter Menzebach, 29 Aug 2005 Patch by Peter Menzebach, 29 Aug 2005

View File

@ -249,11 +249,13 @@ Frank Panno <fpanno@delphintech.com>
ep8260 MPC8260 ep8260 MPC8260
Peter Pearse <peter.pearse@arm.com> Peter Pearse <peter.pearse@arm.com>
integratorcp All current ARM supplied &
Integrator/AP CM 926EJ-S, CM7x0T, CM9x0T supported core modules
Integrator/CP CM 926EJ-S CM920T, CM940T, CM922T-XA10 - see http://www.arm.com
Versatile/AB ARM926EJ-S /products/DevTools
Versatile/PB ARM926EJ-S /Hardware_Platforms.html
versatile ARM926EJ-S
versatile ARM926EJ-S
Denis Peter <d.peter@mpl.ch> Denis Peter <d.peter@mpl.ch>

26
MAKEALL
View File

@ -162,7 +162,7 @@ LIST_SA="assabet dnp1110 gcplus lart shannon"
LIST_ARM7=" \ LIST_ARM7=" \
armadillo B2 ep7312 evb4510 \ armadillo B2 ep7312 evb4510 \
impa7 integratorap_CM720T integratorap_CM7TDMI \ impa7 integratorap ap7 ap720t \
modnet50 \ modnet50 \
" "
@ -171,32 +171,28 @@ LIST_ARM7=" \
######################################################################### #########################################################################
LIST_ARM9=" \ LIST_ARM9=" \
at91rm9200dk cmc_pu2 csb637 \ at91rm9200dk cmc_pu2 \
integratorap_CM920T integratorap_CM920T_ETM \ ap920t ap922_XA10 ap926ejs ap946es \
integratorap_CM922T_XA10 integratorap_CM926EJ_S \ ap966 cp920t cp922_XA10 cp926ejs \
integratorap_CM940T integratorap_CM946E_S \ cp946es cp966 lpd7a400 mp2usb \
integratorap_CM966E_S integratorcp_CM920T \ mx1ads mx1fs2 omap1510inn omap1610h2 \
integratorcp_CM920T_ETM integratorcp_CM922T_XA10 \ omap1610inn omap730p2 scb9328 smdk2400 \
integratorcp_CM926EJ_S integratorcp_CM940T \ smdk2410 trab VCMA9 versatile \
integratorcp_CM946E_S integratorcp_CM966E_S \ versatileab versatilepb voiceblue
kb9202 lpd7a400 mp2usb mx1ads \
mx1fs2 omap1510inn omap1610h2 omap1610inn \
omap730p2 scb9328 smdk2400 smdk2410 \
trab VCMA9 versatile voiceblue \
" "
######################################################################### #########################################################################
## ARM10 Systems ## ARM10 Systems
######################################################################### #########################################################################
LIST_ARM10=" \ LIST_ARM10=" \
integratorcp_CM10220E integratorcp_CM1026EJ_S \ integratorcp cp1026 \
" "
######################################################################### #########################################################################
## ARM11 Systems ## ARM11 Systems
######################################################################### #########################################################################
LIST_ARM11=" \ LIST_ARM11=" \
integratorcp_CM1136JF_S omap2420h4 \ cp1136 omap2420h4 \
" "
######################################################################### #########################################################################

207
Makefile
View File

@ -1396,178 +1396,34 @@ csb637_config : unconfig
mp2usb_config : unconfig mp2usb_config : unconfig
@./mkconfig $(@:_config=) arm arm920t mp2usb NULL at91rm9200 @./mkconfig $(@:_config=) arm arm920t mp2usb NULL at91rm9200
######################################################################## ########################################################################
## ARM Integrator boards ## ARM Integrator boards - see doc/README-integrator for more info.
## There are two variants /AP && /CP integratorap_config \
## - many different core modules (CMs) can be used ap_config \
## - some share characteristics ap966_config \
## Those without specific cpu support can still use U-Boot ap922_config \
## provided the ARM boot monitor (or similar) runs before U-Boot ap922_XA10_config \
## to set up the platform e.g. map writeable memory to 0x00000000 ap7_config \
## setup MMU, setup caches etc. ap720t_config \
## Ported cores are:- ap920t_config \
## ARM926EJ-S ap926ejs_config \
## ARM946E-S ap946es_config: unconfig
## @chmod a+x board/integratorap/split_by_variant.sh
######################################################################## @board/integratorap/split_by_variant.sh $@ $(CC)
xtract_int_board = $(subst _$(subst integrator$1_,,$(subst _config,,$2)),,$(subst _config,,$2))
xtract_int_cm = $(subst integrator$1_,,$(subst _config,,$2))
#########################################################################
## Integrator/AP
#########################################################################
integratorap_config : unconfig
@echo -n "/* Integrator configuration implied " > tmp.fil; \
echo " by Makefile target */" >> tmp.fil; \
echo >> tmp.fil
@echo -n "#define CONFIG_INTEGRATOR 1" >> tmp.fil; \
echo " /* Integrator board */" >> tmp.fil; \
echo -n "#define CONFIG_ARCH_INTEGRATOR" >> tmp.fil; \
echo " 1 /* Integrator/AP */" >> tmp.fil; \
echo "/* Core module not defined */" >> tmp.fil; \
echo -n "#define CONFIG_ARM_INTCM 1" >> tmp.fil; \
echo -n " /* Integrator core module " >> tmp.fil; \
echo "with unknown core */" >> tmp.fil; \
cpu=arm_intcm; \
mv tmp.fil ./include/config.h; \
ubootlds=board/integratorap/u-boot.lds; \
sed -e 's/cpu\/.*\/st/cpu\/'$$cpu'\/st/' \
$$ubootlds > $$ubootlds.tmp; \
mv -f $$ubootlds.tmp $$ubootlds; \
./mkconfig -a integratorap arm arm_intcm integratorap;
integratorap_CM720T_config integratorap_CM7TDMI_config \ integratorcp_config \
integratorap_CM920T_config integratorap_CM920T_ETM_config \ cp_config \
integratorap_CM922T_XA10_config integratorap_CM926EJ_S_config \ cp920t_config \
integratorap_CM940T_config integratorap_CM946E_S_config \ cp926ejs_config \
integratorap_CM966E_S_config integratorap_CM10200E_config \ cp946es_config \
integratorap_CM10220E_config integratorap_CM1026EJ_S_config \ cp1136_config \
integratorap_CM1136JF_S_config : unconfig cp966_config \
@echo -n "/* Integrator configuration implied " > tmp.fil; \ cp922_config \
echo " by Makefile target */" >> tmp.fil; \ cp922_XA10_config \
echo >> tmp.fil cp1026_config: unconfig
@echo -n "#define CONFIG_INTEGRATOR 1" >> tmp.fil; \ @chmod a+x board/integratorcp/split_by_variant.sh
echo " /* Integrator board */" >> tmp.fil; \ @board/integratorcp/split_by_variant.sh $@ $(CC)
echo -n "#define CONFIG_ARCH_INTEGRATOR" >> tmp.fil; \
echo " 1 /* Integrator/AP */" >> tmp.fil; \
cm=$(call xtract_int_cm,ap,$@); \
echo -n "#define CONFIG_$$cm " >> tmp.fil; \
echo " /* core module */" >> tmp.fil; \
case $$cm in \
CM920T) \
echo -n "#define CONFIG_ARM920" >> tmp.fil; \
echo -n "T 1 /* CPU" >> tmp.fil; \
echo -n " core is ARM920T" >> tmp.fil; \
echo " */" >> tmp.fil; \
cpu=arm920t;; \
CM926EJ_S) echo -n "#define CONFIG_ARM926" >> tmp.fil; \
echo -n "EJ_S 1 /* CPU" >> tmp.fil; \
echo -n " core is ARM926EJ-S" >> tmp.fil; \
echo " */" >> tmp.fil; \
cpu=arm926ejs;; \
CM946E_S) echo -n "#define CONFIG_ARM946" >> tmp.fil; \
echo -n "E_S 1 /* CPU" >> tmp.fil; \
echo -n " core is ARM946E-S" >> tmp.fil; \
echo " */" >> tmp.fil; \
cpu=arm946es;; \
*) echo -n "#define CONFIG_ARM_IN" >> tmp.fil; \
echo -n "TCM 1 /* Int" >> tmp.fil; \
echo -n "egrator core module w" >> tmp.fil; \
echo -n "ith unported core" >> tmp.fil; \
echo " */" >> tmp.fil; \
cpu=arm_intcm;; \
esac; \
mv tmp.fil ./include/config.h; \
ubootlds=board/$(call xtract_int_board,ap,$@)/u-boot.lds; \
sed -e 's/cpu\/.*\/st/cpu\/'$$cpu'\/st/' \
$$ubootlds > $$ubootlds.tmp; \
mv -f $$ubootlds.tmp $$ubootlds; \
./mkconfig -a $(call xtract_int_board,ap,$@) arm $$cpu \
$(call xtract_int_board,ap,$@);
#########################################################################
## Integrator/CP
#########################################################################
integratorcp_config : unconfig
@echo -n "/* Integrator configuration implied " > tmp.fil; \
echo " by Makefile target */" >> tmp.fil; \
echo >> tmp.fil
@echo -n "#define CONFIG_INTEGRATOR 1" >> tmp.fil; \
echo " /* Integrator board */" >> tmp.fil; \
echo -n "#define CONFIG_ARCH_CINTEGRATOR" >> tmp.fil; \
echo " 1 /* Integrator/CP */" >> tmp.fil; \
echo "/* Core module not defined */" >> tmp.fil; \
echo -n "#define CONFIG_ARM_INTCM 1" >> tmp.fil; \
echo -n " /* Integrator core module " >> tmp.fil; \
echo "with unknown core */" >> tmp.fil; \
cpu=arm_intcm; \
echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM" >> tmp.fil; \
echo -n " /* CM may not have " >> tmp.fil; \
echo "multiple SSRAM mapping */" >> tmp.fil; \
echo -n "#undef CONFIG_CM_SPD_DETECT " >> tmp.fil; \
echo -n " /* CM may not support SPD " >> tmp.fil; \
echo "query */" >> tmp.fil; \
echo -n "#undef CONFIG_CM_REMAP " >> tmp.fil; \
echo -n " /* CM may not support " >> tmp.fil; \
echo "remapping */" >> tmp.fil; \
echo -n "#undef CONFIG_CM_INIT " >> tmp.fil; \
echo -n " /* CM may not have " >> tmp.fil; \
echo "initialization reg */" >> tmp.fil; \
echo -n "#undef CONFIG_CM_TCRAM " >> tmp.fil; \
echo -n " /* CM may not have TCRAM */" >> tmp.fil; \
mv tmp.fil ./include/config.h; \
ubootlds=board/integratorcp/u-boot.lds; \
sed -e 's/cpu\/.*\/st/cpu\/'$$cpu'\/st/' \
$$ubootlds > $$ubootlds.tmp; \
mv -f $$ubootlds.tmp $$ubootlds; \
./mkconfig -a integratorcp arm arm_intcm integratorcp;
integratorcp_CM920T_config integratorcp_CM920T_ETM_config \
integratorcp_CM922T_XA10_config integratorcp_CM926EJ_S_config \
integratorcp_CM940T_config integratorcp_CM946E_S_config \
integratorcp_CM966E_S_config integratorcp_CM10200E_config \
integratorcp_CM10220E_config integratorcp_CM1026EJ_S_config \
integratorcp_CM1136JF_S_config : unconfig
@echo -n "/* Integrator configuration implied " > tmp.fil; \
echo " by Makefile target */" >> tmp.fil; \
echo >> tmp.fil
@echo -n "#define CONFIG_INTEGRATOR 1" >> tmp.fil; \
echo " /* Integrator board */" >> tmp.fil; \
echo -n "#define CONFIG_ARCH_CINTEGRATOR" >> tmp.fil; \
echo " 1 /* Integrator/CP */" >> tmp.fil; \
cm=$(call xtract_int_cm,cp,$@); \
echo -n "#define CONFIG_$$cm " >> tmp.fil; \
echo " /* core module */" >> tmp.fil; \
echo "/* $$cm core module */" >> tmp.fil; \
case $$cm in \
CM920T) echo -n "#define CONFIG_ARM920" >> tmp.fil; \
echo -n "T 1 /* CPU" >> tmp.fil; \
echo -n " core is ARM920T" >> tmp.fil; \
echo " */" >> tmp.fil; \
cpu=arm920t;; \
CM946E_S) echo -n "#define CONFIG_ARM946" >> tmp.fil; \
echo -n "E_S 1 /* CPU" >> tmp.fil; \
echo -n " core is ARM946E-S" >> tmp.fil; \
echo " */" >> tmp.fil; \
cpu=arm946es;; \
CM926EJ_S) echo -n "#define CONFIG_ARM926" >> tmp.fil; \
echo -n "EJ_S 1 /* CPU" >> tmp.fil; \
echo -n " core is ARM926EJ-S" >> tmp.fil; \
echo " */" >> tmp.fil; \
cpu=arm926ejs;; \
*) echo -n "#define CONFIG_ARM_IN" >> tmp.fil; \
echo -n "TCM 1 /* Int" >> tmp.fil; \
echo -n "egrator core module w" >> tmp.fil; \
echo -n "ith unported core" >> tmp.fil; \
echo " */" >> tmp.fil; \
cpu=arm_intcm;; \
esac; \
mv tmp.fil ./include/config.h; \
ubootlds=board/$(call xtract_int_board,cp,$@)/u-boot.lds; \
sed -e 's/cpu\/.*\/st/cpu\/'$$cpu'\/st/' \
$$ubootlds > $$ubootlds.tmp; \
mv -f $$ubootlds.tmp $$ubootlds; \
./mkconfig -a $(call xtract_int_board,cp,$@) arm $$cpu \
$(call xtract_int_board,cp,$@);
kb9202_config : unconfig kb9202_config : unconfig
@./mkconfig $(@:_config=) arm arm920t kb9202 NULL at91rm9200 @./mkconfig $(@:_config=) arm arm920t kb9202 NULL at91rm9200
@ -1660,8 +1516,14 @@ trab_old_config: unconfig
VCMA9_config : unconfig VCMA9_config : unconfig
@./mkconfig $(@:_config=) arm arm920t vcma9 mpl s3c24x0 @./mkconfig $(@:_config=) arm arm920t vcma9 mpl s3c24x0
versatile_config : unconfig #========================================================================
@./mkconfig $(@:_config=) arm arm926ejs versatile # ARM supplied Versatile development boards
#========================================================================
versatile_config \
versatileab_config \
versatilepb_config : unconfig
@chmod a+x board/versatile/split_by_variant.sh
@board/versatile/split_by_variant.sh $@ $(CC)
voiceblue_smallflash_config \ voiceblue_smallflash_config \
voiceblue_config: unconfig voiceblue_config: unconfig
@ -1946,6 +1808,7 @@ clean:
rm -f tools/env/fw_printenv tools/env/fw_setenv rm -f tools/env/fw_printenv tools/env/fw_setenv
rm -f board/cray/L1/bootscript.c board/cray/L1/bootscript.image rm -f board/cray/L1/bootscript.c board/cray/L1/bootscript.image
rm -f board/trab/trab_fkt board/voiceblue/eeprom rm -f board/trab/trab_fkt board/voiceblue/eeprom
rm -f board/integratorap/u-boot.lds board/integratorcp/u-boot.lds
clobber: clean clobber: clean
find . -type f \( -name .depend \ find . -type f \( -name .depend \

View File

@ -30,7 +30,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = lib$(BOARD).a
OBJS := integratorap.o flash.o OBJS := integratorap.o flash.o
SOBJS := platform.o memsetup.o SOBJS := lowlevel_init.o memsetup.o
$(LIB): $(OBJS) $(SOBJS) $(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^ $(AR) crv $@ $^

View File

@ -649,8 +649,3 @@ ulong get_tbclk (void)
{ {
return CFG_HZ_CLOCK/div_clock; return CFG_HZ_CLOCK/div_clock;
} }
/* The Integrator/AP timer1 is clocked at 24MHz
* can be divided by 16 or 256
* and is a 16-bit counter
*/

View File

@ -37,9 +37,9 @@ reset_cpu:
reset_failed: reset_failed:
b reset_failed b reset_failed
/* set up the platform, once the cpu has been initialized */ /* Set up the platform, once the cpu has been initialized */
.globl platformsetup .globl lowlevel_init
platformsetup: lowlevel_init:
/* If U-Boot has been run after the ARM boot monitor /* If U-Boot has been run after the ARM boot monitor
* then all the necessary actions have been done * then all the necessary actions have been done
* otherwise we are running from user flash mapped to 0x00000000 * otherwise we are running from user flash mapped to 0x00000000

View File

@ -0,0 +1,106 @@
#!/bin/sh
# ---------------------------------------------------------
# Set the platform defines
# ---------------------------------------------------------
echo -n "/* Integrator configuration implied " > tmp.fil
echo " by Makefile target */" >> tmp.fil
echo -n "#define CONFIG_INTEGRATOR" >> tmp.fil
echo " /* Integrator board */" >> tmp.fil
echo -n "#define CONFIG_ARCH_INTEGRATOR" >> tmp.fil
echo " 1 /* Integrator/AP */" >> tmp.fil
# ---------------------------------------------------------
# Set the core module defines according to Core Module
# ---------------------------------------------------------
CC=$(CROSS_COMPILE)gcc
cpu="arm_intcm"
if [ "$2" == "" ]
then
echo "$0:: No preprocessor parameter - using $(CROSS_COMPILE)gcc"
else
CC=$2
fi
if [ "$1" == "" ]
then
echo "$0:: No parameters - using $(CROSS_COMPILE)gcc arm_intcm"
else
case "$1" in
ap7_config | \
ap966_config | \
ap922_config | \
integratorap_config | \
ap_config)
cpu="arm_intcm"
;;
ap720t_config)
cpu="arm720t"
echo -n "#define CONFIG_CM720T" >> tmp.fil
echo " 1 /* CPU core is ARM720T */ " >> tmp.fil
;;
ap922_XA10_config)
echo -n "#define CONFIG_CM922T_XA10" >> tmp.fil
echo " 1 /* CPU core is ARM922T_XA10 */" >> tmp.fil
cpu="arm_intcm"
;;
ap920t_config)
cpu="arm920t"
echo -n "#define CONFIG_CM920T" >> tmp.fil
echo " 1 /* CPU core is ARM920T */" >> tmp.fil
;;
ap926ejs_config)
cpu="arm926ejs"
echo -n "#define CONFIG_CM926EJ_S" >> tmp.fil
echo " 1 /* CPU core is ARM926EJ-S */ " >> tmp.fil
;;
ap946es_config)
cpu="arm946es"
echo -n "#define CONFIG_CM946E_S" >> tmp.fil
echo " 1 /* CPU core is ARM946E-S */ " >> tmp.fil
;;
*)
echo "$0:: Unrecognised target - using arm_intcm"
cpu="arm_intcm"
;;
esac
fi
if [ "$cpu" == "arm_intcm" ]
then
echo "/* Core module undefined/not ported */" >> tmp.fil
echo "#define CONFIG_ARM_INTCM 1" >> tmp.fil
echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM" >> tmp.fil
echo -n " /* CM may not have " >> tmp.fil
echo "multiple SSRAM mapping */" >> tmp.fil
echo -n "#undef CONFIG_CM_SPD_DETECT " >> tmp.fil
echo -n " /* CM may not support SPD " >> tmp.fil
echo "query */" >> tmp.fil
echo -n "#undef CONFIG_CM_REMAP " >> tmp.fil
echo -n " /* CM may not support " >> tmp.fil
echo "remapping */" >> tmp.fil
echo -n "#undef CONFIG_CM_INIT " >> tmp.fil
echo -n " /* CM may not have " >> tmp.fil
echo "initialization reg */" >> tmp.fil
echo -n "#undef CONFIG_CM_TCRAM " >> tmp.fil
echo " /* CM may not have TCRAM */" >> tmp.fil
fi
mv tmp.fil ./include/config.h
# ---------------------------------------------------------
# Ensure correct core object loaded first in U-Boot image
# ---------------------------------------------------------
$CC -E -P -C -D CPU_FILE=cpu/$cpu/start.o \
-o board/integratorap/u-boot.lds board/integratorap/u-boot.lds.S
# ---------------------------------------------------------
# Complete the configuration
# ---------------------------------------------------------
./mkconfig -a integratorap arm $cpu integratorap;

View File

@ -20,6 +20,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
/* Preprocessed during configuration to emsure the core module processor code,
from CPU_FILE, is placed at the start of the image */
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm) OUTPUT_ARCH(arm)
@ -30,7 +32,7 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
.text : .text :
{ {
cpu/arm926ejs/start.o (.text) CPU_FILE (.text)
*(.text) *(.text)
} }
.rodata : { *(.rodata) } .rodata : { *(.rodata) }

View File

@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = lib$(BOARD).a
OBJS := integratorcp.o flash.o OBJS := integratorcp.o flash.o
SOBJS := platform.o memsetup.o SOBJS := lowlevel_init.o memsetup.o
$(LIB): $(OBJS) $(SOBJS) $(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^ $(AR) crv $@ $^

View File

@ -37,9 +37,9 @@ reset_cpu:
reset_failed: reset_failed:
b reset_failed b reset_failed
/* set up the platform, once the cpu has been initialized */ /* Set up the platform, once the cpu has been initialized */
.globl platformsetup .globl lowlevel_init
platformsetup: lowlevel_init:
/* If U-Boot has been run after the ARM boot monitor /* If U-Boot has been run after the ARM boot monitor
* then all the necessary actions have been done * then all the necessary actions have been done
* otherwise we are running from user flash mapped to 0x00000000 * otherwise we are running from user flash mapped to 0x00000000

View File

@ -0,0 +1,106 @@
#!/bin/sh
# ---------------------------------------------------------
# Set the platform defines
# ---------------------------------------------------------
echo -n "/* Integrator configuration implied " > tmp.fil
echo " by Makefile target */" >> tmp.fil
echo -n "#define CONFIG_INTEGRATOR" >> tmp.fil
echo " /* Integrator board */" >> tmp.fil
echo -n "#define CONFIG_ARCH_CINTEGRATOR" >> tmp.fil
echo " 1 /* Integrator/CP */" >> tmp.fil
# ---------------------------------------------------------
# Set the core module defines according to Core Module
# ---------------------------------------------------------
CC=$(CROSS_COMPILE)gcc
cpu="arm_intcm"
if [ "$2" == "" ]
then
echo "$0:: No preprocessor parameter - using $(CROSS_COMPILE)gcc"
else
CC=$2
fi
if [ "$1" == "" ]
then
echo "$0:: No parameters - using $(CROSS_COMPILE)gcc arm_intcm"
else
case "$1" in
cp966_config | \
cp922_config | \
cp1026_config | \
integratorcp_config | \
cp_config)
cpu="arm_intcm"
;;
cp922_XA10_config)
echo -n "#define CONFIG_CM922T_XA10" >> tmp.fil
echo " 1 /* CPU core is ARM922T_XA10 */" >> tmp.fil
cpu="arm_intcm"
;;
cp920t_config)
cpu="arm920t"
echo -n "#define CONFIG_CM920T" >> tmp.fil
echo " 1 /* CPU core is ARM920T */" >> tmp.fil
;;
cp926ejs_config)
cpu="arm926ejs"
echo -n "#define CONFIG_CM926EJ_S" >> tmp.fil
echo " 1 /* CPU core is ARM926EJ-S */ " >> tmp.fil
;;
cp946es_config)
cpu="arm946es"
echo -n "#define CONFIG_CM946E_S" >> tmp.fil
echo " 1 /* CPU core is ARM946E-S */ " >> tmp.fil
;;
cp1136_config)
cpu="arm1136"
echo -n "#define CONFIG_CM1136EJF_S" >> tmp.fil
echo " 1 /* CPU core is ARM1136JF-S */ " >> tmp.fil
;;
*)
echo "$0:: Unrecognised target - using arm_intcm"
cpu="arm_intcm"
;;
esac
fi
if [ "$cpu" == "arm_intcm" ]
then
echo "/* Core module undefined/not ported */" >> tmp.fil
echo "#define CONFIG_ARM_INTCM 1" >> tmp.fil
echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM" >> tmp.fil
echo -n " /* CM may not have " >> tmp.fil
echo "multiple SSRAM mapping */" >> tmp.fil
echo -n "#undef CONFIG_CM_SPD_DETECT " >> tmp.fil
echo -n " /* CM may not support SPD " >> tmp.fil
echo "query */" >> tmp.fil
echo -n "#undef CONFIG_CM_REMAP " >> tmp.fil
echo -n " /* CM may not support " >> tmp.fil
echo "remapping */" >> tmp.fil
echo -n "#undef CONFIG_CM_INIT " >> tmp.fil
echo -n " /* CM may not have " >> tmp.fil
echo "initialization reg */" >> tmp.fil
echo -n "#undef CONFIG_CM_TCRAM " >> tmp.fil
echo " /* CM may not have TCRAM */" >> tmp.fil
fi
mv tmp.fil ./include/config.h
# ---------------------------------------------------------
# Ensure correct core object loaded first in U-Boot image
# ---------------------------------------------------------
$CC -E -P -C -D CPU_FILE=cpu/$cpu/start.o \
-o board/integratorcp/u-boot.lds board/integratorcp/u-boot.lds.S
# ---------------------------------------------------------
# Complete the configuration
# ---------------------------------------------------------
./mkconfig -a integratorcp arm $cpu integratorcp;

View File

@ -20,6 +20,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
/* Preprocessed during configuration to emsure the core module processor code,
from CPU_FILE, is placed at the start of the image */
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm) OUTPUT_ARCH(arm)
@ -30,7 +32,7 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
.text : .text :
{ {
cpu/arm926ejs/start.o (.text) CPU_FILE (.text)
*(.text) *(.text)
} }
.rodata : { *(.rodata) } .rodata : { *(.rodata) }

View File

@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = lib$(BOARD).a
OBJS := ns9750dev.o flash.o led.o OBJS := ns9750dev.o flash.o led.o
SOBJS := platform.o SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS) $(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $(OBJS) $(SOBJS) $(AR) crv $@ $(OBJS) $(SOBJS)

View File

@ -75,8 +75,8 @@ _CAS_LATENCY:
.word 0x00022000 @ for CAS2 latency .word 0x00022000 @ for CAS2 latency
#ifndef CONFIG_SKIP_LOWLEVEL_INIT #ifndef CONFIG_SKIP_LOWLEVEL_INIT
.globl platformsetup .globl lowlevel_init
platformsetup: lowlevel_init:
/* U-Boot may be linked to RAM at 0x780000. But this code will run in /* U-Boot may be linked to RAM at 0x780000. But this code will run in
flash from 0x0. But in order to enable RAM we have to disable the flash from 0x0. But in order to enable RAM we have to disable the

View File

@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = lib$(BOARD).a
OBJS := omap1510innovator.o OBJS := omap1510innovator.o
SOBJS := platform.o SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS) $(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^ $(AR) crv $@ $^

View File

@ -39,8 +39,8 @@
_TEXT_BASE: _TEXT_BASE:
.word TEXT_BASE /* sdram load addr from config.mk */ .word TEXT_BASE /* sdram load addr from config.mk */
.globl platformsetup .globl lowlevel_init
platformsetup: lowlevel_init:
/* /*
* Configure 1510 pins functions to match our board. * Configure 1510 pins functions to match our board.

View File

@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = lib$(BOARD).a
OBJS := omap1610innovator.o flash.o OBJS := omap1610innovator.o flash.o
SOBJS := platform.o SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS) $(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^ $(AR) crv $@ $^

View File

@ -37,8 +37,8 @@
_TEXT_BASE: _TEXT_BASE:
.word TEXT_BASE /* sdram load addr from config.mk */ .word TEXT_BASE /* sdram load addr from config.mk */
.globl platformsetup .globl lowlevel_init
platformsetup: lowlevel_init:
/*------------------------------------------------------* /*------------------------------------------------------*

View File

@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = lib$(BOARD).a
OBJS := omap2420h4.o mem.o sys_info.o OBJS := omap2420h4.o mem.o sys_info.o
SOBJS := platform.o SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS) $(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^ $(AR) crv $@ $^

View File

@ -158,8 +158,8 @@ pll_div_add:
pll_div_val: pll_div_val:
.word DPLL_VAL /* DPLL setting (300MHz default) */ .word DPLL_VAL /* DPLL setting (300MHz default) */
.globl platformsetup .globl lowlevel_init
platformsetup: lowlevel_init:
ldr sp, SRAM_STACK ldr sp, SRAM_STACK
str ip, [sp] /* stash old link register */ str ip, [sp] /* stash old link register */
mov ip, lr /* save link reg across call */ mov ip, lr /* save link reg across call */

View File

@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = lib$(BOARD).a
OBJS := omap5912osk.o OBJS := omap5912osk.o
SOBJS := platform.o SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS) $(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^ $(AR) crv $@ $^

View File

@ -38,8 +38,8 @@
_TEXT_BASE: _TEXT_BASE:
.word TEXT_BASE /* sdram load addr from config.mk */ .word TEXT_BASE /* sdram load addr from config.mk */
.globl platformsetup .globl lowlevel_init
platformsetup: lowlevel_init:
/*------------------------------------------------------* /*------------------------------------------------------*

View File

@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = lib$(BOARD).a
OBJS := omap730p2.o flash.o OBJS := omap730p2.o flash.o
SOBJS := platform.o SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS) $(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^ $(AR) crv $@ $^

View File

@ -43,8 +43,8 @@
_TEXT_BASE: _TEXT_BASE:
.word TEXT_BASE /* sdram load addr from config.mk */ .word TEXT_BASE /* sdram load addr from config.mk */
.globl platformsetup .globl lowlevel_init
platformsetup: lowlevel_init:
/* Save callers address in r11 - r11 must never be modified */ /* Save callers address in r11 - r11 must never be modified */
mov r11, lr mov r11, lr

View File

@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = lib$(BOARD).a
OBJS := sx1.o OBJS := sx1.o
SOBJS := platform.o SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS) $(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^ $(AR) crv $@ $^

View File

@ -39,8 +39,8 @@
_TEXT_BASE: _TEXT_BASE:
.word TEXT_BASE /* sdram load addr from config.mk */ .word TEXT_BASE /* sdram load addr from config.mk */
.globl platformsetup .globl lowlevel_init
platformsetup: lowlevel_init:
/* /*
* Configure 1510 pins functions to match our board. * Configure 1510 pins functions to match our board.

View File

@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = lib$(BOARD).a
OBJS := versatile.o flash.o OBJS := versatile.o flash.o
SOBJS := platform.o SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS) $(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^ $(AR) crv $@ $^

View File

@ -26,8 +26,9 @@
#include <config.h> #include <config.h>
#include <version.h> #include <version.h>
.globl platformsetup /* Set up the platform, once the cpu has been initialized */
platformsetup: .globl lowlevel_init
lowlevel_init:
/* All done by Versatile's boot monitor! */ /* All done by Versatile's boot monitor! */
mov pc, lr mov pc, lr

View File

@ -0,0 +1,45 @@
#!/bin/sh
# ---------------------------------------------------------
# Set the core module defines according to Core Module
# ---------------------------------------------------------
CC=$(CROSS_COMPILE)gcc
config="versatilepb_config"
if [ "$2" == "" ]
then
echo "$0:: No preprocessor parameter - using $(CROSS_COMPILE)gcc"
else
CC=$2
fi
# ---------------------------------------------------------
# Set up the Versatile type define
# ---------------------------------------------------------
if [ "$1" == "" ]
then
echo "$0:: No parameters - using $(CROSS_COMPILE)gcc versatilepb_config"
else
case "$config" in
versatilepb_config | \
versatile_config)
echo "#define CONFIG_ARCH_VERSATILE_PB" > ./include/config.h
;;
versatileab_config)
echo "#define CONFIG_ARCH_VERSATILE_AB" > ./include/config.h
;;
*)
echo "$0:: Unrecognised config - using versatilepb_config"
;;
esac
fi
# ---------------------------------------------------------
# Complete the configuration
# ---------------------------------------------------------
./mkconfig -a versatile arm arm926ejs versatile

View File

@ -122,8 +122,8 @@ MUX_CONFIG_OFFSETS:
.byte 0x0c @ COMP_MODE_CTRL_0 .byte 0x0c @ COMP_MODE_CTRL_0
.byte 0xff .byte 0xff
.globl platformsetup .globl lowlevel_init
platformsetup: lowlevel_init:
/* Improve performance a bit... */ /* Improve performance a bit... */
mrc p15, 0, r1, c0, c0, 0 @ read C15 ID register mrc p15, 0, r1, c0, c0, 0 @ read C15 ID register
mrc p15, 0, r1, c0, c0, 1 @ read C15 Cache information register mrc p15, 0, r1, c0, c0, 1 @ read C15 Cache information register

View File

@ -32,7 +32,11 @@
#include <common.h> #include <common.h>
#include <asm/arch/bits.h> #include <asm/arch/bits.h>
#include <asm/arch/omap2420.h>
#if !defined(CONFIG_INTEGRATOR) || ! defined(CONFIG_ARCH_CINTEGRATOR)
# include <asm/arch/omap2420.h>
#endif
#include <asm/proc-armv/ptrace.h> #include <asm/proc-armv/ptrace.h>
#define TIMER_LOAD_VAL 0 #define TIMER_LOAD_VAL 0
@ -175,6 +179,9 @@ void do_irq (struct pt_regs *pt_regs)
static ulong timestamp; static ulong timestamp;
static ulong lastinc; static ulong lastinc;
#if defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_CINTEGRATOR)
/* Use the IntegratorCP function from board/integratorcp.c */
#else
/* nothing really to do with interrupts, just starts up a counter. */ /* nothing really to do with interrupts, just starts up a counter. */
int interrupt_init (void) int interrupt_init (void)
{ {
@ -189,7 +196,6 @@ int interrupt_init (void)
return(0); return(0);
} }
/* /*
* timer without interrupts * timer without interrupts
*/ */
@ -281,7 +287,6 @@ unsigned long long get_ticks(void)
{ {
return get_timer(0); return get_timer(0);
} }
/* /*
* This function is derived from PowerPC code (timebase clock frequency). * This function is derived from PowerPC code (timebase clock frequency).
* On ARM it returns the number of timer ticks per second. * On ARM it returns the number of timer ticks per second.
@ -292,3 +297,4 @@ ulong get_tbclk (void)
tbclk = CFG_HZ; tbclk = CFG_HZ;
return tbclk; return tbclk;
} }
#endif /* !Integrator/CP */

View File

@ -210,7 +210,7 @@ cpu_init_crit:
* basic memory. Go here to bump up clock rate and handle wake up conditions. * basic memory. Go here to bump up clock rate and handle wake up conditions.
*/ */
mov ip, lr /* persevere link reg across call */ mov ip, lr /* persevere link reg across call */
bl platformsetup /* go setup pll,mux,memory */ bl lowlevel_init /* go setup pll,mux,memory */
mov lr, ip /* restore link */ mov lr, ip /* restore link */
mov pc, lr /* back to my caller */ mov pc, lr /* back to my caller */
/* /*
@ -397,6 +397,10 @@ arm1136_cache_flush:
mcr p15, 0, r1, c7, c5, 0 @ invalidate I cache mcr p15, 0, r1, c7, c5, 0 @ invalidate I cache
mov pc, lr @ back to caller mov pc, lr @ back to caller
#if defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_CINTEGRATOR)
/* Use the IntegratorCP function from board/integratorcp/platform.S */
#else
.align 5 .align 5
.globl reset_cpu .globl reset_cpu
reset_cpu: reset_cpu:
@ -408,3 +412,5 @@ _loop_forever:
b _loop_forever b _loop_forever
rstctl: rstctl:
.word PM_RSTCTRL_WKUP .word PM_RSTCTRL_WKUP
#endif

View File

@ -76,6 +76,8 @@ int cleanup_before_linux (void)
#elif defined(CONFIG_NETARM) || defined(CONFIG_S3C4510B) #elif defined(CONFIG_NETARM) || defined(CONFIG_S3C4510B)
disable_interrupts (); disable_interrupts ();
/* Nothing more needed */ /* Nothing more needed */
#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
/* No cleanup before linux for IntegratorAP/CM720T as yet */
#else #else
#error No cleanup_before_linux() defined for this CPU type #error No cleanup_before_linux() defined for this CPU type
#endif #endif
@ -245,6 +247,11 @@ int dcache_status (void)
return icache_status(); return icache_status();
} }
#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
/* No specific cache setup for IntegratorAP/CM720T as yet */
void icache_enable (void)
{
}
#else #else
#error No icache/dcache enable/disable functions defined for this CPU type #error No icache/dcache enable/disable functions defined for this CPU type
#endif #endif

View File

@ -193,6 +193,8 @@ void do_irq (struct pt_regs *pt_regs)
/* clear pending interrupt */ /* clear pending interrupt */
PUT_REG( REG_INTPEND, (1<<(pending>>2))); PUT_REG( REG_INTPEND, (1<<(pending>>2)));
} }
#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
/* No do_irq() for IntegratorAP/CM720T as yet */
#else #else
#error do_irq() not defined for this CPU type #error do_irq() not defined for this CPU type
#endif #endif
@ -219,6 +221,10 @@ static void timer_isr( void *data) {
static ulong timestamp; static ulong timestamp;
static ulong lastdec; static ulong lastdec;
#if defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
/* Use IntegratorAP routines in board/integratorap.c */
#else
int interrupt_init (void) int interrupt_init (void)
{ {
@ -296,6 +302,8 @@ int interrupt_init (void)
return (0); return (0);
} }
#endif /* ! IntegratorAP */
/* /*
* timer without interrupts * timer without interrupts
*/ */
@ -398,6 +406,8 @@ void udelay (unsigned long usec)
} }
#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
/* No timer routines for IntegratorAP/CM720T as yet */
#else #else
#error Timer routines not defined for this CPU type #error Timer routines not defined for this CPU type
#endif #endif

View File

@ -301,6 +301,8 @@ cpu_init_crit:
ldr r1, =0x83ffffa0 /* cache-disabled */ ldr r1, =0x83ffffa0 /* cache-disabled */
str r1, [r0] str r1, [r0]
#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
/* No specific initialisation for IntegratorAP/CM720T as yet */
#else #else
#error No cpu_init_crit() defined for current CPU type #error No cpu_init_crit() defined for current CPU type
#endif #endif
@ -316,12 +318,12 @@ cpu_init_crit:
str r1, [r0] str r1, [r0]
#endif #endif
mov ip, lr
/* /*
* before relocating, we have to setup RAM timing * before relocating, we have to setup RAM timing
* because memory timing is board-dependent, you will * because memory timing is board-dependent, you will
* find a lowlevel_init.S in your board directory. * find a lowlevel_init.S in your board directory.
*/ */
mov ip, lr
bl lowlevel_init bl lowlevel_init
mov lr, ip mov lr, ip
@ -530,6 +532,8 @@ reset_cpu:
#elif defined(CONFIG_S3C4510B) #elif defined(CONFIG_S3C4510B)
/* Nothing done here as reseting the CPU is board specific, depending /* Nothing done here as reseting the CPU is board specific, depending
* on external peripherals such as watchdog timers, etc. */ * on external peripherals such as watchdog timers, etc. */
#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
/* No specific reset actions for IntegratorAP/CM720T as yet */
#else #else
#error No reset_cpu() defined for current CPU type #error No reset_cpu() defined for current CPU type
#endif #endif

View File

@ -255,7 +255,6 @@ cpu_init_crit:
orr r0, r0, #0x00001000 @ set bit 12 (I) I-Cache orr r0, r0, #0x00001000 @ set bit 12 (I) I-Cache
mcr p15, 0, r0, c1, c0, 0 mcr p15, 0, r0, c1, c0, 0
/* /*
* before relocating, we have to setup RAM timing * before relocating, we have to setup RAM timing
* because memory timing is board-dependend, you will * because memory timing is board-dependend, you will
@ -264,7 +263,6 @@ cpu_init_crit:
mov ip, lr mov ip, lr
bl lowlevel_init bl lowlevel_init
mov lr, ip mov lr, ip
mov pc, lr mov pc, lr

View File

@ -246,7 +246,7 @@ cpu_init_crit:
* Go setup Memory and board specific bits prior to relocation. * Go setup Memory and board specific bits prior to relocation.
*/ */
mov ip, lr /* perserve link reg across call */ mov ip, lr /* perserve link reg across call */
bl platformsetup /* go setup pll,mux,memory */ bl lowlevel_init /* go setup pll,mux,memory */
mov lr, ip /* restore link */ mov lr, ip /* restore link */
mov pc, lr /* back to my caller */ mov pc, lr /* back to my caller */
/* /*

View File

@ -222,7 +222,7 @@ cpu_init_crit:
* Go setup Memory and board specific bits prior to relocation. * Go setup Memory and board specific bits prior to relocation.
*/ */
mov ip, lr /* perserve link reg across call */ mov ip, lr /* perserve link reg across call */
bl platformsetup /* go setup pll,mux,memory */ bl lowlevel_init /* go setup pll,mux,memory */
mov lr, ip /* restore link */ mov lr, ip /* restore link */
mov pc, lr /* back to my caller */ mov pc, lr /* back to my caller */
/* /*

View File

@ -214,7 +214,7 @@ cpu_init_crit:
* Go setup Memory and board specific bits prior to relocation. * Go setup Memory and board specific bits prior to relocation.
*/ */
mov ip, lr /* perserve link reg across call */ mov ip, lr /* perserve link reg across call */
bl platformsetup /* go setup memory */ bl lowlevel_init /* go setup memory */
mov lr, ip /* restore link */ mov lr, ip /* restore link */
mov pc, lr /* back to my caller */ mov pc, lr /* back to my caller */
/* /*

View File

@ -62,3 +62,49 @@ of the Integrator board itself, has been placed in
board/integrator<>/platform.S board/integrator<>/platform.S
board/integrator<>/integrator<>.c board/integrator<>/integrator<>.c
Targets
=======
The U-Boot make targets map to the available core modules as below.
Integrator/AP is no longer available from ARM.
Core modules marked ** are also no longer available.
ap720t_config ** CM720T
ap920t_config ** CM920T
ap926ejs_config Integrator Core Module for ARM926EJ-STM
ap946es_config Integrator Core Module for ARM946E-STM
cp920t_config ** CM920T
cp926ejs_config Integrator Core Module for ARM926EJ-STM
cp946es_config Integrator Core Module for ARM946E-STM
cp1136_config Integrator Core Module ARM1136JF-S TM
The final groups of targets are for core modules where no explicit cpu
code has yet been added to U-Boot i.e. they all use the same U-Boot binary
using the generic "arm_intcm" core:
ap966_config Integrator Core Module for ARM966E-S TM
ap922_config Integrator Core Module for ARM922T TM with ETM
ap922_XA10_config Integrator Core Module for ARM922T using Altera Excalibur
ap7_config ** CM7TDMI
integratorap_config
ap_config
cp966_config Integrator Core Module for ARM966E-S TM
cp922_config Integrator Core Module for ARM922T TM with ETM
cp922_XA10_config Integrator Core Module for ARM922T using Altera Excalibur
cp1026_config Integrator Core Module ARM1026EJ-S TM
integratorcp_config
cp_config
The Makefile targets call board/integrator<>/split_by_variant.sh
to configure various defines in include/configs/integrator<>.h
to indicate the core module & core configuration and ensure that
board/integrator<>/u-boot.lds loads the cpu object first in the U-Boot image.
*********************************
Because of this mechanism
> make clean
must be run before each change in configuration
*********************************

View File

@ -34,6 +34,8 @@
/* include EP7312 specific hardware file if there was one */ /* include EP7312 specific hardware file if there was one */
#elif defined(CONFIG_ARMADILLO) #elif defined(CONFIG_ARMADILLO)
/* include armadillo specific hardware file if there was one */ /* include armadillo specific hardware file if there was one */
#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
/* include IntegratorCP/CM720T specific hardware file if there was one */
#else #else
#error No hardware file defined for this configuration #error No hardware file defined for this configuration
#endif #endif