summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
diff options
context:
space:
mode:
authorThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-07-21 08:38:04 +0000
committerThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-07-21 08:38:04 +0000
commitd374492cc69fa8bd041852d868ae379b79c59ba4 (patch)
tree14fa506e5c9564844d5fa0436ae4d2d456a74dda /c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
parentUpdate to binutils-2.19.51-20090721. (diff)
downloadrtems-d374492cc69fa8bd041852d868ae379b79c59ba4.tar.bz2
Update for MPC55XX changes
Diffstat (limited to 'c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c')
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c82
1 files changed, 62 insertions, 20 deletions
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
index 690a72a092..a4cb7b4483 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
@@ -92,28 +92,11 @@ void bsp_predriver_hook()
static void mpc55xx_ebi_init()
{
- struct EBI_CS_tag cs = { BR : MPC55XX_ZERO_FLAGS, OR : MPC55XX_ZERO_FLAGS };
+ struct EBI_CS_tag cs = { .BR = MPC55XX_ZERO_FLAGS, .OR = MPC55XX_ZERO_FLAGS };
union SIU_PCR_tag pcr = MPC55XX_ZERO_FLAGS;
+ struct MMU_tag mmu = MMU_DEFAULT;
int i = 0;
- /* External SRAM (0 wait states, 512kB, 4 word burst) */
- cs.BR.B.BA = 0;
- cs.BR.B.PS = 1;
- cs.BR.B.BL = 1;
- cs.BR.B.WEBS = 0;
- cs.BR.B.TBDIP = 0;
- cs.BR.B.BI = 1; /* TODO: Enable burst */
- cs.BR.B.V = 1;
-
- cs.OR.B.AM = 0x1fff0;
- cs.OR.B.SCY = 0;
- cs.OR.B.BSCY = 0;
-
- EBI.CS [0] = cs;
-
- /* !CS [0] */
- SIU.PCR [0].R = 0x443;
-
/* ADDR [8 : 31] */
for (i = 4; i < 4 + 24; ++i) {
SIU.PCR [i].R = 0x440;
@@ -140,6 +123,64 @@ static void mpc55xx_ebi_init()
/* !TS */
SIU.PCR [69].R = 0x443;
+
+ /* External SRAM (2 wait states, 512kB, 4 word burst) */
+
+ cs.BR.B.BA = 0;
+ cs.BR.B.PS = 1;
+ cs.BR.B.BL = 1;
+ cs.BR.B.WEBS = 0;
+ cs.BR.B.TBDIP = 0;
+ cs.BR.B.BI = 1; /* TODO: Enable burst */
+ cs.BR.B.V = 1;
+
+ cs.OR.B.AM = 0x1fff0;
+ cs.OR.B.SCY = 0;
+ cs.OR.B.BSCY = 0;
+
+ EBI.CS [0] = cs;
+
+ /* !CS [0] */
+ SIU.PCR [0].R = 0x443;
+
+ /* External Ethernet Controller (3 wait states, 64kB) */
+
+ mmu.MAS0.B.ESEL = 5;
+ mmu.MAS1.B.VALID = 1;
+ mmu.MAS1.B.IPROT = 1;
+ mmu.MAS1.B.TSIZ = 1;
+ mmu.MAS2.B.EPN = 0x3fff8;
+ mmu.MAS2.B.I = 1;
+ mmu.MAS2.B.G = 1;
+ mmu.MAS3.B.RPN = 0x3fff8;
+ mmu.MAS3.B.UW = 1;
+ mmu.MAS3.B.SW = 1;
+ mmu.MAS3.B.UR = 1;
+ mmu.MAS3.B.SR = 1;
+
+ PPC_SET_SPECIAL_PURPOSE_REGISTER( FREESCALE_EIS_MAS0, mmu.MAS0.R);
+ PPC_SET_SPECIAL_PURPOSE_REGISTER( FREESCALE_EIS_MAS1, mmu.MAS1.R);
+ PPC_SET_SPECIAL_PURPOSE_REGISTER( FREESCALE_EIS_MAS2, mmu.MAS2.R);
+ PPC_SET_SPECIAL_PURPOSE_REGISTER( FREESCALE_EIS_MAS3, mmu.MAS3.R);
+
+ asm volatile ("tlbwe");
+
+ cs.BR.B.BA = 0x7fff;
+ cs.BR.B.PS = 1;
+ cs.BR.B.BL = 0;
+ cs.BR.B.WEBS = 0;
+ cs.BR.B.TBDIP = 0;
+ cs.BR.B.BI = 1;
+ cs.BR.B.V = 1;
+
+ cs.OR.B.AM = 0x1ffff;
+ cs.OR.B.SCY = 1;
+ cs.OR.B.BSCY = 0;
+
+ EBI.CS [3] = cs;
+
+ /* !CS [3] */
+ SIU.PCR [3].R = 0x443;
}
/**
@@ -198,7 +239,8 @@ void bsp_start(void)
DEBUG_DONE();
}
- RTEMS_DEBUG_PRINT( "BSP start done\n");
+ /* Initialize eMIOS */
+ mpc55xx_emios_initialize( 1);
return;