coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
dmc.h File Reference
#include <soc/cpu.h>
Include dependency graph for dmc.h:

Go to the source code of this file.

Data Structures

struct  exynos5_dmc
 
struct  exynos5_phy_control
 
struct  exynos5_tzasc
 
struct  mem_timings
 

Macros

#define DMC_INTERLEAVE_SIZE   0x1f
 
#define PAD_RETENTION_DRAM_COREBLK_VAL   0x10000000
 
#define CONCONTROL_DFI_INIT_START_SHIFT   28
 
#define CONCONTROL_RD_FETCH_SHIFT   12
 
#define CONCONTROL_RD_FETCH_MASK   (0x7 << CONCONTROL_RD_FETCH_SHIFT)
 
#define CONCONTROL_AREF_EN_SHIFT   5
 
#define PRECHCONFIG_TP_CNT_SHIFT   24
 
#define PWRDNCONFIG_DPWRDN_CYC_SHIFT   0
 
#define PWRDNCONFIG_DSREF_CYC_SHIFT   16
 
#define PHY_CON0_T_WRRDCMD_SHIFT   17
 
#define PHY_CON0_T_WRRDCMD_MASK   (0x7 << PHY_CON0_T_WRRDCMD_SHIFT)
 
#define PHY_CON0_CTRL_DDR_MODE_MASK   0x3
 
#define PHY_CON0_CTRL_DDR_MODE_SHIFT   11
 
#define PHY_CON1_RDLVL_RDDATA_ADJ_SHIFT   0
 
#define PHY_CON12_CTRL_START_POINT_SHIFT   24
 
#define PHY_CON12_CTRL_INC_SHIFT   16
 
#define PHY_CON12_CTRL_FORCE_SHIFT   8
 
#define PHY_CON12_CTRL_START_SHIFT   6
 
#define PHY_CON12_CTRL_START_MASK   (1 << PHY_CON12_CTRL_START_SHIFT)
 
#define PHY_CON12_CTRL_DLL_ON_SHIFT   5
 
#define PHY_CON12_CTRL_DLL_ON_MASK   (1 << PHY_CON12_CTRL_DLL_ON_SHIFT)
 
#define PHY_CON12_CTRL_REF_SHIFT   1
 
#define PHY_CON16_ZQ_MODE_DDS_SHIFT   24
 
#define PHY_CON16_ZQ_MODE_DDS_MASK   (0x7 << PHY_CON16_ZQ_MODE_DDS_SHIFT)
 
#define PHY_CON16_ZQ_MODE_TERM_SHIFT   21
 
#define PHY_CON16_ZQ_MODE_TERM_MASK   (0x7 << PHY_CON16_ZQ_MODE_TERM_SHIFT)
 
#define PHY_CON16_ZQ_MODE_NOTERM_MASK   (1 << 19)
 
#define PHY_CON42_CTRL_BSTLEN_SHIFT   8
 
#define PHY_CON42_CTRL_BSTLEN_MASK   (0xff << PHY_CON42_CTRL_BSTLEN_SHIFT)
 
#define PHY_CON42_CTRL_RDLAT_SHIFT   0
 
#define PHY_CON42_CTRL_RDLAT_MASK   (0x1f << PHY_CON42_CTRL_RDLAT_SHIFT)
 

Enumerations

enum  ddr_mode {
  DDR_MODE_DDR2 , DDR_MODE_DDR3 , DDR_MODE_LPDDR2 , DDR_MODE_LPDDR3 ,
  DDR_MODE_COUNT , DDR_MODE_DDR2 = 0x0 , DDR_MODE_DDR3 = 0x1 , DDR_MODE_LPDDR2 = 0x2 ,
  DDR_MODE_LPDDR3 = 0x3 , DDR_MODE_COUNT
}
 
enum  mem_manuf {
  MEM_MANUF_AUTODETECT , MEM_MANUF_ELPIDA = 0xe7b1da , MEM_MANUF_SAMSUNG = 0x5a5096 , MEM_MANUF_COUNT = 2 ,
  MEM_MANUF_AUTODETECT , MEM_MANUF_ELPIDA = 0xe7b1da , MEM_MANUF_SAMSUNG = 0x5a5096 , MEM_MANUF_COUNT = 2
}
 
enum  { MEM_TIMINGS_MSR_COUNT = 5 }
 

Functions

 check_member (exynos5_dmc, pmcnt3_ppc, 0xe140)
 
 check_member (exynos5_phy_control, phy_con42, 0xac)
 
struct mem_timingsget_mem_timings (void)
 Get the correct memory timings for our selected memory type and speed. More...
 

Variables

struct exynos5_dmc __packed
 
static struct exynos5_dmc *const exynos_drex0 = (void *)EXYNOS5420_DMC_DREXI_0
 
static struct exynos5_dmc *const exynos_drex1 = (void *)EXYNOS5420_DMC_DREXI_1
 
