1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef AST_DRAM_TABLES_H
3#define AST_DRAM_TABLES_H
4
5/* DRAM timing tables */
6struct ast_dramstruct {
7 u16 index;
8 u32 data;
9};
10
11static const struct ast_dramstruct ast2000_dram_table_data[] = {
12 { 0x0108, 0x00000000 },
13 { 0x0120, 0x00004a21 },
14 { 0xFF00, 0x00000043 },
15 { 0x0000, 0xFFFFFFFF },
16 { 0x0004, 0x00000089 },
17 { 0x0008, 0x22331353 },
18 { 0x000C, 0x0d07000b },
19 { 0x0010, 0x11113333 },
20 { 0x0020, 0x00110350 },
21 { 0x0028, 0x1e0828f0 },
22 { 0x0024, 0x00000001 },
23 { 0x001C, 0x00000000 },
24 { 0x0014, 0x00000003 },
25 { 0xFF00, 0x00000043 },
26 { 0x0018, 0x00000131 },
27 { 0x0014, 0x00000001 },
28 { 0xFF00, 0x00000043 },
29 { 0x0018, 0x00000031 },
30 { 0x0014, 0x00000001 },
31 { 0xFF00, 0x00000043 },
32 { 0x0028, 0x1e0828f1 },
33 { 0x0024, 0x00000003 },
34 { 0x002C, 0x1f0f28fb },
35 { 0x0030, 0xFFFFFE01 },
36 { 0xFFFF, 0xFFFFFFFF }
37};
38
39static const struct ast_dramstruct ast1100_dram_table_data[] = {
40 { 0x2000, 0x1688a8a8 },
41 { 0x2020, 0x000041f0 },
42 { 0xFF00, 0x00000043 },
43 { 0x0000, 0xfc600309 },
44 { 0x006C, 0x00909090 },
45 { 0x0064, 0x00050000 },
46 { 0x0004, 0x00000585 },
47 { 0x0008, 0x0011030f },
48 { 0x0010, 0x22201724 },
49 { 0x0018, 0x1e29011a },
50 { 0x0020, 0x00c82222 },
51 { 0x0014, 0x01001523 },
52 { 0x001C, 0x1024010d },
53 { 0x0024, 0x00cb2522 },
54 { 0x0038, 0xffffff82 },
55 { 0x003C, 0x00000000 },
56 { 0x0040, 0x00000000 },
57 { 0x0044, 0x00000000 },
58 { 0x0048, 0x00000000 },
59 { 0x004C, 0x00000000 },
60 { 0x0050, 0x00000000 },
61 { 0x0054, 0x00000000 },
62 { 0x0058, 0x00000000 },
63 { 0x005C, 0x00000000 },
64 { 0x0060, 0x032aa02a },
65 { 0x0064, 0x002d3000 },
66 { 0x0068, 0x00000000 },
67 { 0x0070, 0x00000000 },
68 { 0x0074, 0x00000000 },
69 { 0x0078, 0x00000000 },
70 { 0x007C, 0x00000000 },
71 { 0x0034, 0x00000001 },
72 { 0xFF00, 0x00000043 },
73 { 0x002C, 0x00000732 },
74 { 0x0030, 0x00000040 },
75 { 0x0028, 0x00000005 },
76 { 0x0028, 0x00000007 },
77 { 0x0028, 0x00000003 },
78 { 0x0028, 0x00000001 },
79 { 0x000C, 0x00005a08 },
80 { 0x002C, 0x00000632 },
81 { 0x0028, 0x00000001 },
82 { 0x0030, 0x000003c0 },
83 { 0x0028, 0x00000003 },
84 { 0x0030, 0x00000040 },
85 { 0x0028, 0x00000003 },
86 { 0x000C, 0x00005a21 },
87 { 0x0034, 0x00007c03 },
88 { 0x0120, 0x00004c41 },
89 { 0xffff, 0xffffffff },
90};
91
92static const struct ast_dramstruct ast2100_dram_table_data[] = {
93 { 0x2000, 0x1688a8a8 },
94 { 0x2020, 0x00004120 },
95 { 0xFF00, 0x00000043 },
96 { 0x0000, 0xfc600309 },
97 { 0x006C, 0x00909090 },
98 { 0x0064, 0x00070000 },
99 { 0x0004, 0x00000489 },
100 { 0x0008, 0x0011030f },
101 { 0x0010, 0x32302926 },
102 { 0x0018, 0x274c0122 },
103 { 0x0020, 0x00ce2222 },
104 { 0x0014, 0x01001523 },
105 { 0x001C, 0x1024010d },
106 { 0x0024, 0x00cb2522 },
107 { 0x0038, 0xffffff82 },
108 { 0x003C, 0x00000000 },
109 { 0x0040, 0x00000000 },
110 { 0x0044, 0x00000000 },
111 { 0x0048, 0x00000000 },
112 { 0x004C, 0x00000000 },
113 { 0x0050, 0x00000000 },
114 { 0x0054, 0x00000000 },
115 { 0x0058, 0x00000000 },
116 { 0x005C, 0x00000000 },
117 { 0x0060, 0x0f2aa02a },
118 { 0x0064, 0x003f3005 },
119 { 0x0068, 0x02020202 },
120 { 0x0070, 0x00000000 },
121 { 0x0074, 0x00000000 },
122 { 0x0078, 0x00000000 },
123 { 0x007C, 0x00000000 },
124 { 0x0034, 0x00000001 },
125 { 0xFF00, 0x00000043 },
126 { 0x002C, 0x00000942 },
127 { 0x0030, 0x00000040 },
128 { 0x0028, 0x00000005 },
129 { 0x0028, 0x00000007 },
130 { 0x0028, 0x00000003 },
131 { 0x0028, 0x00000001 },
132 { 0x000C, 0x00005a08 },
133 { 0x002C, 0x00000842 },
134 { 0x0028, 0x00000001 },
135 { 0x0030, 0x000003c0 },
136 { 0x0028, 0x00000003 },
137 { 0x0030, 0x00000040 },
138 { 0x0028, 0x00000003 },
139 { 0x000C, 0x00005a21 },
140 { 0x0034, 0x00007c03 },
141 { 0x0120, 0x00005061 },
142 { 0xffff, 0xffffffff },
143};
144
145/*
146 * AST2500 DRAM settings modules
147 */
148#define REGTBL_NUM 17
149#define REGIDX_010 0
150#define REGIDX_014 1
151#define REGIDX_018 2
152#define REGIDX_020 3
153#define REGIDX_024 4
154#define REGIDX_02C 5
155#define REGIDX_030 6
156#define REGIDX_214 7
157#define REGIDX_2E0 8
158#define REGIDX_2E4 9
159#define REGIDX_2E8 10
160#define REGIDX_2EC 11
161#define REGIDX_2F0 12
162#define REGIDX_2F4 13
163#define REGIDX_2F8 14
164#define REGIDX_RFC 15
165#define REGIDX_PLL 16
166
167static const u32 ast2500_ddr3_1600_timing_table[REGTBL_NUM] = {
168 0x64604D38, /* 0x010 */
169 0x29690599, /* 0x014 */
170 0x00000300, /* 0x018 */
171 0x00000000, /* 0x020 */
172 0x00000000, /* 0x024 */
173 0x02181E70, /* 0x02C */
174 0x00000040, /* 0x030 */
175 0x00000024, /* 0x214 */
176 0x02001300, /* 0x2E0 */
177 0x0E0000A0, /* 0x2E4 */
178 0x000E001B, /* 0x2E8 */
179 0x35B8C105, /* 0x2EC */
180 0x08090408, /* 0x2F0 */
181 0x9B000800, /* 0x2F4 */
182 0x0E400A00, /* 0x2F8 */
183 0x9971452F, /* tRFC */
184 0x000071C1 /* PLL */
185};
186
187static const u32 ast2500_ddr4_1600_timing_table[REGTBL_NUM] = {
188 0x63604E37, /* 0x010 */
189 0xE97AFA99, /* 0x014 */
190 0x00019000, /* 0x018 */
191 0x08000000, /* 0x020 */
192 0x00000400, /* 0x024 */
193 0x00000410, /* 0x02C */
194 0x00000101, /* 0x030 */
195 0x00000024, /* 0x214 */
196 0x03002900, /* 0x2E0 */
197 0x0E0000A0, /* 0x2E4 */
198 0x000E001C, /* 0x2E8 */
199 0x35B8C106, /* 0x2EC */
200 0x08080607, /* 0x2F0 */
201 0x9B000900, /* 0x2F4 */
202 0x0E400A00, /* 0x2F8 */
203 0x99714545, /* tRFC */
204 0x000071C1 /* PLL */
205};
206
207#endif
208

source code of linux/drivers/gpu/drm/ast/ast_dram_tables.h