| /* | 
 |  * dramSetup.h | 
 |  * | 
 |  * Prototypes, etc. for the Motorola MPC8220 | 
 |  * embedded cpu chips | 
 |  * | 
 |  * 2004 (c) Freescale, Inc. | 
 |  * Author: TsiChung Liew <Tsi-Chung.Liew@freescale.com> | 
 |  * | 
 |  * 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 | 
 |  */ | 
 | #ifndef __INCdramsetuph | 
 | #define __INCdramsetuph | 
 | #ifndef __ASSEMBLY__ | 
 | /* Where various things are in the SPD */ | 
 | #define LOC_TYPE                    2 | 
 | #define LOC_CHECKSUM                63 | 
 | #define LOC_PHYS_BANKS              5 | 
 | #define LOC_LOGICAL_BANKS           17 | 
 | #define LOC_ROWS                    3 | 
 | #define LOC_COLS                    4 | 
 | #define LOC_WIDTH_HIGH              7 | 
 | #define LOC_WIDTH_LOW               6 | 
 | #define LOC_REFRESH                 12 | 
 | #define LOC_BURSTS                  16 | 
 | #define LOC_CAS                     18 | 
 | #define LOC_CS                      19 | 
 | #define LOC_WE                      20 | 
 | #define LOC_Tcyc                    9 | 
 | #define LOC_Tac                     10 | 
 | #define LOC_Trp                     27 | 
 | #define LOC_Trrd                    28 | 
 | #define LOC_Trcd                    29 | 
 | #define LOC_Tras                    30 | 
 | #define LOC_Buffered                21 | 
 | /* Types of memory the SPD can tell us about. | 
 |  * We can actually only use SDRAM and DDR. | 
 |  */ | 
 | #define TYPE_DRAM                   1	/* plain old dram */ | 
 | #define TYPE_EDO                    2	/* EDO dram */ | 
 | #define TYPE_Nibble                 3	/* serial nibble memory */ | 
 | #define TYPE_SDR                    4	/* SDRAM */ | 
 | #define TYPE_ROM                    5	/*  */ | 
 | #define TYPE_SGRRAM                 6	/* graphics memory */ | 
 | #define TYPE_DDR                    7	/* DDR sdram */ | 
 | #define SDRAMDS_MASK        0x3	/* each field is 2 bits wide */ | 
 | #define SDRAMDS_SBE_SHIFT     8	/* Clock enable drive strength */ | 
 | #define SDRAMDS_SBC_SHIFT     6	/* Clocks drive strength */ | 
 | #define SDRAMDS_SBA_SHIFT     4	/* Address drive strength */ | 
 | #define SDRAMDS_SBS_SHIFT     2	/* SDR DQS drive strength */ | 
 | #define SDRAMDS_SBD_SHIFT     0	/* Data and DQS drive strength */ | 
 | #define  DRIVE_STRENGTH_HIGH 0 | 
 | #define  DRIVE_STRENGTH_MED  1 | 
 | #define  DRIVE_STRENGTH_LOW  2 | 
 | #define  DRIVE_STRENGTH_OFF  3 | 
 |  | 
 | #define OK      0 | 
 | #define ERROR   -1 | 
 | /* Structure to hold information about address muxing. */ | 
 | 	typedef struct tagMuxDescriptor { | 
 | 	u8 MuxValue; | 
 | 	u8 Columns; | 
 | 	u8 Rows; | 
 | 	u8 MoreColumns; | 
 | } muxdesc_t; | 
 |  | 
 | /* Structure to define one physical bank of | 
 |  * memory.  Note that dram size in bytes is | 
 |  * (2^^(rows+columns)) * width * banks / 8 | 
 | */ | 
 | typedef struct tagDramInfo { | 
 | 	u32 size;		/* size in bytes */ | 
 | 	u32 base;		/* base address */ | 
 | 	u8 ordinal;		/* where in the memory map will we put this */ | 
 | 	u8 type; | 
 | 	u8 rows; | 
 | 	u8 cols; | 
 | 	u16 width;		/* width of each chip in bits */ | 
 | 	u8 banks;		/* number of chips, aka logical banks */ | 
 | 	u8 bursts;		/* bit-encoded allowable burst length */ | 
 | 	u8 CAS;			/* bit-encoded CAS latency values */ | 
 | 	u8 CS;			/* bit-encoded CS latency values */ | 
 | 	u8 WE;			/* bit-encoded WE latency values */ | 
 | 	u8 Trp;			/* bit-encoded row precharge time */ | 
 | 	u8 Trcd;		/* bit-encoded RAS to CAS delay */ | 
 | 	u8 buffered;		/* buffered or not */ | 
 | 	u8 refresh;		/* encoded refresh rate */ | 
 | } draminfo_t; | 
 |  | 
 | #endif /* __ASSEMBLY__ */ | 
 |  | 
 | #endif /* __INCdramsetuph */ |