static struct exynos5_phy_control *const exynos_phy0_control
 
static struct exynos5_phy_control *const exynos_phy1_control
 
static struct exynos5_tzasc *const exynos_tzasc0
 
static struct exynos5_tzasc *const exynos_tzasc1
 

Macro Definition Documentation

◆ CONCONTROL_AREF_EN_SHIFT

#define CONCONTROL_AREF_EN_SHIFT   5

Definition at line 14 of file dmc.h.

◆ CONCONTROL_DFI_INIT_START_SHIFT

#define CONCONTROL_DFI_INIT_START_SHIFT   28

Definition at line 11 of file dmc.h.

◆ CONCONTROL_RD_FETCH_MASK

#define CONCONTROL_RD_FETCH_MASK   (0x7 << CONCONTROL_RD_FETCH_SHIFT)

Definition at line 13 of file dmc.h.

◆ CONCONTROL_RD_FETCH_SHIFT

#define CONCONTROL_RD_FETCH_SHIFT   12

Definition at line 12 of file dmc.h.

◆ DMC_INTERLEAVE_SIZE

#define DMC_INTERLEAVE_SIZE   0x1f

Definition at line 6 of file dmc.h.

◆ PAD_RETENTION_DRAM_COREBLK_VAL

#define PAD_RETENTION_DRAM_COREBLK_VAL   0x10000000

Definition at line 8 of file dmc.h.

◆ PHY_CON0_CTRL_DDR_MODE_MASK

#define PHY_CON0_CTRL_DDR_MODE_MASK   0x3

Definition at line 26 of file dmc.h.

◆ PHY_CON0_CTRL_DDR_MODE_SHIFT

#define PHY_CON0_CTRL_DDR_MODE_SHIFT   11

Definition at line 27 of file dmc.h.

◆ PHY_CON0_T_WRRDCMD_MASK

#define PHY_CON0_T_WRRDCMD_MASK   (0x7 << PHY_CON0_T_WRRDCMD_SHIFT)

Definition at line 25 of file dmc.h.

◆ PHY_CON0_T_WRRDCMD_SHIFT

#define PHY_CON0_T_WRRDCMD_SHIFT   17

Definition at line 24 of file dmc.h.

◆ PHY_CON12_CTRL_DLL_ON_MASK

#define PHY_CON12_CTRL_DLL_ON_MASK   (1 << PHY_CON12_CTRL_DLL_ON_SHIFT)

Definition at line 39 of file dmc.h.

◆ PHY_CON12_CTRL_DLL_ON_SHIFT

#define PHY_CON12_CTRL_DLL_ON_SHIFT   5

Definition at line 38 of file dmc.h.

◆ PHY_CON12_CTRL_FORCE_SHIFT

#define PHY_CON12_CTRL_FORCE_SHIFT   8

Definition at line 35 of file dmc.h.

◆ PHY_CON12_CTRL_INC_SHIFT

#define PHY_CON12_CTRL_INC_SHIFT   16

Definition at line 34 of file dmc.h.

◆ PHY_CON12_CTRL_REF_SHIFT

#define PHY_CON12_CTRL_REF_SHIFT   1

Definition at line 40 of file dmc.h.

◆ PHY_CON12_CTRL_START_MASK

#define PHY_CON12_CTRL_START_MASK   (1 << PHY_CON12_CTRL_START_SHIFT)

Definition at line 37 of file dmc.h.

◆ PHY_CON12_CTRL_START_POINT_SHIFT

#define PHY_CON12_CTRL_START_POINT_SHIFT   24

Definition at line 33 of file dmc.h.

◆ PHY_CON12_CTRL_START_SHIFT

#define PHY_CON12_CTRL_START_SHIFT   6

Definition at line 36 of file dmc.h.

◆ PHY_CON16_ZQ_MODE_DDS_MASK

#define PHY_CON16_ZQ_MODE_DDS_MASK   (0x7 << PHY_CON16_ZQ_MODE_DDS_SHIFT)

Definition at line 44 of file dmc.h.

◆ PHY_CON16_ZQ_MODE_DDS_SHIFT

#define PHY_CON16_ZQ_MODE_DDS_SHIFT   24

Definition at line 43 of file dmc.h.

◆ PHY_CON16_ZQ_MODE_NOTERM_MASK

#define PHY_CON16_ZQ_MODE_NOTERM_MASK   (1 << 19)

Definition at line 49 of file dmc.h.

◆ PHY_CON16_ZQ_MODE_TERM_MASK

#define PHY_CON16_ZQ_MODE_TERM_MASK   (0x7 << PHY_CON16_ZQ_MODE_TERM_SHIFT)

Definition at line 47 of file dmc.h.

◆ PHY_CON16_ZQ_MODE_TERM_SHIFT

#define PHY_CON16_ZQ_MODE_TERM_SHIFT   21

