xref: /openbmc/linux/drivers/memory/emif.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
26c8b0906SAneesh V /*
36c8b0906SAneesh V  * Defines for the EMIF driver
46c8b0906SAneesh V  *
56c8b0906SAneesh V  * Copyright (C) 2012 Texas Instruments, Inc.
66c8b0906SAneesh V  *
76c8b0906SAneesh V  * Benoit Cousson (b-cousson@ti.com)
86c8b0906SAneesh V  */
96c8b0906SAneesh V #ifndef __EMIF_H
106c8b0906SAneesh V #define __EMIF_H
116c8b0906SAneesh V 
127ec94453SAneesh V /*
137ec94453SAneesh V  * Maximum number of different frequencies supported by EMIF driver
147ec94453SAneesh V  * Determines the number of entries in the pointer array for register
157ec94453SAneesh V  * cache
167ec94453SAneesh V  */
177ec94453SAneesh V #define EMIF_MAX_NUM_FREQUENCIES			6
187ec94453SAneesh V 
19a93de288SAneesh V /* State of the core voltage */
20a93de288SAneesh V #define DDR_VOLTAGE_STABLE				0
21a93de288SAneesh V #define DDR_VOLTAGE_RAMPING				1
22a93de288SAneesh V 
23a93de288SAneesh V /* Defines for timing De-rating */
24a93de288SAneesh V #define EMIF_NORMAL_TIMINGS				0
25a93de288SAneesh V #define EMIF_DERATED_TIMINGS				1
26a93de288SAneesh V 
27a93de288SAneesh V /* Length of the forced read idle period in terms of cycles */
28a93de288SAneesh V #define EMIF_READ_IDLE_LEN_VAL				5
29a93de288SAneesh V 
30a93de288SAneesh V /*
31a93de288SAneesh V  * forced read idle interval to be used when voltage
32a93de288SAneesh V  * is changed as part of DVFS/DPS - 1ms
33a93de288SAneesh V  */
34a93de288SAneesh V #define READ_IDLE_INTERVAL_DVFS				(1*1000000)
35a93de288SAneesh V 
36a93de288SAneesh V /*
37a93de288SAneesh V  * Forced read idle interval to be used when voltage is stable
38a93de288SAneesh V  * 50us - or maximum value will do
39a93de288SAneesh V  */
40a93de288SAneesh V #define READ_IDLE_INTERVAL_NORMAL			(50*1000000)
41a93de288SAneesh V 
42a93de288SAneesh V /* DLL calibration interval when voltage is NOT stable - 1us */
43a93de288SAneesh V #define DLL_CALIB_INTERVAL_DVFS				(1*1000000)
44a93de288SAneesh V 
45a93de288SAneesh V #define DLL_CALIB_ACK_WAIT_VAL				5
46a93de288SAneesh V 
47a93de288SAneesh V /* Interval between ZQCS commands - hw team recommended value */
48a93de288SAneesh V #define EMIF_ZQCS_INTERVAL_US				(50*1000)
49a93de288SAneesh V /* Enable ZQ Calibration on exiting Self-refresh */
50a93de288SAneesh V #define ZQ_SFEXITEN_ENABLE				1
51a93de288SAneesh V /*
52a93de288SAneesh V  * ZQ Calibration simultaneously on both chip-selects:
53a93de288SAneesh V  * Needs one calibration resistor per CS
54a93de288SAneesh V  */
55a93de288SAneesh V #define	ZQ_DUALCALEN_DISABLE				0
56a93de288SAneesh V #define	ZQ_DUALCALEN_ENABLE				1
57a93de288SAneesh V 
58a93de288SAneesh V #define T_ZQCS_DEFAULT_NS				90
59a93de288SAneesh V #define T_ZQCL_DEFAULT_NS				360
60a93de288SAneesh V #define T_ZQINIT_DEFAULT_NS				1000
61a93de288SAneesh V 
62a93de288SAneesh V /* DPD_EN */
63a93de288SAneesh V #define DPD_DISABLE					0
64a93de288SAneesh V #define DPD_ENABLE					1
65a93de288SAneesh V 
66a93de288SAneesh V /*
67a93de288SAneesh V  * Default values for the low-power entry to be used if not provided by user.
68a93de288SAneesh V  * OMAP4/5 has a hw bug(i735) due to which this value can not be less than 512
69a93de288SAneesh V  * Timeout values are in DDR clock 'cycles' and frequency threshold in Hz
70a93de288SAneesh V  */
71a93de288SAneesh V #define EMIF_LP_MODE_TIMEOUT_PERFORMANCE		2048
72a93de288SAneesh V #define EMIF_LP_MODE_TIMEOUT_POWER			512
73a93de288SAneesh V #define EMIF_LP_MODE_FREQ_THRESHOLD			400000000
74a93de288SAneesh V 
75a93de288SAneesh V /* DDR_PHY_CTRL_1 values for EMIF4D - ATTILA PHY combination */
76a93de288SAneesh V #define EMIF_DDR_PHY_CTRL_1_BASE_VAL_ATTILAPHY		0x049FF000
77a93de288SAneesh V #define EMIF_DLL_SLAVE_DLY_CTRL_400_MHZ_ATTILAPHY	0x41
78a93de288SAneesh V #define EMIF_DLL_SLAVE_DLY_CTRL_200_MHZ_ATTILAPHY	0x80
79a93de288SAneesh V #define EMIF_DLL_SLAVE_DLY_CTRL_100_MHZ_AND_LESS_ATTILAPHY 0xFF
80a93de288SAneesh V 
81a93de288SAneesh V /* DDR_PHY_CTRL_1 values for EMIF4D5 INTELLIPHY combination */
82a93de288SAneesh V #define EMIF_DDR_PHY_CTRL_1_BASE_VAL_INTELLIPHY		0x0E084200
83a93de288SAneesh V #define EMIF_PHY_TOTAL_READ_LATENCY_INTELLIPHY_PS	10000
84a93de288SAneesh V 
85a93de288SAneesh V /* TEMP_ALERT_CONFIG - corresponding to temp gradient 5 C/s */
86a93de288SAneesh V #define TEMP_ALERT_POLL_INTERVAL_DEFAULT_MS		360
87a93de288SAneesh V 
88a93de288SAneesh V #define EMIF_T_CSTA					3
89a93de288SAneesh V #define EMIF_T_PDLL_UL					128
90a93de288SAneesh V 
91a93de288SAneesh V /* External PHY control registers magic values */
92a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_1_VAL				0x04020080
93a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_5_VAL				0x04010040
94a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_6_VAL				0x01004010
95a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_7_VAL				0x00001004
96a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_8_VAL				0x04010040
97a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_9_VAL				0x01004010
98a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_10_VAL			0x00001004
99a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_11_VAL			0x00000000
100a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_12_VAL			0x00000000
101a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_13_VAL			0x00000000
102a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_14_VAL			0x80080080
103a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_15_VAL			0x00800800
104a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_16_VAL			0x08102040
105a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_17_VAL			0x00000001
106a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_18_VAL			0x540A8150
107a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_19_VAL			0xA81502A0
108a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_20_VAL			0x002A0540
109a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_21_VAL			0x00000000
110a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_22_VAL			0x00000000
111a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_23_VAL			0x00000000
112a93de288SAneesh V #define EMIF_EXT_PHY_CTRL_24_VAL			0x00000077
113a93de288SAneesh V 
114a93de288SAneesh V #define EMIF_INTELLI_PHY_DQS_GATE_OPENING_DELAY_PS	1200
115a93de288SAneesh V 
1166c8b0906SAneesh V /* Registers offset */
1176c8b0906SAneesh V #define EMIF_MODULE_ID_AND_REVISION			0x0000
1186c8b0906SAneesh V #define EMIF_STATUS					0x0004
1196c8b0906SAneesh V #define EMIF_SDRAM_CONFIG				0x0008
1206c8b0906SAneesh V #define EMIF_SDRAM_CONFIG_2				0x000c
1216c8b0906SAneesh V #define EMIF_SDRAM_REFRESH_CONTROL			0x0010
1226c8b0906SAneesh V #define EMIF_SDRAM_REFRESH_CTRL_SHDW			0x0014
1236c8b0906SAneesh V #define EMIF_SDRAM_TIMING_1				0x0018
1246c8b0906SAneesh V #define EMIF_SDRAM_TIMING_1_SHDW			0x001c
1256c8b0906SAneesh V #define EMIF_SDRAM_TIMING_2				0x0020
1266c8b0906SAneesh V #define EMIF_SDRAM_TIMING_2_SHDW			0x0024
1276c8b0906SAneesh V #define EMIF_SDRAM_TIMING_3				0x0028
1286c8b0906SAneesh V #define EMIF_SDRAM_TIMING_3_SHDW			0x002c
1296c8b0906SAneesh V #define EMIF_LPDDR2_NVM_TIMING				0x0030
1306c8b0906SAneesh V #define EMIF_LPDDR2_NVM_TIMING_SHDW			0x0034
1316c8b0906SAneesh V #define EMIF_POWER_MANAGEMENT_CONTROL			0x0038
1326c8b0906SAneesh V #define EMIF_POWER_MANAGEMENT_CTRL_SHDW			0x003c
1336c8b0906SAneesh V #define EMIF_LPDDR2_MODE_REG_DATA			0x0040
1346c8b0906SAneesh V #define EMIF_LPDDR2_MODE_REG_CONFIG			0x0050
1356c8b0906SAneesh V #define EMIF_OCP_CONFIG					0x0054
1366c8b0906SAneesh V #define EMIF_OCP_CONFIG_VALUE_1				0x0058
1376c8b0906SAneesh V #define EMIF_OCP_CONFIG_VALUE_2				0x005c
1386c8b0906SAneesh V #define EMIF_IODFT_TEST_LOGIC_GLOBAL_CONTROL		0x0060
1396c8b0906SAneesh V #define EMIF_IODFT_TEST_LOGIC_CTRL_MISR_RESULT		0x0064
1406c8b0906SAneesh V #define EMIF_IODFT_TEST_LOGIC_ADDRESS_MISR_RESULT	0x0068
1416c8b0906SAneesh V #define EMIF_IODFT_TEST_LOGIC_DATA_MISR_RESULT_1	0x006c
1426c8b0906SAneesh V #define EMIF_IODFT_TEST_LOGIC_DATA_MISR_RESULT_2	0x0070
1436c8b0906SAneesh V #define EMIF_IODFT_TEST_LOGIC_DATA_MISR_RESULT_3	0x0074
1446c8b0906SAneesh V #define EMIF_PERFORMANCE_COUNTER_1			0x0080
1456c8b0906SAneesh V #define EMIF_PERFORMANCE_COUNTER_2			0x0084
1466c8b0906SAneesh V #define EMIF_PERFORMANCE_COUNTER_CONFIG			0x0088
1476c8b0906SAneesh V #define EMIF_PERFORMANCE_COUNTER_MASTER_REGION_SELECT	0x008c
1486c8b0906SAneesh V #define EMIF_PERFORMANCE_COUNTER_TIME			0x0090
1496c8b0906SAneesh V #define EMIF_MISC_REG					0x0094
1506c8b0906SAneesh V #define EMIF_DLL_CALIB_CTRL				0x0098
1516c8b0906SAneesh V #define EMIF_DLL_CALIB_CTRL_SHDW			0x009c
1526c8b0906SAneesh V #define EMIF_END_OF_INTERRUPT				0x00a0
1536c8b0906SAneesh V #define EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS		0x00a4
1546c8b0906SAneesh V #define EMIF_LL_OCP_INTERRUPT_RAW_STATUS		0x00a8
1556c8b0906SAneesh V #define EMIF_SYSTEM_OCP_INTERRUPT_STATUS		0x00ac
1566c8b0906SAneesh V #define EMIF_LL_OCP_INTERRUPT_STATUS			0x00b0
1576c8b0906SAneesh V #define EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_SET		0x00b4
1586c8b0906SAneesh V #define EMIF_LL_OCP_INTERRUPT_ENABLE_SET		0x00b8
1596c8b0906SAneesh V #define EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_CLEAR		0x00bc
1606c8b0906SAneesh V #define EMIF_LL_OCP_INTERRUPT_ENABLE_CLEAR		0x00c0
1616c8b0906SAneesh V #define EMIF_SDRAM_OUTPUT_IMPEDANCE_CALIBRATION_CONFIG	0x00c8
1626c8b0906SAneesh V #define EMIF_TEMPERATURE_ALERT_CONFIG			0x00cc
1636c8b0906SAneesh V #define EMIF_OCP_ERROR_LOG				0x00d0
1646c8b0906SAneesh V #define EMIF_READ_WRITE_LEVELING_RAMP_WINDOW		0x00d4
1656c8b0906SAneesh V #define EMIF_READ_WRITE_LEVELING_RAMP_CONTROL		0x00d8
1666c8b0906SAneesh V #define EMIF_READ_WRITE_LEVELING_CONTROL		0x00dc
1676c8b0906SAneesh V #define EMIF_DDR_PHY_CTRL_1				0x00e4
1686c8b0906SAneesh V #define EMIF_DDR_PHY_CTRL_1_SHDW			0x00e8
1696c8b0906SAneesh V #define EMIF_DDR_PHY_CTRL_2				0x00ec
1706c8b0906SAneesh V #define EMIF_PRIORITY_TO_CLASS_OF_SERVICE_MAPPING	0x0100
1716c8b0906SAneesh V #define EMIF_CONNECTION_ID_TO_CLASS_OF_SERVICE_1_MAPPING 0x0104
1726c8b0906SAneesh V #define EMIF_CONNECTION_ID_TO_CLASS_OF_SERVICE_2_MAPPING 0x0108
1736c8b0906SAneesh V #define EMIF_READ_WRITE_EXECUTION_THRESHOLD		0x0120
1746c8b0906SAneesh V #define EMIF_COS_CONFIG					0x0124
1756c8b0906SAneesh V #define EMIF_PHY_STATUS_1				0x0140
1766c8b0906SAneesh V #define EMIF_PHY_STATUS_2				0x0144
1776c8b0906SAneesh V #define EMIF_PHY_STATUS_3				0x0148
1786c8b0906SAneesh V #define EMIF_PHY_STATUS_4				0x014c
1796c8b0906SAneesh V #define EMIF_PHY_STATUS_5				0x0150
1806c8b0906SAneesh V #define EMIF_PHY_STATUS_6				0x0154
1816c8b0906SAneesh V #define EMIF_PHY_STATUS_7				0x0158
1826c8b0906SAneesh V #define EMIF_PHY_STATUS_8				0x015c
1836c8b0906SAneesh V #define EMIF_PHY_STATUS_9				0x0160
1846c8b0906SAneesh V #define EMIF_PHY_STATUS_10				0x0164
1856c8b0906SAneesh V #define EMIF_PHY_STATUS_11				0x0168
1866c8b0906SAneesh V #define EMIF_PHY_STATUS_12				0x016c
1876c8b0906SAneesh V #define EMIF_PHY_STATUS_13				0x0170
1886c8b0906SAneesh V #define EMIF_PHY_STATUS_14				0x0174
1896c8b0906SAneesh V #define EMIF_PHY_STATUS_15				0x0178
1906c8b0906SAneesh V #define EMIF_PHY_STATUS_16				0x017c
1916c8b0906SAneesh V #define EMIF_PHY_STATUS_17				0x0180
1926c8b0906SAneesh V #define EMIF_PHY_STATUS_18				0x0184
1936c8b0906SAneesh V #define EMIF_PHY_STATUS_19				0x0188
1946c8b0906SAneesh V #define EMIF_PHY_STATUS_20				0x018c
1956c8b0906SAneesh V #define EMIF_PHY_STATUS_21				0x0190
1966c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_1				0x0200
1976c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_1_SHDW			0x0204
1986c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_2				0x0208
1996c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_2_SHDW			0x020c
2006c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_3				0x0210
2016c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_3_SHDW			0x0214
2026c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_4				0x0218
2036c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_4_SHDW			0x021c
2046c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_5				0x0220
2056c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_5_SHDW			0x0224
2066c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_6				0x0228
2076c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_6_SHDW			0x022c
2086c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_7				0x0230
2096c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_7_SHDW			0x0234
2106c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_8				0x0238
2116c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_8_SHDW			0x023c
2126c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_9				0x0240
2136c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_9_SHDW			0x0244
2146c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_10				0x0248
2156c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_10_SHDW			0x024c
2166c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_11				0x0250
2176c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_11_SHDW			0x0254
2186c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_12				0x0258
2196c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_12_SHDW			0x025c
2206c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_13				0x0260
2216c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_13_SHDW			0x0264
2226c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_14				0x0268
2236c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_14_SHDW			0x026c
2246c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_15				0x0270
2256c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_15_SHDW			0x0274
2266c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_16				0x0278
2276c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_16_SHDW			0x027c
2286c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_17				0x0280
2296c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_17_SHDW			0x0284
2306c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_18				0x0288
2316c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_18_SHDW			0x028c
2326c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_19				0x0290
2336c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_19_SHDW			0x0294
2346c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_20				0x0298
2356c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_20_SHDW			0x029c
2366c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_21				0x02a0
2376c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_21_SHDW			0x02a4
2386c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_22				0x02a8
2396c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_22_SHDW			0x02ac
2406c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_23				0x02b0
2416c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_23_SHDW			0x02b4
2426c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_24				0x02b8
2436c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_24_SHDW			0x02bc
2446c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_25				0x02c0
2456c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_25_SHDW			0x02c4
2466c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_26				0x02c8
2476c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_26_SHDW			0x02cc
2486c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_27				0x02d0
2496c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_27_SHDW			0x02d4
2506c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_28				0x02d8
2516c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_28_SHDW			0x02dc
2526c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_29				0x02e0
2536c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_29_SHDW			0x02e4
2546c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_30				0x02e8
2556c8b0906SAneesh V #define EMIF_EXT_PHY_CTRL_30_SHDW			0x02ec
2566c8b0906SAneesh V 
2576c8b0906SAneesh V /* Registers shifts and masks */
2586c8b0906SAneesh V 
2596c8b0906SAneesh V /* EMIF_MODULE_ID_AND_REVISION */
2606c8b0906SAneesh V #define SCHEME_SHIFT					30
2616c8b0906SAneesh V #define SCHEME_MASK					(0x3 << 30)
2626c8b0906SAneesh V #define MODULE_ID_SHIFT					16
2636c8b0906SAneesh V #define MODULE_ID_MASK					(0xfff << 16)
2646c8b0906SAneesh V #define RTL_VERSION_SHIFT				11
2656c8b0906SAneesh V #define RTL_VERSION_MASK				(0x1f << 11)
2666c8b0906SAneesh V #define MAJOR_REVISION_SHIFT				8
2676c8b0906SAneesh V #define MAJOR_REVISION_MASK				(0x7 << 8)
2686c8b0906SAneesh V #define MINOR_REVISION_SHIFT				0
2696c8b0906SAneesh V #define MINOR_REVISION_MASK				(0x3f << 0)
2706c8b0906SAneesh V 
2716c8b0906SAneesh V /* STATUS */
2726c8b0906SAneesh V #define BE_SHIFT					31
2736c8b0906SAneesh V #define BE_MASK						(1 << 31)
2746c8b0906SAneesh V #define DUAL_CLK_MODE_SHIFT				30
2756c8b0906SAneesh V #define DUAL_CLK_MODE_MASK				(1 << 30)
2766c8b0906SAneesh V #define FAST_INIT_SHIFT					29
2776c8b0906SAneesh V #define FAST_INIT_MASK					(1 << 29)
2786c8b0906SAneesh V #define RDLVLGATETO_SHIFT				6
2796c8b0906SAneesh V #define RDLVLGATETO_MASK				(1 << 6)
2806c8b0906SAneesh V #define RDLVLTO_SHIFT					5
2816c8b0906SAneesh V #define RDLVLTO_MASK					(1 << 5)
2826c8b0906SAneesh V #define WRLVLTO_SHIFT					4
2836c8b0906SAneesh V #define WRLVLTO_MASK					(1 << 4)
2846c8b0906SAneesh V #define PHY_DLL_READY_SHIFT				2
2856c8b0906SAneesh V #define PHY_DLL_READY_MASK				(1 << 2)
2866c8b0906SAneesh V 
2876c8b0906SAneesh V /* SDRAM_CONFIG */
2886c8b0906SAneesh V #define SDRAM_TYPE_SHIFT				29
2896c8b0906SAneesh V #define SDRAM_TYPE_MASK					(0x7 << 29)
2906c8b0906SAneesh V #define IBANK_POS_SHIFT					27
2916c8b0906SAneesh V #define IBANK_POS_MASK					(0x3 << 27)
2926c8b0906SAneesh V #define DDR_TERM_SHIFT					24
2936c8b0906SAneesh V #define DDR_TERM_MASK					(0x7 << 24)
2946c8b0906SAneesh V #define DDR2_DDQS_SHIFT					23
2956c8b0906SAneesh V #define DDR2_DDQS_MASK					(1 << 23)
2966c8b0906SAneesh V #define DYN_ODT_SHIFT					21
2976c8b0906SAneesh V #define DYN_ODT_MASK					(0x3 << 21)
2986c8b0906SAneesh V #define DDR_DISABLE_DLL_SHIFT				20
2996c8b0906SAneesh V #define DDR_DISABLE_DLL_MASK				(1 << 20)
3006c8b0906SAneesh V #define SDRAM_DRIVE_SHIFT				18
3016c8b0906SAneesh V #define SDRAM_DRIVE_MASK				(0x3 << 18)
3026c8b0906SAneesh V #define CWL_SHIFT					16
3036c8b0906SAneesh V #define CWL_MASK					(0x3 << 16)
3046c8b0906SAneesh V #define NARROW_MODE_SHIFT				14
3056c8b0906SAneesh V #define NARROW_MODE_MASK				(0x3 << 14)
3066c8b0906SAneesh V #define CL_SHIFT					10
3076c8b0906SAneesh V #define CL_MASK						(0xf << 10)
3086c8b0906SAneesh V #define ROWSIZE_SHIFT					7
3096c8b0906SAneesh V #define ROWSIZE_MASK					(0x7 << 7)
3106c8b0906SAneesh V #define IBANK_SHIFT					4
3116c8b0906SAneesh V #define IBANK_MASK					(0x7 << 4)
3126c8b0906SAneesh V #define EBANK_SHIFT					3
3136c8b0906SAneesh V #define EBANK_MASK					(1 << 3)
3146c8b0906SAneesh V #define PAGESIZE_SHIFT					0
3156c8b0906SAneesh V #define PAGESIZE_MASK					(0x7 << 0)
3166c8b0906SAneesh V 
3176c8b0906SAneesh V /* SDRAM_CONFIG_2 */
3186c8b0906SAneesh V #define CS1NVMEN_SHIFT					30
3196c8b0906SAneesh V #define CS1NVMEN_MASK					(1 << 30)
3206c8b0906SAneesh V #define EBANK_POS_SHIFT					27
3216c8b0906SAneesh V #define EBANK_POS_MASK					(1 << 27)
3226c8b0906SAneesh V #define RDBNUM_SHIFT					4
3236c8b0906SAneesh V #define RDBNUM_MASK					(0x3 << 4)
3246c8b0906SAneesh V #define RDBSIZE_SHIFT					0
3256c8b0906SAneesh V #define RDBSIZE_MASK					(0x7 << 0)
3266c8b0906SAneesh V 
3276c8b0906SAneesh V /* SDRAM_REFRESH_CONTROL */
3286c8b0906SAneesh V #define INITREF_DIS_SHIFT				31
3296c8b0906SAneesh V #define INITREF_DIS_MASK				(1 << 31)
3306c8b0906SAneesh V #define SRT_SHIFT					29
3316c8b0906SAneesh V #define SRT_MASK					(1 << 29)
3326c8b0906SAneesh V #define ASR_SHIFT					28
3336c8b0906SAneesh V #define ASR_MASK					(1 << 28)
3346c8b0906SAneesh V #define PASR_SHIFT					24
3356c8b0906SAneesh V #define PASR_MASK					(0x7 << 24)
3366c8b0906SAneesh V #define REFRESH_RATE_SHIFT				0
3376c8b0906SAneesh V #define REFRESH_RATE_MASK				(0xffff << 0)
3386c8b0906SAneesh V 
3396c8b0906SAneesh V /* SDRAM_TIMING_1 */
3406c8b0906SAneesh V #define T_RTW_SHIFT					29
3416c8b0906SAneesh V #define T_RTW_MASK					(0x7 << 29)
3426c8b0906SAneesh V #define T_RP_SHIFT					25
3436c8b0906SAneesh V #define T_RP_MASK					(0xf << 25)
3446c8b0906SAneesh V #define T_RCD_SHIFT					21
3456c8b0906SAneesh V #define T_RCD_MASK					(0xf << 21)
3466c8b0906SAneesh V #define T_WR_SHIFT					17
3476c8b0906SAneesh V #define T_WR_MASK					(0xf << 17)
3486c8b0906SAneesh V #define T_RAS_SHIFT					12
3496c8b0906SAneesh V #define T_RAS_MASK					(0x1f << 12)
3506c8b0906SAneesh V #define T_RC_SHIFT					6
3516c8b0906SAneesh V #define T_RC_MASK					(0x3f << 6)
3526c8b0906SAneesh V #define T_RRD_SHIFT					3
3536c8b0906SAneesh V #define T_RRD_MASK					(0x7 << 3)
3546c8b0906SAneesh V #define T_WTR_SHIFT					0
3556c8b0906SAneesh V #define T_WTR_MASK					(0x7 << 0)
3566c8b0906SAneesh V 
3576c8b0906SAneesh V /* SDRAM_TIMING_2 */
3586c8b0906SAneesh V #define T_XP_SHIFT					28
3596c8b0906SAneesh V #define T_XP_MASK					(0x7 << 28)
3606c8b0906SAneesh V #define T_ODT_SHIFT					25
3616c8b0906SAneesh V #define T_ODT_MASK					(0x7 << 25)
3626c8b0906SAneesh V #define T_XSNR_SHIFT					16
3636c8b0906SAneesh V #define T_XSNR_MASK					(0x1ff << 16)
3646c8b0906SAneesh V #define T_XSRD_SHIFT					6
3656c8b0906SAneesh V #define T_XSRD_MASK					(0x3ff << 6)
3666c8b0906SAneesh V #define T_RTP_SHIFT					3
3676c8b0906SAneesh V #define T_RTP_MASK					(0x7 << 3)
3686c8b0906SAneesh V #define T_CKE_SHIFT					0
3696c8b0906SAneesh V #define T_CKE_MASK					(0x7 << 0)
3706c8b0906SAneesh V 
3716c8b0906SAneesh V /* SDRAM_TIMING_3 */
3726c8b0906SAneesh V #define T_PDLL_UL_SHIFT					28
3736c8b0906SAneesh V #define T_PDLL_UL_MASK					(0xf << 28)
3746c8b0906SAneesh V #define T_CSTA_SHIFT					24
3756c8b0906SAneesh V #define T_CSTA_MASK					(0xf << 24)
3766c8b0906SAneesh V #define T_CKESR_SHIFT					21
3776c8b0906SAneesh V #define T_CKESR_MASK					(0x7 << 21)
3786c8b0906SAneesh V #define ZQ_ZQCS_SHIFT					15
3796c8b0906SAneesh V #define ZQ_ZQCS_MASK					(0x3f << 15)
3806c8b0906SAneesh V #define T_TDQSCKMAX_SHIFT				13
3816c8b0906SAneesh V #define T_TDQSCKMAX_MASK				(0x3 << 13)
3826c8b0906SAneesh V #define T_RFC_SHIFT					4
3836c8b0906SAneesh V #define T_RFC_MASK					(0x1ff << 4)
3846c8b0906SAneesh V #define T_RAS_MAX_SHIFT					0
3856c8b0906SAneesh V #define T_RAS_MAX_MASK					(0xf << 0)
3866c8b0906SAneesh V 
3876c8b0906SAneesh V /* POWER_MANAGEMENT_CONTROL */
3886c8b0906SAneesh V #define PD_TIM_SHIFT					12
3896c8b0906SAneesh V #define PD_TIM_MASK					(0xf << 12)
3906c8b0906SAneesh V #define DPD_EN_SHIFT					11
3916c8b0906SAneesh V #define DPD_EN_MASK					(1 << 11)
3926c8b0906SAneesh V #define LP_MODE_SHIFT					8
3936c8b0906SAneesh V #define LP_MODE_MASK					(0x7 << 8)
3946c8b0906SAneesh V #define SR_TIM_SHIFT					4
3956c8b0906SAneesh V #define SR_TIM_MASK					(0xf << 4)
3966c8b0906SAneesh V #define CS_TIM_SHIFT					0
3976c8b0906SAneesh V #define CS_TIM_MASK					(0xf << 0)
3986c8b0906SAneesh V 
3996c8b0906SAneesh V /* LPDDR2_MODE_REG_DATA */
4006c8b0906SAneesh V #define VALUE_0_SHIFT					0
4016c8b0906SAneesh V #define VALUE_0_MASK					(0x7f << 0)
4026c8b0906SAneesh V 
4036c8b0906SAneesh V /* LPDDR2_MODE_REG_CONFIG */
4046c8b0906SAneesh V #define CS_SHIFT					31
4056c8b0906SAneesh V #define CS_MASK						(1 << 31)
4066c8b0906SAneesh V #define REFRESH_EN_SHIFT				30
4076c8b0906SAneesh V #define REFRESH_EN_MASK					(1 << 30)
4086c8b0906SAneesh V #define ADDRESS_SHIFT					0
4096c8b0906SAneesh V #define ADDRESS_MASK					(0xff << 0)
4106c8b0906SAneesh V 
4116c8b0906SAneesh V /* OCP_CONFIG */
4126c8b0906SAneesh V #define SYS_THRESH_MAX_SHIFT				24
4136c8b0906SAneesh V #define SYS_THRESH_MAX_MASK				(0xf << 24)
4146c8b0906SAneesh V #define MPU_THRESH_MAX_SHIFT				20
4156c8b0906SAneesh V #define MPU_THRESH_MAX_MASK				(0xf << 20)
4166c8b0906SAneesh V #define LL_THRESH_MAX_SHIFT				16
4176c8b0906SAneesh V #define LL_THRESH_MAX_MASK				(0xf << 16)
4186c8b0906SAneesh V 
4196c8b0906SAneesh V /* PERFORMANCE_COUNTER_1 */
4206c8b0906SAneesh V #define COUNTER1_SHIFT					0
4216c8b0906SAneesh V #define COUNTER1_MASK					(0xffffffff << 0)
4226c8b0906SAneesh V 
4236c8b0906SAneesh V /* PERFORMANCE_COUNTER_2 */
4246c8b0906SAneesh V #define COUNTER2_SHIFT					0
4256c8b0906SAneesh V #define COUNTER2_MASK					(0xffffffff << 0)
4266c8b0906SAneesh V 
4276c8b0906SAneesh V /* PERFORMANCE_COUNTER_CONFIG */
4286c8b0906SAneesh V #define CNTR2_MCONNID_EN_SHIFT				31
4296c8b0906SAneesh V #define CNTR2_MCONNID_EN_MASK				(1 << 31)
4306c8b0906SAneesh V #define CNTR2_REGION_EN_SHIFT				30
4316c8b0906SAneesh V #define CNTR2_REGION_EN_MASK				(1 << 30)
4326c8b0906SAneesh V #define CNTR2_CFG_SHIFT					16
4336c8b0906SAneesh V #define CNTR2_CFG_MASK					(0xf << 16)
4346c8b0906SAneesh V #define CNTR1_MCONNID_EN_SHIFT				15
4356c8b0906SAneesh V #define CNTR1_MCONNID_EN_MASK				(1 << 15)
4366c8b0906SAneesh V #define CNTR1_REGION_EN_SHIFT				14
4376c8b0906SAneesh V #define CNTR1_REGION_EN_MASK				(1 << 14)
4386c8b0906SAneesh V #define CNTR1_CFG_SHIFT					0
4396c8b0906SAneesh V #define CNTR1_CFG_MASK					(0xf << 0)
4406c8b0906SAneesh V 
4416c8b0906SAneesh V /* PERFORMANCE_COUNTER_MASTER_REGION_SELECT */
4426c8b0906SAneesh V #define MCONNID2_SHIFT					24
4436c8b0906SAneesh V #define MCONNID2_MASK					(0xff << 24)
4446c8b0906SAneesh V #define REGION_SEL2_SHIFT				16
4456c8b0906SAneesh V #define REGION_SEL2_MASK				(0x3 << 16)
4466c8b0906SAneesh V #define MCONNID1_SHIFT					8
4476c8b0906SAneesh V #define MCONNID1_MASK					(0xff << 8)
4486c8b0906SAneesh V #define REGION_SEL1_SHIFT				0
4496c8b0906SAneesh V #define REGION_SEL1_MASK				(0x3 << 0)
4506c8b0906SAneesh V 
4516c8b0906SAneesh V /* PERFORMANCE_COUNTER_TIME */
4526c8b0906SAneesh V #define TOTAL_TIME_SHIFT				0
4536c8b0906SAneesh V #define TOTAL_TIME_MASK					(0xffffffff << 0)
4546c8b0906SAneesh V 
4556c8b0906SAneesh V /* DLL_CALIB_CTRL */
4566c8b0906SAneesh V #define ACK_WAIT_SHIFT					16
4576c8b0906SAneesh V #define ACK_WAIT_MASK					(0xf << 16)
4586c8b0906SAneesh V #define DLL_CALIB_INTERVAL_SHIFT			0
4596c8b0906SAneesh V #define DLL_CALIB_INTERVAL_MASK				(0x1ff << 0)
4606c8b0906SAneesh V 
4616c8b0906SAneesh V /* END_OF_INTERRUPT */
4626c8b0906SAneesh V #define EOI_SHIFT					0
4636c8b0906SAneesh V #define EOI_MASK					(1 << 0)
4646c8b0906SAneesh V 
4656c8b0906SAneesh V /* SYSTEM_OCP_INTERRUPT_RAW_STATUS */
4666c8b0906SAneesh V #define DNV_SYS_SHIFT					2
4676c8b0906SAneesh V #define DNV_SYS_MASK					(1 << 2)
4686c8b0906SAneesh V #define TA_SYS_SHIFT					1
4696c8b0906SAneesh V #define TA_SYS_MASK					(1 << 1)
4706c8b0906SAneesh V #define ERR_SYS_SHIFT					0
4716c8b0906SAneesh V #define ERR_SYS_MASK					(1 << 0)
4726c8b0906SAneesh V 
4736c8b0906SAneesh V /* LOW_LATENCY_OCP_INTERRUPT_RAW_STATUS */
4746c8b0906SAneesh V #define DNV_LL_SHIFT					2
4756c8b0906SAneesh V #define DNV_LL_MASK					(1 << 2)
4766c8b0906SAneesh V #define TA_LL_SHIFT					1
4776c8b0906SAneesh V #define TA_LL_MASK					(1 << 1)
4786c8b0906SAneesh V #define ERR_LL_SHIFT					0
4796c8b0906SAneesh V #define ERR_LL_MASK					(1 << 0)
4806c8b0906SAneesh V 
4816c8b0906SAneesh V /* SYSTEM_OCP_INTERRUPT_ENABLE_SET */
4826c8b0906SAneesh V #define EN_DNV_SYS_SHIFT				2
4836c8b0906SAneesh V #define EN_DNV_SYS_MASK					(1 << 2)
4846c8b0906SAneesh V #define EN_TA_SYS_SHIFT					1
4856c8b0906SAneesh V #define EN_TA_SYS_MASK					(1 << 1)
4866c8b0906SAneesh V #define EN_ERR_SYS_SHIFT					0
4876c8b0906SAneesh V #define EN_ERR_SYS_MASK					(1 << 0)
4886c8b0906SAneesh V 
4896c8b0906SAneesh V /* LOW_LATENCY_OCP_INTERRUPT_ENABLE_SET */
4906c8b0906SAneesh V #define EN_DNV_LL_SHIFT					2
4916c8b0906SAneesh V #define EN_DNV_LL_MASK					(1 << 2)
4926c8b0906SAneesh V #define EN_TA_LL_SHIFT					1
4936c8b0906SAneesh V #define EN_TA_LL_MASK					(1 << 1)
4946c8b0906SAneesh V #define EN_ERR_LL_SHIFT					0
4956c8b0906SAneesh V #define EN_ERR_LL_MASK					(1 << 0)
4966c8b0906SAneesh V 
4976c8b0906SAneesh V /* SDRAM_OUTPUT_IMPEDANCE_CALIBRATION_CONFIG */
4986c8b0906SAneesh V #define ZQ_CS1EN_SHIFT					31
4996c8b0906SAneesh V #define ZQ_CS1EN_MASK					(1 << 31)
5006c8b0906SAneesh V #define ZQ_CS0EN_SHIFT					30
5016c8b0906SAneesh V #define ZQ_CS0EN_MASK					(1 << 30)
5026c8b0906SAneesh V #define ZQ_DUALCALEN_SHIFT				29
5036c8b0906SAneesh V #define ZQ_DUALCALEN_MASK				(1 << 29)
5046c8b0906SAneesh V #define ZQ_SFEXITEN_SHIFT				28
5056c8b0906SAneesh V #define ZQ_SFEXITEN_MASK				(1 << 28)
5066c8b0906SAneesh V #define ZQ_ZQINIT_MULT_SHIFT				18
5076c8b0906SAneesh V #define ZQ_ZQINIT_MULT_MASK				(0x3 << 18)
5086c8b0906SAneesh V #define ZQ_ZQCL_MULT_SHIFT				16
5096c8b0906SAneesh V #define ZQ_ZQCL_MULT_MASK				(0x3 << 16)
5106c8b0906SAneesh V #define ZQ_REFINTERVAL_SHIFT				0
5116c8b0906SAneesh V #define ZQ_REFINTERVAL_MASK				(0xffff << 0)
5126c8b0906SAneesh V 
5136c8b0906SAneesh V /* TEMPERATURE_ALERT_CONFIG */
5146c8b0906SAneesh V #define TA_CS1EN_SHIFT					31
5156c8b0906SAneesh V #define TA_CS1EN_MASK					(1 << 31)
5166c8b0906SAneesh V #define TA_CS0EN_SHIFT					30
5176c8b0906SAneesh V #define TA_CS0EN_MASK					(1 << 30)
5186c8b0906SAneesh V #define TA_SFEXITEN_SHIFT				28
5196c8b0906SAneesh V #define TA_SFEXITEN_MASK				(1 << 28)
5206c8b0906SAneesh V #define TA_DEVWDT_SHIFT					26
5216c8b0906SAneesh V #define TA_DEVWDT_MASK					(0x3 << 26)
5226c8b0906SAneesh V #define TA_DEVCNT_SHIFT					24
5236c8b0906SAneesh V #define TA_DEVCNT_MASK					(0x3 << 24)
5246c8b0906SAneesh V #define TA_REFINTERVAL_SHIFT				0
5256c8b0906SAneesh V #define TA_REFINTERVAL_MASK				(0x3fffff << 0)
5266c8b0906SAneesh V 
5276c8b0906SAneesh V /* OCP_ERROR_LOG */
5286c8b0906SAneesh V #define MADDRSPACE_SHIFT				14
5296c8b0906SAneesh V #define MADDRSPACE_MASK					(0x3 << 14)
5306c8b0906SAneesh V #define MBURSTSEQ_SHIFT					11
5316c8b0906SAneesh V #define MBURSTSEQ_MASK					(0x7 << 11)
5326c8b0906SAneesh V #define MCMD_SHIFT					8
5336c8b0906SAneesh V #define MCMD_MASK					(0x7 << 8)
5346c8b0906SAneesh V #define MCONNID_SHIFT					0
5356c8b0906SAneesh V #define MCONNID_MASK					(0xff << 0)
5366c8b0906SAneesh V 
5376c110561SDave Gerlach /* READ_WRITE_LEVELING_CONTROL */
5386c110561SDave Gerlach #define RDWRLVLFULL_START				0x80000000
5396c110561SDave Gerlach 
5406c8b0906SAneesh V /* DDR_PHY_CTRL_1 - EMIF4D */
5416c8b0906SAneesh V #define DLL_SLAVE_DLY_CTRL_SHIFT_4D			4
5426c8b0906SAneesh V #define DLL_SLAVE_DLY_CTRL_MASK_4D			(0xFF << 4)
5436c8b0906SAneesh V #define READ_LATENCY_SHIFT_4D				0
5446c8b0906SAneesh V #define READ_LATENCY_MASK_4D				(0xf << 0)
5456c8b0906SAneesh V 
5466c8b0906SAneesh V /* DDR_PHY_CTRL_1 - EMIF4D5 */
5476c8b0906SAneesh V #define DLL_HALF_DELAY_SHIFT_4D5			21
5486c8b0906SAneesh V #define DLL_HALF_DELAY_MASK_4D5				(1 << 21)
5496c8b0906SAneesh V #define READ_LATENCY_SHIFT_4D5				0
5506c8b0906SAneesh V #define READ_LATENCY_MASK_4D5				(0x1f << 0)
5516c8b0906SAneesh V 
5526c8b0906SAneesh V /* DDR_PHY_CTRL_1_SHDW */
5536c8b0906SAneesh V #define DDR_PHY_CTRL_1_SHDW_SHIFT			5
5546c8b0906SAneesh V #define DDR_PHY_CTRL_1_SHDW_MASK			(0x7ffffff << 5)
5556c8b0906SAneesh V #define READ_LATENCY_SHDW_SHIFT				0
5566c8b0906SAneesh V #define READ_LATENCY_SHDW_MASK				(0x1f << 0)
5576c8b0906SAneesh V 
5588428e5adSDave Gerlach #define EMIF_SRAM_AM33_REG_LAYOUT			0x00000000
5598428e5adSDave Gerlach #define EMIF_SRAM_AM43_REG_LAYOUT			0x00000001
5608428e5adSDave Gerlach 
561a93de288SAneesh V #ifndef __ASSEMBLY__
562a93de288SAneesh V /*
563a93de288SAneesh V  * Structure containing shadow of important registers in EMIF
564a93de288SAneesh V  * The calculation function fills in this structure to be later used for
565a93de288SAneesh V  * initialisation and DVFS
566a93de288SAneesh V  */
567a93de288SAneesh V struct emif_regs {
568a93de288SAneesh V 	u32 freq;
569a93de288SAneesh V 	u32 ref_ctrl_shdw;
570a93de288SAneesh V 	u32 ref_ctrl_shdw_derated;
571a93de288SAneesh V 	u32 sdram_tim1_shdw;
572a93de288SAneesh V 	u32 sdram_tim1_shdw_derated;
573a93de288SAneesh V 	u32 sdram_tim2_shdw;
574a93de288SAneesh V 	u32 sdram_tim3_shdw;
575a93de288SAneesh V 	u32 sdram_tim3_shdw_derated;
576a93de288SAneesh V 	u32 pwr_mgmt_ctrl_shdw;
577a93de288SAneesh V 	union {
578a93de288SAneesh V 		u32 read_idle_ctrl_shdw_normal;
579a93de288SAneesh V 		u32 dll_calib_ctrl_shdw_normal;
580a93de288SAneesh V 	};
581a93de288SAneesh V 	union {
582a93de288SAneesh V 		u32 read_idle_ctrl_shdw_volt_ramp;
583a93de288SAneesh V 		u32 dll_calib_ctrl_shdw_volt_ramp;
584a93de288SAneesh V 	};
585a93de288SAneesh V 
586a93de288SAneesh V 	u32 phy_ctrl_1_shdw;
587a93de288SAneesh V 	u32 ext_phy_ctrl_2_shdw;
588a93de288SAneesh V 	u32 ext_phy_ctrl_3_shdw;
589a93de288SAneesh V 	u32 ext_phy_ctrl_4_shdw;
590a93de288SAneesh V };
5918428e5adSDave Gerlach 
5928428e5adSDave Gerlach struct ti_emif_pm_functions;
5938428e5adSDave Gerlach 
5948428e5adSDave Gerlach extern unsigned int ti_emif_sram;
5958428e5adSDave Gerlach extern unsigned int ti_emif_sram_sz;
5968428e5adSDave Gerlach extern struct ti_emif_pm_data ti_emif_pm_sram_data;
5978428e5adSDave Gerlach extern struct emif_regs_amx3 ti_emif_regs_amx3;
5988428e5adSDave Gerlach 
5998428e5adSDave Gerlach void ti_emif_save_context(void);
6008428e5adSDave Gerlach void ti_emif_restore_context(void);
6016c110561SDave Gerlach void ti_emif_run_hw_leveling(void);
6028428e5adSDave Gerlach void ti_emif_enter_sr(void);
6038428e5adSDave Gerlach void ti_emif_exit_sr(void);
6048428e5adSDave Gerlach void ti_emif_abort_sr(void);
6058428e5adSDave Gerlach 
606a93de288SAneesh V #endif /* __ASSEMBLY__ */
607a93de288SAneesh V #endif /* __EMIF_H */
608