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

📄 sdram.h

📁 嵌入式linux(arm9)的平台下
💻 H
📖 第 1 页 / 共 3 页
字号:
/********************************************************************* * * Copyright: *	Advanced Micro Devices, AMD. All Rights Reserved.   *  You are hereby granted a copyright license to use, modify, and *  distribute the SOFTWARE so long as this entire notice is *  retained without alteration in any modified and/or redistributed *  versions, and that such modified versions are clearly identified *  as such. No licenses are granted by implication, estoppel or *  otherwise under any patents or trademarks of AMD. This  *  software is provided on an "AS IS" basis and without warranty. * *  To the maximum extent permitted by applicable law, AMD  *  DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING  *  IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR *  PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE  *  SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY  *  ACCOMPANYING WRITTEN MATERIALS. *  *  To the maximum extent permitted by applicable law, IN NO EVENT *  SHALL AMD BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING  *  WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS  *  INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY *  LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.    *  *  AMD assumes no responsibility for the maintenance and support *  of this software. ********************************************************************* * * File:		sdram.h * * Purpose:		Definitions for Au1550 SDRAM Controller * *  $RCSfile: sdram.h,v $ *  $Author: mwelk $ *  $Revision: 1.5 $ *  $Date: 2004/03/31 23:25:18 $ ************************************************************************//* * Modifications: *2004/03/30 mfw	Added SDRAM_DEBUG define switch2004/01/17 mfw	Changed SDRAM_CS_MODE_REG[ES] to [BW] to match the data book2003.11.21 mfw  Completed val, _GET(val) #defines for SD_CSMODE bit fields!2003.11.21 mfw  Added PS bit to SD_GCR_B, and corrected Inverted Structure order!*********************************************************************/#ifndef __AU1550_MEM_H#define __AU1550_MEM_H//mfw #define __AU1550#define __MEM_H_REV	2004_MAR_30#undef	SDRAM_DEBUG/* SDRAM Definitions */	/* AU1550 SDRAM Controller Base Physical Address */#define MEMORY_CTRL_BASE  (0x14000000)#define SDRAM_1500_PHYSICAL_BASE  (MEMORY_CTRL_BASE)#define SDRAM_1550_PHYSICAL_BASE  (MEMORY_CTRL_BASE + 0x800)	// OLD Defines: Remove= SDRAM_1500_BASE and SDRAM_1550_BASE#define SDRAM_1500_BASE  (SDRAM_1500_PHYSICAL_BASE)#define SDRAM_1550_BASE  (SDRAM_1550_PHYSICAL_BASE)//#define KSEG1(phy_addr)	(phy_addr | (0xA<<28))#define SDRAM_CTRL_BASE  (KSEG1(SDRAM_1550_PHYSICAL_BASE))	/* AU1550 SDRAM Controller Base KSEG1 Address = 0xb4000800 */#define SDRAM_CTRL_KSEG1_BASE (KSEG1(SDRAM_1550_PHYSICAL_BASE))#define SDRAM_CSMODE0		(0x0000)#define SDRAM_CSMODE1		(0x0008)#define SDRAM_CSMODE2		(0x0010)// Reserved Bits are ZERO'd#define	SDRAM_CSMODE_RSV	(0xCF7FF777)#define	SDRAM_CSMODE_DFLT	(0x007FF776)#define SDRAM_CSADDR0   	(0x0020)#define SDRAM_CSADDR1   	(0x0028)#define SDRAM_CSADDR2   	(0x0030)// Reserved Bits are ZERO'd#define	SDRAM_CSADDR_RSV	(0xF71FFFFFF)#define	SDRAM_CSADDR_DFLT	(0x010FFFFFF)#define SDRAM_GCR_A 		(0x0040)// Reserved Bits are ZERO'd#define	SDRAM_GCR_A_RSV		(0xFB33FFFF)#define	SDRAM_GCR_A_DFLT	(0xF003FFFF)#define SDRAM_GCR_B 		(0x0048)// Reserved Bits are ZERO'd#define	SDRAM_GCR_B_RSV		(0x0F0E709F)#define	SDRAM_GCR_B_DFLT	(0x00000000)#define SDRAM_ERR_RPT_STATUS	(0x0050)// Reserved Bits are ZERO'd#define	SDRAM_ERR_RPT_STATUS_RSV	(0x1300000F)#define	SDRAM_ERR_RPT_STATUS_DFLT	(0x00000000)#define SDRAM_OFF_ADD_REG	(0x0058)// Reserved Bits are ZERO'd#define	SDRAM_OFF_ADD_REG_RSV	(0xFFFFFFFF)#define	SDRAM_OFF_ADD_REG_DFLT	(0x00000000)#define SDRAM_STRIDE0		(0x0060)#define SDRAM_STRIDE1		(0x0068)#define SDRAM_STRIDE2		(0x0070)// Reserved Bits are ZERO'd#define	SDRAM_STRIDE0_RSV	(0xFFF077FF)#define	SDRAM_STRIDE0_DFLT	(0x00000000)#define	SDRAM_STRIDE_RSV	(0x000077FF)#define	SDRAM_STRIDE_DFLT	(0x00000000)#define SDRAM_WRITE_EXTERN_0	(0x0080)#define SDRAM_WRITE_EXTERN_1	(0x0088)#define SDRAM_WRITE_EXTERN_2	(0x0090)// Reserved Bits are ZERO'd#define	SDRAM_WRITE_EXTERN_RSV	(0xC0000FFF)#define	SDRAM_WRITE_EXTERN_DFLT	(0x00000000)#define SDRAM_LOAD_EXT_CMD_0	(0x00A0)#define SDRAM_LOAD_EXT_CMD_1	(0x00A8)#define SDRAM_LOAD_EXT_CMD_2	(0x00B0)// Reserved Bits are ZERO'd#define	SDRAM_LOAD_EXT_RSV	(0xC0000FFF)#define	SDRAM_LOAD_EXT_DFLT	(0x00000000)#define SDRAM_PRECHARGE_CMD	(0x00C0)#define SDRAM_AUTO_REFRESH_CMD	(0x00C8)#define SDRAM_SELF_REFRESH	(0x00D0)//=========================================================//	Bit definitions for Chip Select Timing Configuration Registers, Offset = 0x0000-0x0018//===========================================//-----------------------------------//	External Bus Size (0=32-bit, 1=16-bit, 2=rsvd, 3=rsvd)#define	SD_CSMODE_ES_POS	(30)#define	SD_CSMODE_ES_MASK	(0x3)#define	SD_CSMODE_ES(val)	((val&&SD_CSMODE_ES_MASK)<<SD_CSMODE_ES_POS)#define	SD_CSMODE_ES_GET(val)	((val>>SD_CSMODE_ES_POS)&&SD_CSMODE_ES_MASK)enum SD_EBSIZE {	ES_32=0,	// 32 bit external bus (Default)	ES_16,  	// 16 bit external bus	ES_R1,  	// Reserved	ES_R2   	// Reserved};//---RESERVED FIELD--------------------------------//	External Bus Size (0=32-bit, 1=16-bit, 2=rsvd, 3=rsvd)#define	SD_CSMODE_EC_POS	(28)#define	SD_CSMODE_EC_MASK	(0x3)#define	SD_CSMODE_EC(val)	((val&&SD_CSMODE_EC_MASK)<<SD_CSMODE_EC_POS)#define	SD_CSMODE_EC_GET(val)	((val>>SD_CSMODE_EC_POS)&&SD_CSMODE_EC_MASK)enum SD_ERR_CODE {	EC_32=0   	// Reserved};//-----------------------------------//	Memory Type (0=SDR, 1=DDR, 2=rsvd, 3=SyncFlash)#define	SD_CSMODE_MT_POS	(26)#define	SD_CSMODE_MT_MASK	(0x3)#define	SD_CSMODE_MT(val)	((val&&SD_CSMODE_MT_MASK)<<SD_CSMODE_MT_POS)#define	SD_CSMODE_MT_GET(val)	((val>>SD_CSMODE_MT_POS)&&SD_CSMODE_MT_MASK)enum SD_MTYPE {	MT_SDR=0,	// Single Data Rate SDRAM (Default)	MT_DDR, 	// Double Data Rate SDRAM	MT_RSVD,	// Memory Type Reserved	MT_SYNCF  	// SyncFlash};//-----------------------------------//	(DDR Only) SKEW between external CAS latency and Internal Tcas#define	SD_CSMODE_SKEW_POS	(24)#define	SD_CSMODE_SKEW_MASK	(0x3)#define	SD_CSMODE_SKEW(val)	((val&&SD_CSMODE_SKEW_MASK)<<SD_CSMODE_SKEW_POS)#define	SD_CSMODE_SKEW_GET(val)	((val>>SD_CSMODE_SKEW_POS)&&SD_CSMODE_SKEW_MASK)enum SD_SKEW {	SKEW_NONE=0,	// 00= No Skew	HALF_CLOCK, 	// 01= 1/2 clock	ONE_CLOCK,  	// 10= 1 clock	SKEW_RSVD   	// 11= Reserved};//-----------------------------------//	Write to Precharge Time, value = 1 less than min. # Clock cycles#define	SD_CSMODE_TWR_POS	(20)#define	SD_CSMODE_TWR_MASK	(0x7)#define	SD_CSMODE_TWR(val)	((val&&SD_CSMODE_TWR_MASK)<<SD_CSMODE_TWR_POS)#define	SD_CSMODE_TWR_GET(val)	((val>>SD_CSMODE_TWR_POS)&&SD_CSMODE_TWR_MASK)//-----------------------------------//	Minimum Time for a complete access, value = 1 less than min. # Clock cycles#define	SD_CSMODE_TRAS_POS	(16)#define	SD_CSMODE_TRAS_MASK	(0xF)#define	SD_CSMODE_TRAS(val)	((val&&SD_CSMODE_TRAS_MASK)<<SD_CSMODE_TRAS_POS)#define	SD_CSMODE_TRAS_GET(val)	((val>>SD_CSMODE_TRAS_POS)&&SD_CSMODE_TRAS_MASK)//-----------------------------------//	Write to Read Turnaround Time, value = 1 less than required # mem bus Clock cycles#define	SD_CSMODE_TWTR_POS	(14)#define	SD_CSMODE_TWTR_MASK	(0x3)#define	SD_CSMODE_TWTR(val)	((val&&SD_CSMODE_TWTR_MASK)<<SD_CSMODE_TWTR_POS)#define	SD_CSMODE_TWTR_GET(val)	((val>>SD_CSMODE_TWTR_POS)&&SD_CSMODE_TWTR_MASK)//-----------------------------------//	RAS Precharge Time, value = 1 less than required # mem bus Clock cycles#define	SD_CSMODE_TRP_POS	(12)#define	SD_CSMODE_TRP_MASK	(0x3)#define	SD_CSMODE_TRP(val)	((val&&SD_CSMODE_TRP_MASK)<<SD_CSMODE_TRP_POS)#define	SD_CSMODE_TRP_GET(val)	((val>>SD_CSMODE_TRP_POS)&&SD_CSMODE_TRP_MASK)//-----------------------------------//	RAS to CAS delay for Writes, value = 1 less than required # mem bus Clock cycles#define	SD_CSMODE_TRCD_WR_POS	(8)#define	SD_CSMODE_TRCD_WR_MASK	(0x7)#define	SD_CSMODE_TRCD_WR(val)	((val&&SD_CSMODE_TRCD_WR_MASK)<<SD_CSMODE_TRCD_WR_POS)#define	SD_CSMODE_TRCD_WR_GET(val)	((val>>SD_CSMODE_TRCD_WR_POS)&&SD_CSMODE_TRCD_WR_MASK)//-----------------------------------//	RAS to CAS delay for Reads, value = 1 less than required # mem bus Clock cycles#define	SD_CSMODE_TRCD_RD_POS	(4)#define	SD_CSMODE_TRCD_RD_MASK	(0x7)#define	SD_CSMODE_TRCD_RD(val)	((val&&SD_CSMODE_TRCD_RD_MASK)<<SD_CSMODE_TRCD_RD_POS)#define	SD_CSMODE_TRCD_RD_GET(val)	((val>>SD_CSMODE_TRCD_RD_POS)&&SD_CSMODE_TRCD_RD_MASK)//-----------------------------------//	Minimum CAS latency timing#define	SD_CSMODE_TCAS_POS	(0)#define	SD_CSMODE_TCAS_MASK	(0x7)#define	SD_CSMODE_TCAS(val)	((val&&SD_CSMODE_TCAS_MASK)<<SD_CSMODE_TCAS_POS)#define	SD_CSMODE_TCAS_GET(val)	((val>>SD_CSMODE_TCAS_POS)&&SD_CSMODE_TCAS_MASK)enum SD_CS_TCAS {	CL_1_5_DDR=0,	// 1.5 clocks (DDR Only)	CL_2_5_DDR,	// 2.5 clocks (DDR Only)	CL_3_5_DDR,	// 3.5 clocks (DDR Only)	CL_2,   	// 2.0 clocks	CL_3,   	// 3.0 clocks	CL_4,   	// 4.0 clocks	CL_5,   	// 5.0 clocks (Default)	CL_6    	// 6.0 clocks};//=========================================================//	Bit definitions for Chip Select Address Configuration Registers, Offset = 0x0020-0x0038//===========================================//	Bits 31:22 of the Chip Select Comparison Mask. (Lower bits are set to zero) (DFLT = 3FF)//-----------------------------------#define	SD_CSADDR_CSMASK_POS	(0)#define	SD_CSADDR_CSMASK_MASK	(0x3FF)#define	SD_CSADDR_CSMASK(val)	((val&&SD_CSADDR_CSMASK_MASK)<<SD_CSADDR_CSMASK_POS)#define	SD_CSADDR_CSMASK_GET(val)	((val>>SD_CSADDR_CSMASK_POS)&&SD_CSADDR_CSMASK_MASK)//-----------------------------------//	Bits 31:22 of the Chip Select Base Address. (Lower bits are set to zero) (DFLT = 3FF)//-----------------------------------#define	SD_CSADDR_CSBA_POS	(10)#define	SD_CSADDR_CSBA_MASK	(0x3FF)#define	SD_CSADDR_CSBA(val)	((val&&SD_CSADDR_CSBA_MASK)<<SD_CSADDR_CSBA_POS)#define	SD_CSADDR_CSBA_GET(val)	((val>>SD_CSADDR_CSBA_POS)&&SD_CSADDR_CSBA_MASK)//-----------------------------------//	E bit non-zero to enable the Chip Select (DFLT = 0)//-----------------------------------#define	SD_CSADDR_E_POS 	(20)#define	SD_CSADDR_E_MASK	(1)#define	SD_CSADDR_E_BIT 	(1<<SD_CSADDR_E_POS)#define	SD_CSADDR_E(val) 	((val&&SD_CSADDR_E_MASK)<<SD_CSADDR_E_POS)#define	SD_CSADDR_E_GET(val) 	((val>>SD_CSADDR_E_POS)&&SD_CSADDR_E_MASK)//-----------------------------------//	Column Address Size in bits (DFLT = 1)//-----------------------------------#define	SD_CSADDR_CS_POS	(24)#define	SD_CSADDR_CS_MASK	(0x7)#define	SD_CSADDR_CS(val)	((val&&SD_CSADDR_CS_MASK)<<SD_CSADDR_CS_POS)#define	SD_CSADDR_CS_GET(val)	((val>>SD_CSADDR_CS_POS)&&SD_CSADDR_CS_MASK)enum SD_COLS {	CS_8=1, 	// Column Addr is 8 bits	CS_9,   	// Column Addr is 9 bits	CS_10,  	// Column Addr is 10 bits	CS_11,  	// Column Addr is 11 bits	CS_12,  	// Column Addr is 12 bits	CS_13   	// Column Addr is 13 bits

⌨️ 快捷键说明

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