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 CFG_CMA_CSn_{BASE,SIZE} and
CFG_{B,O}Rn_PRELIM. Also be careful of the clock settings installed
into the SCCR - via the define CFG_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 TEXT_BASE to be
the base address of the EPROM for the CPU module. This should be the
same as the value selected for CFG_MONITOR_BASE in
"include/config_cogent_*.h" (in fact, I have made this automatic via
the -DTEXT_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.
