⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memsetup.s

📁 U BOOT源码
💻 S
字号:
/* *  Memory sub-system initialization code for INCA-IP development board. * *  Copyright (c) 2003	Wolfgang Denk <wd@denx.de> * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#include <config.h>#include <version.h>#include <asm/regdef.h>#define EBU_MODUL_BASE          0xB8000200#define EBU_CLC(value)          0x0000(value)#define EBU_CON(value)          0x0010(value)#define EBU_ADDSEL0(value)      0x0020(value)#define EBU_ADDSEL1(value)      0x0024(value)#define EBU_ADDSEL2(value)      0x0028(value)#define EBU_BUSCON0(value)      0x0060(value)#define EBU_BUSCON1(value)      0x0064(value)#define EBU_BUSCON2(value)      0x0068(value)#define MC_MODUL_BASE           0xBF800000#define MC_ERRCAUSE(value)      0x0100(value)#define MC_ERRADDR(value)       0x0108(value)#define MC_IOGP(value)          0x0800(value)#define MC_SELFRFSH(value)      0x0A00(value)#define MC_CTRLENA(value)       0x1000(value)#define MC_MRSCODE(value)       0x1008(value)#define MC_CFGDW(value)         0x1010(value)#define MC_CFGPB0(value)        0x1018(value)#define MC_LATENCY(value)       0x1038(value)#define MC_TREFRESH(value)      0x1040(value)#define CGU_MODUL_BASE          0xBF107000#define CGU_PLL1CR(value)       0x0008(value)#define CGU_DIVCR(value)        0x0010(value)#define CGU_MUXCR(value)        0x0014(value)#define CGU_PLL1SR(value)       0x000C(value)	.globl	memsetupmemsetup:	/* EBU Initialization for the Flash CS0 and CS2.	 */	li	t0, EBU_MODUL_BASE	li	t1, 0xA0000041	sw	t1, EBU_ADDSEL0(t0)#if CPU_CLOCK_RATE==100000000	/* 100 MHz clock for the MIPS core */	lw	t1, EBU_BUSCON0(t0)  /* value set up by magic flash word */	sw	t1, EBU_BUSCON2(t0)#else /* 150 MHz or 133 MHz */	li	t1, 0x8841417E	sw	t1, EBU_BUSCON0(t0)	sw	t1, EBU_BUSCON2(t0)#endif	li	t1, 0xA0800041	sw	t1, EBU_ADDSEL2(t0)	/* Need to initialize CS1 too, so as to to prevent overlapping with	 * Flash bank 1.	 */	li	t1, 0xBE0000F1 	sw	t1, EBU_ADDSEL1(t0)#if CPU_CLOCK_RATE==100000000   /* 100 MHz clock for the MIPS core */	li	t1, 0x684142BD#else /* 150 MHz or 133 MHz */	li	t1, 0x684143FD#endif 	sw	t1, EBU_BUSCON1(t0)#if CPU_CLOCK_RATE==150000000   /* 150 MHz clock for the MIPS core */	li      t0, CGU_MODUL_BASE	li      t1, 0x80000017	sw      t1, CGU_DIVCR(t0)	li      t1, 0xC00B0001	sw      t1, CGU_PLL1CR(t0)	lui     t2, 0x8000b1:	lw      t1, CGU_PLL1SR(t0)	and     t1, t1, t2	beq     t1, zero, b1	li      t1, 0x80000001	sw      t1, CGU_MUXCR(t0)#elif CPU_CLOCK_RATE==133000000	/* 133 MHz clock for the MIPS core */	li	t0, CGU_MODUL_BASE	li	t1, 0x80000054	sw	t1, CGU_DIVCR(t0)	li	t1, 0x80000000	sw	t1, CGU_MUXCR(t0)	li	t1, 0x800B0001	sw	t1, CGU_PLL1CR(t0)#endif	/* SDRAM Initialization.	 */	li	t0, MC_MODUL_BASE	/* Clear Error log registers */	sw	zero, MC_ERRCAUSE(t0)	sw	zero, MC_ERRADDR(t0)	/* Set clock ratio to 1:1 */	li	t1, 0x03		/* clkrat=1:1, rddel=3 */	sw	t1, MC_IOGP(t0)	/* Clear Power-down registers */	sw	zero, MC_SELFRFSH(t0)	/* Set CAS Latency */	li	t1, 0x00000020		/* CL = 2 */	sw	t1, MC_MRSCODE(t0)	/* Set word width to 16 bit */	li	t1, 0x2	sw	t1, MC_CFGDW(t0)	/* Set CS0 to SDRAM parameters */	li	t1, 0x000014C9	sw	t1, MC_CFGPB0(t0)	/* Set SDRAM latency parameters */	li	t1, 0x00026325		/* BC PC100 */	sw	t1, MC_LATENCY(t0)	/* Set SDRAM refresh rate */	li	t1, 0x00000C30		/* 4K/64ms @ 100MHz */	sw	t1, MC_TREFRESH(t0)	/* Finally enable the controller */	li	t1, 1	sw	t1, MC_CTRLENA(t0)	j	ra	nop

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -