mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-01-25 11:25:17 +00:00
Merge branch 'arm/master' into arm/next
Conflicts: board/AtmarkTechno/suzaku/Makefile board/amcc/acadia/acadia.c board/amcc/katmai/katmai.c board/amcc/luan/luan.c board/amcc/ocotea/ocotea.c board/cm-bf537u/Makefile board/cray/L1/L1.c board/csb272/csb272.c board/csb472/csb472.c board/eric/eric.c board/eric/init.S board/eukrea/cpuat91/Makefile board/exbitgen/exbitgen.c board/exbitgen/init.S board/freescale/mpc8536ds/config.mk board/g2000/g2000.c board/jse/sdram.c board/mpl/mip405/mip405.c board/mpl/pip405/pip405.c board/netstal/hcu5/hcu5.c board/netstal/mcu25/mcu25.c board/sc3/sc3.c board/w7o/init.S board/w7o/w7o.c common/cmd_reginfo.c cpu/ppc4xx/40x_spd_sdram.c cpu/ppc4xx/44x_spd_ddr.c doc/README.sbc8548 drivers/misc/fsl_law.c fs/ubifs/ubifs.c include/asm-ppc/immap_85xx.h Signed-off-by: Tom Rix <Tom.Rix@windriver.com>
This commit is contained in:
commit
4d6c2dd7ed
127 changed files with 3906 additions and 3236 deletions
3
MAKEALL
3
MAKEALL
|
@ -387,6 +387,9 @@ LIST_83xx=" \
|
|||
LIST_85xx=" \
|
||||
ATUM8548 \
|
||||
MPC8536DS \
|
||||
MPC8536DS_NAND \
|
||||
MPC8536DS_SDCARD \
|
||||
MPC8536DS_SPIFLASH \
|
||||
MPC8540ADS \
|
||||
MPC8540EVAL \
|
||||
MPC8541CDS \
|
||||
|
|
27
Makefile
27
Makefile
|
@ -285,6 +285,7 @@ endif
|
|||
ifeq ($(CONFIG_ONENAND_U_BOOT),y)
|
||||
ONENAND_IPL = onenand_ipl
|
||||
U_BOOT_ONENAND = $(obj)u-boot-onenand.bin
|
||||
ONENAND_BIN ?= $(obj)onenand_ipl/onenand-ipl-2k.bin
|
||||
endif
|
||||
|
||||
__OBJS := $(subst $(obj),,$(OBJS))
|
||||
|
@ -378,8 +379,7 @@ $(ONENAND_IPL): $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
|
|||
$(MAKE) -C onenand_ipl/board/$(BOARDDIR) all
|
||||
|
||||
$(U_BOOT_ONENAND): $(ONENAND_IPL) $(obj)u-boot.bin
|
||||
cat $(obj)onenand_ipl/onenand-ipl-2k.bin $(obj)u-boot.bin > $(obj)u-boot-onenand.bin
|
||||
cat $(obj)onenand_ipl/onenand-ipl-4k.bin $(obj)u-boot.bin > $(obj)u-boot-flexonenand.bin
|
||||
cat $(ONENAND_BIN) $(obj)u-boot.bin > $(obj)u-boot-onenand.bin
|
||||
|
||||
$(VERSION_FILE):
|
||||
@( printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' "$(U_BOOT_VERSION)" \
|
||||
|
@ -2403,20 +2403,7 @@ MVBLM7_config: unconfig
|
|||
sbc8349_config \
|
||||
sbc8349_PCI_33_config \
|
||||
sbc8349_PCI_66_config: unconfig
|
||||
@mkdir -p $(obj)include
|
||||
@if [ "$(findstring _PCI_,$@)" ] ; then \
|
||||
$(XECHO) -n "... PCI HOST at " ; \
|
||||
echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
|
||||
fi ; \
|
||||
if [ "$(findstring _33_,$@)" ] ; then \
|
||||
$(XECHO) -n "33MHz... " ; \
|
||||
echo "#define PCI_33M" >>$(obj)include/config.h ; \
|
||||
fi ; \
|
||||
if [ "$(findstring _66_,$@)" ] ; then \
|
||||
$(XECHO) -n "66MHz... " ; \
|
||||
echo "#define PCI_66M" >>$(obj)include/config.h ; \
|
||||
fi ;
|
||||
@$(MKCONFIG) -a sbc8349 ppc mpc83xx sbc8349
|
||||
@$(MKCONFIG) -t $(@:_config=) sbc8349 ppc mpc83xx sbc8349
|
||||
|
||||
SIMPC8313_LP_config \
|
||||
SIMPC8313_SP_config: unconfig
|
||||
|
@ -2446,6 +2433,9 @@ vme8349_config: unconfig
|
|||
ATUM8548_config: unconfig
|
||||
@$(MKCONFIG) $(@:_config=) ppc mpc85xx atum8548
|
||||
|
||||
MPC8536DS_NAND_config \
|
||||
MPC8536DS_SDCARD_config \
|
||||
MPC8536DS_SPIFLASH_config \
|
||||
MPC8536DS_36BIT_config \
|
||||
MPC8536DS_config: unconfig
|
||||
@$(MKCONFIG) -t $(@:_config=) MPC8536DS ppc mpc85xx mpc8536ds freescale
|
||||
|
@ -3240,8 +3230,6 @@ zylonite_config :
|
|||
#########################################################################
|
||||
|
||||
apollon_config : unconfig
|
||||
@mkdir -p $(obj)include
|
||||
@mkdir -p $(obj)onenand_ipl/board/apollon
|
||||
@echo "#define CONFIG_ONENAND_U_BOOT" > $(obj)include/config.h
|
||||
@$(MKCONFIG) $(@:_config=) arm arm1136 apollon NULL omap24xx
|
||||
@echo "CONFIG_ONENAND_U_BOOT = y" >> $(obj)include/config.mk
|
||||
|
@ -3723,7 +3711,8 @@ clean:
|
|||
$(obj)cpu/blackfin/bootrom-asm-offsets.[chs]
|
||||
@rm -f $(obj)include/bmp_logo.h
|
||||
@rm -f $(obj)nand_spl/{u-boot.lds,u-boot-spl,u-boot-spl.map,System.map}
|
||||
@rm -f $(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl-2k.bin,ipl-4k.bin,ipl.map}
|
||||
@rm -f $(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl.map}
|
||||
@rm -f $(ONENAND_BIN)
|
||||
@rm -f $(obj)onenand_ipl/u-boot.lds
|
||||
@rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
|
||||
@find $(OBJTREE) -type f \
|
||||
|
|
|
@ -78,12 +78,12 @@ int board_early_init_f(void)
|
|||
mfsdr(SDR0_ULTRA1, reg);
|
||||
mtsdr(SDR0_ULTRA1, reg | SDR_ULTRA1_LEDNENABLE);
|
||||
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000010);
|
||||
mtdcr(uicpr, 0xFE7FFFF0); /* set int polarities */
|
||||
mtdcr(uictr, 0x00000010); /* set int trigger levels */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000010);
|
||||
mtdcr(UIC0PR, 0xFE7FFFF0); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x00000010); /* set int trigger levels */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -392,21 +392,21 @@ int board_early_init_f(void)
|
|||
/*--------------------------------------------------------------------
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*-------------------------------------------------------------------*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000009); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000009); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Setup the GPIO pins
|
||||
|
|
|
@ -29,12 +29,12 @@ long int spd_sdram(void);
|
|||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000010);
|
||||
mtdcr(uicpr, 0xFFFF7FF0); /* set int polarities */
|
||||
mtdcr(uictr, 0x00000010); /* set int trigger levels */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000010);
|
||||
mtdcr(UIC0PR, 0xFFFF7FF0); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x00000010); /* set int trigger levels */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* Configure CPC0_PCI to enable PerWE as output
|
||||
|
|
|
@ -116,37 +116,37 @@ int board_early_init_f(void)
|
|||
/*
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic2er, 0x00000000); /* disable all */
|
||||
mtdcr(uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic2pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic2tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic2vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC2PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC2TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC2VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic3er, 0x00000000); /* disable all */
|
||||
mtdcr(uic3cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic3pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic3tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic3vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC3SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC3ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC3CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC3PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC3TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC3VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC3SR, 0xffffffff); /* clear all */
|
||||
|
||||
#if !defined(CONFIG_ARCHES)
|
||||
/* SDR Setting - enable NDFC */
|
||||
|
|
|
@ -71,21 +71,21 @@ int board_early_init_f(void)
|
|||
/*--------------------------------------------------------------------
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*-------------------------------------------------------------------*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000009); /* SMI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000009); /* SMI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -131,11 +131,11 @@ long int fixed_sdram(void)
|
|||
/*--------------------------------------------------------------------
|
||||
* Setup some default
|
||||
*------------------------------------------------------------------*/
|
||||
mtsdram(mem_uabba, 0x00000000); /* ubba=0 (default) */
|
||||
mtsdram(mem_slio, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
|
||||
mtsdram(mem_devopt, 0x00000000); /* dll=0 ds=0 (normal) */
|
||||
mtsdram(mem_wddctr, 0x00000000); /* wrcp=0 dcd=0 */
|
||||
mtsdram(mem_clktr, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
|
||||
mtsdram(SDRAM0_UABBA, 0x00000000); /* ubba=0 (default) */
|
||||
mtsdram(SDRAM0_SLIO, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
|
||||
mtsdram(SDRAM0_DEVOPT, 0x00000000); /* dll=0 ds=0 (normal) */
|
||||
mtsdram(SDRAM0_WDDCTR, 0x00000000); /* wrcp=0 dcd=0 */
|
||||
mtsdram(SDRAM0_CLKTR, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Setup for board-specific specific mem
|
||||
|
@ -143,20 +143,20 @@ long int fixed_sdram(void)
|
|||
/*
|
||||
* Following for CAS Latency = 2.5 @ 133 MHz PLB
|
||||
*/
|
||||
mtsdram(mem_b0cr, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
|
||||
mtsdram(mem_tr0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
|
||||
mtsdram(SDRAM0_B0CR, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
|
||||
mtsdram(SDRAM0_TR0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
|
||||
/* RA=10 RD=3 */
|
||||
mtsdram(mem_tr1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
|
||||
mtsdram(mem_rtr, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */
|
||||
mtsdram(mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */
|
||||
mtsdram(SDRAM0_TR1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
|
||||
mtsdram(SDRAM0_RTR, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */
|
||||
mtsdram(SDRAM0_CFG1, 0x00000000); /* Self-refresh exit, disable PM */
|
||||
udelay(400); /* Delay 200 usecs (min) */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Enable the controller, then wait for DCEN to complete
|
||||
*------------------------------------------------------------------*/
|
||||
mtsdram(mem_cfg0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */
|
||||
mtsdram(SDRAM0_CFG0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */
|
||||
for (;;) {
|
||||
mfsdram(mem_mcsts, reg);
|
||||
mfsdram(SDRAM0_MCSTS, reg);
|
||||
if (reg & 0x80000000)
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -183,42 +183,42 @@ int board_early_init_f (void)
|
|||
* Set critical interrupt values. Set interrupt polarities. Set interrupt
|
||||
* trigger levels. Make bit 0 High priority. Clear all interrupts again.
|
||||
*------------------------------------------------------------------------*/
|
||||
mtdcr (uic3sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic3er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (uic3cr, 0x00000000); /* Set Critical / Non Critical interrupts: */
|
||||
mtdcr (uic3pr, 0xffffffff); /* Set Interrupt Polarities*/
|
||||
mtdcr (uic3tr, 0x001fffff); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic3vr, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (uic3sr, 0x00000000); /* clear all interrupts*/
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all interrupts*/
|
||||
mtdcr (UIC3SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC3ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (UIC3CR, 0x00000000); /* Set Critical / Non Critical interrupts: */
|
||||
mtdcr (UIC3PR, 0xffffffff); /* Set Interrupt Polarities*/
|
||||
mtdcr (UIC3TR, 0x001fffff); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC3VR, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (UIC3SR, 0x00000000); /* clear all interrupts*/
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all interrupts*/
|
||||
|
||||
|
||||
mtdcr (uic2sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic2er, 0x00000000); /* disable all interrupts*/
|
||||
mtdcr (uic2cr, 0x00000000); /* Set Critical / Non Critical interrupts*/
|
||||
mtdcr (uic2pr, 0xebebebff); /* Set Interrupt Polarities*/
|
||||
mtdcr (uic2tr, 0x74747400); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic2vr, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (uic2sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC2ER, 0x00000000); /* disable all interrupts*/
|
||||
mtdcr (UIC2CR, 0x00000000); /* Set Critical / Non Critical interrupts*/
|
||||
mtdcr (UIC2PR, 0xebebebff); /* Set Interrupt Polarities*/
|
||||
mtdcr (UIC2TR, 0x74747400); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC2VR, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (UIC2SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr (uic1sr, 0xffffffff); /* Clear all interrupts*/
|
||||
mtdcr (uic1er, 0x00000000); /* disable all interrupts*/
|
||||
mtdcr (uic1cr, 0x00000000); /* Set Critical / Non Critical interrupts*/
|
||||
mtdcr (uic1pr, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (uic1tr, 0x001f8040); /* Set Interrupt Trigger Levels*/
|
||||
mtdcr (uic1vr, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (uic1sr, 0x00000000); /* clear all interrupts*/
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all interrupts*/
|
||||
mtdcr (UIC1SR, 0xffffffff); /* Clear all interrupts*/
|
||||
mtdcr (UIC1ER, 0x00000000); /* disable all interrupts*/
|
||||
mtdcr (UIC1CR, 0x00000000); /* Set Critical / Non Critical interrupts*/
|
||||
mtdcr (UIC1PR, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC1TR, 0x001f8040); /* Set Interrupt Trigger Levels*/
|
||||
mtdcr (UIC1VR, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (UIC1SR, 0x00000000); /* clear all interrupts*/
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all interrupts*/
|
||||
|
||||
mtdcr (uic0sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic0er, 0x00000000); /* disable all interrupts excepted cascade to be checked */
|
||||
mtdcr (uic0cr, 0x00104001); /* Set Critical / Non Critical interrupts*/
|
||||
mtdcr (uic0pr, 0xffffffff); /* Set Interrupt Polarities*/
|
||||
mtdcr (uic0tr, 0x010f0004); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic0vr, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (uic0sr, 0x00000000); /* clear all interrupts*/
|
||||
mtdcr (uic0sr, 0xffffffff); /* clear all interrupts*/
|
||||
mtdcr (UIC0SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all interrupts excepted cascade to be checked */
|
||||
mtdcr (UIC0CR, 0x00104001); /* Set Critical / Non Critical interrupts*/
|
||||
mtdcr (UIC0PR, 0xffffffff); /* Set Interrupt Polarities*/
|
||||
mtdcr (UIC0TR, 0x010f0004); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC0VR, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (UIC0SR, 0x00000000); /* clear all interrupts*/
|
||||
mtdcr (UIC0SR, 0xffffffff); /* clear all interrupts*/
|
||||
|
||||
mfsdr(SDR0_MFR, mfr);
|
||||
mfr |= SDR0_MFR_FIXD; /* Workaround for PCI/DMA */
|
||||
|
|
|
@ -158,33 +158,33 @@ int board_early_init_f (void)
|
|||
| interrupts again.
|
||||
+-------------------------------------------------------------------*/
|
||||
|
||||
mtdcr (uic2sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic2er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (uic2cr, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (uic2pr, 0xf7ffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (uic2tr, 0x01e1fff8); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic2vr, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (uic2sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC2ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (UIC2CR, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (UIC2PR, 0xf7ffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC2TR, 0x01e1fff8); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC2VR, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (UIC2SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr (uic1sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic1er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (uic1cr, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (uic1pr, 0xfffac785); /* Set Interrupt Polarities */
|
||||
mtdcr (uic1tr, 0x001d0040); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic1vr, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (uic1sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC1ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (UIC1CR, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (UIC1PR, 0xfffac785); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC1TR, 0x001d0040); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC1VR, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (UIC1SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr (uic0sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic0er, 0x0000000a); /* Disable all interrupts */
|
||||
mtdcr (UIC0SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC0ER, 0x0000000a); /* Disable all interrupts */
|
||||
/* Except cascade UIC0 and UIC1 */
|
||||
mtdcr (uic0cr, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (uic0pr, 0xffbfefef); /* Set Interrupt Polarities */
|
||||
mtdcr (uic0tr, 0x00007000); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic0vr, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (uic0sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic0sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC0CR, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (UIC0PR, 0xffbfefef); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC0TR, 0x00007000); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC0VR, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (UIC0SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC0SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
/*
|
||||
* Note: Some cores are still in reset when the chip starts, so
|
||||
|
|
|
@ -49,23 +49,23 @@ int board_early_init_f(void)
|
|||
mtebc( PB2AP, 0x03800000 );
|
||||
mtebc( PB2CR, 0xff838000 ); /* ebc0_b2cr, 2MB at 0xff800000 CS2 */
|
||||
|
||||
mtdcr( uic1sr, 0xffffffff ); /* Clear all interrupts */
|
||||
mtdcr( uic1er, 0x00000000 ); /* disable all interrupts */
|
||||
mtdcr( uic1cr, 0x00000000 ); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr( uic1pr, 0x7fff83ff ); /* Set Interrupt Polarities */
|
||||
mtdcr( uic1tr, 0x001f8000 ); /* Set Interrupt Trigger Levels */
|
||||
mtdcr( uic1vr, 0x00000001 ); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr( uic1sr, 0x00000000 ); /* clear all interrupts */
|
||||
mtdcr( uic1sr, 0xffffffff );
|
||||
mtdcr( UIC1SR, 0xffffffff ); /* Clear all interrupts */
|
||||
mtdcr( UIC1ER, 0x00000000 ); /* disable all interrupts */
|
||||
mtdcr( UIC1CR, 0x00000000 ); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr( UIC1PR, 0x7fff83ff ); /* Set Interrupt Polarities */
|
||||
mtdcr( UIC1TR, 0x001f8000 ); /* Set Interrupt Trigger Levels */
|
||||
mtdcr( UIC1VR, 0x00000001 ); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr( UIC1SR, 0x00000000 ); /* clear all interrupts */
|
||||
mtdcr( UIC1SR, 0xffffffff );
|
||||
|
||||
mtdcr( uic0sr, 0xffffffff ); /* Clear all interrupts */
|
||||
mtdcr( uic0er, 0x00000000 ); /* disable all interrupts excepted cascade */
|
||||
mtdcr( uic0cr, 0x00000001 ); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr( uic0pr, 0xffffffff ); /* Set Interrupt Polarities */
|
||||
mtdcr( uic0tr, 0x01000004 ); /* Set Interrupt Trigger Levels */
|
||||
mtdcr( uic0vr, 0x00000001 ); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr( uic0sr, 0x00000000 ); /* clear all interrupts */
|
||||
mtdcr( uic0sr, 0xffffffff );
|
||||
mtdcr( UIC0SR, 0xffffffff ); /* Clear all interrupts */
|
||||
mtdcr( UIC0ER, 0x00000000 ); /* disable all interrupts excepted cascade */
|
||||
mtdcr( UIC0CR, 0x00000001 ); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr( UIC0PR, 0xffffffff ); /* Set Interrupt Polarities */
|
||||
mtdcr( UIC0TR, 0x01000004 ); /* Set Interrupt Trigger Levels */
|
||||
mtdcr( UIC0VR, 0x00000001 ); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr( UIC0SR, 0x00000000 ); /* clear all interrupts */
|
||||
mtdcr( UIC0SR, 0xffffffff );
|
||||
|
||||
mfsdr(SDR0_MFR, mfr);
|
||||
mfr |= SDR0_MFR_FIXD; /* Workaround for PCI/DMA */
|
||||
|
|
|
@ -159,33 +159,33 @@ int board_early_init_f (void)
|
|||
| interrupts again.
|
||||
+-------------------------------------------------------------------*/
|
||||
|
||||
mtdcr (uic2sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic2er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (uic2cr, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (uic2pr, 0xf7ffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (uic2tr, 0x01e1fff8); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic2vr, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (uic2sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC2ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (UIC2CR, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (UIC2PR, 0xf7ffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC2TR, 0x01e1fff8); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC2VR, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (UIC2SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr (uic1sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic1er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (uic1cr, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (uic1pr, 0xfffac785); /* Set Interrupt Polarities */
|
||||
mtdcr (uic1tr, 0x001d0040); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic1vr, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (uic1sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC1ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (UIC1CR, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (UIC1PR, 0xfffac785); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC1TR, 0x001d0040); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC1VR, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (UIC1SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr (uic0sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic0er, 0x0000000a); /* Disable all interrupts */
|
||||
mtdcr (UIC0SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC0ER, 0x0000000a); /* Disable all interrupts */
|
||||
/* Except cascade UIC0 and UIC1 */
|
||||
mtdcr (uic0cr, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (uic0pr, 0xffbfefef); /* Set Interrupt Polarities */
|
||||
mtdcr (uic0tr, 0x00007000); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic0vr, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (uic0sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic0sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC0CR, 0x00000000); /* Set Critical / Non Critical interrupts */
|
||||
mtdcr (UIC0PR, 0xffbfefef); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC0TR, 0x00007000); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC0VR, 0x00000001); /* Set Vect base=0,INT31 Highest priority */
|
||||
mtdcr (UIC0SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC0SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
/*
|
||||
* Note: Some cores are still in reset when the chip starts, so
|
||||
|
|
|
@ -159,36 +159,36 @@ int board_early_init_f (void)
|
|||
* UIC2 UIC1
|
||||
* UIC3 UIC2
|
||||
*/
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic1er, 0x00000000); /* disable all */
|
||||
mtdcr (uic1cr, 0x00000009); /* SMI & UIC1 crit are critical */
|
||||
mtdcr (uic1pr, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr (uic1tr, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr (uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC1CR, 0x00000009); /* SMI & UIC1 crit are critical */
|
||||
mtdcr (UIC1PR, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr (UIC1TR, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr (UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic2er, 0x00000000); /* disable all */
|
||||
mtdcr (uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic2pr, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr (uic2tr, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr (uic2vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC2PR, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr (UIC2TR, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr (UIC2VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic3er, 0x00000000); /* disable all */
|
||||
mtdcr (uic3cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic3pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr (uic3tr, 0x00ff8c0f); /* per ref-board manual */
|
||||
mtdcr (uic3vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC3ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC3CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC3PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr (UIC3TR, 0x00ff8c0f); /* per ref-board manual */
|
||||
mtdcr (UIC3VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic0sr, 0xfc000000); /* clear all */
|
||||
mtdcr (uic0er, 0x00000000); /* disable all */
|
||||
mtdcr (uic0cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic0pr, 0xfc000000); /* */
|
||||
mtdcr (uic0tr, 0x00000000); /* */
|
||||
mtdcr (uic0vr, 0x00000001); /* */
|
||||
mtdcr (UIC0SR, 0xfc000000); /* clear all */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC0CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC0PR, 0xfc000000); /* */
|
||||
mtdcr (UIC0TR, 0x00000000); /* */
|
||||
mtdcr (UIC0VR, 0x00000001); /* */
|
||||
mfsdr (SDR0_MFR, mfr);
|
||||
mfr &= ~SDR0_MFR_ECS_MASK;
|
||||
/* mtsdr(SDR0_MFR, mfr); */
|
||||
|
@ -241,11 +241,11 @@ long int fixed_sdram (void)
|
|||
/*--------------------------------------------------------------------
|
||||
* Setup some default
|
||||
*------------------------------------------------------------------*/
|
||||
mtsdram (mem_uabba, 0x00000000); /* ubba=0 (default) */
|
||||
mtsdram (mem_slio, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
|
||||
mtsdram (mem_devopt, 0x00000000); /* dll=0 ds=0 (normal) */
|
||||
mtsdram (mem_wddctr, 0x00000000); /* wrcp=0 dcd=0 */
|
||||
mtsdram (mem_clktr, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
|
||||
mtsdram (SDRAM0_UABBA, 0x00000000); /* ubba=0 (default) */
|
||||
mtsdram (SDRAM0_SLIO, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
|
||||
mtsdram (SDRAM0_DEVOPT, 0x00000000); /* dll=0 ds=0 (normal) */
|
||||
mtsdram (SDRAM0_WDDCTR, 0x00000000); /* wrcp=0 dcd=0 */
|
||||
mtsdram (SDRAM0_CLKTR, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Setup for board-specific specific mem
|
||||
|
@ -253,20 +253,20 @@ long int fixed_sdram (void)
|
|||
/*
|
||||
* Following for CAS Latency = 2.5 @ 133 MHz PLB
|
||||
*/
|
||||
mtsdram (mem_b0cr, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
|
||||
mtsdram (mem_tr0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
|
||||
mtsdram (SDRAM0_B0CR, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
|
||||
mtsdram (SDRAM0_TR0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
|
||||
/* RA=10 RD=3 */
|
||||
mtsdram (mem_tr1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
|
||||
mtsdram (mem_rtr, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */
|
||||
mtsdram (mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */
|
||||
mtsdram (SDRAM0_TR1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
|
||||
mtsdram (SDRAM0_RTR, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */
|
||||
mtsdram (SDRAM0_CFG1, 0x00000000); /* Self-refresh exit, disable PM */
|
||||
udelay (400); /* Delay 200 usecs (min) */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Enable the controller, then wait for DCEN to complete
|
||||
*------------------------------------------------------------------*/
|
||||
mtsdram (mem_cfg0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */
|
||||
mtsdram (SDRAM0_CFG0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */
|
||||
for (;;) {
|
||||
mfsdram (mem_mcsts, reg);
|
||||
mfsdram (SDRAM0_MCSTS, reg);
|
||||
if (reg & 0x80000000)
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -416,41 +416,41 @@ static void early_init_UIC(void)
|
|||
* interrupt trigger levels. Make bit 0 High priority. Clear all
|
||||
* interrupts again.
|
||||
*/
|
||||
mtdcr(uic3sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr(uic3er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr(uic3cr, 0x00000000); /* Set Critical / Non Critical
|
||||
mtdcr(UIC3SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr(UIC3ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr(UIC3CR, 0x00000000); /* Set Critical / Non Critical
|
||||
* interrupts */
|
||||
mtdcr(uic3pr, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr(uic3tr, 0x001fffff); /* Set Interrupt Trigger Levels */
|
||||
mtdcr(uic3vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic3sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr(UIC3PR, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr(UIC3TR, 0x001fffff); /* Set Interrupt Trigger Levels */
|
||||
mtdcr(UIC3VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC3SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr(uic2sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr(uic2er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr(uic2cr, 0x00000000); /* Set Critical / Non Critical
|
||||
mtdcr(UIC2SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr(UIC2ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr(UIC2CR, 0x00000000); /* Set Critical / Non Critical
|
||||
* interrupts */
|
||||
mtdcr(uic2pr, 0xebebebff); /* Set Interrupt Polarities */
|
||||
mtdcr(uic2tr, 0x74747400); /* Set Interrupt Trigger Levels */
|
||||
mtdcr(uic2vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr(UIC2PR, 0xebebebff); /* Set Interrupt Polarities */
|
||||
mtdcr(UIC2TR, 0x74747400); /* Set Interrupt Trigger Levels */
|
||||
mtdcr(UIC2VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr(uic1cr, 0x00000000); /* Set Critical / Non Critical
|
||||
mtdcr(UIC1SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr(UIC1CR, 0x00000000); /* Set Critical / Non Critical
|
||||
* interrupts */
|
||||
mtdcr(uic1pr, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr(uic1tr, 0x001fc0ff); /* Set Interrupt Trigger Levels */
|
||||
mtdcr(uic1vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr(UIC1PR, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr(UIC1TR, 0x001fc0ff); /* Set Interrupt Trigger Levels */
|
||||
mtdcr(UIC1VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr(uic0sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all interrupts excepted
|
||||
mtdcr(UIC0SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all interrupts excepted
|
||||
* cascade to be checked */
|
||||
mtdcr(uic0cr, 0x00104001); /* Set Critical / Non Critical
|
||||
mtdcr(UIC0CR, 0x00104001); /* Set Critical / Non Critical
|
||||
* interrupts */
|
||||
mtdcr(uic0pr, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr(uic0tr, 0x000f003c); /* Set Interrupt Trigger Levels */
|
||||
mtdcr(uic0vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr(UIC0PR, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr(UIC0TR, 0x000f003c); /* Set Interrupt Trigger Levels */
|
||||
mtdcr(UIC0VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
}
|
||||
|
|
|
@ -52,29 +52,29 @@ int board_early_init_f(void)
|
|||
/*
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xfffff7ff); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xfffff7ff); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic2er, 0x00000000); /* disable all */
|
||||
mtdcr(uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic2pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic2tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic2vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC2PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC2TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC2VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
/* 50MHz tmrclk */
|
||||
out_8((u8 *) CONFIG_SYS_BCSR_BASE + 0x04, 0x00);
|
||||
|
|
|
@ -40,13 +40,13 @@ int board_early_init_f(void)
|
|||
{
|
||||
lcd_init();
|
||||
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000);
|
||||
mtdcr(uicpr, 0xFFFF7F00); /* set int polarities */
|
||||
mtdcr(uictr, 0x00000000); /* set int trigger levels */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000);
|
||||
mtdcr(UIC0PR, 0xFFFF7F00); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x00000000); /* set int trigger levels */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
|
||||
mtebc(PB3AP, CONFIG_SYS_EBC_PB3AP); /* memory bank 3 (CPLD_LCM) initialization */
|
||||
mtebc(PB3CR, CONFIG_SYS_EBC_PB3CR);
|
||||
|
|
|
@ -132,36 +132,36 @@ int board_early_init_f (void)
|
|||
* UIC2 UIC1
|
||||
* UIC3 UIC2
|
||||
*/
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic1er, 0x00000000); /* disable all */
|
||||
mtdcr (uic1cr, 0x00000009); /* SMI & UIC1 crit are critical */
|
||||
mtdcr (uic1pr, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr (uic1tr, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr (uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC1CR, 0x00000009); /* SMI & UIC1 crit are critical */
|
||||
mtdcr (UIC1PR, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr (UIC1TR, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr (UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic2er, 0x00000000); /* disable all */
|
||||
mtdcr (uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic2pr, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr (uic2tr, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr (uic2vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC2PR, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr (UIC2TR, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr (UIC2VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic3er, 0x00000000); /* disable all */
|
||||
mtdcr (uic3cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic3pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr (uic3tr, 0x00ff8c0f); /* per ref-board manual */
|
||||
mtdcr (uic3vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC3ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC3CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC3PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr (UIC3TR, 0x00ff8c0f); /* per ref-board manual */
|
||||
mtdcr (UIC3VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic0sr, 0xfc000000); /* clear all */
|
||||
mtdcr (uic0er, 0x00000000); /* disable all */
|
||||
mtdcr (uic0cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic0pr, 0xfc000000); /* */
|
||||
mtdcr (uic0tr, 0x00000000); /* */
|
||||
mtdcr (uic0vr, 0x00000001); /* */
|
||||
mtdcr (UIC0SR, 0xfc000000); /* clear all */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC0CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC0PR, 0xfc000000); /* */
|
||||
mtdcr (UIC0TR, 0x00000000); /* */
|
||||
mtdcr (UIC0VR, 0x00000001); /* */
|
||||
|
||||
/* Enable two GPIO 10~11 and TraceA signal */
|
||||
mfsdr(SDR0_PFC0,reg);
|
||||
|
|
|
@ -47,13 +47,13 @@ int board_early_init_f(void)
|
|||
|
|
||||
+-------------------------------------------------------------------------*/
|
||||
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000020); /* set all but FPGA SMI to be non-critical */
|
||||
mtdcr(uicpr, 0xFFFFFFE0); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000020); /* set all but FPGA SMI to be non-critical */
|
||||
mtdcr(UIC0PR, 0xFFFFFFE0); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/* set UART1 control to select CTS/RTS */
|
||||
#define FPGA_BRDC 0xF0300004
|
||||
|
|
|
@ -82,21 +82,21 @@ int board_early_init_f(void)
|
|||
/*--------------------------------------------------------------------
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*-------------------------------------------------------------------*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000009); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000009); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Setup other serial configuration
|
||||
|
@ -237,7 +237,7 @@ void sdram_tr1_set(int ram_address, int* tr1_value)
|
|||
/* go through all possible SDRAM0_TR1[RDCT] values */
|
||||
for (i=0; i<=0x1ff; i++) {
|
||||
/* set the current value for TR1 */
|
||||
mtsdram(mem_tr1, (0x80800800 | i));
|
||||
mtsdram(SDRAM0_TR1, (0x80800800 | i));
|
||||
|
||||
/* write values */
|
||||
for (j=0; j<NUM_TRIES; j++) {
|
||||
|
@ -289,15 +289,15 @@ phys_size_t initdram(int board)
|
|||
/*--------------------------------------------------------------------
|
||||
* Setup some default
|
||||
*------------------------------------------------------------------*/
|
||||
mtsdram(mem_uabba, 0x00000000); /* ubba=0 (default) */
|
||||
mtsdram(mem_slio, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
|
||||
mtsdram(mem_devopt, 0x00000000); /* dll=0 ds=0 (normal) */
|
||||
mtsdram(mem_clktr, 0x40000000); /* ?? */
|
||||
mtsdram(mem_wddctr, 0x40000000); /* ?? */
|
||||
mtsdram(SDRAM0_UABBA, 0x00000000); /* ubba=0 (default) */
|
||||
mtsdram(SDRAM0_SLIO, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
|
||||
mtsdram(SDRAM0_DEVOPT, 0x00000000); /* dll=0 ds=0 (normal) */
|
||||
mtsdram(SDRAM0_CLKTR, 0x40000000); /* ?? */
|
||||
mtsdram(SDRAM0_WDDCTR, 0x40000000); /* ?? */
|
||||
|
||||
/*clear this first, if the DDR is enabled by a debugger
|
||||
then you can not make changes. */
|
||||
mtsdram(mem_cfg0, 0x00000000); /* Disable EEC */
|
||||
mtsdram(SDRAM0_CFG0, 0x00000000); /* Disable EEC */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Setup for board-specific specific mem
|
||||
|
@ -305,29 +305,29 @@ phys_size_t initdram(int board)
|
|||
/*
|
||||
* Following for CAS Latency = 2.5 @ 133 MHz PLB
|
||||
*/
|
||||
mtsdram(mem_b0cr, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
|
||||
mtsdram(mem_b1cr, 0x080a4001); /* SDBA=0x080 128MB, Mode 3, enabled */
|
||||
mtsdram(SDRAM0_B0CR, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
|
||||
mtsdram(SDRAM0_B1CR, 0x080a4001); /* SDBA=0x080 128MB, Mode 3, enabled */
|
||||
|
||||
mtsdram(mem_tr0, 0x410a4012); /* ?? */
|
||||
mtsdram(mem_rtr, 0x04080000); /* ?? */
|
||||
mtsdram(mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */
|
||||
mtsdram(mem_cfg0, 0x30000000); /* Disable EEC */
|
||||
mtsdram(SDRAM0_TR0, 0x410a4012); /* ?? */
|
||||
mtsdram(SDRAM0_RTR, 0x04080000); /* ?? */
|
||||
mtsdram(SDRAM0_CFG1, 0x00000000); /* Self-refresh exit, disable PM */
|
||||
mtsdram(SDRAM0_CFG0, 0x30000000); /* Disable EEC */
|
||||
udelay(400); /* Delay 200 usecs (min) */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Enable the controller, then wait for DCEN to complete
|
||||
*------------------------------------------------------------------*/
|
||||
mtsdram(mem_cfg0, 0x80000000); /* Enable */
|
||||
mtsdram(SDRAM0_CFG0, 0x80000000); /* Enable */
|
||||
|
||||
for (;;) {
|
||||
mfsdram(mem_mcsts, reg);
|
||||
mfsdram(SDRAM0_MCSTS, reg);
|
||||
if (reg & 0x80000000)
|
||||
break;
|
||||
}
|
||||
|
||||
sdram_tr1_set(0x00000000, &tr1_bank1);
|
||||
sdram_tr1_set(0x08000000, &tr1_bank2);
|
||||
mtsdram(mem_tr1, (((tr1_bank1+tr1_bank2)/2) | 0x80800800));
|
||||
mtsdram(SDRAM0_TR1, (((tr1_bank1+tr1_bank2)/2) | 0x80800800));
|
||||
|
||||
return CONFIG_SYS_SDRAM_BANKS * (CONFIG_SYS_KBYTES_SDRAM * 1024); /* return bytes */
|
||||
}
|
||||
|
|
|
@ -485,50 +485,50 @@ int board_early_init_f (void)
|
|||
| interrupt trigger levels. Make bit 0 High priority. Clear all
|
||||
| interrupts again.
|
||||
+-------------------------------------------------------------------*/
|
||||
mtdcr (uic3sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic3er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (uic3cr, 0x00000000); /* Set Critical / Non Critical
|
||||
mtdcr (UIC3SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC3ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (UIC3CR, 0x00000000); /* Set Critical / Non Critical
|
||||
* interrupts */
|
||||
mtdcr (uic3pr, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (uic3tr, 0x001fffff); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic3vr, 0x00000001); /* Set Vect base=0,INT31 Highest
|
||||
mtdcr (UIC3PR, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC3TR, 0x001fffff); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC3VR, 0x00000001); /* Set Vect base=0,INT31 Highest
|
||||
* priority */
|
||||
mtdcr (uic3sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC3SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr (uic2sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic2er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (uic2cr, 0x00000000); /* Set Critical / Non Critical
|
||||
mtdcr (UIC2SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC2ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (UIC2CR, 0x00000000); /* Set Critical / Non Critical
|
||||
* interrupts */
|
||||
mtdcr (uic2pr, 0xebebebff); /* Set Interrupt Polarities */
|
||||
mtdcr (uic2tr, 0x74747400); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic2vr, 0x00000001); /* Set Vect base=0,INT31 Highest
|
||||
mtdcr (UIC2PR, 0xebebebff); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC2TR, 0x74747400); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC2VR, 0x00000001); /* Set Vect base=0,INT31 Highest
|
||||
* priority */
|
||||
mtdcr (uic2sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC2SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr (uic1sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic1er, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (uic1cr, 0x00000000); /* Set Critical / Non Critical
|
||||
mtdcr (UIC1SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC1ER, 0x00000000); /* disable all interrupts */
|
||||
mtdcr (UIC1CR, 0x00000000); /* Set Critical / Non Critical
|
||||
* interrupts */
|
||||
mtdcr (uic1pr, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (uic1tr, 0x001f8040); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic1vr, 0x00000001); /* Set Vect base=0,INT31 Highest
|
||||
mtdcr (UIC1PR, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC1TR, 0x001f8040); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC1VR, 0x00000001); /* Set Vect base=0,INT31 Highest
|
||||
* priority */
|
||||
mtdcr (uic1sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC1SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mtdcr (uic0sr, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (uic0er, 0x00000000); /* disable all interrupts excepted
|
||||
mtdcr (UIC0SR, 0xffffffff); /* Clear all interrupts */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all interrupts excepted
|
||||
* cascade to be checked */
|
||||
mtdcr (uic0cr, 0x00104001); /* Set Critical / Non Critical
|
||||
mtdcr (UIC0CR, 0x00104001); /* Set Critical / Non Critical
|
||||
* interrupts */
|
||||
mtdcr (uic0pr, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (uic0tr, 0x010f0004); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (uic0vr, 0x00000001); /* Set Vect base=0,INT31 Highest
|
||||
mtdcr (UIC0PR, 0xffffffff); /* Set Interrupt Polarities */
|
||||
mtdcr (UIC0TR, 0x010f0004); /* Set Interrupt Trigger Levels */
|
||||
mtdcr (UIC0VR, 0x00000001); /* Set Vect base=0,INT31 Highest
|
||||
* priority */
|
||||
mtdcr (uic0sr, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (uic0sr, 0xffffffff); /* clear all interrupts */
|
||||
mtdcr (UIC0SR, 0x00000000); /* clear all interrupts */
|
||||
mtdcr (UIC0SR, 0xffffffff); /* clear all interrupts */
|
||||
|
||||
mfsdr(SDR0_MFR, mfr);
|
||||
mfr |= SDR0_MFR_FIXD; /* Workaround for PCI/DMA */
|
||||
|
|
|
@ -113,13 +113,13 @@ int board_early_init_f (void)
|
|||
{
|
||||
/* Running from ROM: global data is still READONLY */
|
||||
init_sdram ();
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000020); /* set all but FPGA SMI to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFFE0); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000020); /* set all but FPGA SMI to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFFE0); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -198,7 +198,7 @@ static void init_sdram (void)
|
|||
unsigned long tmp;
|
||||
|
||||
/* write SDRAM bank 0 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x00062001);
|
||||
|
||||
/* Set the SDRAM Timing reg, SDTR1 and the refresh timer reg, RTR. */
|
||||
|
@ -212,25 +212,25 @@ static void init_sdram (void)
|
|||
/* divisor = ((mfdcr(strap)>> 28) & 0x3); */
|
||||
|
||||
/* write SDRAM timing for 100MHz. */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_sdtr1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_TR);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x0086400D);
|
||||
|
||||
/* write SDRAM refresh interval register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_rtr);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_RTR);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x05F00000);
|
||||
udelay (200);
|
||||
|
||||
/* sdram controller.*/
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x90800000);
|
||||
udelay (200);
|
||||
|
||||
/* initially, disable ECC on all banks */
|
||||
udelay (200);
|
||||
mtdcr (SDRAM0_CFGADDR, mem_ecccf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_ECCCFG);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
tmp &= 0xff0fffff;
|
||||
mtdcr (SDRAM0_CFGADDR, mem_ecccf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_ECCCFG);
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
|
||||
return;
|
||||
|
@ -282,15 +282,15 @@ int testdram (void)
|
|||
}
|
||||
printf ("Enable ECC..");
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
tmp = (mfdcr (SDRAM0_CFGDATA) & ~0xFFE00000) | 0x90800000;
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
udelay (600);
|
||||
for (p = (unsigned long) 0; ((unsigned long) p < L1_MEMSIZE); *p++ = 0L)
|
||||
;
|
||||
udelay (400);
|
||||
mtdcr (SDRAM0_CFGADDR, mem_ecccf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_ECCCFG);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
tmp |= 0x00800000;
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
|
|
|
@ -87,13 +87,13 @@ int board_early_init_f(void)
|
|||
|
|
||||
+-------------------------------------------------------------------------*/
|
||||
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFF83); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFF83); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
mtebc (EBC0_CFG, 0xa8400000); /* EBC always driven */
|
||||
|
||||
|
@ -135,28 +135,28 @@ phys_size_t initdram (int board_type)
|
|||
|
||||
tot_size = 0;
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
tot_size += bank_size;
|
||||
}
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
tot_size += bank_size;
|
||||
}
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb2cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
tot_size += bank_size;
|
||||
}
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb3cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
|
|
|
@ -175,26 +175,26 @@ sdram_init:
|
|||
* Disable memory controller to allow
|
||||
* values to be changed.
|
||||
*/
|
||||
WDCR_SDRAM(mem_mcopt1, 0x00000000)
|
||||
WDCR_SDRAM(SDRAM0_CFG, 0x00000000)
|
||||
|
||||
/*
|
||||
* Configure Memory Banks
|
||||
*/
|
||||
WDCR_SDRAM(mem_mb0cf, 0x00084001)
|
||||
WDCR_SDRAM(mem_mb1cf, 0x00000000)
|
||||
WDCR_SDRAM(mem_mb2cf, 0x00000000)
|
||||
WDCR_SDRAM(mem_mb3cf, 0x00000000)
|
||||
WDCR_SDRAM(SDRAM0_B0CR, 0x00084001)
|
||||
WDCR_SDRAM(SDRAM0_B1CR, 0x00000000)
|
||||
WDCR_SDRAM(SDRAM0_B2CR, 0x00000000)
|
||||
WDCR_SDRAM(SDRAM0_B3CR, 0x00000000)
|
||||
|
||||
/*
|
||||
* Set up SDTR1 (SDRAM Timing Register)
|
||||
*/
|
||||
WDCR_SDRAM(mem_sdtr1, 0x00854009)
|
||||
WDCR_SDRAM(SDRAM0_TR, 0x00854009)
|
||||
|
||||
/*
|
||||
* Set RTR (Refresh Timing Register)
|
||||
*/
|
||||
WDCR_SDRAM(mem_rtr, 0x10000000)
|
||||
/* WDCR_SDRAM(mem_rtr, 0x05f00000) */
|
||||
WDCR_SDRAM(SDRAM0_RTR, 0x10000000)
|
||||
/* WDCR_SDRAM(SDRAM0_RTR, 0x05f00000) */
|
||||
|
||||
/********************************************************************
|
||||
* Delay to ensure 200usec have elapsed since reset. Assume worst
|
||||
|
@ -210,7 +210,7 @@ sdram_init:
|
|||
/********************************************************************
|
||||
* Set memory controller options reg, MCOPT1.
|
||||
*******************************************************************/
|
||||
WDCR_SDRAM(mem_mcopt1,0x80800000)
|
||||
WDCR_SDRAM(SDRAM0_CFG,0x80800000)
|
||||
|
||||
..sdri_done:
|
||||
blr /* Return to calling function */
|
||||
|
|
|
@ -55,13 +55,13 @@ int board_early_init_f(void)
|
|||
|
|
||||
+-------------------------------------------------------------------------*/
|
||||
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFF83); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFF83); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
mtebc (EBC0_CFG, 0xa8400000); /* EBC always driven */
|
||||
|
||||
|
@ -103,28 +103,28 @@ phys_size_t initdram (int board_type)
|
|||
|
||||
tot_size = 0;
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
tot_size += bank_size;
|
||||
}
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
tot_size += bank_size;
|
||||
}
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb2cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
tot_size += bank_size;
|
||||
}
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb3cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
|
|
|
@ -171,26 +171,26 @@ sdram_init:
|
|||
* Disable memory controller to allow
|
||||
* values to be changed.
|
||||
*/
|
||||
WDCR_SDRAM(mem_mcopt1, 0x00000000)
|
||||
WDCR_SDRAM(SDRAM0_CFG, 0x00000000)
|
||||
|
||||
/*
|
||||
* Configure Memory Banks
|
||||
*/
|
||||
WDCR_SDRAM(mem_mb0cf, 0x00062001)
|
||||
WDCR_SDRAM(mem_mb1cf, 0x00000000)
|
||||
WDCR_SDRAM(mem_mb2cf, 0x00000000)
|
||||
WDCR_SDRAM(mem_mb3cf, 0x00000000)
|
||||
WDCR_SDRAM(SDRAM0_B0CR, 0x00062001)
|
||||
WDCR_SDRAM(SDRAM0_B1CR, 0x00000000)
|
||||
WDCR_SDRAM(SDRAM0_B2CR, 0x00000000)
|
||||
WDCR_SDRAM(SDRAM0_B3CR, 0x00000000)
|
||||
|
||||
/*
|
||||
* Set up SDTR1 (SDRAM Timing Register)
|
||||
*/
|
||||
WDCR_SDRAM(mem_sdtr1, 0x00854009)
|
||||
WDCR_SDRAM(SDRAM0_TR, 0x00854009)
|
||||
|
||||
/*
|
||||
* Set RTR (Refresh Timing Register)
|
||||
*/
|
||||
WDCR_SDRAM(mem_rtr, 0x10000000)
|
||||
/* WDCR_SDRAM(mem_rtr, 0x05f00000) */
|
||||
WDCR_SDRAM(SDRAM0_RTR, 0x10000000)
|
||||
/* WDCR_SDRAM(SDRAM0_RTR, 0x05f00000) */
|
||||
|
||||
/********************************************************************
|
||||
* Delay to ensure 200usec have elapsed since reset. Assume worst
|
||||
|
@ -206,7 +206,7 @@ sdram_init:
|
|||
/********************************************************************
|
||||
* Set memory controller options reg, MCOPT1.
|
||||
*******************************************************************/
|
||||
WDCR_SDRAM(mem_mcopt1,0x80800000)
|
||||
WDCR_SDRAM(SDRAM0_CFG,0x80800000)
|
||||
|
||||
..sdri_done:
|
||||
blr /* Return to calling function */
|
||||
|
|
|
@ -53,13 +53,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5)
|
||||
* IRQ 31 (EXT IRQ 6)
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
|
||||
|
|
|
@ -62,13 +62,13 @@ int board_early_init_f (void)
|
|||
|
|
||||
+-------------------------------------------------------------------------*/
|
||||
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all SMI to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFF88); /* set int polarities; IRQ3 to 1 */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels, UART0 is EDGE */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all SMI to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFF88); /* set int polarities; IRQ3 to 1 */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels, UART0 is EDGE */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
mtdcr (CPC0_CR0, 0x00002000); /* set IRQ6 as GPIO23 to generate an interrupt request to the PCP2PCI bridge */
|
||||
|
||||
|
|
|
@ -228,7 +228,7 @@ sdram_init:
|
|||
/* Set MB0CF for bank 0. (0-32MB) Address Mode 4 since 12x8(2) */
|
||||
/*------------------------------------------------------------------- */
|
||||
|
||||
addi r4,0,mem_mb0cf
|
||||
addi r4,0,SDRAM0_B0CR
|
||||
mtdcr SDRAM0_CFGADDR,r4
|
||||
addis r4,0,MB0CF@h
|
||||
ori r4,r4,MB0CF@l
|
||||
|
@ -238,7 +238,7 @@ sdram_init:
|
|||
/* Set MB1CF for bank 1. (32MB-64MB) Address Mode 4 since 12x8(2) */
|
||||
/*------------------------------------------------------------------- */
|
||||
|
||||
addi r4,0,mem_mb1cf
|
||||
addi r4,0,SDRAM0_B1CR
|
||||
mtdcr SDRAM0_CFGADDR,r4
|
||||
addis r4,0,MB1CF@h
|
||||
ori r4,r4,MB1CF@l
|
||||
|
@ -248,7 +248,7 @@ sdram_init:
|
|||
/* Set MB2CF for bank 2. off */
|
||||
/*------------------------------------------------------------------- */
|
||||
|
||||
addi r4,0,mem_mb2cf
|
||||
addi r4,0,SDRAM0_B2CR
|
||||
mtdcr SDRAM0_CFGADDR,r4
|
||||
addis r4,0,MB2CF@h
|
||||
ori r4,r4,MB2CF@l
|
||||
|
@ -258,7 +258,7 @@ sdram_init:
|
|||
/* Set MB3CF for bank 3. off */
|
||||
/*------------------------------------------------------------------- */
|
||||
|
||||
addi r4,0,mem_mb3cf
|
||||
addi r4,0,SDRAM0_B3CR
|
||||
mtdcr SDRAM0_CFGADDR,r4
|
||||
addis r4,0,MB3CF@h
|
||||
ori r4,r4,MB3CF@l
|
||||
|
@ -305,14 +305,14 @@ sdram_init:
|
|||
/*------------------------------------------------------------------- */
|
||||
/* Set SDTR1 */
|
||||
/*------------------------------------------------------------------- */
|
||||
addi r4,0,mem_sdtr1
|
||||
addi r4,0,SDRAM0_TR
|
||||
mtdcr SDRAM0_CFGADDR,r4
|
||||
mtdcr SDRAM0_CFGDATA,r6
|
||||
|
||||
/*------------------------------------------------------------------- */
|
||||
/* Set RTR */
|
||||
/*------------------------------------------------------------------- */
|
||||
addi r4,0,mem_rtr
|
||||
addi r4,0,SDRAM0_RTR
|
||||
mtdcr SDRAM0_CFGADDR,r4
|
||||
mtdcr SDRAM0_CFGDATA,r7
|
||||
|
||||
|
@ -332,7 +332,7 @@ sdram_init:
|
|||
/* Set DC_EN to '1' and BRD_PRF to '01' for 16 byte PLB Burst */
|
||||
/* read/prefetch. */
|
||||
/*------------------------------------------------------------------- */
|
||||
addi r4,0,mem_mcopt1
|
||||
addi r4,0,SDRAM0_CFG
|
||||
mtdcr SDRAM0_CFGADDR,r4
|
||||
addis r4,0,0x8080 /* set DC_EN=1 */
|
||||
ori r4,r4,0x0000
|
||||
|
|
|
@ -155,13 +155,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0 */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0 */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks
|
||||
|
|
|
@ -130,13 +130,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
out_be16((void *)0xf03000ec, 0x0fff); /* enable interrupts in fpga */
|
||||
|
||||
|
|
|
@ -66,13 +66,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF9F); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF9F); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
|
||||
|
|
|
@ -134,13 +134,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -45,13 +45,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
|
||||
|
|
|
@ -58,14 +58,14 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) unused
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF81); /* set int polarities */
|
||||
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -179,22 +179,22 @@ int board_early_init_f(void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
#if defined(CONFIG_CPCI405_6U)
|
||||
if (cpci405_version() == 3) {
|
||||
mtdcr(uicpr, 0xFFFFFF99); /* set int polarities */
|
||||
mtdcr(UIC0PR, 0xFFFFFF99); /* set int polarities */
|
||||
} else {
|
||||
mtdcr(uicpr, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr(UIC0PR, 0xFFFFFF81); /* set int polarities */
|
||||
}
|
||||
#else
|
||||
mtdcr(uicpr, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr(UIC0PR, 0xFFFFFF81); /* set int polarities */
|
||||
#endif
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,
|
||||
* INT0 highest priority */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -129,14 +129,14 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
/* mtdcr(uicpr, 0xFFFFFF81); / set int polarities */
|
||||
mtdcr (uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
/* mtdcr(UIC0PR, 0xFFFFFF81); / set int polarities */
|
||||
mtdcr (UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -43,13 +43,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
|
||||
|
|
|
@ -124,13 +124,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) unused; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFFB1); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFFB1); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 100 us
|
||||
|
|
|
@ -87,37 +87,37 @@ int board_early_init_f(void)
|
|||
/*
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xfffff7ff); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xfffff7ff); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
/*
|
||||
* UIC1:
|
||||
* bit30: ext. Irq 1: PLD : int 32+30
|
||||
*/
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xfffffffd);
|
||||
mtdcr(uic1tr, 0x00000000);
|
||||
mtdcr(uic1vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xfffffffd);
|
||||
mtdcr(UIC1TR, 0x00000000);
|
||||
mtdcr(UIC1VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
/*
|
||||
* UIC2
|
||||
* bit3: ext. Irq 2: DCF77 : int 64+3
|
||||
*/
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic2er, 0x00000000); /* disable all */
|
||||
mtdcr(uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic2pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic2tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic2vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC2PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC2TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC2VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
/* select Ethernet pins */
|
||||
mfsdr(SDR0_PFC1, sdr0_pfc1);
|
||||
|
|
|
@ -363,13 +363,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, CONFIG_SYS_UIC0_POLARITY);/* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, CONFIG_SYS_UIC0_POLARITY);/* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
|
||||
|
|
|
@ -86,13 +86,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF9F); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF9F); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
|
||||
|
|
|
@ -45,13 +45,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: clear EBTC -> high-Z ebc signals between
|
||||
|
|
|
@ -155,13 +155,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) FPGA Timestamp; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) PCI Reset; active low; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* Setup GPIO pins (IRQ4/GPIO21 as GPIO)
|
||||
|
@ -271,7 +271,7 @@ int misc_init_r (void)
|
|||
pci_write_config_dword(PCIDEVID_405GP, i, *ptr++);
|
||||
}
|
||||
}
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
*magic = 0; /* clear pci reconfig magic again */
|
||||
}
|
||||
|
|
|
@ -78,13 +78,13 @@ int board_early_init_f(void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF99); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest prio */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF99); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest prio */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to
|
||||
|
|
|
@ -48,13 +48,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0, INT0 highest priority */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0, INT0 highest priority */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register:
|
||||
|
|
|
@ -114,13 +114,13 @@ int board_early_init_f(void)
|
|||
* IRQ 30 (EXT IRQ 5) ETH1-PHY-IRQ#; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) PLD-IRQ#; active low; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0, INT0 highest prio */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0, INT0 highest prio */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register:
|
||||
|
|
|
@ -148,29 +148,29 @@ int board_early_init_f(void)
|
|||
/*
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xfffff7ef);
|
||||
mtdcr(uic0tr, 0x00000000);
|
||||
mtdcr(uic0vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xfffff7ef);
|
||||
mtdcr(UIC0TR, 0x00000000);
|
||||
mtdcr(UIC0VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffc7f5);
|
||||
mtdcr(uic1tr, 0x00000000);
|
||||
mtdcr(uic1vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffc7f5);
|
||||
mtdcr(UIC1TR, 0x00000000);
|
||||
mtdcr(UIC1VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic2er, 0x00000000); /* disable all */
|
||||
mtdcr(uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic2pr, 0x27ffffff);
|
||||
mtdcr(uic2tr, 0x00000000);
|
||||
mtdcr(uic2vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC2PR, 0x27ffffff);
|
||||
mtdcr(UIC2TR, 0x00000000);
|
||||
mtdcr(UIC2VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
/* select Ethernet pins */
|
||||
mfsdr(SDR0_PFC1, sdr0_pfc1);
|
||||
|
|
|
@ -88,13 +88,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFFB5); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFFB5); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
|
||||
|
|
|
@ -45,13 +45,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
|
||||
|
|
|
@ -64,13 +64,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF9F); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF9F); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
|
||||
|
|
|
@ -37,13 +37,13 @@ int board_early_init_f (void)
|
|||
|
|
||||
+-------------------------------------------------------------------------*/
|
||||
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000020); /* set all but FPGA SMI to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFF90); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000020); /* set all but FPGA SMI to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFF90); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/* Perform reset of PHY connected to PPC via register in CPLD */
|
||||
out8 (PHY_CTRL_ADDR, 0x2e); /* activate nRESET,FDX,F100,ANEN, enable output */
|
||||
|
@ -94,28 +94,28 @@ phys_size_t initdram (int board_type)
|
|||
|
||||
tot_size = 0;
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
tot_size += bank_size;
|
||||
}
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
tot_size += bank_size;
|
||||
}
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb2cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
tot_size += bank_size;
|
||||
}
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb3cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
if (tmp & 0x00000001) {
|
||||
bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
|
||||
|
|
|
@ -382,7 +382,7 @@ sdram_init:
|
|||
/*----------------------------------------------------------- */
|
||||
/* Set SDTR1 */
|
||||
/*----------------------------------------------------------- */
|
||||
addi r5,0,mem_sdtr1
|
||||
addi r5,0,SDRAM0_TR
|
||||
mtdcr SDRAM0_CFGADDR,r5
|
||||
mtdcr SDRAM0_CFGDATA,r4
|
||||
|
||||
|
@ -413,7 +413,7 @@ sdram_init:
|
|||
|
||||
/* Set SDRAM bank 0 register and adjust r6 for next bank */
|
||||
/*------------------------------------------------------ */
|
||||
addi r7,0,mem_mb0cf
|
||||
addi r7,0,SDRAM0_B0CR
|
||||
mtdcr SDRAM0_CFGADDR,r7
|
||||
mtdcr SDRAM0_CFGDATA,r6
|
||||
|
||||
|
@ -424,7 +424,7 @@ sdram_init:
|
|||
cmpi 0, r12, 2
|
||||
bne b1skip
|
||||
|
||||
addi r7,0,mem_mb1cf
|
||||
addi r7,0,SDRAM0_B1CR
|
||||
mtdcr SDRAM0_CFGADDR,r7
|
||||
mtdcr SDRAM0_CFGDATA,r6
|
||||
|
||||
|
@ -432,7 +432,7 @@ sdram_init:
|
|||
|
||||
/* Set SDRAM bank 2 register and adjust r6 for next bank */
|
||||
/*------------------------------------------------------ */
|
||||
b1skip: addi r7,0,mem_mb2cf
|
||||
b1skip: addi r7,0,SDRAM0_B2CR
|
||||
mtdcr SDRAM0_CFGADDR,r7
|
||||
mtdcr SDRAM0_CFGDATA,r6
|
||||
|
||||
|
@ -443,7 +443,7 @@ b1skip: addi r7,0,mem_mb2cf
|
|||
cmpi 0, r12, 2
|
||||
bne b3skip
|
||||
|
||||
addi r7,0,mem_mb3cf
|
||||
addi r7,0,SDRAM0_B3CR
|
||||
mtdcr SDRAM0_CFGADDR,r7
|
||||
mtdcr SDRAM0_CFGDATA,r6
|
||||
b3skip:
|
||||
|
@ -456,7 +456,7 @@ b3skip:
|
|||
addis r7, 0, 0x05F0 /* RTR value for 100Mhz */
|
||||
bl rtr_2
|
||||
rtr_1: addis r7, 0, 0x03F8
|
||||
rtr_2: addi r4,0,mem_rtr
|
||||
rtr_2: addi r4,0,SDRAM0_RTR
|
||||
mtdcr SDRAM0_CFGADDR,r4
|
||||
mtdcr SDRAM0_CFGDATA,r7
|
||||
|
||||
|
@ -476,7 +476,7 @@ rtr_2: addi r4,0,mem_rtr
|
|||
/* Set DC_EN to '1' and BRD_PRF to '01' for 16 byte PLB Burst */
|
||||
/* read/prefetch. */
|
||||
/*----------------------------------------------------------- */
|
||||
addi r4,0,mem_mcopt1
|
||||
addi r4,0,SDRAM0_CFG
|
||||
mtdcr SDRAM0_CFGADDR,r4
|
||||
addis r4,0,0x80C0 /* set DC_EN=1 */
|
||||
ori r4,r4,0x0000
|
||||
|
|
|
@ -21,12 +21,16 @@
|
|||
#endif
|
||||
#include <spd_sdram.h>
|
||||
#include <asm/mmu.h>
|
||||
#include <asm/io.h>
|
||||
#if defined(CONFIG_OF_LIBFDT)
|
||||
#include <libfdt.h>
|
||||
#endif
|
||||
#include <hwconfig.h>
|
||||
#include <fdt_support.h>
|
||||
#if defined(CONFIG_PQ_MDS_PIB)
|
||||
#include "../common/pq-mds-pib.h"
|
||||
#endif
|
||||
#include "../../../drivers/qe/uec.h"
|
||||
|
||||
const qe_iop_conf_t qe_iop_conf_tab[] = {
|
||||
/* GETH1 */
|
||||
|
@ -89,11 +93,19 @@ const qe_iop_conf_t qe_iop_conf_tab[] = {
|
|||
{0, 0, 0, 0, QE_IOP_TAB_END}, /* END of table */
|
||||
};
|
||||
|
||||
/* Handle "mpc8360ea rev.2.1 erratum 2: RGMII Timing"? */
|
||||
static int board_handle_erratum2(void)
|
||||
{
|
||||
const immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
|
||||
|
||||
return REVID_MAJOR(immr->sysconf.spridr) == 2 &&
|
||||
REVID_MINOR(immr->sysconf.spridr) == 1;
|
||||
}
|
||||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
|
||||
u8 *bcsr = (u8 *)CONFIG_SYS_BCSR;
|
||||
const immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
|
||||
u8 *bcsr = (u8 *)CONFIG_SYS_BCSR;
|
||||
|
||||
/* Enable flash write */
|
||||
bcsr[0xa] &= ~0x04;
|
||||
|
@ -105,6 +117,21 @@ int board_early_init_f(void)
|
|||
/* Enable second UART */
|
||||
bcsr[0x9] &= ~0x01;
|
||||
|
||||
if (board_handle_erratum2()) {
|
||||
void *immap = (immap_t *)(CONFIG_SYS_IMMR + 0x14a8);
|
||||
|
||||
/*
|
||||
* IMMR + 0x14A8[4:5] = 11 (clk delay for UCC 2)
|
||||
* IMMR + 0x14A8[18:19] = 11 (clk delay for UCC 1)
|
||||
*/
|
||||
setbits_be32(immap, 0x0c003000);
|
||||
|
||||
/*
|
||||
* IMMR + 0x14AC[20:27] = 10101010
|
||||
* (data delay for both UCC's)
|
||||
*/
|
||||
clrsetbits_be32(immap + 4, 0xff0, 0xaa0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -116,6 +143,28 @@ int board_early_init_r(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_UEC_ETH
|
||||
static uec_info_t uec_info[] = {
|
||||
#ifdef CONFIG_UEC_ETH1
|
||||
STD_UEC_INFO(1),
|
||||
#endif
|
||||
#ifdef CONFIG_UEC_ETH2
|
||||
STD_UEC_INFO(2),
|
||||
#endif
|
||||
};
|
||||
|
||||
int board_eth_init(bd_t *bd)
|
||||
{
|
||||
if (board_handle_erratum2()) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(uec_info); i++)
|
||||
uec_info[i].enet_interface = ENET_1000_RGMII_RXID;
|
||||
}
|
||||
return uec_eth_init(bd, uec_info, ARRAY_SIZE(uec_info));
|
||||
}
|
||||
#endif /* CONFIG_UEC_ETH */
|
||||
|
||||
#if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER)
|
||||
extern void ddr_enable_ecc(unsigned int dram_size);
|
||||
#endif
|
||||
|
@ -126,6 +175,7 @@ phys_size_t initdram(int board_type)
|
|||
{
|
||||
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
|
||||
u32 msize = 0;
|
||||
u32 lbc_sdram_size;
|
||||
|
||||
if ((im->sysconf.immrbar & IMMRBAR_BASE_ADDR) != (u32) im)
|
||||
return -1;
|
||||
|
@ -147,7 +197,9 @@ phys_size_t initdram(int board_type)
|
|||
/*
|
||||
* Initialize SDRAM if it is on local bus.
|
||||
*/
|
||||
msize += sdram_init(msize * 1024 * 1024);
|
||||
lbc_sdram_size = sdram_init(msize * 1024 * 1024);
|
||||
if (!msize)
|
||||
msize = lbc_sdram_size;
|
||||
|
||||
/* return total bus SDRAM size(bytes) -- DDR */
|
||||
return (msize * 1024 * 1024);
|
||||
|
@ -307,21 +359,28 @@ static int sdram_init(unsigned int base) { return 0; }
|
|||
#endif
|
||||
|
||||
#if defined(CONFIG_OF_BOARD_SETUP)
|
||||
static void ft_board_fixup_qe_usb(void *blob, bd_t *bd)
|
||||
{
|
||||
if (!hwconfig_subarg_cmp("qe_usb", "mode", "peripheral"))
|
||||
return;
|
||||
|
||||
do_fixup_by_compat(blob, "fsl,mpc8323-qe-usb", "mode",
|
||||
"peripheral", sizeof("peripheral"), 1);
|
||||
}
|
||||
|
||||
void ft_board_setup(void *blob, bd_t *bd)
|
||||
{
|
||||
const immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
|
||||
|
||||
ft_cpu_setup(blob, bd);
|
||||
#ifdef CONFIG_PCI
|
||||
ft_pci_setup(blob, bd);
|
||||
#endif
|
||||
ft_board_fixup_qe_usb(blob, bd);
|
||||
/*
|
||||
* mpc8360ea pb mds errata 2: RGMII timing
|
||||
* if on mpc8360ea rev. 2.1,
|
||||
* change both ucc phy-connection-types from rgmii-id to rgmii-rxid
|
||||
*/
|
||||
if ((REVID_MAJOR(immr->sysconf.spridr) == 2) &&
|
||||
(REVID_MINOR(immr->sysconf.spridr) == 1)) {
|
||||
if (board_handle_erratum2()) {
|
||||
int nodeoffset;
|
||||
const char *prop;
|
||||
int path;
|
||||
|
|
|
@ -23,8 +23,27 @@
|
|||
#
|
||||
# mpc8536ds board
|
||||
#
|
||||
ifndef NAND_SPL
|
||||
ifeq ($(CONFIG_MK_NAND), y)
|
||||
TEXT_BASE = $(CONFIG_RAMBOOT_TEXT_BASE)
|
||||
LDSCRIPT := $(TOPDIR)/cpu/$(CPU)/u-boot-nand.lds
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_MK_SDCARD), y)
|
||||
TEXT_BASE = $(CONFIG_RAMBOOT_TEXT_BASE)
|
||||
RESET_VECTOR_ADDRESS = 0xf8fffffc
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_MK_SPIFLASH), y)
|
||||
TEXT_BASE = $(CONFIG_RAMBOOT_TEXT_BASE)
|
||||
RESET_VECTOR_ADDRESS = 0xf8fffffc
|
||||
endif
|
||||
|
||||
ifndef TEXT_BASE
|
||||
TEXT_BASE = 0xeff80000
|
||||
endif
|
||||
|
||||
ifndef RESET_VECTOR_ADDRESS
|
||||
RESET_VECTOR_ADDRESS = 0xeffffffc
|
||||
endif
|
||||
|
|
|
@ -71,6 +71,17 @@ struct fsl_e_tlb_entry tlb_table[] = {
|
|||
SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 4, BOOKE_PAGESZ_1M, 1),
|
||||
|
||||
#if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L2_ADDR)
|
||||
/* *I*G - L2SRAM */
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L2_ADDR, CONFIG_SYS_INIT_L2_ADDR_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 5, BOOKE_PAGESZ_256K, 1),
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L2_ADDR + 0x40000,
|
||||
CONFIG_SYS_INIT_L2_ADDR_PHYS + 0x40000,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 6, BOOKE_PAGESZ_256K, 1),
|
||||
#endif
|
||||
};
|
||||
|
||||
int num_tlb_entries = ARRAY_SIZE(tlb_table);
|
||||
|
|
|
@ -38,20 +38,20 @@
|
|||
int board_early_init_f (void)
|
||||
{
|
||||
#if 0 /* test-only */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000010);
|
||||
mtdcr (uicpr, 0xFFFF7FF0); /* set int polarities */
|
||||
mtdcr (uictr, 0x00000010); /* set int trigger levels */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000010);
|
||||
mtdcr (UIC0PR, 0xFFFF7FF0); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x00000010); /* set int trigger levels */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
#else
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFFF0); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFFF0); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
#endif
|
||||
|
||||
#if 1 /* test-only */
|
||||
|
@ -114,18 +114,17 @@ int checkboard (void)
|
|||
|
||||
long int init_sdram_static_settings(void)
|
||||
{
|
||||
#define mtsdram0(reg, data) mtdcr(SDRAM0_CFGADDR,reg);mtdcr(SDRAM0_CFGDATA,data)
|
||||
/* disable memcontroller so updates work */
|
||||
mtsdram0( mem_mcopt1, MEM_MCOPT1_INIT_VAL );
|
||||
mtsdram0( mem_rtr , MEM_RTR_INIT_VAL );
|
||||
mtsdram0( mem_pmit , MEM_PMIT_INIT_VAL );
|
||||
mtsdram0( mem_mb0cf , MEM_MB0CF_INIT_VAL );
|
||||
mtsdram0( mem_mb1cf , MEM_MB1CF_INIT_VAL );
|
||||
mtsdram0( mem_sdtr1 , MEM_SDTR1_INIT_VAL );
|
||||
mtsdram(SDRAM0_CFG, MEM_MCOPT1_INIT_VAL);
|
||||
mtsdram(SDRAM0_RTR, MEM_RTR_INIT_VAL);
|
||||
mtsdram(SDRAM0_PMIT, MEM_PMIT_INIT_VAL);
|
||||
mtsdram(SDRAM0_B0CR, MEM_MB0CF_INIT_VAL);
|
||||
mtsdram(SDRAM0_B1CR, MEM_MB1CF_INIT_VAL);
|
||||
mtsdram(SDRAM0_TR, MEM_SDTR1_INIT_VAL);
|
||||
|
||||
/* SDRAM have a power on delay, 500 micro should do */
|
||||
udelay(500);
|
||||
mtsdram0( mem_mcopt1, MEM_MCOPT1_INIT_VAL|SDRAM0_CFG_ENABLE );
|
||||
mtsdram(SDRAM0_CFG, MEM_MCOPT1_INIT_VAL|SDRAM0_CFG_ENABLE);
|
||||
|
||||
return (CONFIG_SYS_SDRAM_SIZE); /* CONFIG_SYS_SDRAM_SIZE is in G2000.h */
|
||||
}
|
||||
|
|
|
@ -36,13 +36,13 @@ enum {
|
|||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest prio */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr(UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest prio */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks
|
||||
|
|
|
@ -83,21 +83,21 @@ int board_early_init_f(void)
|
|||
/*
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000009); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000009); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
/*
|
||||
* Setup other serial configuration
|
||||
|
|
|
@ -44,37 +44,37 @@ int board_early_init_f(void)
|
|||
/*
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic2er, 0x00000000); /* disable all */
|
||||
mtdcr(uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic2pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic2tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic2vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC2PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC2TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC2VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic3er, 0x00000000); /* disable all */
|
||||
mtdcr(uic3cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic3pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic3tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic3vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC3SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC3ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC3CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC3PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC3TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC3VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC3SR, 0xffffffff); /* clear all */
|
||||
|
||||
/*
|
||||
* Configure PFC (Pin Function Control) registers
|
||||
|
|
|
@ -31,13 +31,13 @@
|
|||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest prio */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr(UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest prio */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks
|
||||
|
|
|
@ -48,12 +48,12 @@ int board_early_init_f (void)
|
|||
| IRQ 30 (EXT IRQ 5) SystemACE BRdy (unused)
|
||||
| IRQ 31 (EXT IRQ 6) (unused)
|
||||
+-------------------------------------------------------------------------*/
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFF87); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFF87); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/* Configure the interface to the SystemACE MCU port.
|
||||
The SystemACE is fast, but there is no reason to have
|
||||
|
|
|
@ -35,59 +35,59 @@ phys_size_t initdram (int board_type)
|
|||
/* Configure the SDRAMS */
|
||||
|
||||
/* disable memory controller */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x00000000);
|
||||
|
||||
udelay (500);
|
||||
|
||||
/* Clear SDRAM0_BESR0 (Bus Error Syndrome Register) */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_besra);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_BESR0);
|
||||
mtdcr (SDRAM0_CFGDATA, 0xffffffff);
|
||||
|
||||
/* Clear SDRAM0_BESR1 (Bus Error Syndrome Register) */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_besrb);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_BESR1);
|
||||
mtdcr (SDRAM0_CFGDATA, 0xffffffff);
|
||||
|
||||
/* Clear SDRAM0_ECCCFG (disable ECC) */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_ecccf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_ECCCFG);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x00000000);
|
||||
|
||||
/* Clear SDRAM0_ECCESR (ECC Error Syndrome Register) */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_eccerr);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_ECCESR);
|
||||
mtdcr (SDRAM0_CFGDATA, 0xffffffff);
|
||||
|
||||
/* Timing register: CASL=2, PTA=2, CTP=2, LDF=1, RFTA=5, RCD=2 */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_sdtr1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_TR);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x010a4016);
|
||||
|
||||
/* Memory Bank 0 Config == BA=0x00000000, SZ=64M, AM=3, BE=1 */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x00084001);
|
||||
|
||||
/* Memory Bank 1 Config == BA=0x04000000, SZ=64M, AM=3, BE=1 */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x04084001);
|
||||
|
||||
/* Memory Bank 2 Config == BE=0 */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb2cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x00000000);
|
||||
|
||||
/* Memory Bank 3 Config == BE=0 */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb3cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x00000000);
|
||||
|
||||
/* refresh timer = 0x400 */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_rtr);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_RTR);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x04000000);
|
||||
|
||||
/* Power management idle timer set to the default. */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_pmit);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_PMIT);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x07c00000);
|
||||
|
||||
udelay (500);
|
||||
|
||||
/* Enable banks (DCE=1, BPRF=1, ECCDD=1, EMDUL=1) */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
mtdcr (SDRAM0_CFGDATA, 0x80e00000);
|
||||
|
||||
return SDRAM_LEN;
|
||||
|
@ -108,7 +108,7 @@ int testdram (void)
|
|||
#ifdef DEBUG
|
||||
printf ("SDRAM Controller Registers --\n");
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
val = mfdcr (SDRAM0_CFGDATA);
|
||||
printf (" SDRAM0_CFG : 0x%08x\n", val);
|
||||
|
||||
|
@ -116,19 +116,19 @@ int testdram (void)
|
|||
val = mfdcr (SDRAM0_CFGDATA);
|
||||
printf (" SDRAM0_STATUS: 0x%08x\n", val);
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
val = mfdcr (SDRAM0_CFGDATA);
|
||||
printf (" SDRAM0_B0CR : 0x%08x\n", val);
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
|
||||
val = mfdcr (SDRAM0_CFGDATA);
|
||||
printf (" SDRAM0_B1CR : 0x%08x\n", val);
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_sdtr1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_TR);
|
||||
val = mfdcr (SDRAM0_CFGDATA);
|
||||
printf (" SDRAM0_TR : 0x%08x\n", val);
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_rtr);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_RTR);
|
||||
val = mfdcr (SDRAM0_CFGDATA);
|
||||
printf (" SDRAM0_RTR : 0x%08x\n", val);
|
||||
#endif
|
||||
|
|
|
@ -87,29 +87,29 @@ int board_early_init_f(void)
|
|||
/*
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xfffff7ff); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xfffff7ff); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic2er, 0x00000000); /* disable all */
|
||||
mtdcr(uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic2pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic2tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic2vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC2PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC2TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC2VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
/*
|
||||
* Take sim card reader and CF controller out of reset. Also enable PHY
|
||||
|
|
|
@ -44,29 +44,29 @@ int board_early_init_f(void)
|
|||
/*--------------------------------------------------------------------
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*-------------------------------------------------------------------*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all. if write with 1 then the status is cleared */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000000); /* we have not critical interrupts at the moment */
|
||||
mtdcr(uic0pr, 0xFFBFF1EF); /* Adjustment of the polarity */
|
||||
mtdcr(uic0tr, 0x00000900); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000000); /* int31 highest, base=0x000 is within DDRAM */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all. if write with 1 then the status is cleared */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000000); /* we have not critical interrupts at the moment */
|
||||
mtdcr(UIC0PR, 0xFFBFF1EF); /* Adjustment of the polarity */
|
||||
mtdcr(UIC0TR, 0x00000900); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000000); /* int31 highest, base=0x000 is within DDRAM */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xFFFFC6A5); /* Adjustment of the polarity */
|
||||
mtdcr(uic1tr, 0x60000040); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000000); /* int31 highest, base=0x000 is within DDRAM */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xFFFFC6A5); /* Adjustment of the polarity */
|
||||
mtdcr(UIC1TR, 0x60000040); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000000); /* int31 highest, base=0x000 is within DDRAM */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic2er, 0x00000000); /* disable all */
|
||||
mtdcr(uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic2pr, 0x27C00000); /* Adjustment of the polarity */
|
||||
mtdcr(uic2tr, 0x3C000000); /* per ref-board manual */
|
||||
mtdcr(uic2vr, 0x00000000); /* int31 highest, base=0x000 is within DDRAM */
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC2PR, 0x27C00000); /* Adjustment of the polarity */
|
||||
mtdcr(UIC2TR, 0x3C000000); /* per ref-board manual */
|
||||
mtdcr(UIC2VR, 0x00000000); /* int31 highest, base=0x000 is within DDRAM */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
/* Trace Pins are disabled. SDR0_PFC0 Register */
|
||||
mtsdr(SDR0_PFC0, 0x0);
|
||||
|
|
|
@ -193,6 +193,5 @@ void onenand_board_init(struct mtd_info *mtd)
|
|||
chip->write_word = ebi_nand_write_word;
|
||||
|
||||
chip->read_bufferram = ebi_read_bufferram;
|
||||
chip->read_spareram = ebi_read_bufferram;
|
||||
chip->write_bufferram = ebi_write_bufferram;
|
||||
}
|
||||
|
|
|
@ -348,7 +348,7 @@ int init_sdram (void)
|
|||
/* trc_clocks is sum of trp_clocks + tras_clocks */
|
||||
trc_clocks = trp_clocks + tras_clocks;
|
||||
/* get SDRAM timing register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_sdtr1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_TR);
|
||||
sdram_tim = mfdcr (SDRAM0_CFGDATA) & ~0x018FC01F;
|
||||
/* insert CASL value */
|
||||
sdram_tim |= ((unsigned long) (cal_val)) << 23;
|
||||
|
@ -369,7 +369,7 @@ int init_sdram (void)
|
|||
/* insert SZ value; */
|
||||
tmp |= ((unsigned long) sdram_table[i].sz << 17);
|
||||
/* get SDRAM bank 0 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
sdram_bank = mfdcr (SDRAM0_CFGDATA) & ~0xFFCEE001;
|
||||
sdram_bank |= (baseaddr | tmp | 0x01);
|
||||
|
||||
|
@ -380,7 +380,7 @@ int init_sdram (void)
|
|||
#endif
|
||||
|
||||
/* write SDRAM timing register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_sdtr1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_TR);
|
||||
mtdcr (SDRAM0_CFGDATA, sdram_tim);
|
||||
|
||||
#ifdef SDRAM_DEBUG
|
||||
|
@ -390,22 +390,22 @@ int init_sdram (void)
|
|||
#endif
|
||||
|
||||
/* write SDRAM bank 0 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
mtdcr (SDRAM0_CFGDATA, sdram_bank);
|
||||
|
||||
if (get_bus_freq (tmp) > 110000000) { /* > 110MHz */
|
||||
/* get SDRAM refresh interval register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_rtr);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_RTR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA) & ~0x3FF80000;
|
||||
tmp |= 0x07F00000;
|
||||
} else {
|
||||
/* get SDRAM refresh interval register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_rtr);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_RTR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA) & ~0x3FF80000;
|
||||
tmp |= 0x05F00000;
|
||||
}
|
||||
/* write SDRAM refresh interval register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_rtr);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_RTR);
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
/* enable ECC if used */
|
||||
#if defined(ENABLE_ECC) && !defined(CONFIG_BOOT_PCI)
|
||||
|
@ -415,18 +415,18 @@ int init_sdram (void)
|
|||
#ifdef SDRAM_DEBUG
|
||||
serial_puts ("disable ECC.. ");
|
||||
#endif
|
||||
mtdcr (SDRAM0_CFGADDR, mem_ecccf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_ECCCFG);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
tmp &= 0xff0fffff; /* disable all banks */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_ecccf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_ECCCFG);
|
||||
/* set up SDRAM Controller with ECC enabled */
|
||||
#ifdef SDRAM_DEBUG
|
||||
serial_puts ("setup SDRAM Controller.. ");
|
||||
#endif
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
tmp = (mfdcr (SDRAM0_CFGDATA) & ~0xFFE00000) | 0x90800000;
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
udelay (600);
|
||||
#ifdef SDRAM_DEBUG
|
||||
|
@ -447,7 +447,7 @@ int init_sdram (void)
|
|||
serial_puts ("enable ECC\n");
|
||||
#endif
|
||||
udelay (400);
|
||||
mtdcr (SDRAM0_CFGADDR, mem_ecccf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_ECCCFG);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
tmp |= 0x00800000; /* enable bank 0 */
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
|
@ -456,9 +456,9 @@ int init_sdram (void)
|
|||
#endif
|
||||
{
|
||||
/* enable SDRAM controller with no ECC, 32-bit SDRAM width, 16 byte burst */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
tmp = (mfdcr (SDRAM0_CFGDATA) & ~0xFFE00000) | 0x80C00000;
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
udelay (400);
|
||||
}
|
||||
|
@ -489,13 +489,13 @@ int board_early_init_f (void)
|
|||
| caused the interrupt.
|
||||
|
|
||||
+-------------------------------------------------------------------------*/
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical (for now) */
|
||||
mtdcr (uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical (for now) */
|
||||
mtdcr (UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -631,13 +631,13 @@ phys_size_t initdram (int board_type)
|
|||
ds = 0;
|
||||
/* since the DRAM controller is allready set up, calculate the size with the
|
||||
bank registers */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
bank_reg[0] = mfdcr (SDRAM0_CFGDATA);
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
|
||||
bank_reg[1] = mfdcr (SDRAM0_CFGDATA);
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb2cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
|
||||
bank_reg[2] = mfdcr (SDRAM0_CFGDATA);
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb3cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
|
||||
bank_reg[3] = mfdcr (SDRAM0_CFGDATA);
|
||||
TotalSize = 0;
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
@ -648,7 +648,7 @@ phys_size_t initdram (int board_type)
|
|||
} else
|
||||
ds = 1;
|
||||
}
|
||||
mtdcr (SDRAM0_CFGADDR, mem_ecccf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_ECCCFG);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA);
|
||||
|
||||
if (!tmp)
|
||||
|
|
|
@ -361,7 +361,7 @@ int board_early_init_f (void)
|
|||
SDRAM_err ("unsupported SDRAM");
|
||||
|
||||
/* get SDRAM timing register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_sdtr1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_TR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA) & ~0x018FC01F;
|
||||
/* insert CASL value */
|
||||
/* tmp |= ((unsigned long)cal_val) << 23; */
|
||||
|
@ -385,7 +385,7 @@ int board_early_init_f (void)
|
|||
#endif
|
||||
|
||||
/* write SDRAM timing register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_sdtr1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_TR);
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
baseaddr = CONFIG_SYS_SDRAM_BASE;
|
||||
bank_size = (((unsigned long) density) << 22) / 2;
|
||||
|
@ -418,7 +418,7 @@ int board_early_init_f (void)
|
|||
SDRAM_err ("unsupported SDRAM");
|
||||
} /* endswitch */
|
||||
/* get SDRAM bank 0 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
bank = mfdcr (SDRAM0_CFGDATA) & ~0xFFCEE001;
|
||||
bank |= (baseaddr | tmp | 0x01);
|
||||
#ifdef SDRAM_DEBUG
|
||||
|
@ -434,11 +434,11 @@ int board_early_init_f (void)
|
|||
sdram_size += bank_size;
|
||||
|
||||
/* write SDRAM bank 0 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
mtdcr (SDRAM0_CFGDATA, bank);
|
||||
|
||||
/* get SDRAM bank 1 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
|
||||
bank = mfdcr (SDRAM0_CFGDATA) & ~0xFFCEE001;
|
||||
sdram_size = 0;
|
||||
|
||||
|
@ -459,11 +459,11 @@ int board_early_init_f (void)
|
|||
serial_puts ("\n");
|
||||
#endif
|
||||
/* write SDRAM bank 1 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
|
||||
mtdcr (SDRAM0_CFGDATA, bank);
|
||||
|
||||
/* get SDRAM bank 2 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb2cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
|
||||
bank = mfdcr (SDRAM0_CFGDATA) & ~0xFFCEE001;
|
||||
|
||||
bank |= (baseaddr | tmp | 0x01);
|
||||
|
@ -482,11 +482,11 @@ int board_early_init_f (void)
|
|||
sdram_size += bank_size;
|
||||
|
||||
/* write SDRAM bank 2 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb2cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
|
||||
mtdcr (SDRAM0_CFGDATA, bank);
|
||||
|
||||
/* get SDRAM bank 3 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb3cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
|
||||
bank = mfdcr (SDRAM0_CFGDATA) & ~0xFFCEE001;
|
||||
|
||||
#ifdef SDRAM_DEBUG
|
||||
|
@ -509,12 +509,12 @@ int board_early_init_f (void)
|
|||
#endif
|
||||
|
||||
/* write SDRAM bank 3 register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb3cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
|
||||
mtdcr (SDRAM0_CFGDATA, bank);
|
||||
|
||||
|
||||
/* get SDRAM refresh interval register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_rtr);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_RTR);
|
||||
tmp = mfdcr (SDRAM0_CFGDATA) & ~0x3FF80000;
|
||||
|
||||
if (tmemclk < NSto10PS (16))
|
||||
|
@ -523,13 +523,13 @@ int board_early_init_f (void)
|
|||
tmp |= 0x03F80000;
|
||||
|
||||
/* write SDRAM refresh interval register */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_rtr);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_RTR);
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
|
||||
/* enable SDRAM controller with no ECC, 32-bit SDRAM width, 16 byte burst */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
tmp = (mfdcr (SDRAM0_CFGDATA) & ~0xFFE00000) | 0x80E00000;
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
mtdcr (SDRAM0_CFGDATA, tmp);
|
||||
|
||||
|
||||
|
@ -552,13 +552,13 @@ int board_early_init_f (void)
|
|||
| caused the interrupt.
|
||||
|
|
||||
+-------------------------------------------------------------------------*/
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical (for now) */
|
||||
mtdcr (uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical (for now) */
|
||||
mtdcr (UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -619,13 +619,13 @@ phys_size_t initdram (int board_type)
|
|||
/* since the DRAM controller is allready set up,
|
||||
* calculate the size with the bank registers
|
||||
*/
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
bank_reg[0] = mfdcr (SDRAM0_CFGDATA);
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
|
||||
bank_reg[1] = mfdcr (SDRAM0_CFGDATA);
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb2cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
|
||||
bank_reg[2] = mfdcr (SDRAM0_CFGDATA);
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb3cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
|
||||
bank_reg[3] = mfdcr (SDRAM0_CFGDATA);
|
||||
TotalSize = 0;
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
|
|
@ -29,17 +29,17 @@ void show_sdram_registers(void)
|
|||
u32 value;
|
||||
|
||||
printf("SDRAM Controller Registers --\n");
|
||||
mfsdram(mem_mcopt1, value);
|
||||
mfsdram(SDRAM0_CFG, value);
|
||||
printf(" SDRAM0_CFG : 0x%08x\n", value);
|
||||
mfsdram(mem_status, value);
|
||||
mfsdram(SDRAM0_STATUS, value);
|
||||
printf(" SDRAM0_STATUS: 0x%08x\n", value);
|
||||
mfsdram(mem_mb0cf, value);
|
||||
mfsdram(SDRAM0_B0CR, value);
|
||||
printf(" SDRAM0_B0CR : 0x%08x\n", value);
|
||||
mfsdram(mem_mb1cf, value);
|
||||
mfsdram(SDRAM0_B1CR, value);
|
||||
printf(" SDRAM0_B1CR : 0x%08x\n", value);
|
||||
mfsdram(mem_sdtr1, value);
|
||||
mfsdram(SDRAM0_TR, value);
|
||||
printf(" SDRAM0_TR : 0x%08x\n", value);
|
||||
mfsdram(mem_rtr, value);
|
||||
mfsdram(SDRAM0_RTR, value);
|
||||
printf(" SDRAM0_RTR : 0x%08x\n", value);
|
||||
}
|
||||
#endif
|
||||
|
@ -50,53 +50,53 @@ long int init_ppc405_sdram(unsigned int dram_size)
|
|||
printf(__FUNCTION__);
|
||||
#endif
|
||||
/* disable memory controller */
|
||||
mtsdram(mem_mcopt1, 0x00000000);
|
||||
mtsdram(SDRAM0_CFG, 0x00000000);
|
||||
|
||||
udelay (500);
|
||||
|
||||
/* Clear SDRAM0_BESR0 (Bus Error Syndrome Register) */
|
||||
mtsdram(mem_besra, 0xffffffff);
|
||||
mtsdram(SDRAM0_BESR0, 0xffffffff);
|
||||
|
||||
/* Clear SDRAM0_BESR1 (Bus Error Syndrome Register) */
|
||||
mtsdram(mem_besrb, 0xffffffff);
|
||||
mtsdram(SDRAM0_BESR1, 0xffffffff);
|
||||
|
||||
/* Clear SDRAM0_ECCCFG (disable ECC) */
|
||||
mtsdram(mem_ecccf, 0x00000000);
|
||||
mtsdram(SDRAM0_ECCCFG, 0x00000000);
|
||||
|
||||
/* Clear SDRAM0_ECCESR (ECC Error Syndrome Register) */
|
||||
mtsdram(mem_eccerr, 0xffffffff);
|
||||
mtsdram(SDRAM0_ECCESR, 0xffffffff);
|
||||
|
||||
/* Timing register: CASL=2, PTA=2, CTP=2, LDF=1, RFTA=5, RCD=2
|
||||
*/
|
||||
mtsdram(mem_sdtr1, 0x008a4015);
|
||||
mtsdram(SDRAM0_TR, 0x008a4015);
|
||||
|
||||
/* Memory Bank 0 Config == BA=0x00000000, SZ=64M, AM=3, BE=1
|
||||
* and refresh timer
|
||||
*/
|
||||
switch (dram_size >> 20) {
|
||||
case 32:
|
||||
mtsdram(mem_mb0cf, 0x00062001);
|
||||
mtsdram(mem_rtr, 0x07F00000);
|
||||
mtsdram(SDRAM0_B0CR, 0x00062001);
|
||||
mtsdram(SDRAM0_RTR, 0x07F00000);
|
||||
break;
|
||||
case 64:
|
||||
mtsdram(mem_mb0cf, 0x00084001);
|
||||
mtsdram(mem_rtr, 0x04100000);
|
||||
mtsdram(SDRAM0_B0CR, 0x00084001);
|
||||
mtsdram(SDRAM0_RTR, 0x04100000);
|
||||
break;
|
||||
case 128:
|
||||
mtsdram(mem_mb0cf, 0x000A4001);
|
||||
mtsdram(mem_rtr, 0x04100000);
|
||||
mtsdram(SDRAM0_B0CR, 0x000A4001);
|
||||
mtsdram(SDRAM0_RTR, 0x04100000);
|
||||
break;
|
||||
default:
|
||||
printf("Invalid memory size of %d MB given\n", dram_size >> 20);
|
||||
}
|
||||
|
||||
/* Power management idle timer set to the default. */
|
||||
mtsdram(mem_pmit, 0x07c00000);
|
||||
mtsdram(SDRAM0_PMIT, 0x07c00000);
|
||||
|
||||
udelay (500);
|
||||
|
||||
/* Enable banks (DCE=1, BPRF=1, ECCDD=1, EMDUL=1) TODO */
|
||||
mtsdram(mem_mcopt1, 0x90800000);
|
||||
mtsdram(SDRAM0_CFG, 0x90800000);
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("%s: done\n", __FUNCTION__);
|
||||
|
|
|
@ -58,12 +58,12 @@ int board_early_init_f (void)
|
|||
* IRQ 17-24 RESERVED/UNUSED
|
||||
* IRQ 31 (EXT IRQ 6) (unused)
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr(uicpr, 0xFFFFE000); /* set int polarities */
|
||||
mtdcr(uictr, 0x00000000); /* set int trigger levels */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr(UIC0PR, 0xFFFFE000); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x00000000); /* set int trigger levels */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
mtdcr(CPC0_CR1, CPC0_CR1_VALUE);
|
||||
mtdcr(CPC0_ECR, 0x60606000);
|
||||
|
|
|
@ -129,29 +129,29 @@ int board_early_init_f(void)
|
|||
/*
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(uic0pr, 0xfffff7ff); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000005); /* ATI & UIC1 crit are critical */
|
||||
mtdcr(UIC0PR, 0xfffff7ff); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic2er, 0x00000000); /* disable all */
|
||||
mtdcr(uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic2pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic2tr, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(uic2vr, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC2PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC2TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC2VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
mtsdr(SDR0_PFC0, 0x00003E00); /* Pin function: */
|
||||
mtsdr(SDR0_PFC1, 0x00848000); /* Pin function: UART0 has 4 pins */
|
||||
|
||||
|
|
|
@ -64,12 +64,12 @@ int board_early_init_f (void)
|
|||
* IRQ 17-24 RESERVED/UNUSED
|
||||
* IRQ 31 (EXT IRQ 6) (unused)
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr(uicpr, 0xFFFFE000); /* set int polarities */
|
||||
mtdcr(uictr, 0x00000000); /* set int trigger levels */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr(UIC0PR, 0xFFFFE000); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x00000000); /* set int trigger levels */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
mtdcr(CPC0_CR1, CPC0_CR1_VALUE);
|
||||
mtdcr(CPC0_ECR, 0x60606000);
|
||||
|
|
|
@ -155,21 +155,21 @@ int board_early_init_f(void)
|
|||
/*--------------------------------------------------------------------
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*-------------------------------------------------------------------*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000001); /* UIC1 crit is critical */
|
||||
mtdcr(uic0pr, 0xfffffe1f); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x01c00000); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000001); /* UIC1 crit is critical */
|
||||
mtdcr(UIC0PR, 0xfffffe1f); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x01c00000); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Setup other serial configuration
|
||||
|
|
|
@ -60,36 +60,36 @@ int board_early_init_f (void)
|
|||
* UIC2 UIC1
|
||||
* UIC3 UIC2
|
||||
*/
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic1er, 0x00000000); /* disable all */
|
||||
mtdcr (uic1cr, 0x00000009); /* SMI & UIC1 crit are critical */
|
||||
mtdcr (uic1pr, 0xfffffe03); /* per manual */
|
||||
mtdcr (uic1tr, 0x01c00000); /* per manual */
|
||||
mtdcr (uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC1CR, 0x00000009); /* SMI & UIC1 crit are critical */
|
||||
mtdcr (UIC1PR, 0xfffffe03); /* per manual */
|
||||
mtdcr (UIC1TR, 0x01c00000); /* per manual */
|
||||
mtdcr (UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic2er, 0x00000000); /* disable all */
|
||||
mtdcr (uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic2pr, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr (uic2tr, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr (uic2vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC2PR, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr (UIC2TR, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr (UIC2VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic3er, 0x00000000); /* disable all */
|
||||
mtdcr (uic3cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic3pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr (uic3tr, 0x00ff8c0f); /* per ref-board manual */
|
||||
mtdcr (uic3vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC3ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC3CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC3PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr (UIC3TR, 0x00ff8c0f); /* per ref-board manual */
|
||||
mtdcr (UIC3VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic0sr, 0xfc000000); /* clear all */
|
||||
mtdcr (uic0er, 0x00000000); /* disable all */
|
||||
mtdcr (uic0cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic0pr, 0xfc000000); /* */
|
||||
mtdcr (uic0tr, 0x00000000); /* */
|
||||
mtdcr (uic0vr, 0x00000001); /* */
|
||||
mtdcr (UIC0SR, 0xfc000000); /* clear all */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC0CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC0PR, 0xfc000000); /* */
|
||||
mtdcr (UIC0TR, 0x00000000); /* */
|
||||
mtdcr (UIC0VR, 0x00000001); /* */
|
||||
|
||||
/* Setup shutdown/SSD empty interrupt as inputs */
|
||||
out32(GPIO0_TCR, in32(GPIO0_TCR) & ~(CONFIG_SYS_GPIO_SHUTDOWN | CONFIG_SYS_GPIO_SSD_EMPTY));
|
||||
|
|
|
@ -101,21 +101,21 @@ int board_early_init_f(void)
|
|||
/*--------------------------------------------------------------------
|
||||
* Setup the interrupt controller polarities, triggers, etc.
|
||||
*-------------------------------------------------------------------*/
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000001); /* UIC1 crit is critical */
|
||||
mtdcr(uic0pr, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr(uic0tr, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr(uic0vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic0sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000001); /* UIC1 crit is critical */
|
||||
mtdcr(UIC0PR, 0xfffffe13); /* per ref-board manual */
|
||||
mtdcr(UIC0TR, 0x01c00008); /* per ref-board manual */
|
||||
mtdcr(UIC0VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC0SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic1pr, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffe0ff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00ffc000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -40,13 +40,13 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||
int board_early_init_f(void)
|
||||
{
|
||||
/* taken from PPCBoot */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000);
|
||||
mtdcr(uicpr, 0xFFFF7FFE); /* set int polarities */
|
||||
mtdcr(uictr, 0x00000000); /* set int trigger levels */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000);
|
||||
mtdcr(UIC0PR, 0xFFFF7FFE); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x00000000); /* set int trigger levels */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
|
||||
mtdcr(CPC0_SRR, 0x00040000); /* Hold PCI bridge in reset */
|
||||
|
||||
|
|
|
@ -266,11 +266,11 @@ long int fixed_sdram (void)
|
|||
/*--------------------------------------------------------------------
|
||||
* Setup some default
|
||||
*------------------------------------------------------------------*/
|
||||
mtsdram (mem_uabba, 0x00000000); /* ubba=0 (default) */
|
||||
mtsdram (mem_slio, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
|
||||
mtsdram (mem_devopt, 0x00000000); /* dll=0 ds=0 (normal) */
|
||||
mtsdram (mem_wddctr, 0x00000000); /* wrcp=0 dcd=0 */
|
||||
mtsdram (mem_clktr, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
|
||||
mtsdram (SDRAM0_UABBA, 0x00000000); /* ubba=0 (default) */
|
||||
mtsdram (SDRAM0_SLIO, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
|
||||
mtsdram (SDRAM0_DEVOPT, 0x00000000); /* dll=0 ds=0 (normal) */
|
||||
mtsdram (SDRAM0_WDDCTR, 0x00000000); /* wrcp=0 dcd=0 */
|
||||
mtsdram (SDRAM0_CLKTR, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Setup for board-specific specific mem
|
||||
|
@ -278,20 +278,20 @@ long int fixed_sdram (void)
|
|||
/*
|
||||
* Following for CAS Latency = 2.5 @ 133 MHz PLB
|
||||
*/
|
||||
mtsdram (mem_b0cr, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
|
||||
mtsdram (mem_tr0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
|
||||
mtsdram (SDRAM0_B0CR, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
|
||||
mtsdram (SDRAM0_TR0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
|
||||
/* RA=10 RD=3 */
|
||||
mtsdram (mem_tr1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
|
||||
mtsdram (mem_rtr, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */
|
||||
mtsdram (mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */
|
||||
mtsdram (SDRAM0_TR1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
|
||||
mtsdram (SDRAM0_RTR, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */
|
||||
mtsdram (SDRAM0_CFG1, 0x00000000); /* Self-refresh exit, disable PM */
|
||||
udelay (400); /* Delay 200 usecs (min) */
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
* Enable the controller, then wait for DCEN to complete
|
||||
*------------------------------------------------------------------*/
|
||||
mtsdram (mem_cfg0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */
|
||||
mtsdram (SDRAM0_CFG0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */
|
||||
for (;;) {
|
||||
mfsdram (mem_mcsts, reg);
|
||||
mfsdram (SDRAM0_MCSTS, reg);
|
||||
if (reg & 0x80000000)
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -212,36 +212,36 @@ int board_early_init_f (void)
|
|||
* UIC2 UIC1
|
||||
* UIC3 UIC2
|
||||
*/
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic1er, 0x00000000); /* disable all */
|
||||
mtdcr (uic1cr, 0x00000000); /* all non- critical */
|
||||
mtdcr (uic1pr, 0xfffffe03); /* polarity */
|
||||
mtdcr (uic1tr, 0x01c00000); /* trigger edge vs level */
|
||||
mtdcr (uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC1CR, 0x00000000); /* all non- critical */
|
||||
mtdcr (UIC1PR, 0xfffffe03); /* polarity */
|
||||
mtdcr (UIC1TR, 0x01c00000); /* trigger edge vs level */
|
||||
mtdcr (UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic2er, 0x00000000); /* disable all */
|
||||
mtdcr (uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic2pr, 0xffffc8ff); /* polarity */
|
||||
mtdcr (uic2tr, 0x00ff0000); /* trigger edge vs level */
|
||||
mtdcr (uic2vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC2PR, 0xffffc8ff); /* polarity */
|
||||
mtdcr (UIC2TR, 0x00ff0000); /* trigger edge vs level */
|
||||
mtdcr (UIC2VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic3er, 0x00000000); /* disable all */
|
||||
mtdcr (uic3cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic3pr, 0xffff83ff); /* polarity */
|
||||
mtdcr (uic3tr, 0x00ff8c0f); /* trigger edge vs level */
|
||||
mtdcr (uic3vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC3ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC3CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC3PR, 0xffff83ff); /* polarity */
|
||||
mtdcr (UIC3TR, 0x00ff8c0f); /* trigger edge vs level */
|
||||
mtdcr (UIC3VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic0sr, 0xfc000000); /* clear all */
|
||||
mtdcr (uic0er, 0x00000000); /* disable all */
|
||||
mtdcr (uic0cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic0pr, 0xfc000000);
|
||||
mtdcr (uic0tr, 0x00000000);
|
||||
mtdcr (uic0vr, 0x00000001);
|
||||
mtdcr (UIC0SR, 0xfc000000); /* clear all */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC0CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC0PR, 0xfc000000);
|
||||
mtdcr (UIC0TR, 0x00000000);
|
||||
mtdcr (UIC0VR, 0x00000001);
|
||||
|
||||
fpga_init();
|
||||
|
||||
|
|
|
@ -202,36 +202,36 @@ int board_early_init_f (void)
|
|||
* UIC2 UIC1
|
||||
* UIC3 UIC2
|
||||
*/
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic1er, 0x00000000); /* disable all */
|
||||
mtdcr (uic1cr, 0x00000000); /* all non- critical */
|
||||
mtdcr (uic1pr, 0xfffffe03); /* polarity */
|
||||
mtdcr (uic1tr, 0x01c00000); /* trigger edge vs level */
|
||||
mtdcr (uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC1CR, 0x00000000); /* all non- critical */
|
||||
mtdcr (UIC1PR, 0xfffffe03); /* polarity */
|
||||
mtdcr (UIC1TR, 0x01c00000); /* trigger edge vs level */
|
||||
mtdcr (UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic2er, 0x00000000); /* disable all */
|
||||
mtdcr (uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic2pr, 0xffffc8ff); /* polarity */
|
||||
mtdcr (uic2tr, 0x00ff0000); /* trigger edge vs level */
|
||||
mtdcr (uic2vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC2PR, 0xffffc8ff); /* polarity */
|
||||
mtdcr (UIC2TR, 0x00ff0000); /* trigger edge vs level */
|
||||
mtdcr (UIC2VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr (uic3er, 0x00000000); /* disable all */
|
||||
mtdcr (uic3cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic3pr, 0xffff83ff); /* polarity */
|
||||
mtdcr (uic3tr, 0x00ff8c0f); /* trigger edge vs level */
|
||||
mtdcr (uic3vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all */
|
||||
mtdcr (UIC3ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC3CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC3PR, 0xffff83ff); /* polarity */
|
||||
mtdcr (UIC3TR, 0x00ff8c0f); /* trigger edge vs level */
|
||||
mtdcr (UIC3VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr (UIC3SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr (uic0sr, 0xfc000000); /* clear all */
|
||||
mtdcr (uic0er, 0x00000000); /* disable all */
|
||||
mtdcr (uic0cr, 0x00000000); /* all non-critical */
|
||||
mtdcr (uic0pr, 0xfc000000);
|
||||
mtdcr (uic0tr, 0x00000000);
|
||||
mtdcr (uic0vr, 0x00000001);
|
||||
mtdcr (UIC0SR, 0xfc000000); /* clear all */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr (UIC0CR, 0x00000000); /* all non-critical */
|
||||
mtdcr (UIC0PR, 0xfc000000);
|
||||
mtdcr (UIC0TR, 0x00000000);
|
||||
mtdcr (UIC0VR, 0x00000001);
|
||||
|
||||
fpga_init();
|
||||
|
||||
|
|
|
@ -41,13 +41,13 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
|
||||
*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(uicpr, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr(uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000); /* set all to be non-critical*/
|
||||
mtdcr(UIC0PR, 0xFFFFFF81); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority*/
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/*
|
||||
* EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
|
||||
|
|
|
@ -24,5 +24,5 @@
|
|||
# sbc8548 board
|
||||
#
|
||||
ifndef TEXT_BASE
|
||||
TEXT_BASE = 0xfff80000
|
||||
TEXT_BASE = 0xfffa0000
|
||||
endif
|
||||
|
|
|
@ -294,22 +294,22 @@ int board_early_init_f (void)
|
|||
|
||||
writeb (cpldConfig_1, CPLD_CONTROL_1); /* disable everything in CPLD */
|
||||
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
|
||||
if (IS_CAMERON) {
|
||||
sc3_cameron_init();
|
||||
mtdcr (0x0B6, 0x18000000);
|
||||
mtdcr (uicpr, 0xFFFFFFF0);
|
||||
mtdcr (uictr, 0x10001030);
|
||||
mtdcr (UIC0PR, 0xFFFFFFF0);
|
||||
mtdcr (UIC0TR, 0x10001030);
|
||||
} else {
|
||||
mtdcr (0x0B6, 0x0000000);
|
||||
mtdcr (uicpr, 0xFFFFFFE0);
|
||||
mtdcr (uictr, 0x10000020);
|
||||
mtdcr (UIC0PR, 0xFFFFFFE0);
|
||||
mtdcr (UIC0TR, 0x10000020);
|
||||
}
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
/* setup other implementation specific details */
|
||||
mtdcr (CPC0_ECR, 0x60606000);
|
||||
|
@ -577,7 +577,7 @@ static int printSDRAMConfig(char reg, unsigned long cr)
|
|||
}
|
||||
|
||||
#ifdef SC3_DEBUGOUT
|
||||
static unsigned int mbcf[] = {mem_mb0cf, mem_mb1cf, mem_mb2cf, mem_mb3cf};
|
||||
static unsigned int mbcf[] = {SDRAM0_B0CR, SDRAM0_B1CR, SDRAM0_B2CR, SDRAM0_B3CR};
|
||||
#endif
|
||||
|
||||
phys_size_t initdram (int board_type)
|
||||
|
@ -591,7 +591,7 @@ phys_size_t initdram (int board_type)
|
|||
|
||||
puts("\nSDRAM configuration:\n");
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mcopt1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_CFG);
|
||||
ul1 = mfdcr(SDRAM0_CFGDATA);
|
||||
|
||||
if (!(ul1 & 0x80000000)) {
|
||||
|
@ -604,7 +604,7 @@ phys_size_t initdram (int board_type)
|
|||
mems += printSDRAMConfig (i, ul1);
|
||||
}
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_sdtr1);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_TR);
|
||||
ul1 = mfdcr(SDRAM0_CFGDATA);
|
||||
|
||||
printf ("Timing:\n -CAS latency %lu\n", ((ul1 & 0x1800000) >> 23)+1);
|
||||
|
@ -614,14 +614,14 @@ phys_size_t initdram (int board_type)
|
|||
printf (" -CAS to RAS %lu\n", ((ul1 & 0x1C) >> 2) + 4);
|
||||
printf (" -RAS to CAS %lu\n", ((ul1 & 0x3) + 1));
|
||||
puts ("Misc:\n");
|
||||
mtdcr (SDRAM0_CFGADDR, mem_rtr);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_RTR);
|
||||
ul1 = mfdcr(SDRAM0_CFGDATA);
|
||||
printf (" -Refresh rate: %luns\n", (ul1 >> 16) * 7);
|
||||
|
||||
mtdcr(SDRAM0_CFGADDR,mem_pmit);
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_PMIT);
|
||||
ul2=mfdcr(SDRAM0_CFGDATA);
|
||||
|
||||
mtdcr(SDRAM0_CFGADDR,mem_mcopt1);
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_CFG);
|
||||
ul1=mfdcr(SDRAM0_CFGDATA);
|
||||
|
||||
if (ul1 & 0x20000000)
|
||||
|
@ -658,7 +658,7 @@ phys_size_t initdram (int board_type)
|
|||
else
|
||||
puts(" -Memory lines only at write cycles active outputs\n");
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_status);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_STATUS);
|
||||
ul1 = mfdcr (SDRAM0_CFGDATA);
|
||||
if (ul1 & 0x80000000)
|
||||
puts(" -SDRAM Controller ready\n");
|
||||
|
@ -670,19 +670,19 @@ phys_size_t initdram (int board_type)
|
|||
|
||||
return (mems * 1024 * 1024);
|
||||
#else
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
|
||||
ul1 = mfdcr (SDRAM0_CFGDATA);
|
||||
mems = printSDRAMConfig (0, ul1);
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
|
||||
ul1 = mfdcr (SDRAM0_CFGDATA);
|
||||
mems += printSDRAMConfig (1, ul1);
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb2cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
|
||||
ul1 = mfdcr(SDRAM0_CFGDATA);
|
||||
mems += printSDRAMConfig (2, ul1);
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb3cf);
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
|
||||
ul1 = mfdcr(SDRAM0_CFGDATA);
|
||||
mems += printSDRAMConfig (3, ul1);
|
||||
|
||||
|
|
|
@ -182,7 +182,7 @@ sdram_init:
|
|||
* Disable memory controller to allow
|
||||
* values to be changed.
|
||||
*/
|
||||
addi r3, 0, mem_mcopt1
|
||||
addi r3, 0, SDRAM0_CFG
|
||||
mtdcr SDRAM0_CFGADDR, r3
|
||||
addis r4, 0, 0x0
|
||||
ori r4, r4, 0x0
|
||||
|
@ -192,7 +192,7 @@ sdram_init:
|
|||
* Set MB0CF for ext bank 0. (0-4MB) Address Mode 5 since 11x8x2
|
||||
* All other banks are disabled.
|
||||
*/
|
||||
addi r3, 0, mem_mb0cf
|
||||
addi r3, 0, SDRAM0_B0CR
|
||||
mtdcr SDRAM0_CFGADDR, r3
|
||||
addis r4, 0, 0x0000 /* BA=0x0, SZ=4MB */
|
||||
ori r4, r4, 0x8001 /* Mode is 5, 11x8x2or4, BE=Enabled */
|
||||
|
@ -222,7 +222,7 @@ sdram_init:
|
|||
/*
|
||||
* Set up SDTR1
|
||||
*/
|
||||
addi r3, 0, mem_sdtr1
|
||||
addi r3, 0, SDRAM0_TR
|
||||
mtdcr SDRAM0_CFGADDR, r3
|
||||
addis r4, 0, 0x0086 /* SDTR1 value for 100Mhz */
|
||||
ori r4, r4, 0x400D
|
||||
|
@ -231,7 +231,7 @@ sdram_init:
|
|||
/*
|
||||
* Set RTR
|
||||
*/
|
||||
addi r3, 0, mem_rtr
|
||||
addi r3, 0, SDRAM0_RTR
|
||||
mtdcr SDRAM0_CFGADDR, r3
|
||||
addis r4, 0, 0x05F0 /* RTR refresh val = 15.625ms@100Mhz */
|
||||
mtdcr SDRAM0_CFGDATA, r4
|
||||
|
@ -250,7 +250,7 @@ sdram_init:
|
|||
/********************************************************************
|
||||
* Set memory controller options reg, MCOPT1.
|
||||
*******************************************************************/
|
||||
addi r3, 0, mem_mcopt1
|
||||
addi r3, 0, SDRAM0_CFG
|
||||
mtdcr SDRAM0_CFGADDR, r3
|
||||
addis r4, 0, 0x80E0 /* DC_EN=1,SRE=0,PME=0,MEMCHK=0 */
|
||||
ori r4, r4, 0x0000 /* REGEN=0,DRW=00,BRPF=01,ECCDD=1 */
|
||||
|
|
|
@ -64,16 +64,16 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) Level One PHY; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) SAM 1; active high; level sensitive
|
||||
*/
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,
|
||||
INT0 highest priority */
|
||||
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
#elif defined(CONFIG_W7OLMC)
|
||||
/*
|
||||
|
@ -95,16 +95,16 @@ int board_early_init_f (void)
|
|||
* IRQ 30 (EXT IRQ 5) RCMM Reset; active low; level sensitive
|
||||
* IRQ 31 (EXT IRQ 6) PHY; active high; level sensitive
|
||||
*/
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0ER, 0x00000000); /* disable all ints */
|
||||
|
||||
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (uicpr, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr (uictr, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (uicvcr, 0x00000001); /* set vect base=0,
|
||||
mtdcr (UIC0CR, 0x00000000); /* set all to be non-critical */
|
||||
mtdcr (UIC0PR, 0xFFFFFF80); /* set int polarities */
|
||||
mtdcr (UIC0TR, 0x10000000); /* set int trigger levels */
|
||||
mtdcr (UIC0VCR, 0x00000001); /* set vect base=0,
|
||||
INT0 highest priority */
|
||||
|
||||
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr (UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
|
||||
#else /* Unknown */
|
||||
# error "Unknown W7O board configuration"
|
||||
|
@ -170,16 +170,16 @@ unsigned long get_dram_size (void)
|
|||
int size = 0;
|
||||
|
||||
/* Get bank Size registers */
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb0cf); /* get bank 0 config reg */
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR); /* get bank 0 config reg */
|
||||
regs[0] = mfdcr (SDRAM0_CFGDATA);
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb1cf); /* get bank 1 config reg */
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR); /* get bank 1 config reg */
|
||||
regs[1] = mfdcr (SDRAM0_CFGDATA);
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb2cf); /* get bank 2 config reg */
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR); /* get bank 2 config reg */
|
||||
regs[2] = mfdcr (SDRAM0_CFGDATA);
|
||||
|
||||
mtdcr (SDRAM0_CFGADDR, mem_mb3cf); /* get bank 3 config reg */
|
||||
mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR); /* get bank 3 config reg */
|
||||
regs[3] = mfdcr (SDRAM0_CFGDATA);
|
||||
|
||||
/* compute the size, add each bank if enabled */
|
||||
|
|
|
@ -74,36 +74,36 @@ int board_early_init_f(void)
|
|||
* UIC2 UIC1
|
||||
* UIC3 UIC2
|
||||
*/
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic1er, 0x00000000); /* disable all */
|
||||
mtdcr(uic1cr, 0x00000003); /* SMI & UIC1 crit are critical */
|
||||
mtdcr(uic1pr, 0xfffffe00); /* per ref-board manual */
|
||||
mtdcr(uic1tr, 0x01c00000); /* per ref-board manual */
|
||||
mtdcr(uic1vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic1sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000003); /* SMI & UIC1 crit are critical */
|
||||
mtdcr(UIC1PR, 0xfffffe00); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x01c00000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic2er, 0x00000000); /* disable all */
|
||||
mtdcr(uic2cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic2pr, 0xffffc0ff); /* per ref-board manual */
|
||||
mtdcr(uic2tr, 0x00ff8000); /* per ref-board manual */
|
||||
mtdcr(uic2vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic2sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC2ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC2CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC2PR, 0xffffc0ff); /* per ref-board manual */
|
||||
mtdcr(UIC2TR, 0x00ff8000); /* per ref-board manual */
|
||||
mtdcr(UIC2VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC2SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr(uic3er, 0x00000000); /* disable all */
|
||||
mtdcr(uic3cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic3pr, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(uic3tr, 0x00ff8c0f); /* per ref-board manual */
|
||||
mtdcr(uic3vr, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(uic3sr, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC3SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC3ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC3CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC3PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC3TR, 0x00ff8c0f); /* per ref-board manual */
|
||||
mtdcr(UIC3VR, 0x00000001); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC3SR, 0xffffffff); /* clear all */
|
||||
|
||||
mtdcr(uic0sr, 0xfc000000); /* clear all */
|
||||
mtdcr(uic0er, 0x00000000); /* disable all */
|
||||
mtdcr(uic0cr, 0x00000000); /* all non-critical */
|
||||
mtdcr(uic0pr, 0xfc000000); /* */
|
||||
mtdcr(uic0tr, 0x00000000); /* */
|
||||
mtdcr(uic0vr, 0x00000001); /* */
|
||||
mtdcr(UIC0SR, 0xfc000000); /* clear all */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC0CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC0PR, 0xfc000000); /* */
|
||||
mtdcr(UIC0TR, 0x00000000); /* */
|
||||
mtdcr(UIC0VR, 0x00000001); /* */
|
||||
|
||||
LED0_ON();
|
||||
|
||||
|
|
|
@ -50,13 +50,13 @@ static u32 start_time;
|
|||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicer, 0x00000000); /* disable all ints */
|
||||
mtdcr(uiccr, 0x00000000);
|
||||
mtdcr(uicpr, 0xFFFF7F00); /* set int polarities */
|
||||
mtdcr(uictr, 0x00000000); /* set int trigger levels */
|
||||
mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0ER, 0x00000000); /* disable all ints */
|
||||
mtdcr(UIC0CR, 0x00000000);
|
||||
mtdcr(UIC0PR, 0xFFFF7F00); /* set int polarities */
|
||||
mtdcr(UIC0TR, 0x00000000); /* set int trigger levels */
|
||||
mtdcr(UIC0SR, 0xFFFFFFFF); /* clear all ints */
|
||||
mtdcr(UIC0VCR, 0x00000001); /* set vect base=0,INT0 highest priority */
|
||||
|
||||
/*
|
||||
* Configure CPC0_PCI to enable PerWE as output
|
||||
|
|
|
@ -574,14 +574,18 @@ static int fdt_parse_prop(char **newval, int count, char *data, int *len)
|
|||
* Byte stream. Convert the values.
|
||||
*/
|
||||
newp++;
|
||||
while ((*newp != ']') && (stridx < count)) {
|
||||
while ((stridx < count) && (*newp != ']')) {
|
||||
while (*newp == ' ')
|
||||
newp++;
|
||||
if (*newp == '\0') {
|
||||
newp = newval[++stridx];
|
||||
continue;
|
||||
}
|
||||
if (!isxdigit(*newp))
|
||||
break;
|
||||
tmp = simple_strtoul(newp, &newp, 16);
|
||||
*data++ = tmp & 0xFF;
|
||||
*len = *len + 1;
|
||||
while (*newp == ' ')
|
||||
newp++;
|
||||
if (*newp != '\0')
|
||||
newp = newval[++stridx];
|
||||
}
|
||||
if (*newp != ']') {
|
||||
printf("Unexpected character '%c'\n", *newp);
|
||||
|
@ -589,12 +593,15 @@ static int fdt_parse_prop(char **newval, int count, char *data, int *len)
|
|||
}
|
||||
} else {
|
||||
/*
|
||||
* Assume it is a string. Copy it into our data area for
|
||||
* convenience (including the terminating '\0').
|
||||
* Assume it is one or more strings. Copy it into our
|
||||
* data area for convenience (including the
|
||||
* terminating '\0's).
|
||||
*/
|
||||
while (stridx < count) {
|
||||
*len = strlen(newp) + 1;
|
||||
size_t length = strlen(newp) + 1;
|
||||
strcpy(data, newp);
|
||||
data += length;
|
||||
*len += length;
|
||||
newp = newval[++stridx];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,39 +93,39 @@ int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
#elif defined (CONFIG_405GP)
|
||||
printf ("\n405GP registers; MSR=%08x\n",mfmsr());
|
||||
printf ("\nUniversal Interrupt Controller Regs\n"
|
||||
"uicsr uicer uiccr uicpr uictr uicmsr uicvr uicvcr"
|
||||
"UIC0SR UIC0ER UIC0CR UIC0PR UIC0TR UIC0MSR UIC0VR UIC0VCR"
|
||||
"\n"
|
||||
"%08x %08x %08x %08x %08x %08x %08x %08x\n",
|
||||
mfdcr(uicsr),
|
||||
mfdcr(uicer),
|
||||
mfdcr(uiccr),
|
||||
mfdcr(uicpr),
|
||||
mfdcr(uictr),
|
||||
mfdcr(uicmsr),
|
||||
mfdcr(uicvr),
|
||||
mfdcr(uicvcr));
|
||||
mfdcr(UIC0SR),
|
||||
mfdcr(UIC0ER),
|
||||
mfdcr(UIC0CR),
|
||||
mfdcr(UIC0PR),
|
||||
mfdcr(UIC0TR),
|
||||
mfdcr(UIC0MSR),
|
||||
mfdcr(UIC0VR),
|
||||
mfdcr(UIC0VCR));
|
||||
|
||||
puts ("\nMemory (SDRAM) Configuration\n"
|
||||
"besra besrsa besrb besrsb bear mcopt1 rtr pmit\n");
|
||||
|
||||
mtdcr(SDRAM0_CFGADDR,mem_besra); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_besrsa); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_besrb); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_besrsb); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_bear); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_mcopt1); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_rtr); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_pmit); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_BESR0); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_BESRS0); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_BESR1); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_BESRS1); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_BEAR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_CFG); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_RTR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_PMIT); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
|
||||
puts ("\n"
|
||||
"mb0cf mb1cf mb2cf mb3cf sdtr1 ecccf eccerr\n");
|
||||
mtdcr(SDRAM0_CFGADDR,mem_mb0cf); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_mb1cf); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_mb2cf); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_mb3cf); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_sdtr1); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_ecccf); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_eccerr); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_B0CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_B1CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_B2CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_B3CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_TR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_ECCCFG); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_ECCESR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
|
||||
printf ("\n\n"
|
||||
"DMA Channels\n"
|
||||
|
@ -180,27 +180,27 @@ int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
#elif defined(CONFIG_405EP)
|
||||
printf ("\n405EP registers; MSR=%08x\n",mfmsr());
|
||||
printf ("\nUniversal Interrupt Controller Regs\n"
|
||||
"uicsr uicer uiccr uicpr uictr uicmsr uicvr uicvcr"
|
||||
"UIC0SR UIC0ER UIC0CR UIC0PR UIC0TR UIC0MSR UIC0VR UIC0VCR"
|
||||
"\n"
|
||||
"%08x %08x %08x %08x %08x %08x %08x %08x\n",
|
||||
mfdcr(uicsr),
|
||||
mfdcr(uicer),
|
||||
mfdcr(uiccr),
|
||||
mfdcr(uicpr),
|
||||
mfdcr(uictr),
|
||||
mfdcr(uicmsr),
|
||||
mfdcr(uicvr),
|
||||
mfdcr(uicvcr));
|
||||
mfdcr(UIC0SR),
|
||||
mfdcr(UIC0ER),
|
||||
mfdcr(UIC0CR),
|
||||
mfdcr(UIC0PR),
|
||||
mfdcr(UIC0TR),
|
||||
mfdcr(UIC0MSR),
|
||||
mfdcr(UIC0VR),
|
||||
mfdcr(UIC0VCR));
|
||||
|
||||
puts ("\nMemory (SDRAM) Configuration\n"
|
||||
"mcopt1 rtr pmit mb0cf mb1cf sdtr1\n");
|
||||
|
||||
mtdcr(SDRAM0_CFGADDR,mem_mcopt1); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_rtr); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_pmit); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_mb0cf); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_mb1cf); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,mem_sdtr1); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_CFG); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_RTR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_PMIT); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_B0CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_B1CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
mtdcr(SDRAM0_CFGADDR,SDRAM0_TR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
|
||||
|
||||
printf ("\n\n"
|
||||
"DMA Channels\n"
|
||||
|
|
|
@ -23,8 +23,8 @@
|
|||
#include <common.h>
|
||||
#include <mpc83xx.h>
|
||||
#include <ioports.h>
|
||||
#ifdef CONFIG_USB_EHCI_FSL
|
||||
#include <asm/io.h>
|
||||
#ifdef CONFIG_USB_EHCI_FSL
|
||||
#include <usb/ehci-fsl.h>
|
||||
#endif
|
||||
|
||||
|
@ -63,6 +63,115 @@ static void config_qe_ioports(void)
|
|||
*/
|
||||
void cpu_init_f (volatile immap_t * im)
|
||||
{
|
||||
__be32 acr_mask =
|
||||
#ifdef CONFIG_SYS_ACR_PIPE_DEP /* Arbiter pipeline depth */
|
||||
(ACR_PIPE_DEP << ACR_PIPE_DEP_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_ACR_RPTCNT /* Arbiter repeat count */
|
||||
(ACR_RPTCNT << ACR_RPTCNT_SHIFT) |
|
||||
#endif
|
||||
0;
|
||||
__be32 acr_val =
|
||||
#ifdef CONFIG_SYS_ACR_PIPE_DEP /* Arbiter pipeline depth */
|
||||
(CONFIG_SYS_ACR_PIPE_DEP << ACR_PIPE_DEP_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_ACR_RPTCNT /* Arbiter repeat count */
|
||||
(CONFIG_SYS_ACR_RPTCNT << ACR_RPTCNT_SHIFT) |
|
||||
#endif
|
||||
0;
|
||||
__be32 spcr_mask =
|
||||
#ifdef CONFIG_SYS_SPCR_OPT /* Optimize transactions between CSB and other dev */
|
||||
(SPCR_OPT << SPCR_OPT_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SPCR_TSECEP /* all eTSEC's Emergency priority */
|
||||
(SPCR_TSECEP << SPCR_TSECEP_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SPCR_TSEC1EP /* TSEC1 Emergency priority */
|
||||
(SPCR_TSEC1EP << SPCR_TSEC1EP_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SPCR_TSEC2EP /* TSEC2 Emergency priority */
|
||||
(SPCR_TSEC2EP << SPCR_TSEC2EP_SHIFT) |
|
||||
#endif
|
||||
0;
|
||||
__be32 spcr_val =
|
||||
#ifdef CONFIG_SYS_SPCR_OPT
|
||||
(CONFIG_SYS_SPCR_OPT << SPCR_OPT_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SPCR_TSECEP /* all eTSEC's Emergency priority */
|
||||
(CONFIG_SYS_SPCR_TSECEP << SPCR_TSECEP_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SPCR_TSEC1EP /* TSEC1 Emergency priority */
|
||||
(CONFIG_SYS_SPCR_TSEC1EP << SPCR_TSEC1EP_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SPCR_TSEC2EP /* TSEC2 Emergency priority */
|
||||
(CONFIG_SYS_SPCR_TSEC2EP << SPCR_TSEC2EP_SHIFT) |
|
||||
#endif
|
||||
0;
|
||||
__be32 sccr_mask =
|
||||
#ifdef CONFIG_SYS_SCCR_ENCCM /* Encryption clock mode */
|
||||
(SCCR_ENCCM << SCCR_ENCCM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_PCICM /* PCI & DMA clock mode */
|
||||
(SCCR_PCICM << SCCR_PCICM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_TSECCM /* all TSEC's clock mode */
|
||||
(SCCR_TSECCM << SCCR_TSECCM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC1CM /* TSEC1 clock mode */
|
||||
(SCCR_TSEC1CM << SCCR_TSEC1CM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC2CM /* TSEC2 clock mode */
|
||||
(SCCR_TSEC2CM << SCCR_TSEC2CM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC1ON /* TSEC1 clock switch */
|
||||
(SCCR_TSEC1ON << SCCR_TSEC1ON_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC2ON /* TSEC2 clock switch */
|
||||
(SCCR_TSEC2ON << SCCR_TSEC2ON_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_USBMPHCM /* USB MPH clock mode */
|
||||
(SCCR_USBMPHCM << SCCR_USBMPHCM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_USBDRCM /* USB DR clock mode */
|
||||
(SCCR_USBDRCM << SCCR_USBDRCM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_SATACM /* SATA controller clock mode */
|
||||
(SCCR_SATACM << SCCR_SATACM_SHIFT) |
|
||||
#endif
|
||||
0;
|
||||
__be32 sccr_val =
|
||||
#ifdef CONFIG_SYS_SCCR_ENCCM /* Encryption clock mode */
|
||||
(CONFIG_SYS_SCCR_ENCCM << SCCR_ENCCM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_PCICM /* PCI & DMA clock mode */
|
||||
(CONFIG_SYS_SCCR_PCICM << SCCR_PCICM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_TSECCM /* all TSEC's clock mode */
|
||||
(CONFIG_SYS_SCCR_TSECCM << SCCR_TSECCM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC1CM /* TSEC1 clock mode */
|
||||
(CONFIG_SYS_SCCR_TSEC1CM << SCCR_TSEC1CM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC2CM /* TSEC2 clock mode */
|
||||
(CONFIG_SYS_SCCR_TSEC2CM << SCCR_TSEC2CM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC1ON /* TSEC1 clock switch */
|
||||
(CONFIG_SYS_SCCR_TSEC1ON << SCCR_TSEC1ON_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC2ON /* TSEC2 clock switch */
|
||||
(CONFIG_SYS_SCCR_TSEC2ON << SCCR_TSEC2ON_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_USBMPHCM /* USB MPH clock mode */
|
||||
(CONFIG_SYS_SCCR_USBMPHCM << SCCR_USBMPHCM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_USBDRCM /* USB DR clock mode */
|
||||
(CONFIG_SYS_SCCR_USBDRCM << SCCR_USBDRCM_SHIFT) |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SCCR_SATACM /* SATA controller clock mode */
|
||||
(CONFIG_SYS_SCCR_SATACM << SCCR_SATACM_SHIFT) |
|
||||
#endif
|
||||
0;
|
||||
|
||||
/* Pointer is writable since we allocated a register for it */
|
||||
gd = (gd_t *) (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
|
||||
|
||||
|
@ -70,142 +179,47 @@ void cpu_init_f (volatile immap_t * im)
|
|||
memset ((void *) gd, 0, sizeof (gd_t));
|
||||
|
||||
/* system performance tweaking */
|
||||
clrsetbits_be32(&im->arbiter.acr, acr_mask, acr_val);
|
||||
|
||||
#ifdef CONFIG_SYS_ACR_PIPE_DEP
|
||||
/* Arbiter pipeline depth */
|
||||
im->arbiter.acr = (im->arbiter.acr & ~ACR_PIPE_DEP) |
|
||||
(CONFIG_SYS_ACR_PIPE_DEP << ACR_PIPE_DEP_SHIFT);
|
||||
#endif
|
||||
clrsetbits_be32(&im->sysconf.spcr, spcr_mask, spcr_val);
|
||||
|
||||
#ifdef CONFIG_SYS_ACR_RPTCNT
|
||||
/* Arbiter repeat count */
|
||||
im->arbiter.acr = (im->arbiter.acr & ~(ACR_RPTCNT)) |
|
||||
(CONFIG_SYS_ACR_RPTCNT << ACR_RPTCNT_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SPCR_OPT
|
||||
/* Optimize transactions between CSB and other devices */
|
||||
im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_OPT) |
|
||||
(CONFIG_SYS_SPCR_OPT << SPCR_OPT_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SPCR_TSECEP
|
||||
/* all eTSEC's Emergency priority */
|
||||
im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSECEP) |
|
||||
(CONFIG_SYS_SPCR_TSECEP << SPCR_TSECEP_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SPCR_TSEC1EP
|
||||
/* TSEC1 Emergency priority */
|
||||
im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSEC1EP) |
|
||||
(CONFIG_SYS_SPCR_TSEC1EP << SPCR_TSEC1EP_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SPCR_TSEC2EP
|
||||
/* TSEC2 Emergency priority */
|
||||
im->sysconf.spcr = (im->sysconf.spcr & ~SPCR_TSEC2EP) |
|
||||
(CONFIG_SYS_SPCR_TSEC2EP << SPCR_TSEC2EP_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SCCR_ENCCM
|
||||
/* Encryption clock mode */
|
||||
im->clk.sccr = (im->clk.sccr & ~SCCR_ENCCM) |
|
||||
(CONFIG_SYS_SCCR_ENCCM << SCCR_ENCCM_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SCCR_PCICM
|
||||
/* PCI & DMA clock mode */
|
||||
im->clk.sccr = (im->clk.sccr & ~SCCR_PCICM) |
|
||||
(CONFIG_SYS_SCCR_PCICM << SCCR_PCICM_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SCCR_TSECCM
|
||||
/* all TSEC's clock mode */
|
||||
im->clk.sccr = (im->clk.sccr & ~SCCR_TSECCM) |
|
||||
(CONFIG_SYS_SCCR_TSECCM << SCCR_TSECCM_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC1CM
|
||||
/* TSEC1 clock mode */
|
||||
im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC1CM) |
|
||||
(CONFIG_SYS_SCCR_TSEC1CM << SCCR_TSEC1CM_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC2CM
|
||||
/* TSEC2 clock mode */
|
||||
im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC2CM) |
|
||||
(CONFIG_SYS_SCCR_TSEC2CM << SCCR_TSEC2CM_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC1ON
|
||||
/* TSEC1 clock switch */
|
||||
im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC1ON) |
|
||||
(CONFIG_SYS_SCCR_TSEC1ON << SCCR_TSEC1ON_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SCCR_TSEC2ON
|
||||
/* TSEC2 clock switch */
|
||||
im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC2ON) |
|
||||
(CONFIG_SYS_SCCR_TSEC2ON << SCCR_TSEC2ON_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SCCR_USBMPHCM
|
||||
/* USB MPH clock mode */
|
||||
im->clk.sccr = (im->clk.sccr & ~SCCR_USBMPHCM) |
|
||||
(CONFIG_SYS_SCCR_USBMPHCM << SCCR_USBMPHCM_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SCCR_USBDRCM
|
||||
/* USB DR clock mode */
|
||||
im->clk.sccr = (im->clk.sccr & ~SCCR_USBDRCM) |
|
||||
(CONFIG_SYS_SCCR_USBDRCM << SCCR_USBDRCM_SHIFT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SCCR_SATACM
|
||||
/* SATA controller clock mode */
|
||||
im->clk.sccr = (im->clk.sccr & ~SCCR_SATACM) |
|
||||
(CONFIG_SYS_SCCR_SATACM << SCCR_SATACM_SHIFT);
|
||||
#endif
|
||||
clrsetbits_be32(&im->clk.sccr, sccr_mask, sccr_val);
|
||||
|
||||
/* RSR - Reset Status Register - clear all status (4.6.1.3) */
|
||||
gd->reset_status = im->reset.rsr;
|
||||
im->reset.rsr = ~(RSR_RES);
|
||||
gd->reset_status = __raw_readl(&im->reset.rsr);
|
||||
__raw_writel(~(RSR_RES), &im->reset.rsr);
|
||||
|
||||
/* AER - Arbiter Event Register - store status */
|
||||
gd->arbiter_event_attributes = im->arbiter.aeatr;
|
||||
gd->arbiter_event_address = im->arbiter.aeadr;
|
||||
gd->arbiter_event_attributes = __raw_readl(&im->arbiter.aeatr);
|
||||
gd->arbiter_event_address = __raw_readl(&im->arbiter.aeadr);
|
||||
|
||||
/*
|
||||
* RMR - Reset Mode Register
|
||||
* contains checkstop reset enable (4.6.1.4)
|
||||
*/
|
||||
im->reset.rmr = (RMR_CSRE & (1<<RMR_CSRE_SHIFT));
|
||||
__raw_writel(RMR_CSRE & (1<<RMR_CSRE_SHIFT), &im->reset.rmr);
|
||||
|
||||
/* LCRR - Clock Ratio Register (10.3.1.16) */
|
||||
im->lbus.lcrr = CONFIG_SYS_LCRR;
|
||||
|
||||
/* Enable Time Base & Decrimenter ( so we will have udelay() )*/
|
||||
im->sysconf.spcr |= SPCR_TBEN;
|
||||
/* Enable Time Base & Decrementer ( so we will have udelay() )*/
|
||||
setbits_be32(&im->sysconf.spcr, SPCR_TBEN);
|
||||
|
||||
/* System General Purpose Register */
|
||||
#ifdef CONFIG_SYS_SICRH
|
||||
#if defined(CONFIG_MPC834x) || defined(CONFIG_MPC8313)
|
||||
/* regarding to MPC34x manual rev.1 bits 28..29 must be preserved */
|
||||
im->sysconf.sicrh = (im->sysconf.sicrh & 0x0000000C) | CONFIG_SYS_SICRH;
|
||||
__raw_writel((im->sysconf.sicrh & 0x0000000C) | CONFIG_SYS_SICRH,
|
||||
&im->sysconf.sicrh);
|
||||
#else
|
||||
im->sysconf.sicrh = CONFIG_SYS_SICRH;
|
||||
__raw_writel(CONFIG_SYS_SICRH, &im->sysconf.sicrh);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_SICRL
|
||||
im->sysconf.sicrl = CONFIG_SYS_SICRL;
|
||||
__raw_writel(CONFIG_SYS_SICRL, &im->sysconf.sicrl);
|
||||
#endif
|
||||
/* DDR control driver register */
|
||||
#ifdef CONFIG_SYS_DDRCDR
|
||||
im->sysconf.ddrcdr = CONFIG_SYS_DDRCDR;
|
||||
#ifdef CONFIG_SYS_DDRCDR /* DDR control driver register */
|
||||
__raw_writel(CONFIG_SYS_DDRCDR, &im->sysconf.ddrcdr);
|
||||
#endif
|
||||
/* Output buffer impedance register */
|
||||
#ifdef CONFIG_SYS_OBIR
|
||||
im->sysconf.obir = CONFIG_SYS_OBIR;
|
||||
#ifdef CONFIG_SYS_OBIR /* Output buffer impedance register */
|
||||
__raw_writel(CONFIG_SYS_OBIR, &im->sysconf.obir);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_QE
|
||||
|
@ -308,7 +322,7 @@ void cpu_init_f (volatile immap_t * im)
|
|||
|
||||
/* Wait for clock to stabilize */
|
||||
do {
|
||||
temp = in_be32(&ehci->control);
|
||||
temp = __raw_readl(&ehci->control);
|
||||
udelay(1000);
|
||||
} while (!(temp & PHY_CLK_VALID));
|
||||
#endif
|
||||
|
@ -317,8 +331,41 @@ void cpu_init_f (volatile immap_t * im)
|
|||
|
||||
int cpu_init_r (void)
|
||||
{
|
||||
volatile immap_t *im = (volatile immap_t *)CONFIG_SYS_IMMR;
|
||||
#ifdef CONFIG_QE
|
||||
uint qe_base = CONFIG_SYS_IMMR + 0x00100000; /* QE immr base */
|
||||
#endif
|
||||
__be32 lcrr_mask =
|
||||
#ifdef CONFIG_SYS_LCRR_DBYP /* PLL bypass */
|
||||
LCRR_DBYP |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_LCRR_EADC /* external address delay */
|
||||
LCRR_EADC |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_LCRR_CLKDIV /* system clock divider */
|
||||
LCRR_CLKDIV |
|
||||
#endif
|
||||
0;
|
||||
__be32 lcrr_val =
|
||||
#ifdef CONFIG_SYS_LCRR_DBYP /* PLL bypass */
|
||||
CONFIG_SYS_LCRR_DBYP |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_LCRR_EADC
|
||||
CONFIG_SYS_LCRR_EADC |
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_LCRR_CLKDIV /* system clock divider */
|
||||
CONFIG_SYS_LCRR_CLKDIV |
|
||||
#endif
|
||||
0;
|
||||
|
||||
/* LCRR - Clock Ratio Register (10.3.1.16)
|
||||
* write, read, and isync per MPC8379ERM rev.1 CLKDEV field description
|
||||
*/
|
||||
clrsetbits_be32(&im->lbus.lcrr, lcrr_mask, lcrr_val);
|
||||
__raw_readl(&im->lbus.lcrr);
|
||||
isync();
|
||||
|
||||
#ifdef CONFIG_QE
|
||||
qe_init(qe_base);
|
||||
qe_reset();
|
||||
#endif
|
||||
|
|
|
@ -422,32 +422,31 @@ long int spd_sdram(int(read_spd)(uint addr))
|
|||
* program all the registers.
|
||||
* -------------------------------------------------------------------*/
|
||||
|
||||
#define mtsdram0(reg, data) mtdcr(SDRAM0_CFGADDR,reg);mtdcr(SDRAM0_CFGDATA,data)
|
||||
/* disable memcontroller so updates work */
|
||||
mtsdram0( mem_mcopt1, 0 );
|
||||
mtsdram(SDRAM0_CFG, 0);
|
||||
|
||||
#ifndef CONFIG_405EP /* not on PPC405EP */
|
||||
mtsdram0( mem_besra , sdram0_besr0 );
|
||||
mtsdram0( mem_besrb , sdram0_besr1 );
|
||||
mtsdram0( mem_ecccf , sdram0_ecccfg );
|
||||
mtsdram0( mem_eccerr, sdram0_eccesr );
|
||||
mtsdram(SDRAM0_BESR0, sdram0_besr0);
|
||||
mtsdram(SDRAM0_BESR1, sdram0_besr1);
|
||||
mtsdram(SDRAM0_ECCCFG, sdram0_ecccfg);
|
||||
mtsdram(SDRAM0_ECCESR, sdram0_eccesr);
|
||||
#endif
|
||||
mtsdram0( mem_rtr , sdram0_rtr );
|
||||
mtsdram0( mem_pmit , sdram0_pmit );
|
||||
mtsdram0( mem_mb0cf , sdram0_b0cr );
|
||||
mtsdram0( mem_mb1cf , sdram0_b1cr );
|
||||
mtsdram(SDRAM0_RTR, sdram0_rtr);
|
||||
mtsdram(SDRAM0_PMIT, sdram0_pmit);
|
||||
mtsdram(SDRAM0_B0CR, sdram0_b0cr);
|
||||
mtsdram(SDRAM0_B1CR, sdram0_b1cr);
|
||||
#ifndef CONFIG_405EP /* not on PPC405EP */
|
||||
mtsdram0( mem_mb2cf , sdram0_b2cr );
|
||||
mtsdram0( mem_mb3cf , sdram0_b3cr );
|
||||
mtsdram(SDRAM0_B2CR, sdram0_b2cr);
|
||||
mtsdram(SDRAM0_B3CR, sdram0_b3cr);
|
||||
#endif
|
||||
mtsdram0( mem_sdtr1 , sdram0_tr );
|
||||
mtsdram(SDRAM0_TR, sdram0_tr);
|
||||
|
||||
/* SDRAM have a power on delay, 500 micro should do */
|
||||
udelay(500);
|
||||
sdram0_cfg = SDRAM0_CFG_DCE | SDRAM0_CFG_BRPF(1) | SDRAM0_CFG_ECCDD | SDRAM0_CFG_EMDULR;
|
||||
if (ecc_on)
|
||||
sdram0_cfg |= SDRAM0_CFG_MEMCHK;
|
||||
mtsdram0(mem_mcopt1, sdram0_cfg);
|
||||
mtsdram(SDRAM0_CFG, sdram0_cfg);
|
||||
|
||||
return (total_size);
|
||||
}
|
||||
|
|
|
@ -230,7 +230,7 @@ long int spd_sdram(void) {
|
|||
/*
|
||||
* program SDRAM Clock Timing Register (SDRAM0_CLKTR)
|
||||
*/
|
||||
mtsdram(mem_clktr, 0x40000000);
|
||||
mtsdram(SDRAM0_CLKTR, 0x40000000);
|
||||
|
||||
/*
|
||||
* delay to ensure 200 usec has elapsed
|
||||
|
@ -240,14 +240,14 @@ long int spd_sdram(void) {
|
|||
/*
|
||||
* enable the memory controller
|
||||
*/
|
||||
mfsdram(mem_cfg0, cfg0);
|
||||
mtsdram(mem_cfg0, cfg0 | SDRAM_CFG0_DCEN);
|
||||
mfsdram(SDRAM0_CFG0, cfg0);
|
||||
mtsdram(SDRAM0_CFG0, cfg0 | SDRAM_CFG0_DCEN);
|
||||
|
||||
/*
|
||||
* wait for SDRAM_CFG0_DC_EN to complete
|
||||
*/
|
||||
while (1) {
|
||||
mfsdram(mem_mcsts, mcsts);
|
||||
mfsdram(SDRAM0_MCSTS, mcsts);
|
||||
if ((mcsts & SDRAM_MCSTS_MRSC) != 0)
|
||||
break;
|
||||
}
|
||||
|
@ -386,7 +386,7 @@ static void program_cfg0(unsigned long *dimm_populated,
|
|||
/*
|
||||
* get Memory Controller Options 0 data
|
||||
*/
|
||||
mfsdram(mem_cfg0, cfg0);
|
||||
mfsdram(SDRAM0_CFG0, cfg0);
|
||||
|
||||
/*
|
||||
* clear bits
|
||||
|
@ -457,7 +457,7 @@ static void program_cfg0(unsigned long *dimm_populated,
|
|||
* Note: DCEN must be enabled after all DDR SDRAM controller
|
||||
* configuration registers get initialized.
|
||||
*/
|
||||
mtsdram(mem_cfg0, cfg0);
|
||||
mtsdram(SDRAM0_CFG0, cfg0);
|
||||
}
|
||||
|
||||
static void program_cfg1(unsigned long *dimm_populated,
|
||||
|
@ -465,7 +465,7 @@ static void program_cfg1(unsigned long *dimm_populated,
|
|||
unsigned long num_dimm_banks)
|
||||
{
|
||||
unsigned long cfg1;
|
||||
mfsdram(mem_cfg1, cfg1);
|
||||
mfsdram(SDRAM0_CFG1, cfg1);
|
||||
|
||||
/*
|
||||
* Self-refresh exit, disable PM
|
||||
|
@ -475,7 +475,7 @@ static void program_cfg1(unsigned long *dimm_populated,
|
|||
/*
|
||||
* program Memory Controller Options 1
|
||||
*/
|
||||
mtsdram(mem_cfg1, cfg1);
|
||||
mtsdram(SDRAM0_CFG1, cfg1);
|
||||
}
|
||||
|
||||
static void program_rtr(unsigned long *dimm_populated,
|
||||
|
@ -535,7 +535,7 @@ static void program_rtr(unsigned long *dimm_populated,
|
|||
/*
|
||||
* program Refresh Timer Register (SDRAM0_RTR)
|
||||
*/
|
||||
mtsdram(mem_rtr, sdram_rtr);
|
||||
mtsdram(SDRAM0_RTR, sdram_rtr);
|
||||
}
|
||||
|
||||
static void program_tr0(unsigned long *dimm_populated,
|
||||
|
@ -576,7 +576,7 @@ static void program_tr0(unsigned long *dimm_populated,
|
|||
/*
|
||||
* get SDRAM Timing Register 0 (SDRAM_TR0) and clear bits
|
||||
*/
|
||||
mfsdram(mem_tr0, tr0);
|
||||
mfsdram(SDRAM0_TR0, tr0);
|
||||
tr0 &= ~(SDRAM_TR0_SDWR_MASK | SDRAM_TR0_SDWD_MASK |
|
||||
SDRAM_TR0_SDCL_MASK | SDRAM_TR0_SDPA_MASK |
|
||||
SDRAM_TR0_SDCP_MASK | SDRAM_TR0_SDLD_MASK |
|
||||
|
@ -821,7 +821,7 @@ static void program_tr0(unsigned long *dimm_populated,
|
|||
}
|
||||
|
||||
debug("tr0: %x\n", tr0);
|
||||
mtsdram(mem_tr0, tr0);
|
||||
mtsdram(SDRAM0_TR0, tr0);
|
||||
}
|
||||
|
||||
static int short_mem_test(void)
|
||||
|
@ -848,7 +848,7 @@ static int short_mem_test(void)
|
|||
0x55AA55AA, 0x55AA55AA, 0xAA55AA55, 0xAA55AA55}};
|
||||
|
||||
for (bxcr_num = 0; bxcr_num < MAXBXCR; bxcr_num++) {
|
||||
mtdcr(SDRAM0_CFGADDR, mem_b0cr + (bxcr_num << 2));
|
||||
mtdcr(SDRAM0_CFGADDR, SDRAM0_B0CR + (bxcr_num << 2));
|
||||
if ((mfdcr(SDRAM0_CFGDATA) & SDRAM_BXCR_SDBE) == SDRAM_BXCR_SDBE) {
|
||||
/* Bank is enabled */
|
||||
membase = (unsigned long*)
|
||||
|
@ -918,11 +918,11 @@ static void program_tr1(void)
|
|||
/*
|
||||
* get SDRAM Timing Register 0 (SDRAM_TR0) and clear bits
|
||||
*/
|
||||
mfsdram(mem_tr1, tr1);
|
||||
mfsdram(SDRAM0_TR1, tr1);
|
||||
tr1 &= ~(SDRAM_TR1_RDSS_MASK | SDRAM_TR1_RDSL_MASK |
|
||||
SDRAM_TR1_RDCD_MASK | SDRAM_TR1_RDCT_MASK);
|
||||
|
||||
mfsdram(mem_tr0, tr0);
|
||||
mfsdram(SDRAM0_TR0, tr0);
|
||||
if (((tr0 & SDRAM_TR0_SDCL_MASK) == SDRAM_TR0_SDCL_2_5_CLK) &&
|
||||
(sys_info.freqPLB > 100000000)) {
|
||||
tr1 |= SDRAM_TR1_RDSS_TR2;
|
||||
|
@ -937,14 +937,14 @@ static void program_tr1(void)
|
|||
/*
|
||||
* save CFG0 ECC setting to a temporary variable and turn ECC off
|
||||
*/
|
||||
mfsdram(mem_cfg0, cfg0);
|
||||
mfsdram(SDRAM0_CFG0, cfg0);
|
||||
ecc_temp = cfg0 & SDRAM_CFG0_MCHK_MASK;
|
||||
mtsdram(mem_cfg0, (cfg0 & ~SDRAM_CFG0_MCHK_MASK) | SDRAM_CFG0_MCHK_NON);
|
||||
mtsdram(SDRAM0_CFG0, (cfg0 & ~SDRAM_CFG0_MCHK_MASK) | SDRAM_CFG0_MCHK_NON);
|
||||
|
||||
/*
|
||||
* get the delay line calibration register value
|
||||
*/
|
||||
mfsdram(mem_dlycal, dlycal);
|
||||
mfsdram(SDRAM0_DLYCAL, dlycal);
|
||||
dly_val = SDRAM_DLYCAL_DLCV_DECODE(dlycal) << 2;
|
||||
|
||||
max_pass_length = 0;
|
||||
|
@ -964,7 +964,7 @@ static void program_tr1(void)
|
|||
/*
|
||||
* Set the timing reg for the test.
|
||||
*/
|
||||
mtsdram(mem_tr1, (tr1 | SDRAM_TR1_RDCT_ENCODE(rdclt)));
|
||||
mtsdram(SDRAM0_TR1, (tr1 | SDRAM_TR1_RDCT_ENCODE(rdclt)));
|
||||
|
||||
if (short_mem_test()) {
|
||||
if (fail_found == TRUE) {
|
||||
|
@ -1018,7 +1018,7 @@ static void program_tr1(void)
|
|||
/*
|
||||
* restore the orignal ECC setting
|
||||
*/
|
||||
mtsdram(mem_cfg0, (cfg0 & ~SDRAM_CFG0_MCHK_MASK) | ecc_temp);
|
||||
mtsdram(SDRAM0_CFG0, (cfg0 & ~SDRAM_CFG0_MCHK_MASK) | ecc_temp);
|
||||
|
||||
/*
|
||||
* set the SDRAM TR1 RDCD value
|
||||
|
@ -1056,7 +1056,7 @@ static void program_tr1(void)
|
|||
/*
|
||||
* program SDRAM Timing Register 1 TR1
|
||||
*/
|
||||
mtsdram(mem_tr1, tr1);
|
||||
mtsdram(SDRAM0_TR1, tr1);
|
||||
}
|
||||
|
||||
static unsigned long program_bxcr(unsigned long *dimm_populated,
|
||||
|
@ -1086,7 +1086,7 @@ static unsigned long program_bxcr(unsigned long *dimm_populated,
|
|||
* Set the BxCR regs. First, wipe out the bank config registers.
|
||||
*/
|
||||
for (bx_cr_num = 0; bx_cr_num < MAXBXCR; bx_cr_num++) {
|
||||
mtdcr(SDRAM0_CFGADDR, mem_b0cr + (bx_cr_num << 2));
|
||||
mtdcr(SDRAM0_CFGADDR, SDRAM0_B0CR + (bx_cr_num << 2));
|
||||
mtdcr(SDRAM0_CFGDATA, 0x00000000);
|
||||
bank_parms[bx_cr_num].bank_size_bytes = 0;
|
||||
}
|
||||
|
@ -1232,7 +1232,7 @@ static unsigned long program_bxcr(unsigned long *dimm_populated,
|
|||
/* Set the SDRAM0_BxCR regs thanks to sort tables */
|
||||
for (bx_cr_num = 0, bank_base_addr = 0; bx_cr_num < MAXBXCR; bx_cr_num++) {
|
||||
if (bank_parms[sorted_bank_num[bx_cr_num]].bank_size_bytes) {
|
||||
mtdcr(SDRAM0_CFGADDR, mem_b0cr + (sorted_bank_num[bx_cr_num] << 2));
|
||||
mtdcr(SDRAM0_CFGADDR, SDRAM0_B0CR + (sorted_bank_num[bx_cr_num] << 2));
|
||||
temp = mfdcr(SDRAM0_CFGDATA) & ~(SDRAM_BXCR_SDBA_MASK | SDRAM_BXCR_SDSZ_MASK |
|
||||
SDRAM_BXCR_SDAM_MASK | SDRAM_BXCR_SDBE);
|
||||
temp = temp | (bank_base_addr & SDRAM_BXCR_SDBA_MASK) |
|
||||
|
|
|
@ -188,14 +188,14 @@ phys_size_t initdram(int board_type)
|
|||
/*
|
||||
* Disable memory controller.
|
||||
*/
|
||||
mtsdram(mem_mcopt1, 0x00000000);
|
||||
mtsdram(SDRAM0_CFG, 0x00000000);
|
||||
|
||||
/*
|
||||
* Set MB0CF for bank 0.
|
||||
*/
|
||||
mtsdram(mem_mb0cf, mb0cf[i].reg);
|
||||
mtsdram(mem_sdtr1, sdtr1);
|
||||
mtsdram(mem_rtr, compute_rtr(speed, mb0cf[i].rows, 64));
|
||||
mtsdram(SDRAM0_B0CR, mb0cf[i].reg);
|
||||
mtsdram(SDRAM0_TR, sdtr1);
|
||||
mtsdram(SDRAM0_RTR, compute_rtr(speed, mb0cf[i].rows, 64));
|
||||
|
||||
udelay(200);
|
||||
|
||||
|
@ -204,7 +204,7 @@ phys_size_t initdram(int board_type)
|
|||
* Set DC_EN to '1' and BRD_PRF to '01' for 16 byte PLB Burst
|
||||
* read/prefetch.
|
||||
*/
|
||||
mtsdram(mem_mcopt1, 0x80800000);
|
||||
mtsdram(SDRAM0_CFG, 0x80800000);
|
||||
|
||||
udelay(10000);
|
||||
|
||||
|
@ -216,9 +216,9 @@ phys_size_t initdram(int board_type)
|
|||
* defined (assumes same type as bank 0)
|
||||
*/
|
||||
#ifdef CONFIG_SDRAM_BANK1
|
||||
mtsdram(mem_mcopt1, 0x00000000);
|
||||
mtsdram(mem_mb1cf, mb0cf[i].size | mb0cf[i].reg);
|
||||
mtsdram(mem_mcopt1, 0x80800000);
|
||||
mtsdram(SDRAM0_CFG, 0x00000000);
|
||||
mtsdram(SDRAM0_B1CR, mb0cf[i].size | mb0cf[i].reg);
|
||||
mtsdram(SDRAM0_CFG, 0x80800000);
|
||||
udelay(10000);
|
||||
|
||||
/*
|
||||
|
@ -228,8 +228,8 @@ phys_size_t initdram(int board_type)
|
|||
*/
|
||||
if (get_ram_size((long *)mb0cf[i].size, mb0cf[i].size) !=
|
||||
mb0cf[i].size) {
|
||||
mtsdram(mem_mb1cf, 0);
|
||||
mtsdram(mem_mcopt1, 0);
|
||||
mtsdram(SDRAM0_B1CR, 0);
|
||||
mtsdram(SDRAM0_CFG, 0);
|
||||
} else {
|
||||
/*
|
||||
* We have two identical banks, so the size
|
||||
|
@ -315,7 +315,7 @@ static void sdram_tr1_set(int ram_address, int* tr1_value)
|
|||
/* go through all possible SDRAM0_TR1[RDCT] values */
|
||||
for (i=0; i<=0x1ff; i++) {
|
||||
/* set the current value for TR1 */
|
||||
mtsdram(mem_tr1, (0x80800800 | i));
|
||||
mtsdram(SDRAM0_TR1, (0x80800800 | i));
|
||||
|
||||
/* write values */
|
||||
for (j=0; j<NUM_TRIES; j++) {
|
||||
|
@ -383,31 +383,31 @@ phys_size_t initdram(int board_type)
|
|||
/*
|
||||
* Disable memory controller.
|
||||
*/
|
||||
mtsdram(mem_cfg0, 0x00000000);
|
||||
mtsdram(SDRAM0_CFG0, 0x00000000);
|
||||
|
||||
/*
|
||||
* Setup some default
|
||||
*/
|
||||
mtsdram(mem_uabba, 0x00000000); /* ubba=0 (default) */
|
||||
mtsdram(mem_slio, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
|
||||
mtsdram(mem_devopt, 0x00000000); /* dll=0 ds=0 (normal) */
|
||||
mtsdram(mem_wddctr, CONFIG_SYS_SDRAM0_WDDCTR);
|
||||
mtsdram(mem_clktr, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
|
||||
mtsdram(SDRAM0_UABBA, 0x00000000); /* ubba=0 (default) */
|
||||
mtsdram(SDRAM0_SLIO, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
|
||||
mtsdram(SDRAM0_DEVOPT, 0x00000000); /* dll=0 ds=0 (normal) */
|
||||
mtsdram(SDRAM0_WDDCTR, CONFIG_SYS_SDRAM0_WDDCTR);
|
||||
mtsdram(SDRAM0_CLKTR, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
|
||||
|
||||
/*
|
||||
* Following for CAS Latency = 2.5 @ 133 MHz PLB
|
||||
*/
|
||||
mtsdram(mem_b0cr, mb0cf[i].reg);
|
||||
mtsdram(mem_tr0, CONFIG_SYS_SDRAM0_TR0);
|
||||
mtsdram(mem_tr1, 0x80800800); /* SS=T2 SL=STAGE 3 CD=1 CT=0x00*/
|
||||
mtsdram(mem_rtr, CONFIG_SYS_SDRAM0_RTR);
|
||||
mtsdram(mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM*/
|
||||
mtsdram(SDRAM0_B0CR, mb0cf[i].reg);
|
||||
mtsdram(SDRAM0_TR0, CONFIG_SYS_SDRAM0_TR0);
|
||||
mtsdram(SDRAM0_TR1, 0x80800800); /* SS=T2 SL=STAGE 3 CD=1 CT=0x00*/
|
||||
mtsdram(SDRAM0_RTR, CONFIG_SYS_SDRAM0_RTR);
|
||||
mtsdram(SDRAM0_CFG1, 0x00000000); /* Self-refresh exit, disable PM*/
|
||||
udelay(400); /* Delay 200 usecs (min) */
|
||||
|
||||
/*
|
||||
* Enable the controller, then wait for DCEN to complete
|
||||
*/
|
||||
mtsdram(mem_cfg0, CONFIG_SYS_SDRAM0_CFG0);
|
||||
mtsdram(SDRAM0_CFG0, CONFIG_SYS_SDRAM0_CFG0);
|
||||
udelay(10000);
|
||||
|
||||
if (get_ram_size(0, mb0cf[i].size) == mb0cf[i].size) {
|
||||
|
@ -416,7 +416,7 @@ phys_size_t initdram(int board_type)
|
|||
* Optimize TR1 to current hardware environment
|
||||
*/
|
||||
sdram_tr1_set(0x00000000, &tr1_bank1);
|
||||
mtsdram(mem_tr1, (tr1_bank1 | 0x80800800));
|
||||
mtsdram(SDRAM0_TR1, (tr1_bank1 | 0x80800800));
|
||||
|
||||
|
||||
/*
|
||||
|
@ -424,9 +424,9 @@ phys_size_t initdram(int board_type)
|
|||
* defined (assumes same type as bank 0)
|
||||
*/
|
||||
#ifdef CONFIG_SDRAM_BANK1
|
||||
mtsdram(mem_cfg0, 0);
|
||||
mtsdram(mem_b1cr, mb0cf[i].size | mb0cf[i].reg);
|
||||
mtsdram(mem_cfg0, CONFIG_SYS_SDRAM0_CFG0);
|
||||
mtsdram(SDRAM0_CFG0, 0);
|
||||
mtsdram(SDRAM0_B1CR, mb0cf[i].size | mb0cf[i].reg);
|
||||
mtsdram(SDRAM0_CFG0, CONFIG_SYS_SDRAM0_CFG0);
|
||||
udelay(10000);
|
||||
|
||||
/*
|
||||
|
@ -436,9 +436,9 @@ phys_size_t initdram(int board_type)
|
|||
*/
|
||||
if (get_ram_size((long *)mb0cf[i].size, mb0cf[i].size)
|
||||
!= mb0cf[i].size) {
|
||||
mtsdram(mem_cfg0, 0);
|
||||
mtsdram(mem_b1cr, 0);
|
||||
mtsdram(mem_cfg0, CONFIG_SYS_SDRAM0_CFG0);
|
||||
mtsdram(SDRAM0_CFG0, 0);
|
||||
mtsdram(SDRAM0_B1CR, 0);
|
||||
mtsdram(SDRAM0_CFG0, CONFIG_SYS_SDRAM0_CFG0);
|
||||
udelay(10000);
|
||||
} else {
|
||||
/*
|
||||
|
|
|
@ -109,7 +109,7 @@ void external_interrupt(struct pt_regs *regs)
|
|||
/*
|
||||
* Read masked interrupt status register to determine interrupt source
|
||||
*/
|
||||
uic_msr = mfdcr(uic0msr);
|
||||
uic_msr = mfdcr(UIC0MSR);
|
||||
|
||||
#if (UIC_MAX > 1)
|
||||
if ((UIC_MASK(VECNUM_UIC1CI) & uic_msr) ||
|
||||
|
@ -129,7 +129,7 @@ void external_interrupt(struct pt_regs *regs)
|
|||
uic_interrupt(UIC3_DCR_BASE, 96);
|
||||
#endif
|
||||
|
||||
mtdcr(uic0sr, (uic_msr & UICB0_ALL));
|
||||
mtdcr(UIC0SR, (uic_msr & UICB0_ALL));
|
||||
|
||||
if (uic_msr & ~(UICB0_ALL))
|
||||
uic_interrupt(UIC0_DCR_BASE, 0);
|
||||
|
@ -140,13 +140,13 @@ void external_interrupt(struct pt_regs *regs)
|
|||
void pic_irq_ack(unsigned int vec)
|
||||
{
|
||||
if ((vec >= 0) && (vec < 32))
|
||||
mtdcr(uicsr, UIC_MASK(vec));
|
||||
mtdcr(UIC0SR, UIC_MASK(vec));
|
||||
else if ((vec >= 32) && (vec < 64))
|
||||
mtdcr(uic1sr, UIC_MASK(vec));
|
||||
mtdcr(UIC1SR, UIC_MASK(vec));
|
||||
else if ((vec >= 64) && (vec < 96))
|
||||
mtdcr(uic2sr, UIC_MASK(vec));
|
||||
mtdcr(UIC2SR, UIC_MASK(vec));
|
||||
else if (vec >= 96)
|
||||
mtdcr(uic3sr, UIC_MASK(vec));
|
||||
mtdcr(UIC3SR, UIC_MASK(vec));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -156,13 +156,13 @@ void pic_irq_enable(unsigned int vec)
|
|||
{
|
||||
|
||||
if ((vec >= 0) && (vec < 32))
|
||||
mtdcr(uicer, mfdcr(uicer) | UIC_MASK(vec));
|
||||
mtdcr(UIC0ER, mfdcr(UIC0ER) | UIC_MASK(vec));
|
||||
else if ((vec >= 32) && (vec < 64))
|
||||
mtdcr(uic1er, mfdcr(uic1er) | UIC_MASK(vec));
|
||||
mtdcr(UIC1ER, mfdcr(UIC1ER) | UIC_MASK(vec));
|
||||
else if ((vec >= 64) && (vec < 96))
|
||||
mtdcr(uic2er, mfdcr(uic2er) | UIC_MASK(vec));
|
||||
mtdcr(UIC2ER, mfdcr(UIC2ER) | UIC_MASK(vec));
|
||||
else if (vec >= 96)
|
||||
mtdcr(uic3er, mfdcr(uic3er) | UIC_MASK(vec));
|
||||
mtdcr(UIC3ER, mfdcr(UIC3ER) | UIC_MASK(vec));
|
||||
|
||||
debug("Install interrupt vector %d\n", vec);
|
||||
}
|
||||
|
@ -170,11 +170,11 @@ void pic_irq_enable(unsigned int vec)
|
|||
void pic_irq_disable(unsigned int vec)
|
||||
{
|
||||
if ((vec >= 0) && (vec < 32))
|
||||
mtdcr(uicer, mfdcr(uicer) & ~UIC_MASK(vec));
|
||||
mtdcr(UIC0ER, mfdcr(UIC0ER) & ~UIC_MASK(vec));
|
||||
else if ((vec >= 32) && (vec < 64))
|
||||
mtdcr(uic1er, mfdcr(uic1er) & ~UIC_MASK(vec));
|
||||
mtdcr(UIC1ER, mfdcr(UIC1ER) & ~UIC_MASK(vec));
|
||||
else if ((vec >= 64) && (vec < 96))
|
||||
mtdcr(uic2er, mfdcr(uic2er) & ~UIC_MASK(vec));
|
||||
mtdcr(UIC2ER, mfdcr(UIC2ER) & ~UIC_MASK(vec));
|
||||
else if (vec >= 96)
|
||||
mtdcr(uic3er, mfdcr(uic3er) & ~UIC_MASK(vec));
|
||||
mtdcr(UIC3ER, mfdcr(UIC3ER) & ~UIC_MASK(vec));
|
||||
}
|
||||
|
|
127
doc/README.mpc8536ds
Normal file
127
doc/README.mpc8536ds
Normal file
|
@ -0,0 +1,127 @@
|
|||
Overview:
|
||||
=========
|
||||
|
||||
The MPC8536E integrates a PowerPC processor core with system logic
|
||||
required for imaging, networking, and communications applications.
|
||||
|
||||
Boot from NAND:
|
||||
===============
|
||||
|
||||
The MPC8536E is capable of booting from NAND flash which uses the image
|
||||
u-boot-nand.bin. This image contains two parts: a first stage image(also
|
||||
call 4K NAND loader and a second stage image. The former is appended to
|
||||
the latter to produce u-boot-nand.bin.
|
||||
|
||||
The bootup process can be divided into two stages: the first stage will
|
||||
configure the L2SRAM, then copy the second stage image to L2SRAM and jump
|
||||
to it. The second stage image is to configure all the hardware and boot up
|
||||
to U-Boot command line.
|
||||
|
||||
The 4K NAND loader's code comes from the corresponding nand_spl directory,
|
||||
along with the code twisted by CONFIG_NAND_SPL. The macro CONFIG_NAND_SPL
|
||||
is mainly used to shrink the code size to the 4K size limitation.
|
||||
|
||||
The macro CONFIG_SYS_RAMBOOT is used to control the code to produce the
|
||||
second stage image. It's set in the board config file when boot from NAND
|
||||
is selected.
|
||||
|
||||
Build and boot steps
|
||||
--------------------
|
||||
|
||||
1. Building image
|
||||
make MPC8536DS_NAND_config
|
||||
make CROSS_COMPILE=powerpc-none-linux-gnuspe- all
|
||||
|
||||
2. Change dip-switch
|
||||
SW2[5-8] = 1011
|
||||
SW9[1-3] = 101
|
||||
Note: 1 stands for 'on', 0 stands for 'off'
|
||||
|
||||
3. Flash image
|
||||
tftp 1000000 u-boot-nand.bin
|
||||
nand erase 0 a0000
|
||||
nand write 1000000 0 a0000
|
||||
|
||||
Boot from On-chip ROM:
|
||||
======================
|
||||
|
||||
The MPC8536E is capable of booting from the on-chip ROM - boot from eSDHC
|
||||
and boot from eSPI. When power on, the porcessor excutes the ROM code to
|
||||
initialize the eSPI/eSDHC controller, and loads the mian U-Boot image from
|
||||
the memory device that interfaced to the controller, such as the SDCard or
|
||||
SPI EEPROM, to the target memory, e.g. SDRAM or L2SRAM, then boot from it.
|
||||
|
||||
The memory device should contain a specific data structure with control word
|
||||
and config word at the fixed address. The config word direct the process how
|
||||
to config the memory device, and the control word direct the processor where
|
||||
to find the image on the memory device, or where copy the main image to. The
|
||||
user can use any method to store the data structure to the memory device, only
|
||||
if store it on the assigned address.
|
||||
|
||||
Build and boot steps
|
||||
--------------------
|
||||
|
||||
For boot from eSDHC:
|
||||
1. Build image
|
||||
make MPC8536DS_SDCARD_config
|
||||
make CROSS_COMPILE=powerpc-none-linux-gnuspe- all
|
||||
|
||||
2. Change dip-switch
|
||||
SW2[5-8] = 0111
|
||||
SW3[1] = 0
|
||||
SW8[7] = 0 - The on-board SD/MMC slot is active
|
||||
SW8[7] = 1 - The externel SD/MMC slot is active
|
||||
|
||||
3. Put image to SDCard
|
||||
Put the follwing info at the assigned address on the SDCard:
|
||||
|
||||
Offset | Data | Description
|
||||
--------------------------------------------------------
|
||||
| 0x40-0x43 | 0x424F4F54 | BOOT signature |
|
||||
--------------------------------------------------------
|
||||
| 0x48-0x4B | 0x00080000 | u-boot.bin's size |
|
||||
--------------------------------------------------------
|
||||
| 0x50-0x53 | 0x???????? | u-boot.bin's Addr on SDCard |
|
||||
--------------------------------------------------------
|
||||
| 0x58-0x5B | 0xF8F80000 | Target Address |
|
||||
-------------------------------------------------------
|
||||
| 0x60-0x63 | 0xF8FFF000 | Execution Starting Address |
|
||||
--------------------------------------------------------
|
||||
| 0x68-0x6B | 0x6 | Number of Config Addr/Data |
|
||||
--------------------------------------------------------
|
||||
| 0x80-0x83 | 0xFF720100 | Config Addr 1 |
|
||||
| 0x84-0x87 | 0xF8F80000 | Config Data 1 |
|
||||
--------------------------------------------------------
|
||||
| 0x88-0x8b | 0xFF720e44 | Config Addr 2 |
|
||||
| 0x8c-0x8f | 0x0000000C | Config Data 2 |
|
||||
--------------------------------------------------------
|
||||
| 0x90-0x93 | 0xFF720000 | Config Addr 3 |
|
||||
| 0x94-0x97 | 0x80010000 | Config Data 3 |
|
||||
--------------------------------------------------------
|
||||
| 0x98-0x9b | 0xFF72e40e | Config Addr 4 |
|
||||
| 0x9c-0x9f | 0x00000040 | Config Data 4 |
|
||||
--------------------------------------------------------
|
||||
| 0xa0-0xa3 | 0x40000001 | Config Addr 5 |
|
||||
| 0xa4-0xa7 | 0x00000100 | Config Data 5 |
|
||||
--------------------------------------------------------
|
||||
| 0xa8-0xab | 0x80000001 | Config Addr 6 |
|
||||
| 0xac-0xaf | 0x80000001 | Config Data 6 |
|
||||
--------------------------------------------------------
|
||||
| ...... |
|
||||
--------------------------------------------------------
|
||||
| 0x???????? | u-boot.bin |
|
||||
--------------------------------------------------------
|
||||
|
||||
then insert the SDCard to the active slot to boot up.
|
||||
|
||||
For boot from eSPI:
|
||||
1. Build image
|
||||
make MPC8536DS_SPIFLASH_config
|
||||
make CROSS_COMPILE=powerpc-none-linux-gnuspe- all
|
||||
|
||||
2. Change dip-switch
|
||||
SW2[5-8] = 0110
|
||||
|
||||
3. Put image to SPI flash
|
||||
Put the info in the above table onto the SPI flash, then
|
||||
boot up.
|
|
@ -63,6 +63,30 @@ a 33MHz PCI configuration is currently untested.)
|
|||
=>
|
||||
|
||||
|
||||
Updating U-boot with U-boot:
|
||||
============================
|
||||
|
||||
Note that versions of u-boot up to and including 2009.08 had u-boot stored
|
||||
at 0xfff8_0000 -> 0xffff_ffff (512k). Currently it is being stored from
|
||||
0xfffa_0000 -> 0xffff_ffff (384k). If you use an old macro/script to
|
||||
update u-boot with u-boot and it uses the old address, you will render
|
||||
your board inoperable, and you will require JTAG recovery.
|
||||
|
||||
The following steps list how to update with the current address:
|
||||
|
||||
tftp u-boot.bin
|
||||
md 200000 10
|
||||
protect off all
|
||||
erase fffa0000 ffffffff
|
||||
cp.b 200000 fffa0000 60000
|
||||
md fffa0000 10
|
||||
protect on all
|
||||
|
||||
The "md" steps in the above are just a precautionary step that allow
|
||||
you to confirm the u-boot version that was downloaded, and then confirm
|
||||
that it was copied to flash.
|
||||
|
||||
|
||||
Hardware Reference:
|
||||
===================
|
||||
|
||||
|
|
|
@ -100,29 +100,9 @@ static const struct fsl_i2c *i2c_dev[2] = {
|
|||
*/
|
||||
static const struct {
|
||||
unsigned short divider;
|
||||
#ifdef __PPC__
|
||||
u8 dfsr;
|
||||
#endif
|
||||
u8 fdr;
|
||||
} fsl_i2c_speed_map[] = {
|
||||
#ifdef __PPC__
|
||||
{160, 1, 32}, {192, 1, 33}, {224, 1, 34}, {256, 1, 35},
|
||||
{288, 1, 0}, {320, 1, 1}, {352, 6, 1}, {384, 1, 2}, {416, 6, 2},
|
||||
{448, 1, 38}, {480, 1, 3}, {512, 1, 39}, {544, 11, 3}, {576, 1, 4},
|
||||
{608, 22, 3}, {640, 1, 5}, {672, 32, 3}, {704, 11, 5}, {736, 43, 3},
|
||||
{768, 1, 6}, {800, 54, 3}, {832, 11, 6}, {896, 1, 42}, {960, 1, 7},
|
||||
{1024, 1, 43}, {1088, 22, 7}, {1152, 1, 8}, {1216, 43, 7}, {1280, 1, 9},
|
||||
{1408, 22, 9}, {1536, 1, 10}, {1664, 22, 10}, {1792, 1, 46},
|
||||
{1920, 1, 11}, {2048, 1, 47}, {2176, 43, 11}, {2304, 1, 12},
|
||||
{2560, 1, 13}, {2816, 43, 13}, {3072, 1, 14}, {3328, 43, 14},
|
||||
{3584, 1, 50}, {3840, 1, 15}, {4096, 1, 51}, {4608, 1, 16},
|
||||
{5120, 1, 17}, {6144, 1, 18}, {7168, 1, 54}, {7680, 1, 19},
|
||||
{8192, 1, 55}, {9216, 1, 20}, {10240, 1, 21}, {12288, 1, 22},
|
||||
{14336, 1, 58}, {15360, 1, 23}, {16384, 1, 59}, {18432, 1, 24},
|
||||
{20480, 1, 25}, {24576, 1, 26}, {28672, 1, 62}, {30720, 1, 27},
|
||||
{32768, 1, 63}, {36864, 1, 28}, {40960, 1, 29}, {49152, 1, 30},
|
||||
{61440, 1, 31}, {-1, 1, 31}
|
||||
#elif defined(__M68K__)
|
||||
#ifdef __M68K__
|
||||
{20, 32}, {22, 33}, {24, 34}, {26, 35},
|
||||
{28, 0}, {28, 36}, {30, 1}, {32, 37},
|
||||
{34, 2}, {36, 38}, {40, 3}, {40, 39},
|
||||
|
@ -158,7 +138,6 @@ static unsigned int set_i2c_bus_speed(const struct fsl_i2c *dev,
|
|||
unsigned int i2c_clk, unsigned int speed)
|
||||
{
|
||||
unsigned short divider = min(i2c_clk / speed, (unsigned short) -1);
|
||||
unsigned int i;
|
||||
|
||||
/*
|
||||
* We want to choose an FDR/DFSR that generates an I2C bus speed that
|
||||
|
@ -166,23 +145,72 @@ static unsigned int set_i2c_bus_speed(const struct fsl_i2c *dev,
|
|||
* want the first divider that is equal to or greater than the
|
||||
* calculated divider.
|
||||
*/
|
||||
#ifdef __PPC__
|
||||
u8 dfsr, fdr = 0x31; /* Default if no FDR found */
|
||||
/* a, b and dfsr matches identifiers A,B and C respectively in AN2919 */
|
||||
unsigned short a, b, ga, gb;
|
||||
unsigned long c_div, est_div;
|
||||
|
||||
#ifdef CONFIG_FSL_I2C_CUSTOM_DFSR
|
||||
dfsr = CONFIG_FSL_I2C_CUSTOM_DFSR;
|
||||
#else
|
||||
/* Condition 1: dfsr <= 50/T */
|
||||
dfsr = (5 * (i2c_clk / 1000)) / 100000;
|
||||
#endif
|
||||
#ifdef CONFIG_FSL_I2C_CUSTOM_FDR
|
||||
fdr = CONFIG_FSL_I2C_CUSTOM_FDR;
|
||||
speed = i2c_clk / divider; /* Fake something */
|
||||
#else
|
||||
debug("Requested speed:%d, i2c_clk:%d\n", speed, i2c_clk);
|
||||
if (!dfsr)
|
||||
dfsr = 1;
|
||||
|
||||
est_div = ~0;
|
||||
for (ga = 0x4, a = 10; a <= 30; ga++, a += 2) {
|
||||
for (gb = 0; gb < 8; gb++) {
|
||||
b = 16 << gb;
|
||||
c_div = b * (a + ((3*dfsr)/b)*2);
|
||||
if ((c_div > divider) && (c_div < est_div)) {
|
||||
unsigned short bin_gb, bin_ga;
|
||||
|
||||
est_div = c_div;
|
||||
bin_gb = gb << 2;
|
||||
bin_ga = (ga & 0x3) | ((ga & 0x4) << 3);
|
||||
fdr = bin_gb | bin_ga;
|
||||
speed = i2c_clk / est_div;
|
||||
debug("FDR:0x%.2x, div:%ld, ga:0x%x, gb:0x%x, "
|
||||
"a:%d, b:%d, speed:%d\n",
|
||||
fdr, est_div, ga, gb, a, b, speed);
|
||||
/* Condition 2 not accounted for */
|
||||
debug("Tr <= %d ns\n",
|
||||
(b - 3 * dfsr) * 1000000 /
|
||||
(i2c_clk / 1000));
|
||||
}
|
||||
}
|
||||
if (a == 20)
|
||||
a += 2;
|
||||
if (a == 24)
|
||||
a += 4;
|
||||
}
|
||||
debug("divider:%d, est_div:%ld, DFSR:%d\n", divider, est_div, dfsr);
|
||||
debug("FDR:0x%.2x, speed:%d\n", fdr, speed);
|
||||
#endif
|
||||
writeb(dfsr, &dev->dfsrr); /* set default filter */
|
||||
writeb(fdr, &dev->fdr); /* set bus speed */
|
||||
#else
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(fsl_i2c_speed_map); i++)
|
||||
if (fsl_i2c_speed_map[i].divider >= divider) {
|
||||
u8 fdr;
|
||||
#ifdef __PPC__
|
||||
u8 dfsr;
|
||||
dfsr = fsl_i2c_speed_map[i].dfsr;
|
||||
#endif
|
||||
|
||||
fdr = fsl_i2c_speed_map[i].fdr;
|
||||
speed = i2c_clk / fsl_i2c_speed_map[i].divider;
|
||||
writeb(fdr, &dev->fdr); /* set bus speed */
|
||||
#ifdef __PPC__
|
||||
writeb(dfsr, &dev->dfsrr); /* set default filter */
|
||||
#endif
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
#endif
|
||||
return speed;
|
||||
}
|
||||
|
||||
|
@ -223,7 +251,7 @@ i2c_init(int speed, int slaveadd)
|
|||
#endif
|
||||
}
|
||||
|
||||
static __inline__ int
|
||||
static int
|
||||
i2c_wait4bus(void)
|
||||
{
|
||||
unsigned long long timeval = get_ticks();
|
||||
|
@ -248,6 +276,8 @@ i2c_wait(int write)
|
|||
csr = readb(&i2c_dev[i2c_bus_num]->sr);
|
||||
if (!(csr & I2C_SR_MIF))
|
||||
continue;
|
||||
/* Read again to allow register to stabilise */
|
||||
csr = readb(&i2c_dev[i2c_bus_num]->sr);
|
||||
|
||||
writeb(0x0, &i2c_dev[i2c_bus_num]->sr);
|
||||
|
||||
|
@ -293,9 +323,6 @@ __i2c_write(u8 *data, int length)
|
|||
{
|
||||
int i;
|
||||
|
||||
writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_MTX,
|
||||
&i2c_dev[i2c_bus_num]->cr);
|
||||
|
||||
for (i = 0; i < length; i++) {
|
||||
writeb(data[i], &i2c_dev[i2c_bus_num]->dr);
|
||||
|
||||
|
@ -326,9 +353,10 @@ __i2c_read(u8 *data, int length)
|
|||
writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_TXAK,
|
||||
&i2c_dev[i2c_bus_num]->cr);
|
||||
|
||||
/* Generate stop on last byte */
|
||||
/* Do not generate stop on last byte */
|
||||
if (i == length - 1)
|
||||
writeb(I2C_CR_MEN | I2C_CR_TXAK, &i2c_dev[i2c_bus_num]->cr);
|
||||
writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_MTX,
|
||||
&i2c_dev[i2c_bus_num]->cr);
|
||||
|
||||
data[i] = readb(&i2c_dev[i2c_bus_num]->dr);
|
||||
}
|
||||
|
@ -353,6 +381,9 @@ i2c_read(u8 dev, uint addr, int alen, u8 *data, int length)
|
|||
|
||||
writeb(I2C_CR_MEN, &i2c_dev[i2c_bus_num]->cr);
|
||||
|
||||
if (i2c_wait4bus()) /* Wait until STOP */
|
||||
debug("i2c_read: wait4bus timed out\n");
|
||||
|
||||
if (i == length)
|
||||
return 0;
|
||||
|
||||
|
@ -372,6 +403,8 @@ i2c_write(u8 dev, uint addr, int alen, u8 *data, int length)
|
|||
}
|
||||
|
||||
writeb(I2C_CR_MEN, &i2c_dev[i2c_bus_num]->cr);
|
||||
if (i2c_wait4bus()) /* Wait until STOP */
|
||||
debug("i2c_write: wait4bus timed out\n");
|
||||
|
||||
if (i == length)
|
||||
return 0;
|
||||
|
|
|
@ -79,6 +79,7 @@ void disable_law(u8 idx)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_NAND_SPL
|
||||
static int get_law_entry(u8 i, struct law_entry *e)
|
||||
{
|
||||
volatile ccsr_local_t *ccm = (void *)(CONFIG_SYS_FSL_CORENET_CCM_ADDR);
|
||||
|
@ -96,6 +97,7 @@ static int get_law_entry(u8 i, struct law_entry *e)
|
|||
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
void set_law(u8 idx, phys_addr_t addr, enum law_size sz, enum law_trgt_if id)
|
||||
{
|
||||
|
@ -130,6 +132,7 @@ void disable_law(u8 idx)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_NAND_SPL
|
||||
static int get_law_entry(u8 i, struct law_entry *e)
|
||||
{
|
||||
volatile u32 *base = (volatile u32 *)(CONFIG_SYS_IMMR + 0xc08);
|
||||
|
@ -149,6 +152,7 @@ static int get_law_entry(u8 i, struct law_entry *e)
|
|||
return 1;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
int set_next_law(phys_addr_t addr, enum law_size sz, enum law_trgt_if id)
|
||||
{
|
||||
|
|
|
@ -202,7 +202,6 @@ static struct nand_ecclayout nand_davinci_4bit_layout_oobfirst = {
|
|||
},
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
static void nand_davinci_4bit_enable_hwecc(struct mtd_info *mtd, int mode)
|
||||
{
|
||||
|
@ -289,7 +288,6 @@ static int nand_davinci_4bit_calculate_ecc(struct mtd_info *mtd,
|
|||
static int nand_davinci_4bit_correct_data(struct mtd_info *mtd, uint8_t *dat,
|
||||
uint8_t *read_ecc, uint8_t *calc_ecc)
|
||||
{
|
||||
struct nand_chip *this = mtd->priv;
|
||||
unsigned short ecc_10bit[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
int i;
|
||||
unsigned int hw_4ecc[4] = { 0, 0, 0, 0 }, iserror = 0;
|
||||
|
@ -441,6 +439,7 @@ static int nand_davinci_4bit_correct_data(struct mtd_info *mtd, uint8_t *dat,
|
|||
|
||||
return numerrors;
|
||||
}
|
||||
#endif /* CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST */
|
||||
|
||||
static int nand_davinci_dev_ready(struct mtd_info *mtd)
|
||||
{
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include "common.h"
|
||||
#include "qe.h"
|
||||
#include "asm/immap_qe.h"
|
||||
|
||||
/* Fast or Giga ethernet
|
||||
*/
|
||||
|
|
|
@ -23,6 +23,9 @@
|
|||
#ifndef __UEC_H__
|
||||
#define __UEC_H__
|
||||
|
||||
#include "qe.h"
|
||||
#include "uccf.h"
|
||||
|
||||
#define MAX_TX_THREADS 8
|
||||
#define MAX_RX_THREADS 8
|
||||
#define MAX_TX_QUEUES 8
|
||||
|
@ -670,6 +673,7 @@ typedef enum enet_interface {
|
|||
ENET_1000_RGMII,
|
||||
ENET_1000_RGMII_ID,
|
||||
ENET_1000_RGMII_RXID,
|
||||
ENET_1000_RGMII_TXID,
|
||||
ENET_1000_TBI,
|
||||
ENET_1000_RTBI,
|
||||
ENET_1000_SGMII
|
||||
|
|
|
@ -429,12 +429,23 @@ static int marvell_init(struct uec_mii_info *mii_info)
|
|||
{
|
||||
struct eth_device *edev = mii_info->dev;
|
||||
uec_private_t *uec = edev->priv;
|
||||
enum enet_interface iface = uec->uec_info->enet_interface;
|
||||
|
||||
if (uec->uec_info->enet_interface == ENET_1000_RGMII_ID) {
|
||||
if (iface == ENET_1000_RGMII_ID ||
|
||||
iface == ENET_1000_RGMII_RXID ||
|
||||
iface == ENET_1000_RGMII_TXID) {
|
||||
int temp;
|
||||
|
||||
temp = phy_read(mii_info, MII_M1111_PHY_EXT_CR);
|
||||
temp |= (MII_M1111_RX_DELAY | MII_M1111_TX_DELAY);
|
||||
if (iface == ENET_1000_RGMII_ID) {
|
||||
temp |= MII_M1111_RX_DELAY | MII_M1111_TX_DELAY;
|
||||
} else if (iface == ENET_1000_RGMII_RXID) {
|
||||
temp &= ~MII_M1111_TX_DELAY;
|
||||
temp |= MII_M1111_RX_DELAY;
|
||||
} else if (iface == ENET_1000_RGMII_TXID) {
|
||||
temp &= ~MII_M1111_RX_DELAY;
|
||||
temp |= MII_M1111_TX_DELAY;
|
||||
}
|
||||
phy_write(mii_info, MII_M1111_PHY_EXT_CR, temp);
|
||||
|
||||
temp = phy_read(mii_info, MII_M1111_PHY_EXT_SR);
|
||||
|
|
|
@ -439,7 +439,7 @@ static unsigned long ubifs_findfile(struct super_block *sb, char *filename)
|
|||
continue;
|
||||
}
|
||||
/* Relative to cur dir */
|
||||
sprintf(buf, "%s%s",
|
||||
sprintf(buf, "%s/%s",
|
||||
link_name, next == NULL ? "" : next);
|
||||
memcpy(symlinkpath, buf, sizeof(buf));
|
||||
next = name = symlinkpath;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue