uboot/arch/powerpc/cpu/mpc8220/dramSetup.h
<<
>>
Prefs
   1/*
   2 * dramSetup.h
   3 *
   4 * Prototypes, etc. for the Motorola MPC8220
   5 * embedded cpu chips
   6 *
   7 * 2004 (c) Freescale, Inc.
   8 * Author: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
   9 *
  10 * See file CREDITS for list of people who contributed to this
  11 * project.
  12 *
  13 * This program is free software; you can redistribute it and/or
  14 * modify it under the terms of the GNU General Public License as
  15 * published by the Free Software Foundation; either version 2 of
  16 * the License, or (at your option) any later version.
  17 *
  18 * This program is distributed in the hope that it will be useful,
  19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21 * GNU General Public License for more details.
  22 *
  23 * You should have received a copy of the GNU General Public License
  24 * along with this program; if not, write to the Free Software
  25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  26 * MA 02111-1307 USA
  27 */
  28#ifndef __INCdramsetuph
  29#define __INCdramsetuph
  30#ifndef __ASSEMBLY__
  31/* Where various things are in the SPD */
  32#define LOC_TYPE                    2
  33#define LOC_CHECKSUM                63
  34#define LOC_PHYS_BANKS              5
  35#define LOC_LOGICAL_BANKS           17
  36#define LOC_ROWS                    3
  37#define LOC_COLS                    4
  38#define LOC_WIDTH_HIGH              7
  39#define LOC_WIDTH_LOW               6
  40#define LOC_REFRESH                 12
  41#define LOC_BURSTS                  16
  42#define LOC_CAS                     18
  43#define LOC_CS                      19
  44#define LOC_WE                      20
  45#define LOC_Tcyc                    9
  46#define LOC_Tac                     10
  47#define LOC_Trp                     27
  48#define LOC_Trrd                    28
  49#define LOC_Trcd                    29
  50#define LOC_Tras                    30
  51#define LOC_Buffered                21
  52/* Types of memory the SPD can tell us about.
  53 * We can actually only use SDRAM and DDR.
  54 */
  55#define TYPE_DRAM                   1   /* plain old dram */
  56#define TYPE_EDO                    2   /* EDO dram */
  57#define TYPE_Nibble                 3   /* serial nibble memory */
  58#define TYPE_SDR                    4   /* SDRAM */
  59#define TYPE_ROM                    5   /*  */
  60#define TYPE_SGRRAM                 6   /* graphics memory */
  61#define TYPE_DDR                    7   /* DDR sdram */
  62#define SDRAMDS_MASK        0x3 /* each field is 2 bits wide */
  63#define SDRAMDS_SBE_SHIFT     8 /* Clock enable drive strength */
  64#define SDRAMDS_SBC_SHIFT     6 /* Clocks drive strength */
  65#define SDRAMDS_SBA_SHIFT     4 /* Address drive strength */
  66#define SDRAMDS_SBS_SHIFT     2 /* SDR DQS drive strength */
  67#define SDRAMDS_SBD_SHIFT     0 /* Data and DQS drive strength */
  68#define  DRIVE_STRENGTH_HIGH 0
  69#define  DRIVE_STRENGTH_MED  1
  70#define  DRIVE_STRENGTH_LOW  2
  71#define  DRIVE_STRENGTH_OFF  3
  72
  73#define OK      0
  74#define ERROR   -1
  75/* Structure to hold information about address muxing. */
  76        typedef struct tagMuxDescriptor {
  77        u8 MuxValue;
  78        u8 Columns;
  79        u8 Rows;
  80        u8 MoreColumns;
  81} muxdesc_t;
  82
  83/* Structure to define one physical bank of
  84 * memory.  Note that dram size in bytes is
  85 * (2^^(rows+columns)) * width * banks / 8
  86*/
  87typedef struct tagDramInfo {
  88        u32 size;               /* size in bytes */
  89        u32 base;               /* base address */
  90        u8 ordinal;             /* where in the memory map will we put this */
  91        u8 type;
  92        u8 rows;
  93        u8 cols;
  94        u16 width;              /* width of each chip in bits */
  95        u8 banks;               /* number of chips, aka logical banks */
  96        u8 bursts;              /* bit-encoded allowable burst length */
  97        u8 CAS;                 /* bit-encoded CAS latency values */
  98        u8 CS;                  /* bit-encoded CS latency values */
  99        u8 WE;                  /* bit-encoded WE latency values */
 100        u8 Trp;                 /* bit-encoded row precharge time */
 101        u8 Trcd;                /* bit-encoded RAS to CAS delay */
 102        u8 buffered;            /* buffered or not */
 103        u8 refresh;             /* encoded refresh rate */
 104} draminfo_t;
 105
 106#endif /* __ASSEMBLY__ */
 107
 108#endif /* __INCdramsetuph */
 109