# Porting U-Boot onto RPXlite board
# Written by Yoo. Jonghoon
# E-Mail : yooth@ipone.co.kr
# IP ONE Inc.

# Since 2001. 1. 29

# Shell : bash
# Cross-compile tools : Montavista Hardhat
# Debugging tools : Windriver VisionProbe (PowerPC BDM)
# ppcboot ver. : ppcboot-0.8.1

###############################################################
#	1. Hardware setting
###############################################################

1.1. Board, BDM settings
	Install board, BDM, connect each other

1.2. Save Register value
	Boot with board-on monitor program and save the
	register values with BDM.

1.3. Configure flash programmer
	Check flash memory area in the memory map.
	0xFFC00000 - 0xFFFFFFFF

	Boot monitor program is at
	0xFFF00000

	You can program on-board flash memory with VisionClick
	flash programmer. Set the target flash device as:

	29DL800B

	(?) The flash memory device in the board *is* 29LV800B,
		but I cannot program it with '29LV800B' option.
		(in VisionClick flash programming tools)
		I don't know why...

1.4. Save boot monitor program *IMPORTANT*
	Upload boot monitor program from board to file.
	boot monitor program starts at 0xFFF00000

1.5. Test flash memory programming
	Try to erase boot program in the flash memory,
	and re-write them.
	*WARNING* YOU MUST SAVE BOOT PROGRAM TO FILE
		BEFORE ERASING FLASH

###############################################################
#	2. U-Boot setting
###############################################################

2.1. Download U-Boot tarball at
	ftp://ftp.denx.de
	(The latest version is ppcboot-0.8.1.tar.bz2)

	To extract the archive use the following syntax :
	> bzip2 -cd ppcboot-0.8.1.tar.bz2 | tar xf -

2.2. Add the following lines in '.profile'
	export PATH=$PATH:/opt/hardhat/devkit/ppc/8xx/bin

2.3. Make board specific config, for example:
	> cd ppcboot-0.8.1
	> make TQM860L_config

	Now we can build ppcboot bin files.
	After make all, you must see these files in your
	ppcboot root directory.

	ppcboot
	ppcboot.bin
	ppcboot.srec
	ppcboot.map

