浏览代码

Update make target for ARM supported boards.
Use lowlevel_init() instead of platformsetup() [rename].
Patch by Peter Pearse, 06 Oct 2005

Wolfgang Denk 19 年之前
父节点
当前提交
87cb6862b9
共有 42 个文件被更改,包括 445 次插入244 次删除
  1. 4 0
      CHANGELOG
  2. 7 5
      MAINTAINERS
  3. 11 15
      MAKEALL
  4. 36 173
      Makefile
  5. 1 1
      board/integratorap/Makefile
  6. 0 5
      board/integratorap/integratorap.c
  7. 3 3
      board/integratorap/lowlevel_init.S
  8. 106 0
      board/integratorap/split_by_variant.sh
  9. 3 1
      board/integratorap/u-boot.lds.S
  10. 1 1
      board/integratorcp/Makefile
  11. 3 3
      board/integratorcp/lowlevel_init.S
  12. 106 0
      board/integratorcp/split_by_variant.sh
  13. 3 1
      board/integratorcp/u-boot.lds.S
  14. 1 1
      board/ns9750dev/Makefile
  15. 2 2
      board/ns9750dev/lowlevel_init.S
  16. 1 1
      board/omap1510inn/Makefile
  17. 2 2
      board/omap1510inn/lowlevel_init.S
  18. 1 1
      board/omap1610inn/Makefile
  19. 2 2
      board/omap1610inn/lowlevel_init.S
  20. 1 1
      board/omap2420h4/Makefile
  21. 2 2
      board/omap2420h4/lowlevel_init.S
  22. 1 1
      board/omap5912osk/Makefile
  23. 2 2
      board/omap5912osk/lowlevel_init.S
  24. 1 1
      board/omap730p2/Makefile
  25. 2 2
      board/omap730p2/lowlevel_init.S
  26. 1 1
      board/sx1/Makefile
  27. 2 2
      board/sx1/lowlevel_init.S
  28. 1 1
      board/versatile/Makefile
  29. 3 2
      board/versatile/lowlevel_init.S
  30. 45 0
      board/versatile/split_by_variant.sh
  31. 2 2
      board/voiceblue/setup.S
  32. 9 3
      cpu/arm1136/interrupts.c
  33. 7 1
      cpu/arm1136/start.S
  34. 7 0
      cpu/arm720t/cpu.c
  35. 10 0
      cpu/arm720t/interrupts.c
  36. 5 1
      cpu/arm720t/start.S
  37. 0 2
      cpu/arm920t/start.S
  38. 1 1
      cpu/arm925t/start.S
  39. 1 1
      cpu/arm926ejs/start.S
  40. 1 1
      cpu/arm946es/start.S
  41. 46 0
      doc/README-integrator
  42. 2 0
      include/asm-arm/arch-arm720t/hardware.h

+ 4 - 0
CHANGELOG

@@ -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
 
 

+ 7 - 5
MAINTAINERS

@@ -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>
-
-	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>
 Denis Peter <d.peter@mpl.ch>
 
 

+ 11 - 15
MAKEALL

@@ -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				\
-	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
 ## 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					\
 "
 "
 
 
 #########################################################################
 #########################################################################

+ 36 - 173
Makefile

@@ -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
-## 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
 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 \

+ 1 - 1
board/integratorap/Makefile

@@ -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 $@ $^

+ 0 - 5
board/integratorap/integratorap.c

@@ -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
- */

+ 3 - 3
board/integratorap/platform.S → board/integratorap/lowlevel_init.S

@@ -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 */
-.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
 	/* 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

+ 106 - 0
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;

+ 3 - 1
board/integratorap/u-boot.lds → board/integratorap/u-boot.lds.S

@@ -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) }

+ 1 - 1
board/integratorcp/Makefile

@@ -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 $@ $^

+ 3 - 3
board/integratorcp/platform.S → board/integratorcp/lowlevel_init.S

@@ -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 */
-.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
 	/* 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

+ 106 - 0
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;

+ 3 - 1
board/integratorcp/u-boot.lds → board/integratorcp/u-boot.lds.S

@@ -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) }

+ 1 - 1
board/ns9750dev/Makefile

@@ -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)

+ 2 - 2
board/ns9750dev/platform.S → board/ns9750dev/lowlevel_init.S

@@ -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
-platformsetup:
+.globl lowlevel_init
+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

+ 1 - 1
board/omap1510inn/Makefile

@@ -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 $@ $^

+ 2 - 2
board/omap1510inn/platform.S → board/omap1510inn/lowlevel_init.S

@@ -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
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 
 
 	/*
 	/*
 	 * Configure 1510 pins functions to match our board.
 	 * Configure 1510 pins functions to match our board.

+ 1 - 1
board/omap1610inn/Makefile

@@ -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 $@ $^

+ 2 - 2
board/omap1610inn/platform.S → board/omap1610inn/lowlevel_init.S

@@ -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
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 
 
 
 
 	/*------------------------------------------------------*
 	/*------------------------------------------------------*

+ 1 - 1
board/omap2420h4/Makefile

@@ -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 $@ $^

+ 2 - 2
board/omap2420h4/platform.S → board/omap2420h4/lowlevel_init.S

@@ -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
-platformsetup:
+.globl lowlevel_init
+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 */

+ 1 - 1
board/omap5912osk/Makefile

@@ -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 $@ $^

+ 2 - 2
board/omap5912osk/platform.S → board/omap5912osk/lowlevel_init.S

@@ -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
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 
 
 
 
 	/*------------------------------------------------------*
 	/*------------------------------------------------------*

+ 1 - 1
board/omap730p2/Makefile

@@ -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 $@ $^

+ 2 - 2
board/omap730p2/platform.S → board/omap730p2/lowlevel_init.S

@@ -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
-platformsetup:
+.globl lowlevel_init
+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
 
 

+ 1 - 1
board/sx1/Makefile

@@ -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 $@ $^

+ 2 - 2
board/sx1/platform.S → board/sx1/lowlevel_init.S

@@ -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
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
 
 
 	/*
 	/*
 	 * Configure 1510 pins functions to match our board.
 	 * Configure 1510 pins functions to match our board.

+ 1 - 1
board/versatile/Makefile

@@ -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 $@ $^

+ 3 - 2
board/versatile/platform.S → board/versatile/lowlevel_init.S

@@ -26,8 +26,9 @@
 #include <config.h>
 #include <config.h>
 #include <version.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! */
 	/* All done by Versatile's boot monitor! */
 	mov pc, lr
 	mov pc, lr

+ 45 - 0
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

+ 2 - 2
board/voiceblue/setup.S

@@ -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
-platformsetup:
+.globl lowlevel_init
+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

+ 9 - 3
cpu/arm1136/interrupts.c

@@ -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 */

+ 7 - 1
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.
 	 * 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

+ 7 - 0
cpu/arm720t/cpu.c

@@ -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

+ 10 - 0
cpu/arm720t/interrupts.c

@@ -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

+ 5 - 1
cpu/arm720t/start.S

@@ -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

+ 0 - 2
cpu/arm920t/start.S

@@ -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
 
 
 
 

+ 1 - 1
cpu/arm925t/start.S

@@ -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 */
 /*
 /*

+ 1 - 1
cpu/arm926ejs/start.S

@@ -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 */
 /*
 /*

+ 1 - 1
cpu/arm946es/start.S

@@ -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 */
 /*
 /*

+ 46 - 0
doc/README-integrator

@@ -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
+*********************************

+ 2 - 0
include/asm-arm/arch-arm720t/hardware.h

@@ -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