blob: f81603cc48808708faf7d9670f2cf4199f27145f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
/*
* Copyright 2018 NXP
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef __DDR4_CONFIG_H__
#define __DDR4_CONFIG_H__
#include "../ddr.h"
#define DDR_ONE_RANK
#define RUN_ON_SILICON
#define DDR4_SW_FFC
#define ENABLE_RETENTION
#define DRAM_VREF 0x1f
#define SAVE_DDRPHY_TRAIN_ADDR 0x184000
/* choose p2 state data rate, define just one of below macro */
#define PLLBYPASS_400MBPS
/* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* for DDR4 */
/* Note:DQ SI RON=40ohm, RTT=48ohm */
/* CA SI RON=40ohm, RTT=65ohm */
/* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* for DDR RTT NOM/PARK */
#define DDR4_ODT_DIS 0
#define DDR4_ODT_60 1
#define DDR4_ODT_120 2
#define DDR4_ODT_40 3
#define DDR4_ODT_240 4
#define DDR4_ODT_48 5
#define DDR4_ODT_80 6
#define DDR4_ODT_34 7
/* for DDR RON */
#define DDR4_RON_34 0
#define DDR4_RON_48 1
#define DDR4_RON_40 2
#define DDR4_RON_RES 3
/* for DDR RTT write */
#define DDR4_RTT_WR_DIS 0
#define DDR4_RTT_WR_120 1
#define DDR4_RTT_WR_240 2
#define DDR4_RTT_WR_HZ 3
#define DDR4_RTT_WR_80 4
/* for DDR4 PHY data RON */
#define DDR4_PHY_DATA_RON_34 0xeba
#define DDR4_PHY_DATA_RON_40 0xe38
#define DDR4_PHY_DATA_RON_48 ((0x1a << 6) | 0x1a)
#define DDR4_PHY_DATA_RON_60 ((0x18 << 6) | 0x18)
#define DDR4_PHY_DATA_RON_80 ((0x0a << 6) | 0x0a)
#define DDR4_PHY_DATA_RON_120 ((0x08 << 6) | 0x08)
#define DDR4_PHY_DATA_RON_240 ((0x02<<6)|0x02)
/* for DDR4 PHY data RTT */
#define DDR4_PHY_DATA_RTT_34 0x3a
#define DDR4_PHY_DATA_RTT_40 0x38
#define DDR4_PHY_DATA_RTT_48 0x1a
#define DDR4_PHY_DATA_RTT_60 0x18
#define DDR4_PHY_DATA_RTT_80 0x0a
#define DDR4_PHY_DATA_RTT_120 0x08
#define DDR4_PHY_DATA_RTT_240 0x02
/* for DDR4 PHY address RON */
#define DDR4_PHY_ADDR_RON_30 ((0x07 << 5) | 0x07)
#define DDR4_PHY_ADDR_RON_40 0x63
#define DDR4_PHY_ADDR_RON_60 ((0x01 << 5) | 0x01)
#define DDR4_PHY_ADDR_RON_120 ((0x00 << 5) | 0x00)
#define DDR4_PHY_ADDR_RON DDR4_PHY_ADDR_RON_40
/* read DDR4 */
#ifdef DDR_ONE_RANK
#define DDR4_RON DDR4_RON_34
#define DDR4_PHY_DATA_RTT DDR4_PHY_DATA_RTT_48
#define DDR4_PHYREF_VALUE 91
#else
#define DDR4_RON DDR4_RON_40
#define DDR4_PHY_DATA_RTT DDR4_PHY_DATA_RTT_48
#define DDR4_PHYREF_VALUE 93
#endif
/* write DDR4 */
#ifdef DDR_ONE_RANK
/* one lank */
#define DDR4_PHY_DATA_RON DDR4_PHY_DATA_RON_34
#define DDR4_RTT_NOM DDR4_ODT_60
#define DDR4_RTT_WR DDR4_RTT_WR_DIS
#define DDR4_RTT_PARK DDR4_ODT_DIS
#define DDR4_MR6_VALUE 0x0d
#else
/* two lank */
#define DDR4_PHY_DATA_RON DDR4_PHY_DATA_RON_40
#define DDR4_RTT_NOM DDR4_ODT_60
#define DDR4_RTT_WR DDR4_RTT_WR_DIS
#define DDR4_RTT_PARK DDR4_ODT_DIS
#define DDR4_MR6_VALUE 0x10
#endif
/* voltage:delay */
#define DDR4_2D_WEIGHT (31 << 8 | 127)
#define ANAMIX_PLL_BASE_ADDR 0x30360000
#define HW_DRAM_PLL_CFG0_ADDR (ANAMIX_PLL_BASE_ADDR + 0x60)
#define HW_DRAM_PLL_CFG1_ADDR (ANAMIX_PLL_BASE_ADDR + 0x64)
#define HW_DRAM_PLL_CFG2_ADDR (ANAMIX_PLL_BASE_ADDR + 0x68)
#define GPC_PU_PWRHSK 0x303A01FC
#define GPC_TOP_CONFIG_OFFSET 0x0000
#define AIPS1_ARB_BASE_ADDR 0x30000000
#define AIPS_TZ1_BASE_ADDR AIPS1_ARB_BASE_ADDR
#define AIPS1_OFF_BASE_ADDR (AIPS_TZ1_BASE_ADDR + 0x200000)
#define CCM_IPS_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x180000)
#define CCM_SRC_CTRL_OFFSET (CCM_IPS_BASE_ADDR + 0x800)
#define CCM_SRC_CTRL(n) (CCM_SRC_CTRL_OFFSET + 0x10 * n)
#define dwc_ddrphy_apb_wr(addr, data) reg32_write(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + 4 * (addr), data)
#define dwc_ddrphy_apb_rd(addr) (reg32_read(IP2APB_DDRPHY_IPS_BASE_ADDR(0) + 4 * (addr)))
#define reg32clrbit(addr, bitpos) reg32_write((addr), (reg32_read((addr)) & (0xFFFFFFFF ^ (1 << (bitpos)))))
#define DDR_CSD1_BASE_ADDR 0x40000000
#define DDR_CSD2_BASE_ADDR 0x80000000
void restore_1d2d_trained_csr_ddr4_p012(unsigned int addr);
void save_1d2d_trained_csr_ddr4_p012(unsigned int addr);
void ddr4_mr_write(unsigned int mr, unsigned int data, unsigned int read, unsigned int rank);
void ddr4_phyinit_train_sw_ffc(unsigned int Train2D);
#endif
|