| /* | |
| * 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 */ |