diff options
Diffstat (limited to 'drivers/memory/emif.h')
-rw-r--r-- | drivers/memory/emif.h | 130 |
1 files changed, 129 insertions, 1 deletions
diff --git a/drivers/memory/emif.h b/drivers/memory/emif.h index 692b2a864e7b..bfe08bae961a 100644 --- a/drivers/memory/emif.h +++ b/drivers/memory/emif.h | |||
@@ -19,6 +19,103 @@ | |||
19 | */ | 19 | */ |
20 | #define EMIF_MAX_NUM_FREQUENCIES 6 | 20 | #define EMIF_MAX_NUM_FREQUENCIES 6 |
21 | 21 | ||
22 | /* State of the core voltage */ | ||
23 | #define DDR_VOLTAGE_STABLE 0 | ||
24 | #define DDR_VOLTAGE_RAMPING 1 | ||
25 | |||
26 | /* Defines for timing De-rating */ | ||
27 | #define EMIF_NORMAL_TIMINGS 0 | ||
28 | #define EMIF_DERATED_TIMINGS 1 | ||
29 | |||
30 | /* Length of the forced read idle period in terms of cycles */ | ||
31 | #define EMIF_READ_IDLE_LEN_VAL 5 | ||
32 | |||
33 | /* | ||
34 | * forced read idle interval to be used when voltage | ||
35 | * is changed as part of DVFS/DPS - 1ms | ||
36 | */ | ||
37 | #define READ_IDLE_INTERVAL_DVFS (1*1000000) | ||
38 | |||
39 | /* | ||
40 | * Forced read idle interval to be used when voltage is stable | ||
41 | * 50us - or maximum value will do | ||
42 | */ | ||
43 | #define READ_IDLE_INTERVAL_NORMAL (50*1000000) | ||
44 | |||
45 | /* DLL calibration interval when voltage is NOT stable - 1us */ | ||
46 | #define DLL_CALIB_INTERVAL_DVFS (1*1000000) | ||
47 | |||
48 | #define DLL_CALIB_ACK_WAIT_VAL 5 | ||
49 | |||
50 | /* Interval between ZQCS commands - hw team recommended value */ | ||
51 | #define EMIF_ZQCS_INTERVAL_US (50*1000) | ||
52 | /* Enable ZQ Calibration on exiting Self-refresh */ | ||
53 | #define ZQ_SFEXITEN_ENABLE 1 | ||
54 | /* | ||
55 | * ZQ Calibration simultaneously on both chip-selects: | ||
56 | * Needs one calibration resistor per CS | ||
57 | */ | ||
58 | #define ZQ_DUALCALEN_DISABLE 0 | ||
59 | #define ZQ_DUALCALEN_ENABLE 1 | ||
60 | |||
61 | #define T_ZQCS_DEFAULT_NS 90 | ||
62 | #define T_ZQCL_DEFAULT_NS 360 | ||
63 | #define T_ZQINIT_DEFAULT_NS 1000 | ||
64 | |||
65 | /* DPD_EN */ | ||
66 | #define DPD_DISABLE 0 | ||
67 | #define DPD_ENABLE 1 | ||
68 | |||
69 | /* | ||
70 | * Default values for the low-power entry to be used if not provided by user. | ||
71 | * OMAP4/5 has a hw bug(i735) due to which this value can not be less than 512 | ||
72 | * Timeout values are in DDR clock 'cycles' and frequency threshold in Hz | ||
73 | */ | ||
74 | #define EMIF_LP_MODE_TIMEOUT_PERFORMANCE 2048 | ||
75 | #define EMIF_LP_MODE_TIMEOUT_POWER 512 | ||
76 | #define EMIF_LP_MODE_FREQ_THRESHOLD 400000000 | ||
77 | |||
78 | /* DDR_PHY_CTRL_1 values for EMIF4D - ATTILA PHY combination */ | ||
79 | #define EMIF_DDR_PHY_CTRL_1_BASE_VAL_ATTILAPHY 0x049FF000 | ||
80 | #define EMIF_DLL_SLAVE_DLY_CTRL_400_MHZ_ATTILAPHY 0x41 | ||
81 | #define EMIF_DLL_SLAVE_DLY_CTRL_200_MHZ_ATTILAPHY 0x80 | ||
82 | #define EMIF_DLL_SLAVE_DLY_CTRL_100_MHZ_AND_LESS_ATTILAPHY 0xFF | ||
83 | |||
84 | /* DDR_PHY_CTRL_1 values for EMIF4D5 INTELLIPHY combination */ | ||
85 | #define EMIF_DDR_PHY_CTRL_1_BASE_VAL_INTELLIPHY 0x0E084200 | ||
86 | #define EMIF_PHY_TOTAL_READ_LATENCY_INTELLIPHY_PS 10000 | ||
87 | |||
88 | /* TEMP_ALERT_CONFIG - corresponding to temp gradient 5 C/s */ | ||
89 | #define TEMP_ALERT_POLL_INTERVAL_DEFAULT_MS 360 | ||
90 | |||
91 | #define EMIF_T_CSTA 3 | ||
92 | #define EMIF_T_PDLL_UL 128 | ||
93 | |||
94 | /* External PHY control registers magic values */ | ||
95 | #define EMIF_EXT_PHY_CTRL_1_VAL 0x04020080 | ||
96 | #define EMIF_EXT_PHY_CTRL_5_VAL 0x04010040 | ||
97 | #define EMIF_EXT_PHY_CTRL_6_VAL 0x01004010 | ||
98 | #define EMIF_EXT_PHY_CTRL_7_VAL 0x00001004 | ||
99 | #define EMIF_EXT_PHY_CTRL_8_VAL 0x04010040 | ||
100 | #define EMIF_EXT_PHY_CTRL_9_VAL 0x01004010 | ||
101 | #define EMIF_EXT_PHY_CTRL_10_VAL 0x00001004 | ||
102 | #define EMIF_EXT_PHY_CTRL_11_VAL 0x00000000 | ||
103 | #define EMIF_EXT_PHY_CTRL_12_VAL 0x00000000 | ||
104 | #define EMIF_EXT_PHY_CTRL_13_VAL 0x00000000 | ||
105 | #define EMIF_EXT_PHY_CTRL_14_VAL 0x80080080 | ||
106 | #define EMIF_EXT_PHY_CTRL_15_VAL 0x00800800 | ||
107 | #define EMIF_EXT_PHY_CTRL_16_VAL 0x08102040 | ||
108 | #define EMIF_EXT_PHY_CTRL_17_VAL 0x00000001 | ||
109 | #define EMIF_EXT_PHY_CTRL_18_VAL 0x540A8150 | ||
110 | #define EMIF_EXT_PHY_CTRL_19_VAL 0xA81502A0 | ||
111 | #define EMIF_EXT_PHY_CTRL_20_VAL 0x002A0540 | ||
112 | #define EMIF_EXT_PHY_CTRL_21_VAL 0x00000000 | ||
113 | #define EMIF_EXT_PHY_CTRL_22_VAL 0x00000000 | ||
114 | #define EMIF_EXT_PHY_CTRL_23_VAL 0x00000000 | ||
115 | #define EMIF_EXT_PHY_CTRL_24_VAL 0x00000077 | ||
116 | |||
117 | #define EMIF_INTELLI_PHY_DQS_GATE_OPENING_DELAY_PS 1200 | ||
118 | |||
22 | /* Registers offset */ | 119 | /* Registers offset */ |
23 | #define EMIF_MODULE_ID_AND_REVISION 0x0000 | 120 | #define EMIF_MODULE_ID_AND_REVISION 0x0000 |
24 | #define EMIF_STATUS 0x0004 | 121 | #define EMIF_STATUS 0x0004 |
@@ -458,4 +555,35 @@ | |||
458 | #define READ_LATENCY_SHDW_SHIFT 0 | 555 | #define READ_LATENCY_SHDW_SHIFT 0 |
459 | #define READ_LATENCY_SHDW_MASK (0x1f << 0) | 556 | #define READ_LATENCY_SHDW_MASK (0x1f << 0) |
460 | 557 | ||
461 | #endif | 558 | #ifndef __ASSEMBLY__ |
559 | /* | ||
560 | * Structure containing shadow of important registers in EMIF | ||
561 | * The calculation function fills in this structure to be later used for | ||
562 | * initialisation and DVFS | ||
563 | */ | ||
564 | struct emif_regs { | ||
565 | u32 freq; | ||
566 | u32 ref_ctrl_shdw; | ||
567 | u32 ref_ctrl_shdw_derated; | ||
568 | u32 sdram_tim1_shdw; | ||
569 | u32 sdram_tim1_shdw_derated; | ||
570 | u32 sdram_tim2_shdw; | ||
571 | u32 sdram_tim3_shdw; | ||
572 | u32 sdram_tim3_shdw_derated; | ||
573 | u32 pwr_mgmt_ctrl_shdw; | ||
574 | union { | ||
575 | u32 read_idle_ctrl_shdw_normal; | ||
576 | u32 dll_calib_ctrl_shdw_normal; | ||
577 | }; | ||
578 | union { | ||
579 | u32 read_idle_ctrl_shdw_volt_ramp; | ||
580 | u32 dll_calib_ctrl_shdw_volt_ramp; | ||
581 | }; | ||
582 | |||
583 | u32 phy_ctrl_1_shdw; | ||
584 | u32 ext_phy_ctrl_2_shdw; | ||
585 | u32 ext_phy_ctrl_3_shdw; | ||
586 | u32 ext_phy_ctrl_4_shdw; | ||
587 | }; | ||
588 | #endif /* __ASSEMBLY__ */ | ||
589 | #endif /* __EMIF_H */ | ||