u-boot/board/cogent
Scott Wood 83b7e2a7f2 Handle most LDSCRIPT setting centrally
Currently, some linker scripts are found by common code in config.mk.
Some are found using CONFIG_SYS_LDSCRIPT, but the code for that is
sometimes in arch config.mk and sometimes in board config.mk.  Some
are found using an arch-specific rule for looking in CPUDIR, etc.

Further, the powerpc config.mk rule relied on CONFIG_NAND_SPL
when it really wanted CONFIG_NAND_U_BOOT -- which covered up the fact
that not all NAND_U_BOOT builds actually wanted CPUDIR/u-boot-nand.lds.

Replace all of this -- except for a handful of boards that are actually
selecting a linker script in a unique way -- with centralized ldscript
finding.

If board code specifies LDSCRIPT, that will be used.
Otherwise, if CONFIG_SYS_LDSCRIPT is specified, that will be used.

If neither of these are specified, then the central config.mk will
check for the existence of the following, in order:

$(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds (only if CONFIG_NAND_U_BOOT)
$(TOPDIR)/$(CPUDIR)/u-boot-nand.lds (only if CONFIG_NAND_U_BOOT)
$(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
$(TOPDIR)/$(CPUDIR)/u-boot.lds

Some boards (sc3, cm5200, munices) provided their own u-boot.lds that
were dead code, because they were overridden by a CPUDIR u-boot.lds under
the old powerpc rules.  These boards' own u-boot.lds have bitrotted and
no longer work -- these lds files have been removed.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Tested-by: Graeme Russ <graeme.russ@gmail.com>
2011-04-30 00:59:47 +02:00
..
config.mk Handle most LDSCRIPT setting centrally 2011-04-30 00:59:47 +02:00
dipsw.c
dipsw.h
flash.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
flash.h
kbm.c
kbm.h
lcd.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
lcd.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
Makefile Switch from archive libraries to partial linking 2010-11-17 21:02:18 +01:00
mb.c Change initdram() return type to phys_size_t 2008-06-12 08:50:18 +02:00
mb.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
par.c
par.h
pci.c
pci.h
README Rename TEXT_BASE into CONFIG_SYS_TEXT_BASE 2010-10-18 22:07:10 +02:00
README.cma286 Fix Murray Jensen's mail address. 2005-08-12 23:20:59 +02:00
rtc.c
rtc.h
serial.c board/[A-Za-c]*: Remove obsolete references to CONFIG_COMMANDS 2007-07-09 18:47:45 -05:00
serial.h
u-boot.lds powerpc, 8xx: Fixup all 8xx u-boot.lds scripts 2011-04-20 22:03:13 +02:00
u-boot.lds.debug rename _end to __bss_end__ 2011-03-27 19:18:37 +02:00

Cogent Modular Architecture configuration
-----------------------------------------

As the name suggests, the Cogent platform is a modular system where
you have a motherboard into which plugs a cpu module and one or more
i/o modules. This provides very nice flexibility, but makes the
configuration task somewhat harder.

The possible Cogent motherboards are:

Code		Config Variable		Description
----		---------------		-----------

CMA101		CONFIG_CMA101		32MB ram, 2 ser, 1 par, rtc, dipsw,
					2x16 lcd, eth(?)
CMA102		CONFIG_CMA102		32MB ram, 2 ser, 1 par, rtc, dipsw,
					2x16 lcd
CMA111		CONFIG_CMA111		32MB ram, 1MB flash, 4 ser, 1 par,
					rtc, ps/2 kbd/mse, 2x16 lcd, 2xPCI,
					10/100TP eth
CMA120		CONFIG_CMA120		32MB ram, 1MB flash, 4 ser, 1 par,
					rtc, ps/2 kbd/mse, 2x16 lcd, 2xPCI,
					10/100TP eth, 2xPCMCIA, video/lcd-panel
CMA150		CONFIG_CMA150		8MB ram, 1MB flash, 2 ser, 1 par, rtc,
					ps/2 kbd/mse, 2x16 lcd

The possible Cogent PowerPC CPU modules are:

Code		Config Variable		Description
----		---------------		-----------

CMA278-603EV	CONFIG_CMA278_603EV	PPC603ev CPU, 66MHz clock, 512K EPROM,
					JTAG/COP
CMA278-603ER	CONFIG_CMA278_603ER	PPC603er CPU, 66MHz clock, 512K EPROM,
					JTAG/COP
CMA278-740	CONFIG_CMA278_740	PPC740 CPU, 66MHz clock, 512K EPROM,
					JTAG/COP
CMA280-509	CONFIG_CMA280_509	MPC505/509 CPU, 50MHz clock,
					512K EPROM, BDM
CMA282		CONFIG_CMA282		MPC8260 CPU, 66MHz clock, 512K EPROM,
					JTAG, 16M RAM, 1 x ser (SMC2),
					1 x 10baseT PHY (SCC4), 1 x 10/100 TP
					PHY (FCC1), 2 x 48pin DIN (FCC2 + TDM1)
CMA285		CONFIG_CMA285		MPC801 CPU, 33MHz clock, 512K EPROM,
					BDM
CMA286-21	CONFIG_CMA286_21	MPC821 CPU, 66MHz clock, 512K EPROM,
					BDM, 16M RAM, 2 x ser (SMC1 + SMC2),
					1 x 10baseT PHY (SCC2)
CMA286-60-OLD	CONFIG_CMA286_60_OLD	MPC860 CPU, 33MHz clock, 128K EPROM,
					BDM
CMA286-60	CONFIG_CMA286_60	MPC860 CPU, 66MHz clock, 512K EPROM,
					BDM, 16M RAM, 2 x ser (SMC1 + SMC2),
					1 x 10baseT PHY (SCC2)
CMA286-60P	CONFIG_CMA286_60P	MPC860P CPU, 66MHz clock, 512K EPROM,
					BDM, 16M RAM, 2 x ser (SMC1 + SMC2),
					1 x 10baseT PHY (SCC2)
CMA287-23	CONFIG_CMA287_23	MPC823 CPU, 33MHz clock, 512K EPROM,
					BDM
CMA287-50	CONFIG_CMA287_50	MPC850 CPU, 33MHz clock, 512K EPROM,
					BDM

(there are a lot of other cpu modules with ARM, MIPS and M-CORE CPUs,
but we'll worry about those later).

The possible Cogent CMA I/O Modules are:

Code		Config Variable		Description
----		---------------		-----------

CMA302		CONFIG_CMA302		up to 16M flash, ps/2 keyboard/mouse
CMA352		CONFIG_CMA352		CMAbus <=> PCI

Currently supported:

	Motherboards:	CMA102
	CPU Modules:	CMA286-60-OLD
	I/O Modules:	CMA302 I/O module

To configure, perform the usual U-Boot configuration task of editing
"include/config_cogent_mpc8xx.h" and reviewing all the options and
settings in there. In particular, check the chip select values
installed into the memory controller's various option and base
registers - these are set by the defines CONFIG_SYS_CMA_CSn_{BASE,SIZE} and
CONFIG_SYS_{B,O}Rn_PRELIM. Also be careful of the clock settings installed
into the SCCR - via the define CONFIG_SYS_SCCR. Finally, decide whether you
want the serial console on motherboard serial port A or on one of the
8xx SMC ports, and set CONFIG_8xx_CONS_{SMC1,SMC2,NONE} accordingly
(NONE means use Cogent motherboard serial port A).

Then edit the file "cogent/config.mk". Firstly, set CONFIG_SYS_TEXT_BASE to be
the base address of the EPROM for the CPU module. This should be the
same as the value selected for CONFIG_SYS_MONITOR_BASE in
"include/config_cogent_*.h" (in fact, I have made this automatic via
the -CONFIG_SYS_TEXT_BASE=... option in CPPFLAGS).

Finally, set the values of the make variables $(CMA_MB) and $(CMA_IOMS).

$(CMA_MB) is the name of the directory that contains support for your
motherboard. At this stage, only "cma10x" exists, which supports the
CMA101 and CMA102 motherboards - but only selected devices, namely
serial, lcd and dipsw.

$(CMA_IOMS) is a list of zero or more directories that contain
support for the i/o modules you have installed. At this stage, only
"cma302" exists, which supports the CMA302 flash i/o module - but
only the flash part, not the ps/2 keyboard and mouse interfaces.

There should be a make variable for each of the above directories,
which is the directory name with "_O" appended. This make variable is
a list of object files to compile from that directory and include in
the library.

	e.g. cma10x_O = serial.o ...

That's it. Good Luck.

Murray.Jensen@cmst.csiro.au
August 31, 2000.