2.4. Make your own board directory into the
	ppcboot-0.8.1/board
	and make your board-specific files here.

	For exmanple, tqm8xx files are composed of
	.depend : Nothing
	Makefile : To make config file
	config.mk : Sets base address
	flash.c : Flash memory control files
	ppcboot.lds : linker(ld) script? (I don't know this yet)
	tqm8xx.c : DRAM control and board check routines

	And, add your board config lines in the
	ppcboot-0.8.1/Makefile

	Finally, add config_(your board).h file in the
	ppcboot-0.8.1/include/

	I've made board/rpxlite directory, and just copied
	tqm8xx settings for now.

	Rebuild ppcboot for rpxlite board:
	> make rpxlite_config
	> make

###############################################################
#	3. U-Boot porting
###############################################################

3.1. My RPXlite files are based on tqm8xx board files.
	> cd board
	> cp -r tqm8xx RPXLITE
	> cd RPXLITE
	> mv tqm8xx.c RPXLITE.c
	> cd ../../include
	> cp config_tqm8xx.h config_RPXLITE.h

3.2. Modified files are:
	board/RPXLITE/RPXLITE.c		/* DRAM-related routines */
	board/RPXLITE/flash.c		/* flash-related routines */
	board/RPXLITE/config.mk		/* set text base address */
	cpu/mpc8xx/serial.c			/* board specific register setting */
	include/config_RPXLITE.h	/* board specific registers */

	See 'reg_config.txt' for register values in detail.

###############################################################
#	4. Running Linux
###############################################################









###############################################################
#	Misc Information
###############################################################

mem_config.txt:
===============

Flash memory device : AM29LV800BB (1Mx8Bit) x 4 device
manufacturer id : 01     (AMD)
device id       : 5B     (AM29LV800B)
size            : 4Mbyte
sector #        : 19

Sector information :

number   start addr.     size
00       FFC0_0000       64
01       FFC1_0000       32
02       FFC1_8000       32
03       FFC2_0000       128
04       FFC4_0000       256
05       FFC8_0000       256
06       FFCC_0000       256
07       FFD0_0000       256
08       FFD4_0000       256
09       FFD8_0000       256
10       FFDC_0000       256
11       FFE0_0000       256
12       FFE4_0000       256
13       FFE8_0000       256
14       FFEC_0000       256
15       FFF0_0000       256
16       FFF4_0000       256
17       FFF8_0000       256
18       FFFC_0000       256


reg_config.txt:
===============


/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
/*	SIU (System Interface Unit) */
/* */
/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */


/*### IMMR */
/*### Internal Memory Map Register */
/*### Chap. 11.4.1 */

	ISB		= 0xFA20		/* Set the Immap base = 0xFA20 0000 */
	PARTNUM = 0x21
	MASKNUM = 0x00

	=> 0xFA20 2100

---------------------------------------------------------------------

/*### SIUMCR */
/*### SIU Module Configuration Register */
/*### Chap. 11.4.2 */
/*### Offset : 0x0000 0000 */

	EARB	= 0
	EARP	= 0
	DSHW	= 0
	DBGC	= 0
	DBPC	= 0
	FRC		= 0
	DLK		= 0
	OPAR	= 0
	PNCS	= 0
	DPC		= 0
	MPRE	= 0
	MLRC	= 10		/* ~KR/~RETRY/~IRQ4/SPKROUT functions as ~KR/~TRTRY */
	AEME	= 0
	SEME	= 0
	BSC		= 0
	GB5E	= 0
	B2DD	= 0
	B3DD	= 0

	=> 0x0000 0800

---------------------------------------------------------------------

/*### SYPCR */
/*### System Protection Control Register */
/*### Chap. 11.4.3 */
/*### Offset : 0x0000 0004 */

	SWTC	= 0xFFFF	/* SW watchdog timer count = 0xFFFF */
	BMT		= 0x06		/* BUS monitoring timing */
	BME		= 1			/* BUS monitor enable */
	SWF		= 1
	SWE		= 0			/* SW watchdog disable */
	SWRI	= 0
	SWP		= 1

	=> 0xFFFF 0689

---------------------------------------------------------------------

/*### TESR */
/*### Transfer Error Status Register */
/*### Chap. 11.4.4 */
/*### Offset : 0x0000 0020 */

	IEXT	= 0
	ITMT	= 0
	IPB		= 0000
	DEXT	= 0
	DTMT	= 0
	DPB		= 0000

	=> 0x0000 0000

---------------------------------------------------------------------

/*### SIPEND */
/*### SIU Interrupt Pending Register */
/*### Chap. 11.5.4.1 */
/*### Offset : 0x0000 0010 */

	IRQ0~IRQ7 = 0
	LVL0~LVL7 = 0

	=> 0x0000 0000

---------------------------------------------------------------------

/*### SIMASK */
/*### SIU Interrupt Mask Register */
/*### Chap. 11.5.4.2 */
/*### Offset : 0x0000 0014 */

	IRM0~IRM7 = 0		/* Mask all interrupts */
	LVL0~LVL7 = 0

	=> 0x0000 0000

---------------------------------------------------------------------

/*### SIEL */
/*### SIU Interrupt Edge/Level Register */
/*### Chap. 11.5.4.3 */
/*### Offset : 0x0000 0018 */

	ED0~ED7 = 0			/* Low level triggered */
	WMn0~WMn7 = 0		/* Not allowed to exit from low-power mode */

	=> 0x0000 0000

---------------------------------------------------------------------

/*### SIVEC */
/*### SIU Interrupt Vector Register */
/*### Chap. 11.5.4.4 */
/*### Offset : 0x0000 001C */

	INTC = 3C		/* The lowest interrupt is pending..(?) */

	=> 0x3C00 0000

---------------------------------------------------------------------

/*### SWSR */
/*### Software Service Register */
/*### Chap. 11.7.1 */
/*### Offset : 0x0000 001E */

	SEQ = 0

	=> 0x0000

---------------------------------------------------------------------

/*### SDCR */
/*### SDMA Configuration Register */
/*### Chap. 20.2.1 */
/*### Offset : 0x0000 0032 */

	FRZ = 0
	RAID = 01	/* Priority level 5 (BR5) (normal operation) */

	=> 0x0000 0001


/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
/*	UPMA (User Programmable Machine A) */
/* */
/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */

/*### Chap. 16.6.4.1 */
/*### Offset = 0x0000 017c */

	T0  = CFFF CC24		/* Single Read */
	T1  = 0FFF CC04
	T2  = 0CAF CC04
	T3  = 03AF CC08
	T4  = 3FBF CC27		/* last */
	T5  = FFFF CC25
	T6  = FFFF CC25
	T7  = FFFF CC25
	T8  = CFFF CC24		/* Burst Read */
	T9  = 0FFF CC04
	T10 = 0CAF CC84
	T11 = 03AF CC88
	T12 = 3FBF CC27		/* last */
	T13 = FFFF CC25
	T14 = FFFF CC25
	T15 = FFFF CC25
	T16 = FFFF CC25
	T17 = FFFF CC25
	T18 = FFFF CC25
	T19 = FFFF CC25
	T20 = FFFF CC25
	T21 = FFFF CC25
	T22 = FFFF CC25
	T23 = FFFF CC25
	T24 = CFFF CC24		/* Single Write */
	T25 = 0FFF CC04
	T26 = 0CFF CC04
	T27 = 03FF CC00
	T28 = 3FFF CC27		/* last */
	T29 = FFFF CC25
	T30 = FFFF CC25
	T31 = FFFF CC25
	T32 = CFFF CC24		/* Burst Write */
	T33 = 0FFF CC04
	T34 = 0CFF CC80
	T35 = 03FF CC8C
	T36 = 0CFF CC00
	T37 = 33FF CC27		/* last */
	T38 = FFFF CC25
	T39 = FFFF CC25
	T40 = FFFF CC25
	T41 = FFFF CC25
	T42 = FFFF CC25
	T43 = FFFF CC25
	T44 = FFFF CC25
	T45 = FFFF CC25
	T46 = FFFF CC25
	T47 = FFFF CC25
	T48 = C0FF CC24		/* Refresh */
	T49 = 03FF CC24
	T50 = 0FFF CC24
	T51 = 0FFF CC24
	T52 = 3FFF CC27		/* last */
	T53 = FFFF CC25
	T54 = FFFF CC25
	T55 = FFFF CC25
	T56 = FFFF CC25
	T57 = FFFF CC25
	T58 = FFFF CC25
	T59 = FFFF CC25
	T60 = FFFF CC25		/* Exception */
	T61 = FFFF CC25
	T62 = FFFF CC25
	T63 = FFFF CC25


/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
/*	UPMB */
/* */
/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
---------------------------------------------------------------------

/*### Chap. 16.6.4.1 */


/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
/*	MEMC */
/* */
/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
---------------------------------------------------------------------

/*### BR0 & OR0 */
/*### Base Registers & Option Registers */
/*### Chap. 16.4.1 & 16.4.2 */
/*### Offset : BR0(0x0000 0100) & OR0(0x0000 0104) */
/*### Flash memory */

	BA   = 1111 1110 0000 0000 0	/* Base addr = 0xFE00 0000 */
	AT   = 000
	PS   = 00
	PARE = 0
	WP   = 0
	MS   = 0				/* GPCM */
	V    = 1				/* Valid */

	=> 0xFE00 0001

	AM            = 1111 1110 0000 0000 0	/* 32MBytes */
	ATM           = 000
	CSNT/SAM      = 0
	ACS/G5LA,G5LS = 00
	BIH           = 1			/* Burst inhibited */
	SCY           = 0100		/* cycle length = 4 */
	SETA          = 0
	TRLX          = 0
	EHTR          = 0

	=> 0xFE00 0140

/*### BR1 & OR1 */
/*### Base Registers & Option Registers */
/*### Chap. 16.4.1 & 16.4.2 */
/*### Offset : BR1(0x0000 0108) & OR1(0x0000 010C) */
/*### SDRAM */

	BA   = 0000 0000 0000 0000 0	/* Base addr = 0x0000 0000 */
	AT   = 000
	PS   = 00
	PARE = 0
	WP   = 0
	MS   = 1 				/* UPMA */
	V    = 1				/* Valid */

	=> 0x0000 0081

	AM            = 1111 1110 0000 0000	/* 32MBytes */
	ATM           = 000
	CSNT/SAM      = 1
	ACS/G5LA,G5LS = 11
	BIH           = 0
	SCY           = 0000		/* cycle length = 0 */
	SETA          = 0
	TRLX          = 0
	EHTR          = 0

	=> 0xFE00 0E00

/*### BR2 & OR2 */
/*### Base Registers & Option Registers */
/*### Chap. 16.4.1 & 16.4.2 */
/*### Offset : BR2(0x0000 0110) & OR2(0x0000 0114) */

	BR2 & OR2 = 0x0000 0000		/* Not used */

/*### BR3 & OR3 */
/*### Base Registers & Option Registers */
/*### Chap. 16.4.1 & 16.4.2 */
/*### Offset : BR3(0x0000 0118) & OR3(0x0000 011C) */
/*### BCSR */

	BA   = 1111 1010 0100 0000 0	/* Base addr = 0xFA40 0000 */
	AT   = 000
	PS   = 00
	PARE = 0
	WP   = 0
	MS   = 0 				/* GPCM */
	V    = 1				/* Valid */

	=> 0xFA40 0001

	AM            = 1111 1111 0111 1111 1	/* (?) */
	ATM           = 000
	CSNT/SAM      = 1
	ACS/G5LA,G5LS = 00
	BIH           = 1			/* Burst inhibited */
	SCY           = 0001		/* cycle length = 1 */
	SETA          = 0
	TRLX          = 0

	=> 0xFF7F 8910

/*### BR4 & OR4 */
/*### Base Registers & Option Registers */
/*### Chap. 16.4.1 & 16.4.2 */
/*### Offset : BR4(0x0000 0120) & OR4(0x0000 0124) */
/*### NVRAM & SRAM */

	BA   = 1111 1010 0000 0000 0	/* Base addr = 0xFA00 0000 */
	AT   = 000
	PS   = 01
	PARE = 0
	WP   = 0
	MS   = 0 				/* GPCM */
	V    = 1				/* Valid */

	=> 0xFA00 0401

	AM            = 1111 1111 1111 1000 0	/* 8MByte */
	ATM           = 000
	CSNT/SAM      = 1
	ACS/G5LA,G5LS = 00
	BIH           = 1			/* Burst inhibited */
	SCY           = 0111		/* cycle length = 7 */
	SETA          = 0
	TRLX          = 0

	=> 0xFFF8 0970

/*### BR5 & OR5 */
/*### Base Registers & Option Registers */
/*### Chap. 16.4.1 & 16.4.2 */
/*### Offset : BR2(0x0000 0128) & OR2(0x0000 012C) */

	BR5 & OR5 = 0x0000 0000		/* Not used */

/*### BR6 & OR6 */
/*### Base Registers & Option Registers */
/*### Chap. 16.4.1 & 16.4.2 */
/*### Offset : BR2(0x0000 0130) & OR2(0x0000 0134) */

	BR6 & OR6 = 0x0000 0000		/* Not used */

/*### BR7 & OR7 */
/*### Base Registers & Option Registers */
/*### Chap. 16.4.1 & 16.4.2 */
/*### Offset : BR7(0x0000 0138) & OR7(0x0000 013C) */

	BR7 & OR7 = 0x0000 0000		/* Not used */

/*### MAR */
/*### Memory Address Register */
/*### Chap. 16.4.7 */
/*### Offset : 0x0000 0164 */

	MA = External memory address

/*### MCR */
/*### Memory Command Register */
/*### Chap. 16.4.5 */
/*### Offset : 0x0000 0168 */

	OP   = xx			/* Command op code */
	UM   = 1			/* Select UPMA */
	MB   = 001			/* Select CS1 */
	MCLF = xxxx			/* Loop times */
	MAD  = xx xxxx		/* Memory array index */

/*### MAMR */
/*### Machine A Mode Register */
/*### Chap. 16.4.4 */
/*### Offset : 0x0000 0170 */

	PTA = 0101 1000
	PTAE = 1			/* Periodic timer A enabled */
	AMA = 010
	DSA = 00
	G0CLA = 000
	GPLA4DIS = 1
	RLFA = 0100
	WLFA = 0011
	TLFA = 0000

	=> 0x58A0 1430

/*### MBMR */
/*### Machine B Mode Register */
/*### Chap. 16.4.4 */
/*### Offset : 0x0000 0174 */

	PTA = 0100 1110
	PTAE = 0			/* Periodic timer B disabled */
	AMA = 000
	DSA = 00
	G0CLA = 000
	GPLA4DIS = 1
	RLFA = 0000
	WLFA = 0000
	TLFA = 0000

	=> 0x4E00 1000

/*### MSTAT */
/*### Memory Status Register */
/*### Chap. 16.4.3 */
/*### Offset : 0x0000 0178 */

	PER0~PER7 = Parity error
	WPER      = Write protection error

	=> 0x0000

/*### MPTPR */
/*### Memory Periodic Timer Prescaler Register */
/*### Chap. 16.4.8 */
/*### Offset : 0x0000 017A */

	PTP = 0000 1000		/* Divide by 8 */

	=> 0x0800

/*### MDR */
/*### Memory Data Register */
/*### Chap. 16.4.6 */
/*### Offset : 0x0000 017C */

	MD = Memory data contains the RAM array word


/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
/*	TIMERS */
/* */
/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
---------------------------------------------------------------------

/*### TBREFx */
/*### Timebase Reference Registers */
/*### Chap. 11.9.2 */
/*### Offset : TBREFF0(0x0000 0204)/TBREFF1(0x0000 0208) */
/*### (Locked) */

	TBREFF0 = 0xFFFF FFFF
	TBREFF1 = 0xFFFF FFFF

---------------------------------------------------------------------

/*### TBSCR */
/*### Timebase Status and Control Registers */
/*### Chap. 11.9.3 */
/*### Offset : 0x0000 0200 */
/*### (Locked) */

	TBIRQ = 00000000
	REF0  = 0
	REF1  = 0
	REFE0 = 0			/* Reference interrupt disable */
	REFE1 = 0
	TBF   = 1
	TBE   = 1			/* Timebase enable */

	=> 0x0003

---------------------------------------------------------------------

/*### RTCSC */
/*### Real-Time Clock Status and Control Registers */
/*### Chap. 11.10.1 */
/*### Offset : 0x0000 0220 */
/*### (Locked) */

	RTCIRQ = 00000000
	SEC = 1
	ALR = 0
	38K = 0				/* PITRTCLK is driven by 32.768KHz */
	SIE = 0
	ALE = 0
	RTF = 0
	RTE = 1				/* Real-Time clock enabled */

	=> 0x0081

---------------------------------------------------------------------

/*### RTC */
/*### Real-Time Clock Registers */
/*### Chap. 11.10.2 */
/*### Offset : 0x0000 0224 */
/*### (Locked) */

	RTC = Real time clock measured in second

---------------------------------------------------------------------

/*### RTCAL */
/*### Real-Time Clock Alarm Registers */
/*### Chap. 11.10.3 */
/*### Offset : 0x0000 022C */
/*### (Locked) */

	ALARM = 0xFFFF FFFF

---------------------------------------------------------------------

/*### RTSEC */
/*### Real-Time Clock Alarm Second Registers */
/*### Chap. 11.10.4 */
/*### Offset : 0x0000 0228 */
/*### (Locked) */

	COUNTER = Counter bits(fraction of a second)

---------------------------------------------------------------------

/*### PISCR */
/*### Periodic Interrupt Status and Control Register */
/*### Chap. 11.11.1 */
/*### Offset : 0x0000 0240 */
/*### (Locked) */

	PIRQ = 0
	PS   = 0		/* Write 1 to clear */
	PIE  = 0
	PITF = 1
	PTE  = 0		/* PIT disabled */

---------------------------------------------------------------------

/*### PITC */
/*### PIT Count Register */
/*### Chap. 11.11.2 */
/*### Offset : 0x0000 0244 */
/*### (Locked) */

	PITC = PIT count

---------------------------------------------------------------------

/*### PITR */
/*### PIT Register */
/*### Chap. 11.11.3 */
/*### Offset : 0x0000 0248 */
/*### (Locked) */

	PIT = PIT count		/* Read only */



/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
/*	CLOCKS */
/* */
/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
---------------------------------------------------------------------


---------------------------------------------------------------------

/*### SCCR */
/*### System Clock and Reset Control Register */
/*### Chap. 15.6.1 */
/*### Offset : 0x0000 0280 */
/*### (Locked) */

	COM    = 11		/* Clock output disabled */
	TBS    = 1		/* Timebase frequency source is GCLK2 divided by 16 */
	RTDIV  = 0		/* The clock is divided by 4 */
	RTSEL  = 0		/* OSCM(Crystal oscillator) is selected */
	CRQEN  = 0
	PRQEN  = 0
	EBDF   = 00		/* CLKOUT is GCLK2 divided by 1 */
	DFSYNC = 00		/* Divided by 1 (normal operation) */
	DFBRG  = 00		/* Divided by 1 (normal operation) */
	DFNL   = 000
	DFNH   = 000

	=> 0x6200 0000

---------------------------------------------------------------------

/*### PLPRCR */
/*### PLL, Low-Power, and Reset Control Register */
/*### Chap. 15.6.2 */
/*### Offset : 0x0000 0284 */
/*### (Locked) */

	MF    = 0x005	/* 48MHz (?) (  = 8MHz * (MF+1) ) */
	SPLSS = 0
	TEXPS = 0
	TMIST = 0
	CSRC  = 0		/* The general system clock is generated by the DFNH field */
	LPM   = 00		/* Normal high/normal low mode */
	CSR   = 0
	LOLRE = 0
	FIOPD = 0

	=> 0x0050 0000

---------------------------------------------------------------------

/*### RSR */
/*### Reset Status Register */
/*### Chap. 12.2 */
/*### Offset : 0x0000 0288 */
/*### (Locked) */

	EHRS  = External hard reset
	ESRS  = External soft reset
	LLRS  = Loss-of-lock reset
	SWRS  = Software watchdog reset
	CSRS  = Check stop reset
	DBHRS = Debug port hard reset
	DBSRS = Debug port soft reset
	JTRS  = JTAG reset



/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
/*	DMA */
/* */
/*------------------------------------------------------------------- */
/*------------------------------------------------------------------- */
---------------------------------------------------------------------

/*### SDSR */
/*### SDMA Status Register */
/*### Chap. 20.2.2 */
/*### Offset : 0x0000 0908 */

	SBER = 0	/* SDMA channel bus error */
	DSP2 = 0	/* DSP chain2 (Tx) interrupt */
	DSP1 = 0	/* DSP chain1 (Rx) interrupt */

	=> 0x00

/*### SDMR */
/*### SDMA Mask Register */
/*### Chap. 20.2.3 */
/*### Offset : 0x0000 090C */

	SBER = 0
	DSP2 = 0
	DSP1 = 0	/* All interrupts are masked */

	=> 0x00

/*### SDAR */
/*### SDMA Address Register */
/*### Chap. 20.2.4 */
/*### Offset : 0x0000 0904 */

	AR = 0xxxxx xxxx	/* current system address */

	=> 0xFA20 23AC

/*### IDSRx */
/*### IDMA Status Register */
/*### Chap. 20.3.3.2 */
/*### Offset : IDSR1(0x0000 0910) & IDSR2(0x0000 0918) */

	AD   = 0
	DONE = 0
	OB   = 0

	=> 0x00

/*### IDMRx */
/*### IDMA Mask Register */
/*### Chap. 20.3.3.3 */
/*### Offset : IDMR1(0x0000 0914) & IDMR2(0x0000 091C) */

	AD   = 0
	DONE = 0
	OB   = 0

