diff options
42 files changed, 445 insertions, 244 deletions
@@ -2,6 +2,10 @@ 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 Patch by Peter Menzebach, 29 Aug 2005 diff --git a/MAINTAINERS b/MAINTAINERS index d251cd8..a9d433d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -249,11 +249,13 @@ Frank Panno <fpanno@delphintech.com> ep8260 MPC8260 Peter Pearse <peter.pearse@arm.com> - - Integrator/AP CM 926EJ-S, CM7x0T, CM9x0T - Integrator/CP CM 926EJ-S CM920T, CM940T, CM922T-XA10 - Versatile/AB ARM926EJ-S - Versatile/PB ARM926EJ-S + integratorcp All current ARM supplied & + supported core modules + - see http://www.arm.com + /products/DevTools + /Hardware_Platforms.html + versatile ARM926EJ-S + versatile ARM926EJ-S Denis Peter <d.peter@mpl.ch> @@ -162,7 +162,7 @@ LIST_SA="assabet dnp1110 gcplus lart shannon" LIST_ARM7=" \ armadillo B2 ep7312 evb4510 \ - impa7 integratorap_CM720T integratorap_CM7TDMI \ + impa7 integratorap ap7 ap720t \ modnet50 \ " @@ -171,32 +171,28 @@ LIST_ARM7=" \ ######################################################################### LIST_ARM9=" \ - at91rm9200dk cmc_pu2 csb637 \ - integratorap_CM920T integratorap_CM920T_ETM \ - integratorap_CM922T_XA10 integratorap_CM926EJ_S \ - integratorap_CM940T integratorap_CM946E_S \ - integratorap_CM966E_S integratorcp_CM920T \ - integratorcp_CM920T_ETM integratorcp_CM922T_XA10 \ - integratorcp_CM926EJ_S integratorcp_CM940T \ - integratorcp_CM946E_S integratorcp_CM966E_S \ - kb9202 lpd7a400 mp2usb mx1ads \ - mx1fs2 omap1510inn omap1610h2 omap1610inn \ - omap730p2 scb9328 smdk2400 smdk2410 \ - trab VCMA9 versatile voiceblue \ + at91rm9200dk cmc_pu2 \ + ap920t ap922_XA10 ap926ejs ap946es \ + ap966 cp920t cp922_XA10 cp926ejs \ + cp946es cp966 lpd7a400 mp2usb \ + mx1ads mx1fs2 omap1510inn omap1610h2 \ + omap1610inn omap730p2 scb9328 smdk2400 \ + smdk2410 trab VCMA9 versatile \ + versatileab versatilepb voiceblue " ######################################################################### ## ARM10 Systems ######################################################################### LIST_ARM10=" \ - integratorcp_CM10220E integratorcp_CM1026EJ_S \ + integratorcp cp1026 \ " ######################################################################### ## ARM11 Systems ######################################################################### LIST_ARM11=" \ - integratorcp_CM1136JF_S omap2420h4 \ + cp1136 omap2420h4 \ " ######################################################################### @@ -1396,178 +1396,34 @@ csb637_config : unconfig mp2usb_config : unconfig @./mkconfig $(@:_config=) arm arm920t mp2usb NULL at91rm9200 -######################################################################## -## ARM Integrator boards -## There are two variants /AP && /CP -## - many different core modules (CMs) can be used -## - some share characteristics -## Those without specific cpu support can still use U-Boot -## provided the ARM boot monitor (or similar) runs before U-Boot -## to set up the platform e.g. map writeable memory to 0x00000000 -## setup MMU, setup caches etc. -## Ported cores are:- -## ARM926EJ-S -## ARM946E-S -## -######################################################################## -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 \ -integratorap_CM920T_config integratorap_CM920T_ETM_config \ -integratorap_CM922T_XA10_config integratorap_CM926EJ_S_config \ -integratorap_CM940T_config integratorap_CM946E_S_config \ -integratorap_CM966E_S_config integratorap_CM10200E_config \ -integratorap_CM10220E_config integratorap_CM1026EJ_S_config \ -integratorap_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_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,$@); +######################################################################## +## ARM Integrator boards - see doc/README-integrator for more info. +integratorap_config \ +ap_config \ +ap966_config \ +ap922_config \ +ap922_XA10_config \ +ap7_config \ +ap720t_config \ +ap920t_config \ +ap926ejs_config \ +ap946es_config: unconfig + @chmod a+x board/integratorap/split_by_variant.sh + @board/integratorap/split_by_variant.sh $@ $(CC) + +integratorcp_config \ +cp_config \ +cp920t_config \ +cp926ejs_config \ +cp946es_config \ +cp1136_config \ +cp966_config \ +cp922_config \ +cp922_XA10_config \ +cp1026_config: unconfig + @chmod a+x board/integratorcp/split_by_variant.sh + @board/integratorcp/split_by_variant.sh $@ $(CC) kb9202_config : unconfig @./mkconfig $(@:_config=) arm arm920t kb9202 NULL at91rm9200 @@ -1660,8 +1516,14 @@ trab_old_config: unconfig VCMA9_config : unconfig @./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_config: unconfig @@ -1946,6 +1808,7 @@ clean: 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/trab/trab_fkt board/voiceblue/eeprom + rm -f board/integratorap/u-boot.lds board/integratorcp/u-boot.lds clobber: clean find . -type f \( -name .depend \ diff --git a/board/integratorap/Makefile b/board/integratorap/Makefile index cf76ded..358df62 100644 --- a/board/integratorap/Makefile +++ b/board/integratorap/Makefile @@ -30,7 +30,7 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS := integratorap.o flash.o -SOBJS := platform.o memsetup.o +SOBJS := lowlevel_init.o memsetup.o $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $^ diff --git a/board/integratorap/integratorap.c b/board/integratorap/integratorap.c index 4baf39a..d4f61d6 100644 --- a/board/integratorap/integratorap.c +++ b/board/integratorap/integratorap.c @@ -649,8 +649,3 @@ ulong get_tbclk (void) { 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 - */ diff --git a/board/integratorap/platform.S b/board/integratorap/lowlevel_init.S index b208adb..1aacbf4 100644 --- a/board/integratorap/platform.S +++ b/board/integratorap/lowlevel_init.S @@ -37,9 +37,9 @@ reset_cpu: reset_failed: b reset_failed -/* set up the platform, once the cpu has been initialized */ -.globl platformsetup -platformsetup: +/* Set up the platform, once the cpu has been initialized */ +.globl lowlevel_init +lowlevel_init: /* If U-Boot has been run after the ARM boot monitor * then all the necessary actions have been done * otherwise we are running from user flash mapped to 0x00000000 diff --git a/board/integratorap/split_by_variant.sh b/board/integratorap/split_by_variant.sh new file mode 100644 index 0000000..23fc7b3 --- /dev/null +++ b/board/integratorap/split_by_variant.sh @@ -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; diff --git a/board/integratorap/u-boot.lds b/board/integratorap/u-boot.lds.S index cb6ee18..486b5da 100644 --- a/board/integratorap/u-boot.lds +++ b/board/integratorap/u-boot.lds.S @@ -20,6 +20,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * 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_ARCH(arm) @@ -30,7 +32,7 @@ SECTIONS . = ALIGN(4); .text : { - cpu/arm926ejs/start.o (.text) + CPU_FILE (.text) *(.text) } .rodata : { *(.rodata) } diff --git a/board/integratorcp/Makefile b/board/integratorcp/Makefile index 71532d1..3d589fc 100644 --- a/board/integratorcp/Makefile +++ b/board/integratorcp/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS := integratorcp.o flash.o -SOBJS := platform.o memsetup.o +SOBJS := lowlevel_init.o memsetup.o $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $^ diff --git a/board/integratorcp/platform.S b/board/integratorcp/lowlevel_init.S index 612a2c4..e679215 100644 --- a/board/integratorcp/platform.S +++ b/board/integratorcp/lowlevel_init.S @@ -37,9 +37,9 @@ reset_cpu: reset_failed: b reset_failed -/* set up the platform, once the cpu has been initialized */ -.globl platformsetup -platformsetup: +/* Set up the platform, once the cpu has been initialized */ +.globl lowlevel_init +lowlevel_init: /* If U-Boot has been run after the ARM boot monitor * then all the necessary actions have been done * otherwise we are running from user flash mapped to 0x00000000 diff --git a/board/integratorcp/split_by_variant.sh b/board/integratorcp/split_by_variant.sh new file mode 100644 index 0000000..3f63633 --- /dev/null +++ b/board/integratorcp/split_by_variant.sh @@ -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; diff --git a/board/integratorcp/u-boot.lds b/board/integratorcp/u-boot.lds.S index cb6ee18..486b5da 100644 --- a/board/integratorcp/u-boot.lds +++ b/board/integratorcp/u-boot.lds.S @@ -20,6 +20,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * 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_ARCH(arm) @@ -30,7 +32,7 @@ SECTIONS . = ALIGN(4); .text : { - cpu/arm926ejs/start.o (.text) + CPU_FILE (.text) *(.text) } .rodata : { *(.rodata) } diff --git a/board/ns9750dev/Makefile b/board/ns9750dev/Makefile index d2718cc..fb4333c 100644 --- a/board/ns9750dev/Makefile +++ b/board/ns9750dev/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS := ns9750dev.o flash.o led.o -SOBJS := platform.o +SOBJS := lowlevel_init.o $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $(OBJS) $(SOBJS) diff --git a/board/ns9750dev/platform.S b/board/ns9750dev/lowlevel_init.S index afcad15..3a09786 100644 --- a/board/ns9750dev/platform.S +++ b/board/ns9750dev/lowlevel_init.S @@ -75,8 +75,8 @@ _CAS_LATENCY: .word 0x00022000 @ for CAS2 latency #ifndef CONFIG_SKIP_LOWLEVEL_INIT -.globl platformsetup -platformsetup: +.globl lowlevel_init +lowlevel_init: /* 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 diff --git a/board/omap1510inn/Makefile b/board/omap1510inn/Makefile index bd6285c..902b24e 100644 --- a/board/omap1510inn/Makefile +++ b/board/omap1510inn/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS := omap1510innovator.o -SOBJS := platform.o +SOBJS := lowlevel_init.o $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $^ diff --git a/board/omap1510inn/platform.S b/board/omap1510inn/lowlevel_init.S index 8045e84..1c68e5b 100644 --- a/board/omap1510inn/platform.S +++ b/board/omap1510inn/lowlevel_init.S @@ -39,8 +39,8 @@ _TEXT_BASE: .word TEXT_BASE /* sdram load addr from config.mk */ -.globl platformsetup -platformsetup: +.globl lowlevel_init +lowlevel_init: /* * Configure 1510 pins functions to match our board. diff --git a/board/omap1610inn/Makefile b/board/omap1610inn/Makefile index 4a96b83..4560102 100644 --- a/board/omap1610inn/Makefile +++ b/board/omap1610inn/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS := omap1610innovator.o flash.o -SOBJS := platform.o +SOBJS := lowlevel_init.o $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $^ diff --git a/board/omap1610inn/platform.S b/board/omap1610inn/lowlevel_init.S index d694f94..eaf1742 100644 --- a/board/omap1610inn/platform.S +++ b/board/omap1610inn/lowlevel_init.S @@ -37,8 +37,8 @@ _TEXT_BASE: .word TEXT_BASE /* sdram load addr from config.mk */ -.globl platformsetup -platformsetup: +.globl lowlevel_init +lowlevel_init: /*------------------------------------------------------* diff --git a/board/omap2420h4/Makefile b/board/omap2420h4/Makefile index 38dec00..ed47868 100644 --- a/board/omap2420h4/Makefile +++ b/board/omap2420h4/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS := omap2420h4.o mem.o sys_info.o -SOBJS := platform.o +SOBJS := lowlevel_init.o $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $^ diff --git a/board/omap2420h4/platform.S b/board/omap2420h4/lowlevel_init.S index 73ba462..9752fc4 100644 --- a/board/omap2420h4/platform.S +++ b/board/omap2420h4/lowlevel_init.S @@ -158,8 +158,8 @@ pll_div_add: pll_div_val: .word DPLL_VAL /* DPLL setting (300MHz default) */ -.globl platformsetup -platformsetup: +.globl lowlevel_init +lowlevel_init: ldr sp, SRAM_STACK str ip, [sp] /* stash old link register */ mov ip, lr /* save link reg across call */ diff --git a/board/omap5912osk/Makefile b/board/omap5912osk/Makefile index 6480466..4b56421 100644 --- a/board/omap5912osk/Makefile +++ b/board/omap5912osk/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS := omap5912osk.o -SOBJS := platform.o +SOBJS := lowlevel_init.o $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $^ diff --git a/board/omap5912osk/platform.S b/board/omap5912osk/lowlevel_init.S index 33c7242..3b9633a 100644 --- a/board/omap5912osk/platform.S +++ b/board/omap5912osk/lowlevel_init.S @@ -38,8 +38,8 @@ _TEXT_BASE: .word TEXT_BASE /* sdram load addr from config.mk */ -.globl platformsetup -platformsetup: +.globl lowlevel_init +lowlevel_init: /*------------------------------------------------------* diff --git a/board/omap730p2/Makefile b/board/omap730p2/Makefile index 1058508..29467ac 100644 --- a/board/omap730p2/Makefile +++ b/board/omap730p2/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS := omap730p2.o flash.o -SOBJS := platform.o +SOBJS := lowlevel_init.o $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $^ diff --git a/board/omap730p2/platform.S b/board/omap730p2/lowlevel_init.S index f30c242..6c6f482 100644 --- a/board/omap730p2/platform.S +++ b/board/omap730p2/lowlevel_init.S @@ -43,8 +43,8 @@ _TEXT_BASE: .word TEXT_BASE /* sdram load addr from config.mk */ -.globl platformsetup -platformsetup: +.globl lowlevel_init +lowlevel_init: /* Save callers address in r11 - r11 must never be modified */ mov r11, lr diff --git a/board/sx1/Makefile b/board/sx1/Makefile index 8cd02d1..8fbdf2a 100644 --- a/board/sx1/Makefile +++ b/board/sx1/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS := sx1.o -SOBJS := platform.o +SOBJS := lowlevel_init.o $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $^ diff --git a/board/sx1/platform.S b/board/sx1/lowlevel_init.S index bd54df1..bdf812e 100644 --- a/board/sx1/platform.S +++ b/board/sx1/lowlevel_init.S @@ -39,8 +39,8 @@ _TEXT_BASE: .word TEXT_BASE /* sdram load addr from config.mk */ -.globl platformsetup -platformsetup: +.globl lowlevel_init +lowlevel_init: /* * Configure 1510 pins functions to match our board. diff --git a/board/versatile/Makefile b/board/versatile/Makefile index 42b6ed5..fbdc627 100644 --- a/board/versatile/Makefile +++ b/board/versatile/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS := versatile.o flash.o -SOBJS := platform.o +SOBJS := lowlevel_init.o $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $^ diff --git a/board/versatile/platform.S b/board/versatile/lowlevel_init.S index 68c3e8b..bdfce2d 100644 --- a/board/versatile/platform.S +++ b/board/versatile/lowlevel_init.S @@ -26,8 +26,9 @@ #include <config.h> #include <version.h> -.globl platformsetup -platformsetup: +/* Set up the platform, once the cpu has been initialized */ +.globl lowlevel_init +lowlevel_init: /* All done by Versatile's boot monitor! */ mov pc, lr diff --git a/board/versatile/split_by_variant.sh b/board/versatile/split_by_variant.sh new file mode 100644 index 0000000..b462b7e --- /dev/null +++ b/board/versatile/split_by_variant.sh @@ -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 diff --git a/board/voiceblue/setup.S b/board/voiceblue/setup.S index 4a110e8..dcf37b5 100644 --- a/board/voiceblue/setup.S +++ b/board/voiceblue/setup.S @@ -122,8 +122,8 @@ MUX_CONFIG_OFFSETS: .byte 0x0c @ COMP_MODE_CTRL_0 .byte 0xff -.globl platformsetup -platformsetup: +.globl lowlevel_init +lowlevel_init: /* Improve performance a bit... */ mrc p15, 0, r1, c0, c0, 0 @ read C15 ID register mrc p15, 0, r1, c0, c0, 1 @ read C15 Cache information register diff --git a/cpu/arm1136/interrupts.c b/cpu/arm1136/interrupts.c index 23236dc..6b1449e 100644 --- a/cpu/arm1136/interrupts.c +++ b/cpu/arm1136/interrupts.c @@ -32,7 +32,11 @@ #include <common.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> #define TIMER_LOAD_VAL 0 @@ -175,6 +179,9 @@ void do_irq (struct pt_regs *pt_regs) static ulong timestamp; 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. */ int interrupt_init (void) { @@ -189,7 +196,6 @@ int interrupt_init (void) return(0); } - /* * timer without interrupts */ @@ -281,7 +287,6 @@ unsigned long long get_ticks(void) { return get_timer(0); } - /* * This function is derived from PowerPC code (timebase clock frequency). * On ARM it returns the number of timer ticks per second. @@ -292,3 +297,4 @@ ulong get_tbclk (void) tbclk = CFG_HZ; return tbclk; } +#endif /* !Integrator/CP */ diff --git a/cpu/arm1136/start.S b/cpu/arm1136/start.S index c3bf6e3..05c9128 100644 --- a/cpu/arm1136/start.S +++ b/cpu/arm1136/start.S @@ -210,7 +210,7 @@ cpu_init_crit: * basic memory. Go here to bump up clock rate and handle wake up conditions. */ 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 pc, lr /* back to my caller */ /* @@ -397,6 +397,10 @@ arm1136_cache_flush: mcr p15, 0, r1, c7, c5, 0 @ invalidate I cache 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 .globl reset_cpu reset_cpu: @@ -408,3 +412,5 @@ _loop_forever: b _loop_forever rstctl: .word PM_RSTCTRL_WKUP + +#endif diff --git a/cpu/arm720t/cpu.c b/cpu/arm720t/cpu.c index fcca360..a5b6de7 100644 --- a/cpu/arm720t/cpu.c +++ b/cpu/arm720t/cpu.c @@ -76,6 +76,8 @@ int cleanup_before_linux (void) #elif defined(CONFIG_NETARM) || defined(CONFIG_S3C4510B) disable_interrupts (); /* Nothing more needed */ +#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR) + /* No cleanup before linux for IntegratorAP/CM720T as yet */ #else #error No cleanup_before_linux() defined for this CPU type #endif @@ -245,6 +247,11 @@ int dcache_status (void) 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 #error No icache/dcache enable/disable functions defined for this CPU type #endif diff --git a/cpu/arm720t/interrupts.c b/cpu/arm720t/interrupts.c index d0eaca5..575d923 100644 --- a/cpu/arm720t/interrupts.c +++ b/cpu/arm720t/interrupts.c @@ -193,6 +193,8 @@ void do_irq (struct pt_regs *pt_regs) /* clear pending interrupt */ PUT_REG( REG_INTPEND, (1<<(pending>>2))); } +#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR) + /* No do_irq() for IntegratorAP/CM720T as yet */ #else #error do_irq() not defined for this CPU type #endif @@ -219,6 +221,10 @@ static void timer_isr( void *data) { static ulong timestamp; static ulong lastdec; +#if defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR) + /* Use IntegratorAP routines in board/integratorap.c */ +#else + int interrupt_init (void) { @@ -296,6 +302,8 @@ int interrupt_init (void) return (0); } +#endif /* ! IntegratorAP */ + /* * 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 #error Timer routines not defined for this CPU type #endif diff --git a/cpu/arm720t/start.S b/cpu/arm720t/start.S index eb26476..43582b3 100644 --- a/cpu/arm720t/start.S +++ b/cpu/arm720t/start.S @@ -301,6 +301,8 @@ cpu_init_crit: ldr r1, =0x83ffffa0 /* cache-disabled */ str r1, [r0] +#elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR) + /* No specific initialisation for IntegratorAP/CM720T as yet */ #else #error No cpu_init_crit() defined for current CPU type #endif @@ -316,12 +318,12 @@ cpu_init_crit: str r1, [r0] #endif + mov ip, lr /* * before relocating, we have to setup RAM timing * because memory timing is board-dependent, you will * find a lowlevel_init.S in your board directory. */ - mov ip, lr bl lowlevel_init mov lr, ip @@ -530,6 +532,8 @@ reset_cpu: #elif defined(CONFIG_S3C4510B) /* Nothing done here as reseting the CPU is board specific, depending * 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 #error No reset_cpu() defined for current CPU type #endif diff --git a/cpu/arm920t/start.S b/cpu/arm920t/start.S index 74a97d5..4603cf5 100644 --- a/cpu/arm920t/start.S +++ b/cpu/arm920t/start.S @@ -255,7 +255,6 @@ cpu_init_crit: orr r0, r0, #0x00001000 @ set bit 12 (I) I-Cache mcr p15, 0, r0, c1, c0, 0 - /* * before relocating, we have to setup RAM timing * because memory timing is board-dependend, you will @@ -264,7 +263,6 @@ cpu_init_crit: mov ip, lr bl lowlevel_init mov lr, ip - mov pc, lr diff --git a/cpu/arm925t/start.S b/cpu/arm925t/start.S index 2389259..acd7742 100644 --- a/cpu/arm925t/start.S +++ b/cpu/arm925t/start.S @@ -246,7 +246,7 @@ cpu_init_crit: * Go setup Memory and board specific bits prior to relocation. */ 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 pc, lr /* back to my caller */ /* diff --git a/cpu/arm926ejs/start.S b/cpu/arm926ejs/start.S index 5f5a1c5..fc6b20b 100644 --- a/cpu/arm926ejs/start.S +++ b/cpu/arm926ejs/start.S @@ -222,7 +222,7 @@ cpu_init_crit: * Go setup Memory and board specific bits prior to relocation. */ 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 pc, lr /* back to my caller */ /* diff --git a/cpu/arm946es/start.S b/cpu/arm946es/start.S index ef3be8e..e8c908b 100644 --- a/cpu/arm946es/start.S +++ b/cpu/arm946es/start.S @@ -214,7 +214,7 @@ cpu_init_crit: * Go setup Memory and board specific bits prior to relocation. */ 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 pc, lr /* back to my caller */ /* diff --git a/doc/README-integrator b/doc/README-integrator index 827221f..ce8a9d2 100644 --- a/doc/README-integrator +++ b/doc/README-integrator @@ -62,3 +62,49 @@ of the Integrator board itself, has been placed in board/integrator<>/platform.S 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 +********************************* diff --git a/include/asm-arm/arch-arm720t/hardware.h b/include/asm-arm/arch-arm720t/hardware.h index 9404acd..3056ca7 100644 --- a/include/asm-arm/arch-arm720t/hardware.h +++ b/include/asm-arm/arch-arm720t/hardware.h @@ -34,6 +34,8 @@ /* include EP7312 specific hardware file if there was one */ #elif defined(CONFIG_ARMADILLO) /* 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 #error No hardware file defined for this configuration #endif |