1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Defines for the EMIF driver 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2012 Texas Instruments, Inc. 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Benoit Cousson (b-cousson@ti.com) 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun #ifndef __EMIF_H 10*4882a593Smuzhiyun #define __EMIF_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun /* 13*4882a593Smuzhiyun * Maximum number of different frequencies supported by EMIF driver 14*4882a593Smuzhiyun * Determines the number of entries in the pointer array for register 15*4882a593Smuzhiyun * cache 16*4882a593Smuzhiyun */ 17*4882a593Smuzhiyun #define EMIF_MAX_NUM_FREQUENCIES 6 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun /* State of the core voltage */ 20*4882a593Smuzhiyun #define DDR_VOLTAGE_STABLE 0 21*4882a593Smuzhiyun #define DDR_VOLTAGE_RAMPING 1 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun /* Defines for timing De-rating */ 24*4882a593Smuzhiyun #define EMIF_NORMAL_TIMINGS 0 25*4882a593Smuzhiyun #define EMIF_DERATED_TIMINGS 1 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun /* Length of the forced read idle period in terms of cycles */ 28*4882a593Smuzhiyun #define EMIF_READ_IDLE_LEN_VAL 5 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* 31*4882a593Smuzhiyun * forced read idle interval to be used when voltage 32*4882a593Smuzhiyun * is changed as part of DVFS/DPS - 1ms 33*4882a593Smuzhiyun */ 34*4882a593Smuzhiyun #define READ_IDLE_INTERVAL_DVFS (1*1000000) 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun /* 37*4882a593Smuzhiyun * Forced read idle interval to be used when voltage is stable 38*4882a593Smuzhiyun * 50us - or maximum value will do 39*4882a593Smuzhiyun */ 40*4882a593Smuzhiyun #define READ_IDLE_INTERVAL_NORMAL (50*1000000) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun /* DLL calibration interval when voltage is NOT stable - 1us */ 43*4882a593Smuzhiyun #define DLL_CALIB_INTERVAL_DVFS (1*1000000) 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #define DLL_CALIB_ACK_WAIT_VAL 5 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun /* Interval between ZQCS commands - hw team recommended value */ 48*4882a593Smuzhiyun #define EMIF_ZQCS_INTERVAL_US (50*1000) 49*4882a593Smuzhiyun /* Enable ZQ Calibration on exiting Self-refresh */ 50*4882a593Smuzhiyun #define ZQ_SFEXITEN_ENABLE 1 51*4882a593Smuzhiyun /* 52*4882a593Smuzhiyun * ZQ Calibration simultaneously on both chip-selects: 53*4882a593Smuzhiyun * Needs one calibration resistor per CS 54*4882a593Smuzhiyun */ 55*4882a593Smuzhiyun #define ZQ_DUALCALEN_DISABLE 0 56*4882a593Smuzhiyun #define ZQ_DUALCALEN_ENABLE 1 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #define T_ZQCS_DEFAULT_NS 90 59*4882a593Smuzhiyun #define T_ZQCL_DEFAULT_NS 360 60*4882a593Smuzhiyun #define T_ZQINIT_DEFAULT_NS 1000 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun /* DPD_EN */ 63*4882a593Smuzhiyun #define DPD_DISABLE 0 64*4882a593Smuzhiyun #define DPD_ENABLE 1 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun /* 67*4882a593Smuzhiyun * Default values for the low-power entry to be used if not provided by user. 68*4882a593Smuzhiyun * OMAP4/5 has a hw bug(i735) due to which this value can not be less than 512 69*4882a593Smuzhiyun * Timeout values are in DDR clock 'cycles' and frequency threshold in Hz 70*4882a593Smuzhiyun */ 71*4882a593Smuzhiyun #define EMIF_LP_MODE_TIMEOUT_PERFORMANCE 2048 72*4882a593Smuzhiyun #define EMIF_LP_MODE_TIMEOUT_POWER 512 73*4882a593Smuzhiyun #define EMIF_LP_MODE_FREQ_THRESHOLD 400000000 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun /* DDR_PHY_CTRL_1 values for EMIF4D - ATTILA PHY combination */ 76*4882a593Smuzhiyun #define EMIF_DDR_PHY_CTRL_1_BASE_VAL_ATTILAPHY 0x049FF000 77*4882a593Smuzhiyun #define EMIF_DLL_SLAVE_DLY_CTRL_400_MHZ_ATTILAPHY 0x41 78*4882a593Smuzhiyun #define EMIF_DLL_SLAVE_DLY_CTRL_200_MHZ_ATTILAPHY 0x80 79*4882a593Smuzhiyun #define EMIF_DLL_SLAVE_DLY_CTRL_100_MHZ_AND_LESS_ATTILAPHY 0xFF 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun /* DDR_PHY_CTRL_1 values for EMIF4D5 INTELLIPHY combination */ 82*4882a593Smuzhiyun #define EMIF_DDR_PHY_CTRL_1_BASE_VAL_INTELLIPHY 0x0E084200 83*4882a593Smuzhiyun #define EMIF_PHY_TOTAL_READ_LATENCY_INTELLIPHY_PS 10000 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun /* TEMP_ALERT_CONFIG - corresponding to temp gradient 5 C/s */ 86*4882a593Smuzhiyun #define TEMP_ALERT_POLL_INTERVAL_DEFAULT_MS 360 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun #define EMIF_T_CSTA 3 89*4882a593Smuzhiyun #define EMIF_T_PDLL_UL 128 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun /* External PHY control registers magic values */ 92*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_1_VAL 0x04020080 93*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_5_VAL 0x04010040 94*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_6_VAL 0x01004010 95*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_7_VAL 0x00001004 96*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_8_VAL 0x04010040 97*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_9_VAL 0x01004010 98*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_10_VAL 0x00001004 99*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_11_VAL 0x00000000 100*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_12_VAL 0x00000000 101*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_13_VAL 0x00000000 102*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_14_VAL 0x80080080 103*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_15_VAL 0x00800800 104*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_16_VAL 0x08102040 105*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_17_VAL 0x00000001 106*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_18_VAL 0x540A8150 107*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_19_VAL 0xA81502A0 108*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_20_VAL 0x002A0540 109*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_21_VAL 0x00000000 110*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_22_VAL 0x00000000 111*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_23_VAL 0x00000000 112*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_24_VAL 0x00000077 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun #define EMIF_INTELLI_PHY_DQS_GATE_OPENING_DELAY_PS 1200 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun /* Registers offset */ 117*4882a593Smuzhiyun #define EMIF_MODULE_ID_AND_REVISION 0x0000 118*4882a593Smuzhiyun #define EMIF_STATUS 0x0004 119*4882a593Smuzhiyun #define EMIF_SDRAM_CONFIG 0x0008 120*4882a593Smuzhiyun #define EMIF_SDRAM_CONFIG_2 0x000c 121*4882a593Smuzhiyun #define EMIF_SDRAM_REFRESH_CONTROL 0x0010 122*4882a593Smuzhiyun #define EMIF_SDRAM_REFRESH_CTRL_SHDW 0x0014 123*4882a593Smuzhiyun #define EMIF_SDRAM_TIMING_1 0x0018 124*4882a593Smuzhiyun #define EMIF_SDRAM_TIMING_1_SHDW 0x001c 125*4882a593Smuzhiyun #define EMIF_SDRAM_TIMING_2 0x0020 126*4882a593Smuzhiyun #define EMIF_SDRAM_TIMING_2_SHDW 0x0024 127*4882a593Smuzhiyun #define EMIF_SDRAM_TIMING_3 0x0028 128*4882a593Smuzhiyun #define EMIF_SDRAM_TIMING_3_SHDW 0x002c 129*4882a593Smuzhiyun #define EMIF_LPDDR2_NVM_TIMING 0x0030 130*4882a593Smuzhiyun #define EMIF_LPDDR2_NVM_TIMING_SHDW 0x0034 131*4882a593Smuzhiyun #define EMIF_POWER_MANAGEMENT_CONTROL 0x0038 132*4882a593Smuzhiyun #define EMIF_POWER_MANAGEMENT_CTRL_SHDW 0x003c 133*4882a593Smuzhiyun #define EMIF_LPDDR2_MODE_REG_DATA 0x0040 134*4882a593Smuzhiyun #define EMIF_LPDDR2_MODE_REG_CONFIG 0x0050 135*4882a593Smuzhiyun #define EMIF_OCP_CONFIG 0x0054 136*4882a593Smuzhiyun #define EMIF_OCP_CONFIG_VALUE_1 0x0058 137*4882a593Smuzhiyun #define EMIF_OCP_CONFIG_VALUE_2 0x005c 138*4882a593Smuzhiyun #define EMIF_IODFT_TEST_LOGIC_GLOBAL_CONTROL 0x0060 139*4882a593Smuzhiyun #define EMIF_IODFT_TEST_LOGIC_CTRL_MISR_RESULT 0x0064 140*4882a593Smuzhiyun #define EMIF_IODFT_TEST_LOGIC_ADDRESS_MISR_RESULT 0x0068 141*4882a593Smuzhiyun #define EMIF_IODFT_TEST_LOGIC_DATA_MISR_RESULT_1 0x006c 142*4882a593Smuzhiyun #define EMIF_IODFT_TEST_LOGIC_DATA_MISR_RESULT_2 0x0070 143*4882a593Smuzhiyun #define EMIF_IODFT_TEST_LOGIC_DATA_MISR_RESULT_3 0x0074 144*4882a593Smuzhiyun #define EMIF_PERFORMANCE_COUNTER_1 0x0080 145*4882a593Smuzhiyun #define EMIF_PERFORMANCE_COUNTER_2 0x0084 146*4882a593Smuzhiyun #define EMIF_PERFORMANCE_COUNTER_CONFIG 0x0088 147*4882a593Smuzhiyun #define EMIF_PERFORMANCE_COUNTER_MASTER_REGION_SELECT 0x008c 148*4882a593Smuzhiyun #define EMIF_PERFORMANCE_COUNTER_TIME 0x0090 149*4882a593Smuzhiyun #define EMIF_MISC_REG 0x0094 150*4882a593Smuzhiyun #define EMIF_DLL_CALIB_CTRL 0x0098 151*4882a593Smuzhiyun #define EMIF_DLL_CALIB_CTRL_SHDW 0x009c 152*4882a593Smuzhiyun #define EMIF_END_OF_INTERRUPT 0x00a0 153*4882a593Smuzhiyun #define EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS 0x00a4 154*4882a593Smuzhiyun #define EMIF_LL_OCP_INTERRUPT_RAW_STATUS 0x00a8 155*4882a593Smuzhiyun #define EMIF_SYSTEM_OCP_INTERRUPT_STATUS 0x00ac 156*4882a593Smuzhiyun #define EMIF_LL_OCP_INTERRUPT_STATUS 0x00b0 157*4882a593Smuzhiyun #define EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_SET 0x00b4 158*4882a593Smuzhiyun #define EMIF_LL_OCP_INTERRUPT_ENABLE_SET 0x00b8 159*4882a593Smuzhiyun #define EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_CLEAR 0x00bc 160*4882a593Smuzhiyun #define EMIF_LL_OCP_INTERRUPT_ENABLE_CLEAR 0x00c0 161*4882a593Smuzhiyun #define EMIF_SDRAM_OUTPUT_IMPEDANCE_CALIBRATION_CONFIG 0x00c8 162*4882a593Smuzhiyun #define EMIF_TEMPERATURE_ALERT_CONFIG 0x00cc 163*4882a593Smuzhiyun #define EMIF_OCP_ERROR_LOG 0x00d0 164*4882a593Smuzhiyun #define EMIF_READ_WRITE_LEVELING_RAMP_WINDOW 0x00d4 165*4882a593Smuzhiyun #define EMIF_READ_WRITE_LEVELING_RAMP_CONTROL 0x00d8 166*4882a593Smuzhiyun #define EMIF_READ_WRITE_LEVELING_CONTROL 0x00dc 167*4882a593Smuzhiyun #define EMIF_DDR_PHY_CTRL_1 0x00e4 168*4882a593Smuzhiyun #define EMIF_DDR_PHY_CTRL_1_SHDW 0x00e8 169*4882a593Smuzhiyun #define EMIF_DDR_PHY_CTRL_2 0x00ec 170*4882a593Smuzhiyun #define EMIF_PRIORITY_TO_CLASS_OF_SERVICE_MAPPING 0x0100 171*4882a593Smuzhiyun #define EMIF_CONNECTION_ID_TO_CLASS_OF_SERVICE_1_MAPPING 0x0104 172*4882a593Smuzhiyun #define EMIF_CONNECTION_ID_TO_CLASS_OF_SERVICE_2_MAPPING 0x0108 173*4882a593Smuzhiyun #define EMIF_READ_WRITE_EXECUTION_THRESHOLD 0x0120 174*4882a593Smuzhiyun #define EMIF_COS_CONFIG 0x0124 175*4882a593Smuzhiyun #define EMIF_PHY_STATUS_1 0x0140 176*4882a593Smuzhiyun #define EMIF_PHY_STATUS_2 0x0144 177*4882a593Smuzhiyun #define EMIF_PHY_STATUS_3 0x0148 178*4882a593Smuzhiyun #define EMIF_PHY_STATUS_4 0x014c 179*4882a593Smuzhiyun #define EMIF_PHY_STATUS_5 0x0150 180*4882a593Smuzhiyun #define EMIF_PHY_STATUS_6 0x0154 181*4882a593Smuzhiyun #define EMIF_PHY_STATUS_7 0x0158 182*4882a593Smuzhiyun #define EMIF_PHY_STATUS_8 0x015c 183*4882a593Smuzhiyun #define EMIF_PHY_STATUS_9 0x0160 184*4882a593Smuzhiyun #define EMIF_PHY_STATUS_10 0x0164 185*4882a593Smuzhiyun #define EMIF_PHY_STATUS_11 0x0168 186*4882a593Smuzhiyun #define EMIF_PHY_STATUS_12 0x016c 187*4882a593Smuzhiyun #define EMIF_PHY_STATUS_13 0x0170 188*4882a593Smuzhiyun #define EMIF_PHY_STATUS_14 0x0174 189*4882a593Smuzhiyun #define EMIF_PHY_STATUS_15 0x0178 190*4882a593Smuzhiyun #define EMIF_PHY_STATUS_16 0x017c 191*4882a593Smuzhiyun #define EMIF_PHY_STATUS_17 0x0180 192*4882a593Smuzhiyun #define EMIF_PHY_STATUS_18 0x0184 193*4882a593Smuzhiyun #define EMIF_PHY_STATUS_19 0x0188 194*4882a593Smuzhiyun #define EMIF_PHY_STATUS_20 0x018c 195*4882a593Smuzhiyun #define EMIF_PHY_STATUS_21 0x0190 196*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_1 0x0200 197*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_1_SHDW 0x0204 198*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_2 0x0208 199*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_2_SHDW 0x020c 200*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_3 0x0210 201*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_3_SHDW 0x0214 202*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_4 0x0218 203*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_4_SHDW 0x021c 204*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_5 0x0220 205*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_5_SHDW 0x0224 206*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_6 0x0228 207*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_6_SHDW 0x022c 208*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_7 0x0230 209*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_7_SHDW 0x0234 210*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_8 0x0238 211*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_8_SHDW 0x023c 212*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_9 0x0240 213*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_9_SHDW 0x0244 214*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_10 0x0248 215*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_10_SHDW 0x024c 216*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_11 0x0250 217*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_11_SHDW 0x0254 218*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_12 0x0258 219*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_12_SHDW 0x025c 220*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_13 0x0260 221*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_13_SHDW 0x0264 222*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_14 0x0268 223*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_14_SHDW 0x026c 224*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_15 0x0270 225*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_15_SHDW 0x0274 226*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_16 0x0278 227*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_16_SHDW 0x027c 228*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_17 0x0280 229*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_17_SHDW 0x0284 230*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_18 0x0288 231*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_18_SHDW 0x028c 232*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_19 0x0290 233*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_19_SHDW 0x0294 234*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_20 0x0298 235*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_20_SHDW 0x029c 236*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_21 0x02a0 237*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_21_SHDW 0x02a4 238*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_22 0x02a8 239*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_22_SHDW 0x02ac 240*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_23 0x02b0 241*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_23_SHDW 0x02b4 242*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_24 0x02b8 243*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_24_SHDW 0x02bc 244*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_25 0x02c0 245*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_25_SHDW 0x02c4 246*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_26 0x02c8 247*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_26_SHDW 0x02cc 248*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_27 0x02d0 249*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_27_SHDW 0x02d4 250*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_28 0x02d8 251*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_28_SHDW 0x02dc 252*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_29 0x02e0 253*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_29_SHDW 0x02e4 254*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_30 0x02e8 255*4882a593Smuzhiyun #define EMIF_EXT_PHY_CTRL_30_SHDW 0x02ec 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun /* Registers shifts and masks */ 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun /* EMIF_MODULE_ID_AND_REVISION */ 260*4882a593Smuzhiyun #define SCHEME_SHIFT 30 261*4882a593Smuzhiyun #define SCHEME_MASK (0x3 << 30) 262*4882a593Smuzhiyun #define MODULE_ID_SHIFT 16 263*4882a593Smuzhiyun #define MODULE_ID_MASK (0xfff << 16) 264*4882a593Smuzhiyun #define RTL_VERSION_SHIFT 11 265*4882a593Smuzhiyun #define RTL_VERSION_MASK (0x1f << 11) 266*4882a593Smuzhiyun #define MAJOR_REVISION_SHIFT 8 267*4882a593Smuzhiyun #define MAJOR_REVISION_MASK (0x7 << 8) 268*4882a593Smuzhiyun #define MINOR_REVISION_SHIFT 0 269*4882a593Smuzhiyun #define MINOR_REVISION_MASK (0x3f << 0) 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun /* STATUS */ 272*4882a593Smuzhiyun #define BE_SHIFT 31 273*4882a593Smuzhiyun #define BE_MASK (1 << 31) 274*4882a593Smuzhiyun #define DUAL_CLK_MODE_SHIFT 30 275*4882a593Smuzhiyun #define DUAL_CLK_MODE_MASK (1 << 30) 276*4882a593Smuzhiyun #define FAST_INIT_SHIFT 29 277*4882a593Smuzhiyun #define FAST_INIT_MASK (1 << 29) 278*4882a593Smuzhiyun #define RDLVLGATETO_SHIFT 6 279*4882a593Smuzhiyun #define RDLVLGATETO_MASK (1 << 6) 280*4882a593Smuzhiyun #define RDLVLTO_SHIFT 5 281*4882a593Smuzhiyun #define RDLVLTO_MASK (1 << 5) 282*4882a593Smuzhiyun #define WRLVLTO_SHIFT 4 283*4882a593Smuzhiyun #define WRLVLTO_MASK (1 << 4) 284*4882a593Smuzhiyun #define PHY_DLL_READY_SHIFT 2 285*4882a593Smuzhiyun #define PHY_DLL_READY_MASK (1 << 2) 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun /* SDRAM_CONFIG */ 288*4882a593Smuzhiyun #define SDRAM_TYPE_SHIFT 29 289*4882a593Smuzhiyun #define SDRAM_TYPE_MASK (0x7 << 29) 290*4882a593Smuzhiyun #define IBANK_POS_SHIFT 27 291*4882a593Smuzhiyun #define IBANK_POS_MASK (0x3 << 27) 292*4882a593Smuzhiyun #define DDR_TERM_SHIFT 24 293*4882a593Smuzhiyun #define DDR_TERM_MASK (0x7 << 24) 294*4882a593Smuzhiyun #define DDR2_DDQS_SHIFT 23 295*4882a593Smuzhiyun #define DDR2_DDQS_MASK (1 << 23) 296*4882a593Smuzhiyun #define DYN_ODT_SHIFT 21 297*4882a593Smuzhiyun #define DYN_ODT_MASK (0x3 << 21) 298*4882a593Smuzhiyun #define DDR_DISABLE_DLL_SHIFT 20 299*4882a593Smuzhiyun #define DDR_DISABLE_DLL_MASK (1 << 20) 300*4882a593Smuzhiyun #define SDRAM_DRIVE_SHIFT 18 301*4882a593Smuzhiyun #define SDRAM_DRIVE_MASK (0x3 << 18) 302*4882a593Smuzhiyun #define CWL_SHIFT 16 303*4882a593Smuzhiyun #define CWL_MASK (0x3 << 16) 304*4882a593Smuzhiyun #define NARROW_MODE_SHIFT 14 305*4882a593Smuzhiyun #define NARROW_MODE_MASK (0x3 << 14) 306*4882a593Smuzhiyun #define CL_SHIFT 10 307*4882a593Smuzhiyun #define CL_MASK (0xf << 10) 308*4882a593Smuzhiyun #define ROWSIZE_SHIFT 7 309*4882a593Smuzhiyun #define ROWSIZE_MASK (0x7 << 7) 310*4882a593Smuzhiyun #define IBANK_SHIFT 4 311*4882a593Smuzhiyun #define IBANK_MASK (0x7 << 4) 312*4882a593Smuzhiyun #define EBANK_SHIFT 3 313*4882a593Smuzhiyun #define EBANK_MASK (1 << 3) 314*4882a593Smuzhiyun #define PAGESIZE_SHIFT 0 315*4882a593Smuzhiyun #define PAGESIZE_MASK (0x7 << 0) 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun /* SDRAM_CONFIG_2 */ 318*4882a593Smuzhiyun #define CS1NVMEN_SHIFT 30 319*4882a593Smuzhiyun #define CS1NVMEN_MASK (1 << 30) 320*4882a593Smuzhiyun #define EBANK_POS_SHIFT 27 321*4882a593Smuzhiyun #define EBANK_POS_MASK (1 << 27) 322*4882a593Smuzhiyun #define RDBNUM_SHIFT 4 323*4882a593Smuzhiyun #define RDBNUM_MASK (0x3 << 4) 324*4882a593Smuzhiyun #define RDBSIZE_SHIFT 0 325*4882a593Smuzhiyun #define RDBSIZE_MASK (0x7 << 0) 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun /* SDRAM_REFRESH_CONTROL */ 328*4882a593Smuzhiyun #define INITREF_DIS_SHIFT 31 329*4882a593Smuzhiyun #define INITREF_DIS_MASK (1 << 31) 330*4882a593Smuzhiyun #define SRT_SHIFT 29 331*4882a593Smuzhiyun #define SRT_MASK (1 << 29) 332*4882a593Smuzhiyun #define ASR_SHIFT 28 333*4882a593Smuzhiyun #define ASR_MASK (1 << 28) 334*4882a593Smuzhiyun #define PASR_SHIFT 24 335*4882a593Smuzhiyun #define PASR_MASK (0x7 << 24) 336*4882a593Smuzhiyun #define REFRESH_RATE_SHIFT 0 337*4882a593Smuzhiyun #define REFRESH_RATE_MASK (0xffff << 0) 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun /* SDRAM_TIMING_1 */ 340*4882a593Smuzhiyun #define T_RTW_SHIFT 29 341*4882a593Smuzhiyun #define T_RTW_MASK (0x7 << 29) 342*4882a593Smuzhiyun #define T_RP_SHIFT 25 343*4882a593Smuzhiyun #define T_RP_MASK (0xf << 25) 344*4882a593Smuzhiyun #define T_RCD_SHIFT 21 345*4882a593Smuzhiyun #define T_RCD_MASK (0xf << 21) 346*4882a593Smuzhiyun #define T_WR_SHIFT 17 347*4882a593Smuzhiyun #define T_WR_MASK (0xf << 17) 348*4882a593Smuzhiyun #define T_RAS_SHIFT 12 349*4882a593Smuzhiyun #define T_RAS_MASK (0x1f << 12) 350*4882a593Smuzhiyun #define T_RC_SHIFT 6 351*4882a593Smuzhiyun #define T_RC_MASK (0x3f << 6) 352*4882a593Smuzhiyun #define T_RRD_SHIFT 3 353*4882a593Smuzhiyun #define T_RRD_MASK (0x7 << 3) 354*4882a593Smuzhiyun #define T_WTR_SHIFT 0 355*4882a593Smuzhiyun #define T_WTR_MASK (0x7 << 0) 356*4882a593Smuzhiyun 357*4882a593Smuzhiyun /* SDRAM_TIMING_2 */ 358*4882a593Smuzhiyun #define T_XP_SHIFT 28 359*4882a593Smuzhiyun #define T_XP_MASK (0x7 << 28) 360*4882a593Smuzhiyun #define T_ODT_SHIFT 25 361*4882a593Smuzhiyun #define T_ODT_MASK (0x7 << 25) 362*4882a593Smuzhiyun #define T_XSNR_SHIFT 16 363*4882a593Smuzhiyun #define T_XSNR_MASK (0x1ff << 16) 364*4882a593Smuzhiyun #define T_XSRD_SHIFT 6 365*4882a593Smuzhiyun #define T_XSRD_MASK (0x3ff << 6) 366*4882a593Smuzhiyun #define T_RTP_SHIFT 3 367*4882a593Smuzhiyun #define T_RTP_MASK (0x7 << 3) 368*4882a593Smuzhiyun #define T_CKE_SHIFT 0 369*4882a593Smuzhiyun #define T_CKE_MASK (0x7 << 0) 370*4882a593Smuzhiyun 371*4882a593Smuzhiyun /* SDRAM_TIMING_3 */ 372*4882a593Smuzhiyun #define T_PDLL_UL_SHIFT 28 373*4882a593Smuzhiyun #define T_PDLL_UL_MASK (0xf << 28) 374*4882a593Smuzhiyun #define T_CSTA_SHIFT 24 375*4882a593Smuzhiyun #define T_CSTA_MASK (0xf << 24) 376*4882a593Smuzhiyun #define T_CKESR_SHIFT 21 377*4882a593Smuzhiyun #define T_CKESR_MASK (0x7 << 21) 378*4882a593Smuzhiyun #define ZQ_ZQCS_SHIFT 15 379*4882a593Smuzhiyun #define ZQ_ZQCS_MASK (0x3f << 15) 380*4882a593Smuzhiyun #define T_TDQSCKMAX_SHIFT 13 381*4882a593Smuzhiyun #define T_TDQSCKMAX_MASK (0x3 << 13) 382*4882a593Smuzhiyun #define T_RFC_SHIFT 4 383*4882a593Smuzhiyun #define T_RFC_MASK (0x1ff << 4) 384*4882a593Smuzhiyun #define T_RAS_MAX_SHIFT 0 385*4882a593Smuzhiyun #define T_RAS_MAX_MASK (0xf << 0) 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun /* POWER_MANAGEMENT_CONTROL */ 388*4882a593Smuzhiyun #define PD_TIM_SHIFT 12 389*4882a593Smuzhiyun #define PD_TIM_MASK (0xf << 12) 390*4882a593Smuzhiyun #define DPD_EN_SHIFT 11 391*4882a593Smuzhiyun #define DPD_EN_MASK (1 << 11) 392*4882a593Smuzhiyun #define LP_MODE_SHIFT 8 393*4882a593Smuzhiyun #define LP_MODE_MASK (0x7 << 8) 394*4882a593Smuzhiyun #define SR_TIM_SHIFT 4 395*4882a593Smuzhiyun #define SR_TIM_MASK (0xf << 4) 396*4882a593Smuzhiyun #define CS_TIM_SHIFT 0 397*4882a593Smuzhiyun #define CS_TIM_MASK (0xf << 0) 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun /* LPDDR2_MODE_REG_DATA */ 400*4882a593Smuzhiyun #define VALUE_0_SHIFT 0 401*4882a593Smuzhiyun #define VALUE_0_MASK (0x7f << 0) 402*4882a593Smuzhiyun 403*4882a593Smuzhiyun /* LPDDR2_MODE_REG_CONFIG */ 404*4882a593Smuzhiyun #define CS_SHIFT 31 405*4882a593Smuzhiyun #define CS_MASK (1 << 31) 406*4882a593Smuzhiyun #define REFRESH_EN_SHIFT 30 407*4882a593Smuzhiyun #define REFRESH_EN_MASK (1 << 30) 408*4882a593Smuzhiyun #define ADDRESS_SHIFT 0 409*4882a593Smuzhiyun #define ADDRESS_MASK (0xff << 0) 410*4882a593Smuzhiyun 411*4882a593Smuzhiyun /* OCP_CONFIG */ 412*4882a593Smuzhiyun #define SYS_THRESH_MAX_SHIFT 24 413*4882a593Smuzhiyun #define SYS_THRESH_MAX_MASK (0xf << 24) 414*4882a593Smuzhiyun #define MPU_THRESH_MAX_SHIFT 20 415*4882a593Smuzhiyun #define MPU_THRESH_MAX_MASK (0xf << 20) 416*4882a593Smuzhiyun #define LL_THRESH_MAX_SHIFT 16 417*4882a593Smuzhiyun #define LL_THRESH_MAX_MASK (0xf << 16) 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun /* PERFORMANCE_COUNTER_1 */ 420*4882a593Smuzhiyun #define COUNTER1_SHIFT 0 421*4882a593Smuzhiyun #define COUNTER1_MASK (0xffffffff << 0) 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun /* PERFORMANCE_COUNTER_2 */ 424*4882a593Smuzhiyun #define COUNTER2_SHIFT 0 425*4882a593Smuzhiyun #define COUNTER2_MASK (0xffffffff << 0) 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun /* PERFORMANCE_COUNTER_CONFIG */ 428*4882a593Smuzhiyun #define CNTR2_MCONNID_EN_SHIFT 31 429*4882a593Smuzhiyun #define CNTR2_MCONNID_EN_MASK (1 << 31) 430*4882a593Smuzhiyun #define CNTR2_REGION_EN_SHIFT 30 431*4882a593Smuzhiyun #define CNTR2_REGION_EN_MASK (1 << 30) 432*4882a593Smuzhiyun #define CNTR2_CFG_SHIFT 16 433*4882a593Smuzhiyun #define CNTR2_CFG_MASK (0xf << 16) 434*4882a593Smuzhiyun #define CNTR1_MCONNID_EN_SHIFT 15 435*4882a593Smuzhiyun #define CNTR1_MCONNID_EN_MASK (1 << 15) 436*4882a593Smuzhiyun #define CNTR1_REGION_EN_SHIFT 14 437*4882a593Smuzhiyun #define CNTR1_REGION_EN_MASK (1 << 14) 438*4882a593Smuzhiyun #define CNTR1_CFG_SHIFT 0 439*4882a593Smuzhiyun #define CNTR1_CFG_MASK (0xf << 0) 440*4882a593Smuzhiyun 441*4882a593Smuzhiyun /* PERFORMANCE_COUNTER_MASTER_REGION_SELECT */ 442*4882a593Smuzhiyun #define MCONNID2_SHIFT 24 443*4882a593Smuzhiyun #define MCONNID2_MASK (0xff << 24) 444*4882a593Smuzhiyun #define REGION_SEL2_SHIFT 16 445*4882a593Smuzhiyun #define REGION_SEL2_MASK (0x3 << 16) 446*4882a593Smuzhiyun #define MCONNID1_SHIFT 8 447*4882a593Smuzhiyun #define MCONNID1_MASK (0xff << 8) 448*4882a593Smuzhiyun #define REGION_SEL1_SHIFT 0 449*4882a593Smuzhiyun #define REGION_SEL1_MASK (0x3 << 0) 450*4882a593Smuzhiyun 451*4882a593Smuzhiyun /* PERFORMANCE_COUNTER_TIME */ 452*4882a593Smuzhiyun #define TOTAL_TIME_SHIFT 0 453*4882a593Smuzhiyun #define TOTAL_TIME_MASK (0xffffffff << 0) 454*4882a593Smuzhiyun 455*4882a593Smuzhiyun /* DLL_CALIB_CTRL */ 456*4882a593Smuzhiyun #define ACK_WAIT_SHIFT 16 457*4882a593Smuzhiyun #define ACK_WAIT_MASK (0xf << 16) 458*4882a593Smuzhiyun #define DLL_CALIB_INTERVAL_SHIFT 0 459*4882a593Smuzhiyun #define DLL_CALIB_INTERVAL_MASK (0x1ff << 0) 460*4882a593Smuzhiyun 461*4882a593Smuzhiyun /* END_OF_INTERRUPT */ 462*4882a593Smuzhiyun #define EOI_SHIFT 0 463*4882a593Smuzhiyun #define EOI_MASK (1 << 0) 464*4882a593Smuzhiyun 465*4882a593Smuzhiyun /* SYSTEM_OCP_INTERRUPT_RAW_STATUS */ 466*4882a593Smuzhiyun #define DNV_SYS_SHIFT 2 467*4882a593Smuzhiyun #define DNV_SYS_MASK (1 << 2) 468*4882a593Smuzhiyun #define TA_SYS_SHIFT 1 469*4882a593Smuzhiyun #define TA_SYS_MASK (1 << 1) 470*4882a593Smuzhiyun #define ERR_SYS_SHIFT 0 471*4882a593Smuzhiyun #define ERR_SYS_MASK (1 << 0) 472*4882a593Smuzhiyun 473*4882a593Smuzhiyun /* LOW_LATENCY_OCP_INTERRUPT_RAW_STATUS */ 474*4882a593Smuzhiyun #define DNV_LL_SHIFT 2 475*4882a593Smuzhiyun #define DNV_LL_MASK (1 << 2) 476*4882a593Smuzhiyun #define TA_LL_SHIFT 1 477*4882a593Smuzhiyun #define TA_LL_MASK (1 << 1) 478*4882a593Smuzhiyun #define ERR_LL_SHIFT 0 479*4882a593Smuzhiyun #define ERR_LL_MASK (1 << 0) 480*4882a593Smuzhiyun 481*4882a593Smuzhiyun /* SYSTEM_OCP_INTERRUPT_ENABLE_SET */ 482*4882a593Smuzhiyun #define EN_DNV_SYS_SHIFT 2 483*4882a593Smuzhiyun #define EN_DNV_SYS_MASK (1 << 2) 484*4882a593Smuzhiyun #define EN_TA_SYS_SHIFT 1 485*4882a593Smuzhiyun #define EN_TA_SYS_MASK (1 << 1) 486*4882a593Smuzhiyun #define EN_ERR_SYS_SHIFT 0 487*4882a593Smuzhiyun #define EN_ERR_SYS_MASK (1 << 0) 488*4882a593Smuzhiyun 489*4882a593Smuzhiyun /* LOW_LATENCY_OCP_INTERRUPT_ENABLE_SET */ 490*4882a593Smuzhiyun #define EN_DNV_LL_SHIFT 2 491*4882a593Smuzhiyun #define EN_DNV_LL_MASK (1 << 2) 492*4882a593Smuzhiyun #define EN_TA_LL_SHIFT 1 493*4882a593Smuzhiyun #define EN_TA_LL_MASK (1 << 1) 494*4882a593Smuzhiyun #define EN_ERR_LL_SHIFT 0 495*4882a593Smuzhiyun #define EN_ERR_LL_MASK (1 << 0) 496*4882a593Smuzhiyun 497*4882a593Smuzhiyun /* SDRAM_OUTPUT_IMPEDANCE_CALIBRATION_CONFIG */ 498*4882a593Smuzhiyun #define ZQ_CS1EN_SHIFT 31 499*4882a593Smuzhiyun #define ZQ_CS1EN_MASK (1 << 31) 500*4882a593Smuzhiyun #define ZQ_CS0EN_SHIFT 30 501*4882a593Smuzhiyun #define ZQ_CS0EN_MASK (1 << 30) 502*4882a593Smuzhiyun #define ZQ_DUALCALEN_SHIFT 29 503*4882a593Smuzhiyun #define ZQ_DUALCALEN_MASK (1 << 29) 504*4882a593Smuzhiyun #define ZQ_SFEXITEN_SHIFT 28 505*4882a593Smuzhiyun #define ZQ_SFEXITEN_MASK (1 << 28) 506*4882a593Smuzhiyun #define ZQ_ZQINIT_MULT_SHIFT 18 507*4882a593Smuzhiyun #define ZQ_ZQINIT_MULT_MASK (0x3 << 18) 508*4882a593Smuzhiyun #define ZQ_ZQCL_MULT_SHIFT 16 509*4882a593Smuzhiyun #define ZQ_ZQCL_MULT_MASK (0x3 << 16) 510*4882a593Smuzhiyun #define ZQ_REFINTERVAL_SHIFT 0 511*4882a593Smuzhiyun #define ZQ_REFINTERVAL_MASK (0xffff << 0) 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun /* TEMPERATURE_ALERT_CONFIG */ 514*4882a593Smuzhiyun #define TA_CS1EN_SHIFT 31 515*4882a593Smuzhiyun #define TA_CS1EN_MASK (1 << 31) 516*4882a593Smuzhiyun #define TA_CS0EN_SHIFT 30 517*4882a593Smuzhiyun #define TA_CS0EN_MASK (1 << 30) 518*4882a593Smuzhiyun #define TA_SFEXITEN_SHIFT 28 519*4882a593Smuzhiyun #define TA_SFEXITEN_MASK (1 << 28) 520*4882a593Smuzhiyun #define TA_DEVWDT_SHIFT 26 521*4882a593Smuzhiyun #define TA_DEVWDT_MASK (0x3 << 26) 522*4882a593Smuzhiyun #define TA_DEVCNT_SHIFT 24 523*4882a593Smuzhiyun #define TA_DEVCNT_MASK (0x3 << 24) 524*4882a593Smuzhiyun #define TA_REFINTERVAL_SHIFT 0 525*4882a593Smuzhiyun #define TA_REFINTERVAL_MASK (0x3fffff << 0) 526*4882a593Smuzhiyun 527*4882a593Smuzhiyun /* OCP_ERROR_LOG */ 528*4882a593Smuzhiyun #define MADDRSPACE_SHIFT 14 529*4882a593Smuzhiyun #define MADDRSPACE_MASK (0x3 << 14) 530*4882a593Smuzhiyun #define MBURSTSEQ_SHIFT 11 531*4882a593Smuzhiyun #define MBURSTSEQ_MASK (0x7 << 11) 532*4882a593Smuzhiyun #define MCMD_SHIFT 8 533*4882a593Smuzhiyun #define MCMD_MASK (0x7 << 8) 534*4882a593Smuzhiyun #define MCONNID_SHIFT 0 535*4882a593Smuzhiyun #define MCONNID_MASK (0xff << 0) 536*4882a593Smuzhiyun 537*4882a593Smuzhiyun /* READ_WRITE_LEVELING_CONTROL */ 538*4882a593Smuzhiyun #define RDWRLVLFULL_START 0x80000000 539*4882a593Smuzhiyun 540*4882a593Smuzhiyun /* DDR_PHY_CTRL_1 - EMIF4D */ 541*4882a593Smuzhiyun #define DLL_SLAVE_DLY_CTRL_SHIFT_4D 4 542*4882a593Smuzhiyun #define DLL_SLAVE_DLY_CTRL_MASK_4D (0xFF << 4) 543*4882a593Smuzhiyun #define READ_LATENCY_SHIFT_4D 0 544*4882a593Smuzhiyun #define READ_LATENCY_MASK_4D (0xf << 0) 545*4882a593Smuzhiyun 546*4882a593Smuzhiyun /* DDR_PHY_CTRL_1 - EMIF4D5 */ 547*4882a593Smuzhiyun #define DLL_HALF_DELAY_SHIFT_4D5 21 548*4882a593Smuzhiyun #define DLL_HALF_DELAY_MASK_4D5 (1 << 21) 549*4882a593Smuzhiyun #define READ_LATENCY_SHIFT_4D5 0 550*4882a593Smuzhiyun #define READ_LATENCY_MASK_4D5 (0x1f << 0) 551*4882a593Smuzhiyun 552*4882a593Smuzhiyun /* DDR_PHY_CTRL_1_SHDW */ 553*4882a593Smuzhiyun #define DDR_PHY_CTRL_1_SHDW_SHIFT 5 554*4882a593Smuzhiyun #define DDR_PHY_CTRL_1_SHDW_MASK (0x7ffffff << 5) 555*4882a593Smuzhiyun #define READ_LATENCY_SHDW_SHIFT 0 556*4882a593Smuzhiyun #define READ_LATENCY_SHDW_MASK (0x1f << 0) 557*4882a593Smuzhiyun 558*4882a593Smuzhiyun #define EMIF_SRAM_AM33_REG_LAYOUT 0x00000000 559*4882a593Smuzhiyun #define EMIF_SRAM_AM43_REG_LAYOUT 0x00000001 560*4882a593Smuzhiyun 561*4882a593Smuzhiyun #ifndef __ASSEMBLY__ 562*4882a593Smuzhiyun /* 563*4882a593Smuzhiyun * Structure containing shadow of important registers in EMIF 564*4882a593Smuzhiyun * The calculation function fills in this structure to be later used for 565*4882a593Smuzhiyun * initialisation and DVFS 566*4882a593Smuzhiyun */ 567*4882a593Smuzhiyun struct emif_regs { 568*4882a593Smuzhiyun u32 freq; 569*4882a593Smuzhiyun u32 ref_ctrl_shdw; 570*4882a593Smuzhiyun u32 ref_ctrl_shdw_derated; 571*4882a593Smuzhiyun u32 sdram_tim1_shdw; 572*4882a593Smuzhiyun u32 sdram_tim1_shdw_derated; 573*4882a593Smuzhiyun u32 sdram_tim2_shdw; 574*4882a593Smuzhiyun u32 sdram_tim3_shdw; 575*4882a593Smuzhiyun u32 sdram_tim3_shdw_derated; 576*4882a593Smuzhiyun u32 pwr_mgmt_ctrl_shdw; 577*4882a593Smuzhiyun union { 578*4882a593Smuzhiyun u32 read_idle_ctrl_shdw_normal; 579*4882a593Smuzhiyun u32 dll_calib_ctrl_shdw_normal; 580*4882a593Smuzhiyun }; 581*4882a593Smuzhiyun union { 582*4882a593Smuzhiyun u32 read_idle_ctrl_shdw_volt_ramp; 583*4882a593Smuzhiyun u32 dll_calib_ctrl_shdw_volt_ramp; 584*4882a593Smuzhiyun }; 585*4882a593Smuzhiyun 586*4882a593Smuzhiyun u32 phy_ctrl_1_shdw; 587*4882a593Smuzhiyun u32 ext_phy_ctrl_2_shdw; 588*4882a593Smuzhiyun u32 ext_phy_ctrl_3_shdw; 589*4882a593Smuzhiyun u32 ext_phy_ctrl_4_shdw; 590*4882a593Smuzhiyun }; 591*4882a593Smuzhiyun 592*4882a593Smuzhiyun struct ti_emif_pm_functions; 593*4882a593Smuzhiyun 594*4882a593Smuzhiyun extern unsigned int ti_emif_sram; 595*4882a593Smuzhiyun extern unsigned int ti_emif_sram_sz; 596*4882a593Smuzhiyun extern struct ti_emif_pm_data ti_emif_pm_sram_data; 597*4882a593Smuzhiyun extern struct emif_regs_amx3 ti_emif_regs_amx3; 598*4882a593Smuzhiyun 599*4882a593Smuzhiyun void ti_emif_save_context(void); 600*4882a593Smuzhiyun void ti_emif_restore_context(void); 601*4882a593Smuzhiyun void ti_emif_run_hw_leveling(void); 602*4882a593Smuzhiyun void ti_emif_enter_sr(void); 603*4882a593Smuzhiyun void ti_emif_exit_sr(void); 604*4882a593Smuzhiyun void ti_emif_abort_sr(void); 605*4882a593Smuzhiyun 606*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */ 607*4882a593Smuzhiyun #endif /* __EMIF_H */ 608