Definition at line 46 of file dmc.h.

◆ PHY_CON1_RDLVL_RDDATA_ADJ_SHIFT

#define PHY_CON1_RDLVL_RDDATA_ADJ_SHIFT   0

Definition at line 30 of file dmc.h.

◆ PHY_CON42_CTRL_BSTLEN_MASK

#define PHY_CON42_CTRL_BSTLEN_MASK   (0xff << PHY_CON42_CTRL_BSTLEN_SHIFT)

Definition at line 53 of file dmc.h.

◆ PHY_CON42_CTRL_BSTLEN_SHIFT

#define PHY_CON42_CTRL_BSTLEN_SHIFT   8

Definition at line 52 of file dmc.h.

◆ PHY_CON42_CTRL_RDLAT_MASK

#define PHY_CON42_CTRL_RDLAT_MASK   (0x1f << PHY_CON42_CTRL_RDLAT_SHIFT)

Definition at line 56 of file dmc.h.

◆ PHY_CON42_CTRL_RDLAT_SHIFT

#define PHY_CON42_CTRL_RDLAT_SHIFT   0

Definition at line 55 of file dmc.h.

◆ PRECHCONFIG_TP_CNT_SHIFT

#define PRECHCONFIG_TP_CNT_SHIFT   24

Definition at line 17 of file dmc.h.

◆ PWRDNCONFIG_DPWRDN_CYC_SHIFT

#define PWRDNCONFIG_DPWRDN_CYC_SHIFT   0

Definition at line 20 of file dmc.h.

◆ PWRDNCONFIG_DSREF_CYC_SHIFT

#define PWRDNCONFIG_DSREF_CYC_SHIFT   16

Definition at line 21 of file dmc.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
MEM_TIMINGS_MSR_COUNT 

Definition at line 299 of file dmc.h.

◆ ddr_mode

enum ddr_mode
Enumerator
DDR_MODE_DDR2 
DDR_MODE_DDR3 
DDR_MODE_LPDDR2 
DDR_MODE_LPDDR3 
DDR_MODE_COUNT 
DDR_MODE_DDR2 
DDR_MODE_DDR3 
DDR_MODE_LPDDR2 
DDR_MODE_LPDDR3 
DDR_MODE_COUNT 

Definition at line 266 of file dmc.h.

◆ mem_manuf

enum mem_manuf
Enumerator
MEM_MANUF_AUTODETECT 
MEM_MANUF_ELPIDA 
MEM_MANUF_SAMSUNG 
MEM_MANUF_COUNT 
MEM_MANUF_AUTODETECT 
MEM_MANUF_ELPIDA 
MEM_MANUF_SAMSUNG 
MEM_MANUF_COUNT 

Definition at line 291 of file dmc.h.

Function Documentation

◆ check_member() [1/2]

check_member ( exynos5_dmc  ,
pmcnt3_ppc  ,
0xe140   
)

◆ check_member() [2/2]

check_member ( exynos5_phy_control  ,
phy_con42  ,
0xac   
)

◆ get_mem_timings()

struct mem_timings* get_mem_timings ( void  )

Get the correct memory timings for our selected memory type and speed.

Returns
pointer to the memory timings that we should use

Definition at line 483 of file memory.c.

Referenced by setup_clock().

Here is the caller graph for this function:

Variable Documentation

◆ __packed

◆ exynos_drex0

struct exynos5_dmc* const exynos_drex0 = (void *)EXYNOS5420_DMC_DREXI_0
static

Definition at line 196 of file dmc.h.

Referenced by ddr3_mem_ctrl_init().

◆ exynos_drex1

struct exynos5_dmc* const exynos_drex1 = (void *)EXYNOS5420_DMC_DREXI_1
static

Definition at line 197 of file dmc.h.

Referenced by ddr3_mem_ctrl_init().

◆ exynos_phy0_control

struct exynos5_phy_control* const exynos_phy0_control
static
Initial value:
=
#define EXYNOS5_DMC_PHY0_BASE
Definition: cpu.h:19

Definition at line 247 of file dmc.h.

◆ exynos_phy1_control

struct exynos5_phy_control* const exynos_phy1_control
static
Initial value:
=
#define EXYNOS5_DMC_PHY1_BASE
Definition: cpu.h:20

Definition at line 249 of file dmc.h.

◆ exynos_tzasc0

struct exynos5_tzasc* const exynos_tzasc0
static
Initial value:
=
#define EXYNOS5420_DMC_TZASC_0
Definition: cpu.h:25

Definition at line 261 of file dmc.h.

Referenced by ddr3_mem_ctrl_init().

◆ exynos_tzasc1

struct exynos5_tzasc* const exynos_tzasc1
static
Initial value:
=
#define EXYNOS5420_DMC_TZASC_1
Definition: cpu.h:26

Definition at line 263 of file dmc.h.

Referenced by ddr3_mem_ctrl_init().