110de2114SJoseph Lo /* SPDX-License-Identifier: GPL-2.0 */
210de2114SJoseph Lo /*
310de2114SJoseph Lo * Copyright (c) 2015-2020, NVIDIA CORPORATION. All rights reserved.
410de2114SJoseph Lo */
510de2114SJoseph Lo
610de2114SJoseph Lo #ifndef TEGRA210_EMC_H
710de2114SJoseph Lo #define TEGRA210_EMC_H
810de2114SJoseph Lo
910de2114SJoseph Lo #include <linux/clk.h>
1010de2114SJoseph Lo #include <linux/clk/tegra.h>
1110de2114SJoseph Lo #include <linux/io.h>
1210de2114SJoseph Lo #include <linux/platform_device.h>
1310de2114SJoseph Lo
1410de2114SJoseph Lo #define DVFS_FGCG_HIGH_SPEED_THRESHOLD 1000
1510de2114SJoseph Lo #define IOBRICK_DCC_THRESHOLD 2400
1610de2114SJoseph Lo #define DVFS_FGCG_MID_SPEED_THRESHOLD 600
1710de2114SJoseph Lo
1810de2114SJoseph Lo #define EMC_STATUS_UPDATE_TIMEOUT 1000
1910de2114SJoseph Lo
2010de2114SJoseph Lo /* register definitions */
2110de2114SJoseph Lo #define EMC_INTSTATUS 0x0
2210de2114SJoseph Lo #define EMC_INTSTATUS_CLKCHANGE_COMPLETE BIT(4)
2310de2114SJoseph Lo #define EMC_DBG 0x8
2410de2114SJoseph Lo #define EMC_DBG_WRITE_MUX_ACTIVE BIT(1)
259b9d8632SJoseph Lo #define EMC_DBG_WRITE_ACTIVE_ONLY BIT(30)
2610de2114SJoseph Lo #define EMC_CFG 0xc
279b9d8632SJoseph Lo #define EMC_CFG_DRAM_CLKSTOP_PD BIT(31)
289b9d8632SJoseph Lo #define EMC_CFG_DRAM_CLKSTOP_SR BIT(30)
299b9d8632SJoseph Lo #define EMC_CFG_DRAM_ACPD BIT(29)
309b9d8632SJoseph Lo #define EMC_CFG_DYN_SELF_REF BIT(28)
319b9d8632SJoseph Lo #define EMC_PIN 0x24
329b9d8632SJoseph Lo #define EMC_PIN_PIN_CKE BIT(0)
339b9d8632SJoseph Lo #define EMC_PIN_PIN_CKEB BIT(1)
349b9d8632SJoseph Lo #define EMC_PIN_PIN_CKE_PER_DEV BIT(2)
3510de2114SJoseph Lo #define EMC_TIMING_CONTROL 0x28
3610de2114SJoseph Lo #define EMC_RC 0x2c
3710de2114SJoseph Lo #define EMC_RFC 0x30
3810de2114SJoseph Lo #define EMC_RAS 0x34
3910de2114SJoseph Lo #define EMC_RP 0x38
4010de2114SJoseph Lo #define EMC_R2W 0x3c
4110de2114SJoseph Lo #define EMC_W2R 0x40
4210de2114SJoseph Lo #define EMC_R2P 0x44
4310de2114SJoseph Lo #define EMC_W2P 0x48
4410de2114SJoseph Lo #define EMC_RD_RCD 0x4c
4510de2114SJoseph Lo #define EMC_WR_RCD 0x50
4610de2114SJoseph Lo #define EMC_RRD 0x54
4710de2114SJoseph Lo #define EMC_REXT 0x58
4810de2114SJoseph Lo #define EMC_WDV 0x5c
4910de2114SJoseph Lo #define EMC_QUSE 0x60
5010de2114SJoseph Lo #define EMC_QRST 0x64
5110de2114SJoseph Lo #define EMC_QSAFE 0x68
5210de2114SJoseph Lo #define EMC_RDV 0x6c
5310de2114SJoseph Lo #define EMC_REFRESH 0x70
5410de2114SJoseph Lo #define EMC_BURST_REFRESH_NUM 0x74
5510de2114SJoseph Lo #define EMC_PDEX2WR 0x78
5610de2114SJoseph Lo #define EMC_PDEX2RD 0x7c
5710de2114SJoseph Lo #define EMC_PCHG2PDEN 0x80
5810de2114SJoseph Lo #define EMC_ACT2PDEN 0x84
5910de2114SJoseph Lo #define EMC_AR2PDEN 0x88
6010de2114SJoseph Lo #define EMC_RW2PDEN 0x8c
6110de2114SJoseph Lo #define EMC_TXSR 0x90
6210de2114SJoseph Lo #define EMC_TCKE 0x94
6310de2114SJoseph Lo #define EMC_TFAW 0x98
6410de2114SJoseph Lo #define EMC_TRPAB 0x9c
6510de2114SJoseph Lo #define EMC_TCLKSTABLE 0xa0
6610de2114SJoseph Lo #define EMC_TCLKSTOP 0xa4
6710de2114SJoseph Lo #define EMC_TREFBW 0xa8
6810de2114SJoseph Lo #define EMC_TPPD 0xac
6910de2114SJoseph Lo #define EMC_ODT_WRITE 0xb0
7010de2114SJoseph Lo #define EMC_PDEX2MRR 0xb4
7110de2114SJoseph Lo #define EMC_WEXT 0xb8
7210de2114SJoseph Lo #define EMC_RFC_SLR 0xc0
7310de2114SJoseph Lo #define EMC_MRS_WAIT_CNT2 0xc4
749b9d8632SJoseph Lo #define EMC_MRS_WAIT_CNT2_MRS_EXT2_WAIT_CNT_SHIFT 16
759b9d8632SJoseph Lo #define EMC_MRS_WAIT_CNT2_MRS_EXT1_WAIT_CNT_SHIFT 0
7610de2114SJoseph Lo #define EMC_MRS_WAIT_CNT 0xc8
7710de2114SJoseph Lo #define EMC_MRS_WAIT_CNT_SHORT_WAIT_SHIFT 0
7810de2114SJoseph Lo #define EMC_MRS_WAIT_CNT_SHORT_WAIT_MASK \
7910de2114SJoseph Lo (0x3FF << EMC_MRS_WAIT_CNT_SHORT_WAIT_SHIFT)
8010de2114SJoseph Lo
8110de2114SJoseph Lo #define EMC_MRS 0xcc
8210de2114SJoseph Lo #define EMC_EMRS 0xd0
8310de2114SJoseph Lo #define EMC_EMRS_USE_EMRS_LONG_CNT BIT(26)
8410de2114SJoseph Lo #define EMC_REF 0xd4
85*0553d7b2SThierry Reding #define EMC_REF_REF_CMD BIT(0)
8610de2114SJoseph Lo #define EMC_SELF_REF 0xe0
8710de2114SJoseph Lo #define EMC_MRW 0xe8
8810de2114SJoseph Lo #define EMC_MRW_MRW_OP_SHIFT 0
8910de2114SJoseph Lo #define EMC_MRW_MRW_OP_MASK \
9010de2114SJoseph Lo (0xff << EMC_MRW_MRW_OP_SHIFT)
9110de2114SJoseph Lo #define EMC_MRW_MRW_MA_SHIFT 16
9210de2114SJoseph Lo #define EMC_MRW_USE_MRW_EXT_CNT 27
9310de2114SJoseph Lo #define EMC_MRW_MRW_DEV_SELECTN_SHIFT 30
9410de2114SJoseph Lo
9510de2114SJoseph Lo #define EMC_MRR 0xec
9610de2114SJoseph Lo #define EMC_MRR_DEV_SEL_SHIFT 30
9710de2114SJoseph Lo #define EMC_MRR_DEV_SEL_MASK 0x3
9810de2114SJoseph Lo #define EMC_MRR_MA_SHIFT 16
9910de2114SJoseph Lo #define EMC_MRR_MA_MASK 0xff
10010de2114SJoseph Lo #define EMC_MRR_DATA_SHIFT 0
10110de2114SJoseph Lo #define EMC_MRR_DATA_MASK 0xffff
10210de2114SJoseph Lo
10310de2114SJoseph Lo #define EMC_FBIO_SPARE 0x100
10410de2114SJoseph Lo #define EMC_FBIO_CFG5 0x104
10510de2114SJoseph Lo #define EMC_FBIO_CFG5_DRAM_TYPE_SHIFT 0
10610de2114SJoseph Lo #define EMC_FBIO_CFG5_DRAM_TYPE_MASK \
10710de2114SJoseph Lo (0x3 << EMC_FBIO_CFG5_DRAM_TYPE_SHIFT)
10810de2114SJoseph Lo #define EMC_FBIO_CFG5_CMD_TX_DIS BIT(8)
10910de2114SJoseph Lo
11010de2114SJoseph Lo #define EMC_PDEX2CKE 0x118
11110de2114SJoseph Lo #define EMC_CKE2PDEN 0x11c
11210de2114SJoseph Lo #define EMC_MPC 0x128
1139b9d8632SJoseph Lo #define EMC_EMRS2 0x12c
1149b9d8632SJoseph Lo #define EMC_EMRS2_USE_EMRS2_LONG_CNT BIT(26)
1159b9d8632SJoseph Lo #define EMC_MRW2 0x134
1169b9d8632SJoseph Lo #define EMC_MRW3 0x138
1179b9d8632SJoseph Lo #define EMC_MRW4 0x13c
11810de2114SJoseph Lo #define EMC_R2R 0x144
11910de2114SJoseph Lo #define EMC_EINPUT 0x14c
12010de2114SJoseph Lo #define EMC_EINPUT_DURATION 0x150
12110de2114SJoseph Lo #define EMC_PUTERM_EXTRA 0x154
12210de2114SJoseph Lo #define EMC_TCKESR 0x158
12310de2114SJoseph Lo #define EMC_TPD 0x15c
1249b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG 0x2a4
1259b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG_AUTO_CAL_COMPUTE_START BIT(0)
1269b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG_AUTO_CAL_MEASURE_STALL BIT(9)
1279b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG_AUTO_CAL_UPDATE_STALL BIT(10)
1289b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG_AUTO_CAL_ENABLE BIT(29)
1299b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG_AUTO_CAL_START BIT(31)
13010de2114SJoseph Lo #define EMC_EMC_STATUS 0x2b4
13110de2114SJoseph Lo #define EMC_EMC_STATUS_MRR_DIVLD BIT(20)
13210de2114SJoseph Lo #define EMC_EMC_STATUS_TIMING_UPDATE_STALLED BIT(23)
1339b9d8632SJoseph Lo #define EMC_EMC_STATUS_DRAM_IN_POWERDOWN_SHIFT 4
1349b9d8632SJoseph Lo #define EMC_EMC_STATUS_DRAM_IN_POWERDOWN_MASK \
1359b9d8632SJoseph Lo (0x3 << EMC_EMC_STATUS_DRAM_IN_POWERDOWN_SHIFT)
1369b9d8632SJoseph Lo #define EMC_EMC_STATUS_DRAM_IN_SELF_REFRESH_SHIFT 8
1379b9d8632SJoseph Lo #define EMC_EMC_STATUS_DRAM_IN_SELF_REFRESH_MASK \
1389b9d8632SJoseph Lo (0x3 << EMC_EMC_STATUS_DRAM_IN_SELF_REFRESH_SHIFT)
1399b9d8632SJoseph Lo
1409b9d8632SJoseph Lo #define EMC_CFG_2 0x2b8
14110de2114SJoseph Lo #define EMC_CFG_DIG_DLL 0x2bc
14210de2114SJoseph Lo #define EMC_CFG_DIG_DLL_CFG_DLL_EN BIT(0)
14310de2114SJoseph Lo #define EMC_CFG_DIG_DLL_CFG_DLL_STALL_ALL_UNTIL_LOCK BIT(1)
14410de2114SJoseph Lo #define EMC_CFG_DIG_DLL_CFG_DLL_STALL_ALL_TRAFFIC BIT(3)
14510de2114SJoseph Lo #define EMC_CFG_DIG_DLL_CFG_DLL_STALL_RW_UNTIL_LOCK BIT(4)
14610de2114SJoseph Lo #define EMC_CFG_DIG_DLL_CFG_DLL_MODE_SHIFT 6
14710de2114SJoseph Lo #define EMC_CFG_DIG_DLL_CFG_DLL_MODE_MASK \
14810de2114SJoseph Lo (0x3 << EMC_CFG_DIG_DLL_CFG_DLL_MODE_SHIFT)
14910de2114SJoseph Lo #define EMC_CFG_DIG_DLL_CFG_DLL_LOCK_LIMIT_SHIFT 8
15010de2114SJoseph Lo #define EMC_CFG_DIG_DLL_CFG_DLL_LOCK_LIMIT_MASK \
15110de2114SJoseph Lo (0x7 << EMC_CFG_DIG_DLL_CFG_DLL_LOCK_LIMIT_SHIFT)
15210de2114SJoseph Lo
15310de2114SJoseph Lo #define EMC_CFG_DIG_DLL_PERIOD 0x2c0
15410de2114SJoseph Lo #define EMC_DIG_DLL_STATUS 0x2c4
15510de2114SJoseph Lo #define EMC_DIG_DLL_STATUS_DLL_LOCK BIT(15)
15610de2114SJoseph Lo #define EMC_DIG_DLL_STATUS_DLL_PRIV_UPDATED BIT(17)
15710de2114SJoseph Lo #define EMC_DIG_DLL_STATUS_DLL_OUT_SHIFT 0
15810de2114SJoseph Lo #define EMC_DIG_DLL_STATUS_DLL_OUT_MASK \
15910de2114SJoseph Lo (0x7ff << EMC_DIG_DLL_STATUS_DLL_OUT_SHIFT)
16010de2114SJoseph Lo
16110de2114SJoseph Lo #define EMC_CFG_DIG_DLL_1 0x2c8
16210de2114SJoseph Lo #define EMC_RDV_MASK 0x2cc
16310de2114SJoseph Lo #define EMC_WDV_MASK 0x2d0
16410de2114SJoseph Lo #define EMC_RDV_EARLY_MASK 0x2d4
16510de2114SJoseph Lo #define EMC_RDV_EARLY 0x2d8
1669b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG8 0x2dc
16710de2114SJoseph Lo #define EMC_ZCAL_INTERVAL 0x2e0
16810de2114SJoseph Lo #define EMC_ZCAL_WAIT_CNT 0x2e4
1699b9d8632SJoseph Lo #define EMC_ZCAL_WAIT_CNT_ZCAL_WAIT_CNT_MASK 0x7ff
1709b9d8632SJoseph Lo #define EMC_ZCAL_WAIT_CNT_ZCAL_WAIT_CNT_SHIFT 0
1719b9d8632SJoseph Lo
1729b9d8632SJoseph Lo #define EMC_ZQ_CAL 0x2ec
1739b9d8632SJoseph Lo #define EMC_ZQ_CAL_DEV_SEL_SHIFT 30
1749b9d8632SJoseph Lo #define EMC_ZQ_CAL_LONG BIT(4)
1759b9d8632SJoseph Lo #define EMC_ZQ_CAL_ZQ_LATCH_CMD BIT(1)
1769b9d8632SJoseph Lo #define EMC_ZQ_CAL_ZQ_CAL_CMD BIT(0)
17710de2114SJoseph Lo #define EMC_FDPD_CTRL_DQ 0x310
17810de2114SJoseph Lo #define EMC_FDPD_CTRL_CMD 0x314
17910de2114SJoseph Lo #define EMC_PMACRO_CMD_BRICK_CTRL_FDPD 0x318
18010de2114SJoseph Lo #define EMC_PMACRO_DATA_BRICK_CTRL_FDPD 0x31c
18110de2114SJoseph Lo #define EMC_PMACRO_BRICK_CTRL_RFU1 0x330
18210de2114SJoseph Lo #define EMC_PMACRO_BRICK_CTRL_RFU2 0x334
18310de2114SJoseph Lo #define EMC_TR_TIMING_0 0x3b4
18410de2114SJoseph Lo #define EMC_TR_CTRL_1 0x3bc
18510de2114SJoseph Lo #define EMC_TR_RDV 0x3c4
1869b9d8632SJoseph Lo #define EMC_STALL_THEN_EXE_AFTER_CLKCHANGE 0x3cc
1879b9d8632SJoseph Lo #define EMC_SEL_DPD_CTRL 0x3d8
1889b9d8632SJoseph Lo #define EMC_SEL_DPD_CTRL_DATA_SEL_DPD_EN BIT(8)
1899b9d8632SJoseph Lo #define EMC_SEL_DPD_CTRL_ODT_SEL_DPD_EN BIT(5)
1909b9d8632SJoseph Lo #define EMC_SEL_DPD_CTRL_RESET_SEL_DPD_EN BIT(4)
1919b9d8632SJoseph Lo #define EMC_SEL_DPD_CTRL_CA_SEL_DPD_EN BIT(3)
1929b9d8632SJoseph Lo #define EMC_SEL_DPD_CTRL_CLK_SEL_DPD_EN BIT(2)
19310de2114SJoseph Lo #define EMC_PRE_REFRESH_REQ_CNT 0x3dc
19410de2114SJoseph Lo #define EMC_DYN_SELF_REF_CONTROL 0x3e0
19510de2114SJoseph Lo #define EMC_TXSRDLL 0x3e4
19610de2114SJoseph Lo #define EMC_CCFIFO_ADDR 0x3e8
19710de2114SJoseph Lo #define EMC_CCFIFO_ADDR_STALL_BY_1 (1 << 31)
19810de2114SJoseph Lo #define EMC_CCFIFO_ADDR_STALL(x) (((x) & 0x7fff) << 16)
19910de2114SJoseph Lo #define EMC_CCFIFO_ADDR_OFFSET(x) ((x) & 0xffff)
20010de2114SJoseph Lo #define EMC_CCFIFO_DATA 0x3ec
20110de2114SJoseph Lo #define EMC_TR_QPOP 0x3f4
20210de2114SJoseph Lo #define EMC_TR_RDV_MASK 0x3f8
20310de2114SJoseph Lo #define EMC_TR_QSAFE 0x3fc
20410de2114SJoseph Lo #define EMC_TR_QRST 0x400
2059b9d8632SJoseph Lo #define EMC_ISSUE_QRST 0x428
2069b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG2 0x458
2079b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG3 0x45c
20810de2114SJoseph Lo #define EMC_TR_DVFS 0x460
20910de2114SJoseph Lo #define EMC_AUTO_CAL_CHANNEL 0x464
21010de2114SJoseph Lo #define EMC_IBDLY 0x468
21110de2114SJoseph Lo #define EMC_OBDLY 0x46c
21210de2114SJoseph Lo #define EMC_TXDSRVTTGEN 0x480
21310de2114SJoseph Lo #define EMC_WE_DURATION 0x48c
21410de2114SJoseph Lo #define EMC_WS_DURATION 0x490
21510de2114SJoseph Lo #define EMC_WEV 0x494
21610de2114SJoseph Lo #define EMC_WSV 0x498
21710de2114SJoseph Lo #define EMC_CFG_3 0x49c
21810de2114SJoseph Lo #define EMC_MRW6 0x4a4
21910de2114SJoseph Lo #define EMC_MRW7 0x4a8
22010de2114SJoseph Lo #define EMC_MRW8 0x4ac
2219b9d8632SJoseph Lo #define EMC_MRW9 0x4b0
22210de2114SJoseph Lo #define EMC_MRW10 0x4b4
22310de2114SJoseph Lo #define EMC_MRW11 0x4b8
22410de2114SJoseph Lo #define EMC_MRW12 0x4bc
22510de2114SJoseph Lo #define EMC_MRW13 0x4c0
22610de2114SJoseph Lo #define EMC_MRW14 0x4c4
22710de2114SJoseph Lo #define EMC_MRW15 0x4d0
2289b9d8632SJoseph Lo #define EMC_CFG_SYNC 0x4d4
2299b9d8632SJoseph Lo #define EMC_FDPD_CTRL_CMD_NO_RAMP 0x4d8
2309b9d8632SJoseph Lo #define EMC_FDPD_CTRL_CMD_NO_RAMP_CMD_DPD_NO_RAMP_ENABLE BIT(0)
23110de2114SJoseph Lo #define EMC_WDV_CHK 0x4e0
23210de2114SJoseph Lo #define EMC_CFG_PIPE_2 0x554
2339b9d8632SJoseph Lo #define EMC_CFG_PIPE_CLK 0x558
2349b9d8632SJoseph Lo #define EMC_CFG_PIPE_CLK_CLK_ALWAYS_ON BIT(0)
23510de2114SJoseph Lo #define EMC_CFG_PIPE_1 0x55c
23610de2114SJoseph Lo #define EMC_CFG_PIPE 0x560
23710de2114SJoseph Lo #define EMC_QPOP 0x564
23810de2114SJoseph Lo #define EMC_QUSE_WIDTH 0x568
23910de2114SJoseph Lo #define EMC_PUTERM_WIDTH 0x56c
2409b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG7 0x574
24110de2114SJoseph Lo #define EMC_REFCTRL2 0x580
24210de2114SJoseph Lo #define EMC_FBIO_CFG7 0x584
24310de2114SJoseph Lo #define EMC_FBIO_CFG7_CH0_ENABLE BIT(1)
24410de2114SJoseph Lo #define EMC_FBIO_CFG7_CH1_ENABLE BIT(2)
24510de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0 0x588
24610de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE7_DATA_BRLSHFT_SHIFT 21
24710de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE7_DATA_BRLSHFT_MASK \
24810de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE7_DATA_BRLSHFT_SHIFT)
24910de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE6_DATA_BRLSHFT_SHIFT 18
25010de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE6_DATA_BRLSHFT_MASK \
25110de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE6_DATA_BRLSHFT_SHIFT)
25210de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE5_DATA_BRLSHFT_SHIFT 15
25310de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE5_DATA_BRLSHFT_MASK \
25410de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE5_DATA_BRLSHFT_SHIFT)
25510de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE4_DATA_BRLSHFT_SHIFT 12
25610de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE4_DATA_BRLSHFT_MASK \
25710de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE4_DATA_BRLSHFT_SHIFT)
25810de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE3_DATA_BRLSHFT_SHIFT 9
25910de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE3_DATA_BRLSHFT_MASK \
26010de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE3_DATA_BRLSHFT_SHIFT)
26110de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE2_DATA_BRLSHFT_SHIFT 6
26210de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE2_DATA_BRLSHFT_MASK \
26310de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE2_DATA_BRLSHFT_SHIFT)
26410de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE1_DATA_BRLSHFT_SHIFT 3
26510de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE1_DATA_BRLSHFT_MASK \
26610de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE1_DATA_BRLSHFT_SHIFT)
26710de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE0_DATA_BRLSHFT_SHIFT 0
26810de2114SJoseph Lo #define EMC_DATA_BRLSHFT_0_RANK0_BYTE0_DATA_BRLSHFT_MASK \
26910de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE0_DATA_BRLSHFT_SHIFT)
27010de2114SJoseph Lo
27110de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1 0x58c
27210de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE7_DATA_BRLSHFT_SHIFT 21
27310de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE7_DATA_BRLSHFT_MASK \
27410de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE7_DATA_BRLSHFT_SHIFT)
27510de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE6_DATA_BRLSHFT_SHIFT 18
27610de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE6_DATA_BRLSHFT_MASK \
27710de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE6_DATA_BRLSHFT_SHIFT)
27810de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE5_DATA_BRLSHFT_SHIFT 15
27910de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE5_DATA_BRLSHFT_MASK \
28010de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE5_DATA_BRLSHFT_SHIFT)
28110de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE4_DATA_BRLSHFT_SHIFT 12
28210de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE4_DATA_BRLSHFT_MASK \
28310de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE4_DATA_BRLSHFT_SHIFT)
28410de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE3_DATA_BRLSHFT_SHIFT 9
28510de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE3_DATA_BRLSHFT_MASK \
28610de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE3_DATA_BRLSHFT_SHIFT)
28710de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE2_DATA_BRLSHFT_SHIFT 6
28810de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE2_DATA_BRLSHFT_MASK \
28910de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE2_DATA_BRLSHFT_SHIFT)
29010de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE1_DATA_BRLSHFT_SHIFT 3
29110de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE1_DATA_BRLSHFT_MASK \
29210de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE1_DATA_BRLSHFT_SHIFT)
29310de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE0_DATA_BRLSHFT_SHIFT 0
29410de2114SJoseph Lo #define EMC_DATA_BRLSHFT_1_RANK1_BYTE0_DATA_BRLSHFT_MASK \
29510de2114SJoseph Lo (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE0_DATA_BRLSHFT_SHIFT)
29610de2114SJoseph Lo
29710de2114SJoseph Lo #define EMC_RFCPB 0x590
29810de2114SJoseph Lo #define EMC_DQS_BRLSHFT_0 0x594
29910de2114SJoseph Lo #define EMC_DQS_BRLSHFT_1 0x598
30010de2114SJoseph Lo #define EMC_CMD_BRLSHFT_0 0x59c
30110de2114SJoseph Lo #define EMC_CMD_BRLSHFT_1 0x5a0
30210de2114SJoseph Lo #define EMC_CMD_BRLSHFT_2 0x5a4
30310de2114SJoseph Lo #define EMC_CMD_BRLSHFT_3 0x5a8
30410de2114SJoseph Lo #define EMC_QUSE_BRLSHFT_0 0x5ac
3059b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG4 0x5b0
3069b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG5 0x5b4
30710de2114SJoseph Lo #define EMC_QUSE_BRLSHFT_1 0x5b8
30810de2114SJoseph Lo #define EMC_QUSE_BRLSHFT_2 0x5bc
30910de2114SJoseph Lo #define EMC_CCDMW 0x5c0
31010de2114SJoseph Lo #define EMC_QUSE_BRLSHFT_3 0x5c4
3119b9d8632SJoseph Lo #define EMC_AUTO_CAL_CONFIG6 0x5cc
31210de2114SJoseph Lo #define EMC_DLL_CFG_0 0x5e4
31310de2114SJoseph Lo #define EMC_DLL_CFG_1 0x5e8
31410de2114SJoseph Lo #define EMC_DLL_CFG_1_DDLLCAL_CTRL_START_TRIM_SHIFT 10
31510de2114SJoseph Lo #define EMC_DLL_CFG_1_DDLLCAL_CTRL_START_TRIM_MASK \
31610de2114SJoseph Lo (0x7ff << EMC_DLL_CFG_1_DDLLCAL_CTRL_START_TRIM_SHIFT)
31710de2114SJoseph Lo
31810de2114SJoseph Lo #define EMC_CONFIG_SAMPLE_DELAY 0x5f0
3199b9d8632SJoseph Lo #define EMC_CFG_UPDATE 0x5f4
3209b9d8632SJoseph Lo #define EMC_CFG_UPDATE_UPDATE_DLL_IN_UPDATE_SHIFT 9
3219b9d8632SJoseph Lo #define EMC_CFG_UPDATE_UPDATE_DLL_IN_UPDATE_MASK \
3229b9d8632SJoseph Lo (0x3 << EMC_CFG_UPDATE_UPDATE_DLL_IN_UPDATE_SHIFT)
3239b9d8632SJoseph Lo
32410de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK0_0 0x600
32510de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK0_1 0x604
32610de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK0_2 0x608
32710de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK0_3 0x60c
32810de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK0_4 0x610
32910de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK0_5 0x614
33010de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK1_0 0x620
33110de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK1_1 0x624
33210de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK1_2 0x628
33310de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK1_3 0x62c
33410de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK1_4 0x630
33510de2114SJoseph Lo #define EMC_PMACRO_QUSE_DDLL_RANK1_5 0x634
33610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0 0x640
33710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE1_SHIFT \
33810de2114SJoseph Lo 16
33910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE1_MASK \
34010de2114SJoseph Lo (0x3ff << \
34110de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE1_SHIFT)
34210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE0_SHIFT \
34310de2114SJoseph Lo 0
34410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE0_MASK \
34510de2114SJoseph Lo (0x3ff << \
34610de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE0_SHIFT)
34710de2114SJoseph Lo
34810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1 0x644
34910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE3_SHIFT \
35010de2114SJoseph Lo 16
35110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE3_MASK \
35210de2114SJoseph Lo (0x3ff << \
35310de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE3_SHIFT)
35410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE2_SHIFT \
35510de2114SJoseph Lo 0
35610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE2_MASK \
35710de2114SJoseph Lo (0x3ff << \
35810de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE2_SHIFT)
35910de2114SJoseph Lo
36010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2 0x648
36110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE5_SHIFT \
36210de2114SJoseph Lo 16
36310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE5_MASK \
36410de2114SJoseph Lo (0x3ff << \
36510de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE5_SHIFT)
36610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE4_SHIFT \
36710de2114SJoseph Lo 0
36810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE4_MASK \
36910de2114SJoseph Lo (0x3ff << \
37010de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE4_SHIFT)
37110de2114SJoseph Lo
37210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3 0x64c
37310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE7_SHIFT \
37410de2114SJoseph Lo 16
37510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE7_MASK \
37610de2114SJoseph Lo (0x3ff << \
37710de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE7_SHIFT)
37810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE6_SHIFT \
37910de2114SJoseph Lo 0
38010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE6_MASK \
38110de2114SJoseph Lo (0x3ff << \
38210de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE6_SHIFT)
38310de2114SJoseph Lo
38410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_4 0x650
38510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_5 0x654
38610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0 0x660
38710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE1_SHIFT \
38810de2114SJoseph Lo 16
38910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE1_MASK \
39010de2114SJoseph Lo (0x3ff << \
39110de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE1_SHIFT)
39210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE0_SHIFT \
39310de2114SJoseph Lo 0
39410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE0_MASK \
39510de2114SJoseph Lo (0x3ff << \
39610de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE0_SHIFT)
39710de2114SJoseph Lo
39810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1 0x664
39910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE3_SHIFT \
40010de2114SJoseph Lo 16
40110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE3_MASK \
40210de2114SJoseph Lo (0x3ff << \
40310de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE3_SHIFT)
40410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE2_SHIFT \
40510de2114SJoseph Lo 0
40610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE2_MASK \
40710de2114SJoseph Lo (0x3ff << \
40810de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE2_SHIFT)
40910de2114SJoseph Lo
41010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2 0x668
41110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE5_SHIFT \
41210de2114SJoseph Lo 16
41310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE5_MASK \
41410de2114SJoseph Lo (0x3ff << \
41510de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE5_SHIFT)
41610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE4_SHIFT \
41710de2114SJoseph Lo 0
41810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE4_MASK \
41910de2114SJoseph Lo (0x3ff << \
42010de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE4_SHIFT)
42110de2114SJoseph Lo
42210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3 0x66c
42310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE7_SHIFT \
42410de2114SJoseph Lo 16
42510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE7_MASK \
42610de2114SJoseph Lo (0x3ff << \
42710de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE7_SHIFT)
42810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE6_SHIFT \
42910de2114SJoseph Lo 0
43010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE6_MASK \
43110de2114SJoseph Lo (0x3ff << \
43210de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE6_SHIFT)
43310de2114SJoseph Lo
43410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_4 0x670
43510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_5 0x674
43610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_0 0x680
43710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_1 0x684
43810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_2 0x688
43910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_3 0x68c
44010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_4 0x690
44110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_5 0x694
44210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_0 0x6a0
44310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_1 0x6a4
44410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_2 0x6a8
44510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_3 0x6ac
44610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_4 0x6b0
44710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_5 0x6b4
44810de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_0 0x6c0
44910de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_1 0x6c4
45010de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_2 0x6c8
45110de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_3 0x6cc
45210de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_0 0x6e0
45310de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_1 0x6e4
45410de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_2 0x6e8
45510de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_3 0x6ec
45610de2114SJoseph Lo #define EMC_PMACRO_TX_PWRD_0 0x720
45710de2114SJoseph Lo #define EMC_PMACRO_TX_PWRD_1 0x724
45810de2114SJoseph Lo #define EMC_PMACRO_TX_PWRD_2 0x728
45910de2114SJoseph Lo #define EMC_PMACRO_TX_PWRD_3 0x72c
46010de2114SJoseph Lo #define EMC_PMACRO_TX_PWRD_4 0x730
46110de2114SJoseph Lo #define EMC_PMACRO_TX_PWRD_5 0x734
46210de2114SJoseph Lo #define EMC_PMACRO_TX_SEL_CLK_SRC_0 0x740
46310de2114SJoseph Lo #define EMC_PMACRO_TX_SEL_CLK_SRC_1 0x744
46410de2114SJoseph Lo #define EMC_PMACRO_TX_SEL_CLK_SRC_3 0x74c
46510de2114SJoseph Lo #define EMC_PMACRO_TX_SEL_CLK_SRC_2 0x748
46610de2114SJoseph Lo #define EMC_PMACRO_TX_SEL_CLK_SRC_4 0x750
46710de2114SJoseph Lo #define EMC_PMACRO_TX_SEL_CLK_SRC_5 0x754
46810de2114SJoseph Lo #define EMC_PMACRO_DDLL_BYPASS 0x760
46910de2114SJoseph Lo #define EMC_PMACRO_DDLL_PWRD_0 0x770
47010de2114SJoseph Lo #define EMC_PMACRO_DDLL_PWRD_1 0x774
47110de2114SJoseph Lo #define EMC_PMACRO_DDLL_PWRD_2 0x778
47210de2114SJoseph Lo #define EMC_PMACRO_CMD_CTRL_0 0x780
47310de2114SJoseph Lo #define EMC_PMACRO_CMD_CTRL_1 0x784
47410de2114SJoseph Lo #define EMC_PMACRO_CMD_CTRL_2 0x788
47510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_0 0x800
47610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_1 0x804
47710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_2 0x808
47810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_3 0x80c
47910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_0 0x810
48010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_1 0x814
48110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_2 0x818
48210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_3 0x81c
48310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_0 0x820
48410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_1 0x824
48510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_2 0x828
48610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_3 0x82c
48710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_0 0x830
48810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_1 0x834
48910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_2 0x838
49010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_3 0x83c
49110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_0 0x840
49210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_1 0x844
49310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_2 0x848
49410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_3 0x84c
49510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_0 0x850
49610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_1 0x854
49710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_2 0x858
49810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_3 0x85c
49910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_0 0x860
50010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_1 0x864
50110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_2 0x868
50210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_3 0x86c
50310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_0 0x870
50410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_1 0x874
50510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_2 0x878
50610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_3 0x87c
50710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_0 0x880
50810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_1 0x884
50910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_2 0x888
51010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_3 0x88c
51110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_0 0x890
51210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_1 0x894
51310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_2 0x898
51410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_3 0x89c
51510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_0 0x8a0
51610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_1 0x8a4
51710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_2 0x8a8
51810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_3 0x8ac
51910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_0 0x8b0
52010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_1 0x8b4
52110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_2 0x8b8
52210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_3 0x8bc
52310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_0 0x900
52410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_1 0x904
52510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_2 0x908
52610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_3 0x90c
52710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_0 0x910
52810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_1 0x914
52910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_2 0x918
53010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_3 0x91c
53110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_0 0x920
53210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_1 0x924
53310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_2 0x928
53410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_3 0x92c
53510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_0 0x930
53610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_1 0x934
53710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_2 0x938
53810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_3 0x93c
53910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_0 0x940
54010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_1 0x944
54110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_2 0x948
54210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_3 0x94c
54310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_0 0x950
54410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_1 0x954
54510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_2 0x958
54610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_3 0x95c
54710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_0 0x960
54810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_1 0x964
54910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_2 0x968
55010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_3 0x96c
55110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_0 0x970
55210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_1 0x974
55310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_2 0x978
55410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_3 0x97c
55510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_0 0x980
55610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_1 0x984
55710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_2 0x988
55810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_3 0x98c
55910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_0 0x990
56010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_1 0x994
56110de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_2 0x998
56210de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_3 0x99c
56310de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_0 0x9a0
56410de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_1 0x9a4
56510de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_2 0x9a8
56610de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_3 0x9ac
56710de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_0 0x9b0
56810de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_1 0x9b4
56910de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_2 0x9b8
57010de2114SJoseph Lo #define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_3 0x9bc
57110de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE0_0 0xa00
57210de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE0_1 0xa04
57310de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE0_2 0xa08
57410de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE1_0 0xa10
57510de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE1_1 0xa14
57610de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE1_2 0xa18
57710de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE2_0 0xa20
57810de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE2_1 0xa24
57910de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE2_2 0xa28
58010de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE3_0 0xa30
58110de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE3_1 0xa34
58210de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE3_2 0xa38
58310de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE4_0 0xa40
58410de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE4_1 0xa44
58510de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE4_2 0xa48
58610de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE5_0 0xa50
58710de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE5_1 0xa54
58810de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE5_2 0xa58
58910de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE6_0 0xa60
59010de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE6_1 0xa64
59110de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE6_2 0xa68
59210de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE7_0 0xa70
59310de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE7_1 0xa74
59410de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE7_2 0xa78
59510de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE0_0 0xb00
59610de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE0_1 0xb04
59710de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE0_2 0xb08
59810de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE1_0 0xb10
59910de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE1_1 0xb14
60010de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE1_2 0xb18
60110de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE2_0 0xb20
60210de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE2_1 0xb24
60310de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE2_2 0xb28
60410de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE3_0 0xb30
60510de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE3_1 0xb34
60610de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE3_2 0xb38
60710de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE4_0 0xb40
60810de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE4_1 0xb44
60910de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE4_2 0xb48
61010de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE5_0 0xb50
61110de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE5_1 0xb54
61210de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE5_2 0xb58
61310de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE6_0 0xb60
61410de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE6_1 0xb64
61510de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE6_2 0xb68
61610de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE7_0 0xb70
61710de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE7_1 0xb74
61810de2114SJoseph Lo #define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE7_2 0xb78
61910de2114SJoseph Lo #define EMC_PMACRO_IB_VREF_DQ_0 0xbe0
62010de2114SJoseph Lo #define EMC_PMACRO_IB_VREF_DQ_1 0xbe4
62110de2114SJoseph Lo #define EMC_PMACRO_IB_VREF_DQS_0 0xbf0
62210de2114SJoseph Lo #define EMC_PMACRO_IB_VREF_DQS_1 0xbf4
62310de2114SJoseph Lo #define EMC_PMACRO_DDLL_LONG_CMD_0 0xc00
62410de2114SJoseph Lo #define EMC_PMACRO_DDLL_LONG_CMD_1 0xc04
62510de2114SJoseph Lo #define EMC_PMACRO_DDLL_LONG_CMD_2 0xc08
62610de2114SJoseph Lo #define EMC_PMACRO_DDLL_LONG_CMD_3 0xc0c
62710de2114SJoseph Lo #define EMC_PMACRO_DDLL_LONG_CMD_4 0xc10
62810de2114SJoseph Lo #define EMC_PMACRO_DDLL_LONG_CMD_5 0xc14
62910de2114SJoseph Lo #define EMC_PMACRO_DDLL_SHORT_CMD_0 0xc20
63010de2114SJoseph Lo #define EMC_PMACRO_DDLL_SHORT_CMD_1 0xc24
63110de2114SJoseph Lo #define EMC_PMACRO_DDLL_SHORT_CMD_2 0xc28
6329b9d8632SJoseph Lo #define EMC_PMACRO_CFG_PM_GLOBAL_0 0xc30
6339b9d8632SJoseph Lo #define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE0 BIT(16)
6349b9d8632SJoseph Lo #define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE1 BIT(17)
6359b9d8632SJoseph Lo #define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE2 BIT(18)
6369b9d8632SJoseph Lo #define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE3 BIT(19)
6379b9d8632SJoseph Lo #define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE4 BIT(20)
6389b9d8632SJoseph Lo #define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE5 BIT(21)
6399b9d8632SJoseph Lo #define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE6 BIT(22)
6409b9d8632SJoseph Lo #define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE7 BIT(23)
64110de2114SJoseph Lo #define EMC_PMACRO_VTTGEN_CTRL_0 0xc34
64210de2114SJoseph Lo #define EMC_PMACRO_VTTGEN_CTRL_1 0xc38
64310de2114SJoseph Lo #define EMC_PMACRO_BG_BIAS_CTRL_0 0xc3c
6449b9d8632SJoseph Lo #define EMC_PMACRO_BG_BIAS_CTRL_0_BG_E_PWRD BIT(0)
6459b9d8632SJoseph Lo #define EMC_PMACRO_BG_BIAS_CTRL_0_BGLP_E_PWRD BIT(2)
64610de2114SJoseph Lo #define EMC_PMACRO_PAD_CFG_CTRL 0xc40
64710de2114SJoseph Lo #define EMC_PMACRO_ZCTRL 0xc44
64810de2114SJoseph Lo #define EMC_PMACRO_CMD_PAD_RX_CTRL 0xc50
64910de2114SJoseph Lo #define EMC_PMACRO_DATA_PAD_RX_CTRL 0xc54
65010de2114SJoseph Lo #define EMC_PMACRO_CMD_RX_TERM_MODE 0xc58
65110de2114SJoseph Lo #define EMC_PMACRO_DATA_RX_TERM_MODE 0xc5c
65210de2114SJoseph Lo #define EMC_PMACRO_CMD_PAD_TX_CTRL 0xc60
65310de2114SJoseph Lo #define EMC_PMACRO_CMD_PAD_TX_CTRL_CMD_DQ_TX_E_DCC BIT(1)
65410de2114SJoseph Lo #define EMC_PMACRO_CMD_PAD_TX_CTRL_CMD_DQSP_TX_E_DCC BIT(9)
65510de2114SJoseph Lo #define EMC_PMACRO_CMD_PAD_TX_CTRL_CMD_DQSN_TX_E_DCC BIT(16)
65610de2114SJoseph Lo #define EMC_PMACRO_CMD_PAD_TX_CTRL_CMD_CMD_TX_E_DCC BIT(24)
65710de2114SJoseph Lo #define EMC_PMACRO_CMD_PAD_TX_CTRL_CMD_DQ_TX_DRVFORCEON BIT(26)
65810de2114SJoseph Lo
65910de2114SJoseph Lo #define EMC_PMACRO_DATA_PAD_TX_CTRL 0xc64
6609b9d8632SJoseph Lo #define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_DQ_E_IVREF BIT(0)
66110de2114SJoseph Lo #define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_DQ_TX_E_DCC BIT(1)
6629b9d8632SJoseph Lo #define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_DQS_E_IVREF BIT(8)
66310de2114SJoseph Lo #define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_DQSP_TX_E_DCC BIT(9)
66410de2114SJoseph Lo #define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_DQSN_TX_E_DCC BIT(16)
66510de2114SJoseph Lo #define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_CMD_TX_E_DCC BIT(24)
66610de2114SJoseph Lo
66710de2114SJoseph Lo #define EMC_PMACRO_COMMON_PAD_TX_CTRL 0xc68
66810de2114SJoseph Lo #define EMC_PMACRO_AUTOCAL_CFG_COMMON 0xc78
6699b9d8632SJoseph Lo #define EMC_PMACRO_AUTOCAL_CFG_COMMON_E_CAL_BYPASS_DVFS BIT(16)
67010de2114SJoseph Lo #define EMC_PMACRO_VTTGEN_CTRL_2 0xcf0
67110de2114SJoseph Lo #define EMC_PMACRO_IB_RXRT 0xcf4
6729b9d8632SJoseph Lo #define EMC_PMACRO_TRAINING_CTRL_0 0xcf8
6739b9d8632SJoseph Lo #define EMC_PMACRO_TRAINING_CTRL_0_CH0_TRAINING_E_WRPTR BIT(3)
6749b9d8632SJoseph Lo #define EMC_PMACRO_TRAINING_CTRL_1 0xcfc
6759b9d8632SJoseph Lo #define EMC_PMACRO_TRAINING_CTRL_1_CH1_TRAINING_E_WRPTR BIT(3)
67610de2114SJoseph Lo #define EMC_TRAINING_CTRL 0xe04
67710de2114SJoseph Lo #define EMC_TRAINING_QUSE_CORS_CTRL 0xe0c
67810de2114SJoseph Lo #define EMC_TRAINING_QUSE_FINE_CTRL 0xe10
67910de2114SJoseph Lo #define EMC_TRAINING_QUSE_CTRL_MISC 0xe14
68010de2114SJoseph Lo #define EMC_TRAINING_WRITE_FINE_CTRL 0xe18
68110de2114SJoseph Lo #define EMC_TRAINING_WRITE_CTRL_MISC 0xe1c
68210de2114SJoseph Lo #define EMC_TRAINING_WRITE_VREF_CTRL 0xe20
68310de2114SJoseph Lo #define EMC_TRAINING_READ_FINE_CTRL 0xe24
68410de2114SJoseph Lo #define EMC_TRAINING_READ_CTRL_MISC 0xe28
68510de2114SJoseph Lo #define EMC_TRAINING_READ_VREF_CTRL 0xe2c
68610de2114SJoseph Lo #define EMC_TRAINING_CA_FINE_CTRL 0xe30
68710de2114SJoseph Lo #define EMC_TRAINING_CA_CTRL_MISC 0xe34
68810de2114SJoseph Lo #define EMC_TRAINING_CA_CTRL_MISC1 0xe38
68910de2114SJoseph Lo #define EMC_TRAINING_CA_VREF_CTRL 0xe3c
69010de2114SJoseph Lo #define EMC_TRAINING_SETTLE 0xe44
69110de2114SJoseph Lo #define EMC_TRAINING_MPC 0xe5c
69210de2114SJoseph Lo #define EMC_TRAINING_VREF_SETTLE 0xe6c
69310de2114SJoseph Lo #define EMC_TRAINING_QUSE_VREF_CTRL 0xed0
69410de2114SJoseph Lo #define EMC_TRAINING_OPT_DQS_IB_VREF_RANK0 0xed4
69510de2114SJoseph Lo #define EMC_TRAINING_OPT_DQS_IB_VREF_RANK1 0xed8
69610de2114SJoseph Lo
69710de2114SJoseph Lo #define EMC_COPY_TABLE_PARAM_PERIODIC_FIELDS BIT(0)
69810de2114SJoseph Lo #define EMC_COPY_TABLE_PARAM_TRIM_REGS BIT(1)
69910de2114SJoseph Lo
70010de2114SJoseph Lo enum burst_regs_list {
7019b9d8632SJoseph Lo EMC_RP_INDEX = 6,
7029b9d8632SJoseph Lo EMC_R2P_INDEX = 9,
7039b9d8632SJoseph Lo EMC_W2P_INDEX,
7049b9d8632SJoseph Lo EMC_MRW6_INDEX = 31,
70510de2114SJoseph Lo EMC_REFRESH_INDEX = 41,
70610de2114SJoseph Lo EMC_PRE_REFRESH_REQ_CNT_INDEX = 43,
7079b9d8632SJoseph Lo EMC_TRPAB_INDEX = 59,
7089b9d8632SJoseph Lo EMC_MRW7_INDEX = 62,
70910de2114SJoseph Lo EMC_FBIO_CFG5_INDEX = 65,
7109b9d8632SJoseph Lo EMC_FBIO_CFG7_INDEX,
7119b9d8632SJoseph Lo EMC_CFG_DIG_DLL_INDEX,
7129b9d8632SJoseph Lo EMC_ZCAL_INTERVAL_INDEX = 139,
7139b9d8632SJoseph Lo EMC_ZCAL_WAIT_CNT_INDEX,
7149b9d8632SJoseph Lo EMC_MRS_WAIT_CNT_INDEX = 141,
71510de2114SJoseph Lo EMC_DLL_CFG_0_INDEX = 144,
7169b9d8632SJoseph Lo EMC_PMACRO_AUTOCAL_CFG_COMMON_INDEX = 146,
7179b9d8632SJoseph Lo EMC_CFG_INDEX = 148,
71810de2114SJoseph Lo EMC_DYN_SELF_REF_CONTROL_INDEX = 150,
71910de2114SJoseph Lo EMC_PMACRO_CMD_PAD_TX_CTRL_INDEX = 161,
72010de2114SJoseph Lo EMC_PMACRO_DATA_PAD_TX_CTRL_INDEX,
72110de2114SJoseph Lo EMC_PMACRO_COMMON_PAD_TX_CTRL_INDEX,
72210de2114SJoseph Lo EMC_PMACRO_BRICK_CTRL_RFU1_INDEX = 167,
7239b9d8632SJoseph Lo EMC_PMACRO_BG_BIAS_CTRL_0_INDEX = 171,
7249b9d8632SJoseph Lo EMC_MRW14_INDEX = 199,
7259b9d8632SJoseph Lo EMC_MRW15_INDEX = 220,
72610de2114SJoseph Lo };
72710de2114SJoseph Lo
72810de2114SJoseph Lo enum trim_regs_list {
72910de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_INDEX = 60,
73010de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_INDEX,
73110de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_INDEX,
73210de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_INDEX,
73310de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_4_INDEX,
73410de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_5_INDEX,
73510de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_INDEX,
73610de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_INDEX,
73710de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_INDEX,
73810de2114SJoseph Lo EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_INDEX,
73910de2114SJoseph Lo };
74010de2114SJoseph Lo
74110de2114SJoseph Lo enum burst_mc_regs_list {
74210de2114SJoseph Lo MC_EMEM_ARB_MISC0_INDEX = 20,
74310de2114SJoseph Lo };
74410de2114SJoseph Lo
74510de2114SJoseph Lo enum {
74610de2114SJoseph Lo T_RP,
74710de2114SJoseph Lo T_FC_LPDDR4,
74810de2114SJoseph Lo T_RFC,
74910de2114SJoseph Lo T_PDEX,
75010de2114SJoseph Lo RL,
75110de2114SJoseph Lo };
75210de2114SJoseph Lo
75310de2114SJoseph Lo enum {
75410de2114SJoseph Lo AUTO_PD = 0,
75510de2114SJoseph Lo MAN_SR = 2,
75610de2114SJoseph Lo };
75710de2114SJoseph Lo
75810de2114SJoseph Lo enum {
75910de2114SJoseph Lo ASSEMBLY = 0,
76010de2114SJoseph Lo ACTIVE,
76110de2114SJoseph Lo };
76210de2114SJoseph Lo
76310de2114SJoseph Lo enum {
76410de2114SJoseph Lo C0D0U0,
76510de2114SJoseph Lo C0D0U1,
76610de2114SJoseph Lo C0D1U0,
76710de2114SJoseph Lo C0D1U1,
76810de2114SJoseph Lo C1D0U0,
76910de2114SJoseph Lo C1D0U1,
77010de2114SJoseph Lo C1D1U0,
77110de2114SJoseph Lo C1D1U1,
77210de2114SJoseph Lo DRAM_CLKTREE_NUM,
77310de2114SJoseph Lo };
77410de2114SJoseph Lo
77510de2114SJoseph Lo #define VREF_REGS_PER_CHANNEL_SIZE 4
77610de2114SJoseph Lo #define DRAM_TIMINGS_NUM 5
77710de2114SJoseph Lo #define BURST_REGS_PER_CHANNEL_SIZE 8
77810de2114SJoseph Lo #define TRIM_REGS_PER_CHANNEL_SIZE 10
77910de2114SJoseph Lo #define PTFV_ARRAY_SIZE 12
78010de2114SJoseph Lo #define SAVE_RESTORE_MOD_REGS_SIZE 12
78110de2114SJoseph Lo #define TRAINING_MOD_REGS_SIZE 20
78210de2114SJoseph Lo #define BURST_UP_DOWN_REGS_SIZE 24
78310de2114SJoseph Lo #define BURST_MC_REGS_SIZE 33
78410de2114SJoseph Lo #define TRIM_REGS_SIZE 138
78510de2114SJoseph Lo #define BURST_REGS_SIZE 221
78610de2114SJoseph Lo
78710de2114SJoseph Lo struct tegra210_emc_per_channel_regs {
78810de2114SJoseph Lo u16 bank;
78910de2114SJoseph Lo u16 offset;
79010de2114SJoseph Lo };
79110de2114SJoseph Lo
79210de2114SJoseph Lo struct tegra210_emc_table_register_offsets {
79310de2114SJoseph Lo u16 burst[BURST_REGS_SIZE];
79410de2114SJoseph Lo u16 trim[TRIM_REGS_SIZE];
79510de2114SJoseph Lo u16 burst_mc[BURST_MC_REGS_SIZE];
79610de2114SJoseph Lo u16 la_scale[BURST_UP_DOWN_REGS_SIZE];
79710de2114SJoseph Lo struct tegra210_emc_per_channel_regs burst_per_channel[BURST_REGS_PER_CHANNEL_SIZE];
79810de2114SJoseph Lo struct tegra210_emc_per_channel_regs trim_per_channel[TRIM_REGS_PER_CHANNEL_SIZE];
79910de2114SJoseph Lo struct tegra210_emc_per_channel_regs vref_per_channel[VREF_REGS_PER_CHANNEL_SIZE];
80010de2114SJoseph Lo };
80110de2114SJoseph Lo
80210de2114SJoseph Lo struct tegra210_emc_timing {
80310de2114SJoseph Lo u32 revision;
80410de2114SJoseph Lo const char dvfs_ver[60];
80510de2114SJoseph Lo u32 rate;
80610de2114SJoseph Lo u32 min_volt;
80710de2114SJoseph Lo u32 gpu_min_volt;
80810de2114SJoseph Lo const char clock_src[32];
80910de2114SJoseph Lo u32 clk_src_emc;
81010de2114SJoseph Lo u32 needs_training;
81110de2114SJoseph Lo u32 training_pattern;
81210de2114SJoseph Lo u32 trained;
81310de2114SJoseph Lo
81410de2114SJoseph Lo u32 periodic_training;
81510de2114SJoseph Lo u32 trained_dram_clktree[DRAM_CLKTREE_NUM];
81610de2114SJoseph Lo u32 current_dram_clktree[DRAM_CLKTREE_NUM];
81710de2114SJoseph Lo u32 run_clocks;
81810de2114SJoseph Lo u32 tree_margin;
81910de2114SJoseph Lo
82010de2114SJoseph Lo u32 num_burst;
82110de2114SJoseph Lo u32 num_burst_per_ch;
82210de2114SJoseph Lo u32 num_trim;
82310de2114SJoseph Lo u32 num_trim_per_ch;
82410de2114SJoseph Lo u32 num_mc_regs;
82510de2114SJoseph Lo u32 num_up_down;
82610de2114SJoseph Lo u32 vref_num;
82710de2114SJoseph Lo u32 training_mod_num;
82810de2114SJoseph Lo u32 dram_timing_num;
82910de2114SJoseph Lo
83010de2114SJoseph Lo u32 ptfv_list[PTFV_ARRAY_SIZE];
83110de2114SJoseph Lo
83210de2114SJoseph Lo u32 burst_regs[BURST_REGS_SIZE];
83310de2114SJoseph Lo u32 burst_reg_per_ch[BURST_REGS_PER_CHANNEL_SIZE];
83410de2114SJoseph Lo u32 shadow_regs_ca_train[BURST_REGS_SIZE];
83510de2114SJoseph Lo u32 shadow_regs_quse_train[BURST_REGS_SIZE];
83610de2114SJoseph Lo u32 shadow_regs_rdwr_train[BURST_REGS_SIZE];
83710de2114SJoseph Lo
83810de2114SJoseph Lo u32 trim_regs[TRIM_REGS_SIZE];
83910de2114SJoseph Lo u32 trim_perch_regs[TRIM_REGS_PER_CHANNEL_SIZE];
84010de2114SJoseph Lo
84110de2114SJoseph Lo u32 vref_perch_regs[VREF_REGS_PER_CHANNEL_SIZE];
84210de2114SJoseph Lo
84310de2114SJoseph Lo u32 dram_timings[DRAM_TIMINGS_NUM];
84410de2114SJoseph Lo u32 training_mod_regs[TRAINING_MOD_REGS_SIZE];
84510de2114SJoseph Lo u32 save_restore_mod_regs[SAVE_RESTORE_MOD_REGS_SIZE];
84610de2114SJoseph Lo u32 burst_mc_regs[BURST_MC_REGS_SIZE];
84710de2114SJoseph Lo u32 la_scale_regs[BURST_UP_DOWN_REGS_SIZE];
84810de2114SJoseph Lo
84910de2114SJoseph Lo u32 min_mrs_wait;
85010de2114SJoseph Lo u32 emc_mrw;
85110de2114SJoseph Lo u32 emc_mrw2;
85210de2114SJoseph Lo u32 emc_mrw3;
85310de2114SJoseph Lo u32 emc_mrw4;
85410de2114SJoseph Lo u32 emc_mrw9;
85510de2114SJoseph Lo u32 emc_mrs;
85610de2114SJoseph Lo u32 emc_emrs;
85710de2114SJoseph Lo u32 emc_emrs2;
85810de2114SJoseph Lo u32 emc_auto_cal_config;
85910de2114SJoseph Lo u32 emc_auto_cal_config2;
86010de2114SJoseph Lo u32 emc_auto_cal_config3;
86110de2114SJoseph Lo u32 emc_auto_cal_config4;
86210de2114SJoseph Lo u32 emc_auto_cal_config5;
86310de2114SJoseph Lo u32 emc_auto_cal_config6;
86410de2114SJoseph Lo u32 emc_auto_cal_config7;
86510de2114SJoseph Lo u32 emc_auto_cal_config8;
86610de2114SJoseph Lo u32 emc_cfg_2;
86710de2114SJoseph Lo u32 emc_sel_dpd_ctrl;
86810de2114SJoseph Lo u32 emc_fdpd_ctrl_cmd_no_ramp;
86910de2114SJoseph Lo u32 dll_clk_src;
87010de2114SJoseph Lo u32 clk_out_enb_x_0_clk_enb_emc_dll;
87110de2114SJoseph Lo u32 latency;
87210de2114SJoseph Lo };
87310de2114SJoseph Lo
874*0553d7b2SThierry Reding enum tegra210_emc_refresh {
875*0553d7b2SThierry Reding TEGRA210_EMC_REFRESH_NOMINAL = 0,
876*0553d7b2SThierry Reding TEGRA210_EMC_REFRESH_2X,
877*0553d7b2SThierry Reding TEGRA210_EMC_REFRESH_4X,
878*0553d7b2SThierry Reding TEGRA210_EMC_REFRESH_THROTTLE, /* 4x Refresh + derating. */
879*0553d7b2SThierry Reding };
880*0553d7b2SThierry Reding
88110de2114SJoseph Lo #define DRAM_TYPE_DDR3 0
88210de2114SJoseph Lo #define DRAM_TYPE_LPDDR4 1
88310de2114SJoseph Lo #define DRAM_TYPE_LPDDR2 2
88410de2114SJoseph Lo #define DRAM_TYPE_DDR2 3
88510de2114SJoseph Lo
88610de2114SJoseph Lo struct tegra210_emc {
88710de2114SJoseph Lo struct tegra_mc *mc;
88810de2114SJoseph Lo struct device *dev;
88910de2114SJoseph Lo struct clk *clk;
89010de2114SJoseph Lo
891*0553d7b2SThierry Reding /* nominal EMC frequency table */
892*0553d7b2SThierry Reding struct tegra210_emc_timing *nominal;
893*0553d7b2SThierry Reding /* derated EMC frequency table */
894*0553d7b2SThierry Reding struct tegra210_emc_timing *derated;
895*0553d7b2SThierry Reding
896*0553d7b2SThierry Reding /* currently selected table (nominal or derated) */
89710de2114SJoseph Lo struct tegra210_emc_timing *timings;
89810de2114SJoseph Lo unsigned int num_timings;
89910de2114SJoseph Lo
90010de2114SJoseph Lo const struct tegra210_emc_table_register_offsets *offsets;
90110de2114SJoseph Lo
90210de2114SJoseph Lo const struct tegra210_emc_sequence *sequence;
90310de2114SJoseph Lo spinlock_t lock;
90410de2114SJoseph Lo
90510de2114SJoseph Lo void __iomem *regs, *channel[2];
90610de2114SJoseph Lo unsigned int num_channels;
90710de2114SJoseph Lo unsigned int num_devices;
90810de2114SJoseph Lo unsigned int dram_type;
90910de2114SJoseph Lo
91010de2114SJoseph Lo struct tegra210_emc_timing *last;
91110de2114SJoseph Lo struct tegra210_emc_timing *next;
91210de2114SJoseph Lo
91310de2114SJoseph Lo unsigned int training_interval;
91410de2114SJoseph Lo struct timer_list training;
91510de2114SJoseph Lo
916*0553d7b2SThierry Reding enum tegra210_emc_refresh refresh;
917*0553d7b2SThierry Reding unsigned int refresh_poll_interval;
918*0553d7b2SThierry Reding struct timer_list refresh_timer;
919*0553d7b2SThierry Reding unsigned int temperature;
920*0553d7b2SThierry Reding atomic_t refresh_poll;
921*0553d7b2SThierry Reding
92210de2114SJoseph Lo ktime_t clkchange_time;
92310de2114SJoseph Lo int clkchange_delay;
92410de2114SJoseph Lo
92510de2114SJoseph Lo unsigned long resume_rate;
92610de2114SJoseph Lo
92710de2114SJoseph Lo struct {
92810de2114SJoseph Lo struct dentry *root;
92910de2114SJoseph Lo unsigned long min_rate;
93010de2114SJoseph Lo unsigned long max_rate;
931*0553d7b2SThierry Reding unsigned int temperature;
93210de2114SJoseph Lo } debugfs;
93310de2114SJoseph Lo
93410de2114SJoseph Lo struct tegra210_clk_emc_provider provider;
93510de2114SJoseph Lo };
93610de2114SJoseph Lo
93710de2114SJoseph Lo struct tegra210_emc_sequence {
93810de2114SJoseph Lo u8 revision;
93910de2114SJoseph Lo void (*set_clock)(struct tegra210_emc *emc, u32 clksrc);
94010de2114SJoseph Lo u32 (*periodic_compensation)(struct tegra210_emc *emc);
94110de2114SJoseph Lo };
94210de2114SJoseph Lo
emc_writel(struct tegra210_emc * emc,u32 value,unsigned int offset)94310de2114SJoseph Lo static inline void emc_writel(struct tegra210_emc *emc, u32 value,
94410de2114SJoseph Lo unsigned int offset)
94510de2114SJoseph Lo {
94610de2114SJoseph Lo writel_relaxed(value, emc->regs + offset);
94710de2114SJoseph Lo }
94810de2114SJoseph Lo
emc_readl(struct tegra210_emc * emc,unsigned int offset)94910de2114SJoseph Lo static inline u32 emc_readl(struct tegra210_emc *emc, unsigned int offset)
95010de2114SJoseph Lo {
95110de2114SJoseph Lo return readl_relaxed(emc->regs + offset);
95210de2114SJoseph Lo }
95310de2114SJoseph Lo
emc_channel_writel(struct tegra210_emc * emc,unsigned int channel,u32 value,unsigned int offset)95410de2114SJoseph Lo static inline void emc_channel_writel(struct tegra210_emc *emc,
95510de2114SJoseph Lo unsigned int channel,
95610de2114SJoseph Lo u32 value, unsigned int offset)
95710de2114SJoseph Lo {
95810de2114SJoseph Lo writel_relaxed(value, emc->channel[channel] + offset);
95910de2114SJoseph Lo }
96010de2114SJoseph Lo
emc_channel_readl(struct tegra210_emc * emc,unsigned int channel,unsigned int offset)96110de2114SJoseph Lo static inline u32 emc_channel_readl(struct tegra210_emc *emc,
96210de2114SJoseph Lo unsigned int channel, unsigned int offset)
96310de2114SJoseph Lo {
96410de2114SJoseph Lo return readl_relaxed(emc->channel[channel] + offset);
96510de2114SJoseph Lo }
96610de2114SJoseph Lo
ccfifo_writel(struct tegra210_emc * emc,u32 value,unsigned int offset,u32 delay)96710de2114SJoseph Lo static inline void ccfifo_writel(struct tegra210_emc *emc, u32 value,
96810de2114SJoseph Lo unsigned int offset, u32 delay)
96910de2114SJoseph Lo {
97010de2114SJoseph Lo writel_relaxed(value, emc->regs + EMC_CCFIFO_DATA);
97110de2114SJoseph Lo
97210de2114SJoseph Lo value = EMC_CCFIFO_ADDR_STALL_BY_1 | EMC_CCFIFO_ADDR_STALL(delay) |
97310de2114SJoseph Lo EMC_CCFIFO_ADDR_OFFSET(offset);
97410de2114SJoseph Lo writel_relaxed(value, emc->regs + EMC_CCFIFO_ADDR);
97510de2114SJoseph Lo }
97610de2114SJoseph Lo
div_o3(u32 a,u32 b)97710de2114SJoseph Lo static inline u32 div_o3(u32 a, u32 b)
97810de2114SJoseph Lo {
97910de2114SJoseph Lo u32 result = a / b;
98010de2114SJoseph Lo
98110de2114SJoseph Lo if ((b * result) < a)
98210de2114SJoseph Lo return result + 1;
98310de2114SJoseph Lo
98410de2114SJoseph Lo return result;
98510de2114SJoseph Lo }
98610de2114SJoseph Lo
9879b9d8632SJoseph Lo /* from tegra210-emc-r21021.c */
9889b9d8632SJoseph Lo extern const struct tegra210_emc_sequence tegra210_emc_r21021;
9899b9d8632SJoseph Lo
990*0553d7b2SThierry Reding int tegra210_emc_set_refresh(struct tegra210_emc *emc,
991*0553d7b2SThierry Reding enum tegra210_emc_refresh refresh);
99210de2114SJoseph Lo u32 tegra210_emc_mrr_read(struct tegra210_emc *emc, unsigned int chip,
99310de2114SJoseph Lo unsigned int address);
99410de2114SJoseph Lo void tegra210_emc_do_clock_change(struct tegra210_emc *emc, u32 clksrc);
99510de2114SJoseph Lo void tegra210_emc_set_shadow_bypass(struct tegra210_emc *emc, int set);
99610de2114SJoseph Lo void tegra210_emc_timing_update(struct tegra210_emc *emc);
99710de2114SJoseph Lo u32 tegra210_emc_get_dll_state(struct tegra210_emc_timing *next);
99810de2114SJoseph Lo struct tegra210_emc_timing *tegra210_emc_find_timing(struct tegra210_emc *emc,
99910de2114SJoseph Lo unsigned long rate);
1000*0553d7b2SThierry Reding void tegra210_emc_adjust_timing(struct tegra210_emc *emc,
1001*0553d7b2SThierry Reding struct tegra210_emc_timing *timing);
100210de2114SJoseph Lo int tegra210_emc_wait_for_update(struct tegra210_emc *emc, unsigned int channel,
100310de2114SJoseph Lo unsigned int offset, u32 bit_mask, bool state);
100410de2114SJoseph Lo unsigned long tegra210_emc_actual_osc_clocks(u32 in);
100510de2114SJoseph Lo u32 tegra210_emc_compensate(struct tegra210_emc_timing *next, u32 offset);
100610de2114SJoseph Lo void tegra210_emc_dll_disable(struct tegra210_emc *emc);
100710de2114SJoseph Lo void tegra210_emc_dll_enable(struct tegra210_emc *emc);
100810de2114SJoseph Lo u32 tegra210_emc_dll_prelock(struct tegra210_emc *emc, u32 clksrc);
100910de2114SJoseph Lo u32 tegra210_emc_dvfs_power_ramp_down(struct tegra210_emc *emc, u32 clk,
101010de2114SJoseph Lo bool flip_backward);
101110de2114SJoseph Lo u32 tegra210_emc_dvfs_power_ramp_up(struct tegra210_emc *emc, u32 clk,
101210de2114SJoseph Lo bool flip_backward);
101310de2114SJoseph Lo void tegra210_emc_reset_dram_clktree_values(struct tegra210_emc_timing *timing);
101410de2114SJoseph Lo void tegra210_emc_start_periodic_compensation(struct tegra210_emc *emc);
101510de2114SJoseph Lo
101610de2114SJoseph Lo #endif
1017