Commit 773f5f63dc0db5e39b4782947e761479ecf1bef2
1 parent
4c642e6829
Exists in
smarc_8mq_lf_v2020.04
and in
22 other branches
ARM: uniphier: shrink arrays of DDR-PHY parameters for LD20 SoC
The two arrays ddrphy_{op,ip}_dq_shift_val, occupy more than 3.8 KB memory footprint, which is significant in SPL. There are PHY parameters for 5 boards, but they are actually not board specific, but SoC specific. After all, we just need to have 2 patterns, for LD20 and LD21. Also, the shift values are small enough to become "short" type instead of "int". This change will save about 3 KB memory footprint. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Showing 1 changed file with 79 additions and 175 deletions Side-by-side Diff
arch/arm/mach-uniphier/dram/umc-ld20.c
1 | 1 | /* |
2 | - * Copyright (C) 2016 Socionext Inc. | |
2 | + * Copyright (C) 2016-2017 Socionext Inc. | |
3 | 3 | * |
4 | - * based on commit 1f6feb76e7f9753f51955444e422486521f9b3a3 of Diag | |
4 | + * based on commit e732175d0b0dbc2a3855cb8ac791c538666b6fd4 of Diag | |
5 | 5 | * |
6 | 6 | * SPDX-License-Identifier: GPL-2.0+ |
7 | 7 | */ |
8 | 8 | |
9 | 9 | |
10 | 10 | |
11 | 11 | |
12 | 12 | |
13 | 13 | |
14 | 14 | |
15 | 15 | |
16 | 16 | |
17 | 17 | |
18 | 18 | |
19 | 19 | |
... | ... | @@ -77,191 +77,95 @@ |
77 | 77 | 0x00000140, 0x00000180, 0x00000140 |
78 | 78 | }; |
79 | 79 | |
80 | -static const int ddrphy_op_dq_shift_val[DRAM_BOARD_NR][DRAM_CH_NR][32] = { | |
81 | - { /* LD20 reference */ | |
82 | - { | |
83 | - 2, 1, 0, 1, 2, 1, 1, 1, | |
84 | - 2, 1, 1, 2, 1, 1, 1, 1, | |
85 | - 1, 2, 1, 1, 1, 2, 1, 1, | |
86 | - 2, 2, 0, 1, 1, 2, 2, 1, | |
87 | - }, | |
88 | - { | |
89 | - 1, 1, 0, 1, 2, 2, 1, 1, | |
90 | - 1, 1, 1, 1, 1, 1, 1, 1, | |
91 | - 1, 1, 0, 0, 1, 1, 0, 0, | |
92 | - 0, 1, 1, 1, 2, 1, 2, 1, | |
93 | - }, | |
94 | - { | |
95 | - 2, 2, 0, 2, 1, 1, 2, 1, | |
96 | - 1, 1, 0, 1, 1, -1, 1, 1, | |
97 | - 2, 2, 2, 2, 1, 1, 1, 1, | |
98 | - 1, 1, 1, 0, 2, 2, 1, 2, | |
99 | - }, | |
80 | +static const short ddrphy_op_dq_shift_val_ld20[DRAM_CH_NR][32] = { | |
81 | + { | |
82 | + 2, 1, 0, 1, 2, 1, 1, 1, | |
83 | + 2, 1, 1, 2, 1, 1, 1, 1, | |
84 | + 1, 2, 1, 1, 1, 2, 1, 1, | |
85 | + 2, 2, 0, 1, 1, 2, 2, 1, | |
100 | 86 | }, |
101 | - { /* LD20 TV */ | |
102 | - { | |
103 | - 2, 1, 0, 1, 2, 1, 1, 1, | |
104 | - 2, 1, 1, 2, 1, 1, 1, 1, | |
105 | - 1, 2, 1, 1, 1, 2, 1, 1, | |
106 | - 2, 2, 0, 1, 1, 2, 2, 1, | |
107 | - }, | |
108 | - { | |
109 | - 1, 1, 0, 1, 2, 2, 1, 1, | |
110 | - 1, 1, 1, 1, 1, 1, 1, 1, | |
111 | - 1, 1, 0, 0, 1, 1, 0, 0, | |
112 | - 0, 1, 1, 1, 2, 1, 2, 1, | |
113 | - }, | |
114 | - { | |
115 | - 2, 2, 0, 2, 1, 1, 2, 1, | |
116 | - 1, 1, 0, 1, 1, -1, 1, 1, | |
117 | - 2, 2, 2, 2, 1, 1, 1, 1, | |
118 | - 1, 1, 1, 0, 2, 2, 1, 2, | |
119 | - }, | |
87 | + { | |
88 | + 1, 1, 0, 1, 2, 2, 1, 1, | |
89 | + 1, 1, 1, 1, 1, 1, 1, 1, | |
90 | + 1, 1, 0, 0, 1, 1, 0, 0, | |
91 | + 0, 1, 1, 1, 2, 1, 2, 1, | |
120 | 92 | }, |
121 | - { /* LD20 TV C1 */ | |
122 | - { | |
123 | - 2, 1, 0, 1, 2, 1, 1, 1, | |
124 | - 2, 1, 1, 2, 1, 1, 1, 1, | |
125 | - 1, 2, 1, 1, 1, 2, 1, 1, | |
126 | - 2, 2, 0, 1, 1, 2, 2, 1, | |
127 | - }, | |
128 | - { | |
129 | - 1, 1, 0, 1, 2, 2, 1, 1, | |
130 | - 1, 1, 1, 1, 1, 1, 1, 1, | |
131 | - 1, 1, 0, 0, 1, 1, 0, 0, | |
132 | - 0, 1, 1, 1, 2, 1, 2, 1, | |
133 | - }, | |
134 | - { | |
135 | - 2, 2, 0, 2, 1, 1, 2, 1, | |
136 | - 1, 1, 0, 1, 1, -1, 1, 1, | |
137 | - 2, 2, 2, 2, 1, 1, 1, 1, | |
138 | - 1, 1, 1, 0, 2, 2, 1, 2, | |
139 | - }, | |
93 | + { | |
94 | + 2, 2, 0, 2, 1, 1, 2, 1, | |
95 | + 1, 1, 0, 1, 1, -1, 1, 1, | |
96 | + 2, 2, 2, 2, 1, 1, 1, 1, | |
97 | + 1, 1, 1, 0, 2, 2, 1, 2, | |
140 | 98 | }, |
141 | - { /* LD21 reference */ | |
142 | - { | |
143 | - 1, 1, 0, 1, 1, 1, 1, 1, | |
144 | - 1, 0, 0, 0, 1, 1, 0, 2, | |
145 | - 1, 1, 0, 0, 1, 1, 1, 1, | |
146 | - 1, 0, 0, 0, 1, 0, 0, 1, | |
147 | - }, | |
148 | - { 1, 0, 2, 1, 1, 1, 1, 0, | |
149 | - 1, 0, 0, 1, 0, 1, 0, 0, | |
150 | - 1, 0, 1, 0, 1, 1, 1, 0, | |
151 | - 1, 1, 1, 1, 0, 1, 0, 0, | |
152 | - }, | |
153 | - /* No CH2 */ | |
99 | +}; | |
100 | + | |
101 | +static const short ddrphy_op_dq_shift_val_ld21[DRAM_CH_NR][32] = { | |
102 | + { | |
103 | + 1, 1, 0, 1, 1, 1, 1, 1, | |
104 | + 1, 0, 0, 0, 1, 1, 0, 2, | |
105 | + 1, 1, 0, 0, 1, 1, 1, 1, | |
106 | + 1, 0, 0, 0, 1, 0, 0, 1, | |
154 | 107 | }, |
155 | - { /* LD21 TV */ | |
156 | - { | |
157 | - 1, 1, 0, 1, 1, 1, 1, 1, | |
158 | - 1, 0, 0, 0, 1, 1, 0, 2, | |
159 | - 1, 1, 0, 0, 1, 1, 1, 1, | |
160 | - 1, 0, 0, 0, 1, 0, 0, 1, | |
161 | - }, | |
162 | - { 1, 0, 2, 1, 1, 1, 1, 0, | |
163 | - 1, 0, 0, 1, 0, 1, 0, 0, | |
164 | - 1, 0, 1, 0, 1, 1, 1, 0, | |
165 | - 1, 1, 1, 1, 0, 1, 0, 0, | |
166 | - }, | |
167 | - /* No CH2 */ | |
108 | + { 1, 0, 2, 1, 1, 1, 1, 0, | |
109 | + 1, 0, 0, 1, 0, 1, 0, 0, | |
110 | + 1, 0, 1, 0, 1, 1, 1, 0, | |
111 | + 1, 1, 1, 1, 0, 1, 0, 0, | |
168 | 112 | }, |
113 | + /* No CH2 */ | |
169 | 114 | }; |
170 | 115 | |
171 | -static int ddrphy_ip_dq_shift_val[DRAM_BOARD_NR][DRAM_CH_NR][32] = { | |
172 | - { /* LD20 reference */ | |
173 | - { | |
174 | - 3, 3, 3, 2, 3, 2, 0, 2, | |
175 | - 2, 3, 3, 1, 2, 2, 2, 2, | |
176 | - 2, 2, 2, 2, 0, 1, 1, 1, | |
177 | - 2, 2, 2, 2, 3, 0, 2, 2, | |
178 | - }, | |
179 | - { | |
180 | - 2, 2, 1, 1, -1, 1, 1, 1, | |
181 | - 2, 0, 2, 2, 2, 1, 0, 2, | |
182 | - 2, 1, 2, 1, 0, 1, 1, 1, | |
183 | - 2, 2, 2, 2, 2, 2, 2, 2, | |
184 | - }, | |
185 | - { | |
186 | - 2, 2, 3, 2, 1, 2, 2, 2, | |
187 | - 2, 3, 4, 2, 3, 4, 3, 3, | |
188 | - 2, 2, 1, 2, 1, 1, 1, 1, | |
189 | - 2, 2, 2, 2, 1, 2, 2, 1, | |
190 | - }, | |
116 | +static const short (* const ddrphy_op_dq_shift_val[DRAM_BOARD_NR])[32] = { | |
117 | + ddrphy_op_dq_shift_val_ld20, /* LD20 reference */ | |
118 | + ddrphy_op_dq_shift_val_ld20, /* LD20 TV */ | |
119 | + ddrphy_op_dq_shift_val_ld20, /* LD20 TV C */ | |
120 | + ddrphy_op_dq_shift_val_ld21, /* LD21 reference */ | |
121 | + ddrphy_op_dq_shift_val_ld21, /* LD21 TV */ | |
122 | +}; | |
123 | + | |
124 | +static const short ddrphy_ip_dq_shift_val_ld20[DRAM_CH_NR][32] = { | |
125 | + { | |
126 | + 3, 3, 3, 2, 3, 2, 0, 2, | |
127 | + 2, 3, 3, 1, 2, 2, 2, 2, | |
128 | + 2, 2, 2, 2, 0, 1, 1, 1, | |
129 | + 2, 2, 2, 2, 3, 0, 2, 2, | |
191 | 130 | }, |
192 | - { /* LD20 TV */ | |
193 | - { | |
194 | - 3, 3, 3, 2, 3, 2, 0, 2, | |
195 | - 2, 3, 3, 1, 2, 2, 2, 2, | |
196 | - 2, 2, 2, 2, 0, 1, 1, 1, | |
197 | - 2, 2, 2, 2, 3, 0, 2, 2, | |
198 | - }, | |
199 | - { | |
200 | - 2, 2, 1, 1, -1, 1, 1, 1, | |
201 | - 2, 0, 2, 2, 2, 1, 0, 2, | |
202 | - 2, 1, 2, 1, 0, 1, 1, 1, | |
203 | - 2, 2, 2, 2, 2, 2, 2, 2, | |
204 | - }, | |
205 | - { | |
206 | - 2, 2, 3, 2, 1, 2, 2, 2, | |
207 | - 2, 3, 4, 2, 3, 4, 3, 3, | |
208 | - 2, 2, 1, 2, 1, 1, 1, 1, | |
209 | - 2, 2, 2, 2, 1, 2, 2, 1, | |
210 | - }, | |
131 | + { | |
132 | + 2, 2, 1, 1, -1, 1, 1, 1, | |
133 | + 2, 0, 2, 2, 2, 1, 0, 2, | |
134 | + 2, 1, 2, 1, 0, 1, 1, 1, | |
135 | + 2, 2, 2, 2, 2, 2, 2, 2, | |
211 | 136 | }, |
212 | - { /* LD20 TV C1 */ | |
213 | - { | |
214 | - 3, 3, 3, 2, 3, 2, 0, 2, | |
215 | - 2, 3, 3, 1, 2, 2, 2, 2, | |
216 | - 2, 2, 2, 2, 0, 1, 1, 1, | |
217 | - 2, 2, 2, 2, 3, 0, 2, 2, | |
218 | - }, | |
219 | - { | |
220 | - 2, 2, 1, 1, -1, 1, 1, 1, | |
221 | - 2, 0, 2, 2, 2, 1, 0, 2, | |
222 | - 2, 1, 2, 1, 0, 1, 1, 1, | |
223 | - 2, 2, 2, 2, 2, 2, 2, 2, | |
224 | - }, | |
225 | - { | |
226 | - 2, 2, 3, 2, 1, 2, 2, 2, | |
227 | - 2, 3, 4, 2, 3, 4, 3, 3, | |
228 | - 2, 2, 1, 2, 1, 1, 1, 1, | |
229 | - 2, 2, 2, 2, 1, 2, 2, 1, | |
230 | - }, | |
137 | + { | |
138 | + 2, 2, 3, 2, 1, 2, 2, 2, | |
139 | + 2, 3, 4, 2, 3, 4, 3, 3, | |
140 | + 2, 2, 1, 2, 1, 1, 1, 1, | |
141 | + 2, 2, 2, 2, 1, 2, 2, 1, | |
231 | 142 | }, |
232 | - { /* LD21 reference */ | |
233 | - { | |
234 | - 2, 2, 2, 2, 1, 2, 2, 2, | |
235 | - 2, 3, 3, 2, 2, 2, 2, 2, | |
236 | - 2, 1, 2, 2, 1, 1, 1, 1, | |
237 | - 2, 2, 2, 3, 1, 2, 2, 2, | |
238 | - }, | |
239 | - { | |
240 | - 3, 4, 4, 1, 0, 1, 1, 1, | |
241 | - 1, 2, 1, 2, 2, 3, 3, 2, | |
242 | - 1, 0, 2, 1, 1, 0, 1, 0, | |
243 | - 0, 1, 0, 0, 1, 1, 0, 1, | |
244 | - }, | |
245 | - /* No CH2 */ | |
143 | +}; | |
144 | + | |
145 | +static const short ddrphy_ip_dq_shift_val_ld21[DRAM_CH_NR][32] = { | |
146 | + { | |
147 | + 2, 2, 2, 2, 1, 2, 2, 2, | |
148 | + 2, 3, 3, 2, 2, 2, 2, 2, | |
149 | + 2, 1, 2, 2, 1, 1, 1, 1, | |
150 | + 2, 2, 2, 3, 1, 2, 2, 2, | |
246 | 151 | }, |
247 | - { /* LD21 TV */ | |
248 | - { | |
249 | - 2, 2, 2, 2, 1, 2, 2, 2, | |
250 | - 2, 3, 3, 2, 2, 2, 2, 2, | |
251 | - 2, 1, 2, 2, 1, 1, 1, 1, | |
252 | - 2, 2, 2, 3, 1, 2, 2, 2, | |
253 | - }, | |
254 | - { | |
255 | - 3, 4, 4, 1, 0, 1, 1, 1, | |
256 | - 1, 2, 1, 2, 2, 3, 3, 2, | |
257 | - 1, 0, 2, 1, 1, 0, 1, 0, | |
258 | - 0, 1, 0, 0, 1, 1, 0, 1, | |
259 | - }, | |
260 | - /* No CH2 */ | |
152 | + { | |
153 | + 3, 4, 4, 1, 0, 1, 1, 1, | |
154 | + 1, 2, 1, 2, 2, 3, 3, 2, | |
155 | + 1, 0, 2, 1, 1, 0, 1, 0, | |
156 | + 0, 1, 0, 0, 1, 1, 0, 1, | |
261 | 157 | }, |
158 | + /* No CH2 */ | |
262 | 159 | }; |
263 | 160 | |
264 | -/* DDR PHY */ | |
161 | +static const short (* const ddrphy_ip_dq_shift_val[DRAM_BOARD_NR])[32] = { | |
162 | + ddrphy_ip_dq_shift_val_ld20, /* LD20 reference */ | |
163 | + ddrphy_ip_dq_shift_val_ld20, /* LD20 TV */ | |
164 | + ddrphy_ip_dq_shift_val_ld20, /* LD20 TV C */ | |
165 | + ddrphy_ip_dq_shift_val_ld21, /* LD21 reference */ | |
166 | + ddrphy_ip_dq_shift_val_ld21, /* LD21 TV */ | |
167 | +}; | |
168 | + | |
265 | 169 | static void ddrphy_select_lane(void __iomem *phy_base, unsigned int lane, |
266 | 170 | unsigned int bit) |
267 | 171 | { |
... | ... | @@ -380,7 +284,7 @@ |
380 | 284 | } |
381 | 285 | |
382 | 286 | static void ddrphy_shift_one_dq(void __iomem *phy_base, unsigned int reg, |
383 | - u32 mask, u32 incr, int shift_val) | |
287 | + u32 mask, u32 incr, short shift_val) | |
384 | 288 | { |
385 | 289 | u32 tmp; |
386 | 290 | int val; |
... | ... | @@ -403,7 +307,7 @@ |
403 | 307 | |
404 | 308 | static void ddrphy_shift_dq(void __iomem *phy_base, unsigned int reg, |
405 | 309 | u32 mask, u32 incr, u32 override, |
406 | - const int *shift_val_array) | |
310 | + const short *shift_val_array) | |
407 | 311 | { |
408 | 312 | u32 tmp; |
409 | 313 | int dx, bit; |