blob: 8dcabb2bd3872ab3a72550b6356a76a001c47627 [file] [log] [blame]
David Hendricks6638f872015-11-04 14:52:02 -08001/*
2 * Copyright 2015, Google Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following
13 * disclaimer in the documentation and/or other materials provided
14 * with the distribution.
15 * * Neither the name of Google Inc. nor the names of its
16 * contributors may be used to endorse or promote products derived
17 * from this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
Hung-Te Lin13f1def2021-04-07 21:18:20 +080032#include "lib/nonspd_modules.h"
David Hendricks6638f872015-11-04 14:52:02 -080033
David Hendricks0fa54152016-03-16 15:08:56 -070034const struct nonspd_mem_info elpida_lpddr3_edfa164a2ma_jd_f = {
David Hendricks6638f872015-11-04 14:52:02 -080035 .dram_type = SPD_DRAM_TYPE_LPDDR3,
36 .module_type.ddr3_type = DDR3_MODULE_TYPE_UNDEFINED,
37
38 .module_size_mbits = 8192,
39 .num_ranks = 2,
40 .device_width = 32,
David Hendricks6638f872015-11-04 14:52:02 -080041
42 .module_mfg_id = { .msb = 0x2c, .lsb = 0x80 },
43 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x80 },
44
45 .part_num =
46 { 'E', 'D', 'F', 'A', '1', '6', '4', 'A', '2', 'M', 'A', '-',
47 'J', 'D', '-', 'F',},
48};
49
David Hendricks0fa54152016-03-16 15:08:56 -070050const struct nonspd_mem_info hynix_ddr3l_h5tc4g63afr_pba = {
David Hendricks6638f872015-11-04 14:52:02 -080051 .dram_type = SPD_DRAM_TYPE_DDR3,
52 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
53
54 .module_size_mbits = 4096,
55 .num_ranks = 1,
56 .device_width = 16,
David Hendricks6638f872015-11-04 14:52:02 -080057
58 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
59 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
60
David Hendricks6638f872015-11-04 14:52:02 -080061 .part_num =
62 { 'H', '5', 'T', 'C', '4', 'G', '6', '3', 'A', 'F', 'R', '-',
63 'P', 'B', 'A'},
64};
65
David Hendricks0fa54152016-03-16 15:08:56 -070066const struct nonspd_mem_info hynix_ddr3l_h5tc4g63cfr_pba = {
David Hendricks6638f872015-11-04 14:52:02 -080067 .dram_type = SPD_DRAM_TYPE_DDR3,
68 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
69
70 .module_size_mbits = 4096,
71 .num_ranks = 1,
72 .device_width = 16,
David Hendricks6638f872015-11-04 14:52:02 -080073
74 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
75 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
76
David Hendricks6638f872015-11-04 14:52:02 -080077 .part_num =
78 { 'H', '5', 'T', 'C', '4', 'G', '6', '3', 'C', 'F', 'R', '-',
79 'P', 'B', 'A'},
80};
81
Zheng Pan56c19e52018-10-23 17:01:11 -070082const struct nonspd_mem_info hynix_ddr3l_h5tc4g63efr_rda = {
83 .dram_type = SPD_DRAM_TYPE_DDR3,
84 .module_type.ddr3_type = DDR3_MODULE_TYPE_UNDEFINED,
85
86 .module_size_mbits = 4096,
87 .num_ranks = 1,
88 .device_width = 16,
Zheng Pan56c19e52018-10-23 17:01:11 -070089
90 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
91 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
92
Zheng Pan56c19e52018-10-23 17:01:11 -070093 .part_num =
94 { 'H', '5', 'T', 'C', '4', 'G', '6', '3', 'E', 'F', 'R', '-',
95 'R', 'D', 'A'},
96};
97
David Hendricks0fa54152016-03-16 15:08:56 -070098const struct nonspd_mem_info hynix_lpddr3_h9ccnnn8gtmlar_nud = {
David Hendricks6638f872015-11-04 14:52:02 -080099 .dram_type = SPD_DRAM_TYPE_LPDDR3,
100 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
101
102 .module_size_mbits = 8192,
103 .num_ranks = 1,
104 .device_width = 32,
David Hendricks6638f872015-11-04 14:52:02 -0800105
106 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
107 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
108
109 .part_num =
110 { 'H', '9', 'C', 'C', 'N', 'N', 'N', '8', 'G', 'T', 'M', 'L',
111 'A', 'R', '-', 'N', 'U', 'D',},
112};
113
Milton Chiang5664fe32016-11-29 14:59:49 +0800114const struct nonspd_mem_info hynix_lpddr3_h9ccnnnbjtalar_nud = {
115 .dram_type = SPD_DRAM_TYPE_LPDDR3,
116 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
117
118 .module_size_mbits = 16384,
119 .num_ranks = 2,
120 .device_width = 32,
Milton Chiang5664fe32016-11-29 14:59:49 +0800121
122 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
123 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
124
125 .part_num =
126 { 'H', '9', 'C', 'C', 'N', 'N', 'N', 'B', 'J', 'T', 'A', 'L',
127 'A', 'R', '-', 'N', 'U', 'D',},
128};
129
David Hendricks0fa54152016-03-16 15:08:56 -0700130const struct nonspd_mem_info hynix_ddr3l_h5tc8g63amr_pba = {
David Hendricks6638f872015-11-04 14:52:02 -0800131 .dram_type = SPD_DRAM_TYPE_DDR3,
132 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
133 .module_size_mbits = 8192,
134 .num_ranks = 2,
135 .device_width = 16,
David Hendricks6638f872015-11-04 14:52:02 -0800136
137 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
138 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
139
David Hendricks6638f872015-11-04 14:52:02 -0800140 .part_num =
141 { 'H', '5', 'T', 'C', '8', 'G', '6', '3', 'A', 'M', 'R', '-',
142 'P', 'B', 'A' },
143};
144
David Hendricks0fa54152016-03-16 15:08:56 -0700145const struct nonspd_mem_info hynix_lpddr3_h9ccnnnbptblbr_nud = {
Loop Wu2a7e0fc2016-01-20 14:39:46 +0800146 .dram_type = SPD_DRAM_TYPE_LPDDR3,
147 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
148
149 .module_size_mbits = 16384,
150 .num_ranks = 2,
151 .device_width = 32,
Loop Wu2a7e0fc2016-01-20 14:39:46 +0800152
153 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
154 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
155
156 .part_num =
157 { 'H', '9', 'C', 'C', 'N', 'N', 'N', 'B', 'P', 'T', 'B', 'L',
158 'B', 'R', '-', 'N', 'U', 'D',},
159};
160
Milton Chiang1bcd0e62016-04-12 16:38:25 +0800161const struct nonspd_mem_info hynix_lpddr3_h9ccnnnbltblar_nud = {
162 .dram_type = SPD_DRAM_TYPE_LPDDR3,
163 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
164
165 .module_size_mbits = 16384,
166 .num_ranks = 2,
167 .device_width = 32,
Milton Chiang1bcd0e62016-04-12 16:38:25 +0800168
169 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
170 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
171
172 .part_num =
173 { 'H', '9', 'C', 'C', 'N', 'N', 'N', 'B', 'L', 'T', 'B', 'L',
174 'A', 'R', '-', 'N', 'U', 'D',},
175};
176
Loop_Wu9ec61642019-01-29 14:28:34 +0800177const struct nonspd_mem_info hynix_lpddr3_h9ccnnnbktmlbr_ntd = {
178 .dram_type = SPD_DRAM_TYPE_LPDDR3,
179 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
180
181 .module_size_mbits = 16384,
182 .num_ranks = 2,
183 .device_width = 32,
Loop_Wu9ec61642019-01-29 14:28:34 +0800184
185 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
186 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
187
188 .part_num =
189 { 'H', '9', 'C', 'C', 'N', 'N', 'N', 'B', 'K', 'T', 'M', 'L',
190 'B', 'R', '-', 'N', 'T', 'D',},
191};
192
Hsin-Yi, Wangafcacfb2019-01-17 19:23:10 +0800193const struct nonspd_mem_info hynix_lpddr4x_h9hcnnncpmalhr_nee = {
194 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
195
196 .module_size_mbits = 32768,
197 .num_ranks = 2,
198 .device_width = 32,
Hsin-Yi, Wangafcacfb2019-01-17 19:23:10 +0800199
200 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
201 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
202
203 .part_num =
204 { 'H', '9', 'H', 'C', 'N', 'N', 'N', 'C', 'P', 'M', 'A', 'L',
205 'H', 'R', '-', 'N', 'E', 'E'},
206};
207
Eason Lina80ba0a2020-07-15 16:58:24 +0800208const struct nonspd_mem_info hynix_lpddr4x_h9hcnnncpmmlxr_nee = {
209 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
210
211 .module_size_mbits = 32768,
212 .num_ranks = 2,
213 .device_width = 32,
Eason Lina80ba0a2020-07-15 16:58:24 +0800214
215 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
216 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
217
218 .part_num =
219 { 'H', '9', 'H', 'C', 'N', 'N', 'N', 'C', 'P', 'M', 'M', 'L',
220 'X', 'R', '-', 'N', 'E', 'E'},
221};
222
Bob Moraguesd8e1a692021-01-10 05:28:36 +0000223const struct nonspd_mem_info hynix_lpddr4x_h9hcnnnfammlxr_nee = {
224 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
225
226 .module_size_mbits = 65536,
227 .num_ranks = 2,
228 .device_width = 32,
Bob Moraguesd8e1a692021-01-10 05:28:36 +0000229
230 .module_mfg_id = { .msb = 0xad, .lsb = 0x80 },
231 .dram_mfg_id = { .msb = 0xad, .lsb = 0x80 },
232
233 .part_num =
234 { 'H', '9', 'H', 'C', 'N', 'N', 'N', 'F', 'A', 'M', 'M', 'L',
235 'X', 'R', '-', 'N', 'E', 'E' },
236};
237
David Hendricks6638f872015-11-04 14:52:02 -0800238const struct nonspd_mem_info micron_mt41k256m16ha = {
239 .dram_type = SPD_DRAM_TYPE_DDR3,
240 .module_type.ddr3_type = DDR3_MODULE_TYPE_UNDEFINED,
241
242 .module_size_mbits = 4096,
243 .num_ranks = 1,
244 .device_width = 16,
David Hendricks6638f872015-11-04 14:52:02 -0800245
246 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
247 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
248
David Hendricks6638f872015-11-04 14:52:02 -0800249 .part_num = { 'M', 'T', '4', '1', 'K', '2', '5', '6', 'M',
250 '1', '6', 'H', 'A', '-', '1', '2', '5' },
251};
252
David Hendricks97303242015-11-11 14:41:40 -0800253const struct nonspd_mem_info nanya_ddr3l_nt5cc256m16dp_di = {
254 .dram_type = SPD_DRAM_TYPE_DDR3,
255 .module_type.ddr3_type = DDR3_MODULE_TYPE_UNDEFINED,
256
257 .module_size_mbits = 4096,
258 .num_ranks = 1,
259 .device_width = 16,
260 /* CL = 11, CWL = 8, min = 1.25ns, max <1.5ns */
David Hendricks97303242015-11-11 14:41:40 -0800261 .module_mfg_id = { .msb = 0x0b, .lsb = 0x03 },
262 .dram_mfg_id = { .msb = 0x0b, .lsb = 0x03 },
263
David Hendricks97303242015-11-11 14:41:40 -0800264 .part_num = { 'N', 'T', '5', 'C', 'C', '2', '5', '6',
265 'M', '1', '6', 'D', 'P', '-', 'D', 'I' },
266};
267
Zheng Pan56c19e52018-10-23 17:01:11 -0700268const struct nonspd_mem_info nanya_ddr3l_nt5cc256m16er_ek = {
269 .dram_type = SPD_DRAM_TYPE_DDR3,
270 .module_type.ddr3_type = DDR3_MODULE_TYPE_UNDEFINED,
271
272 .module_size_mbits = 4096,
273 .num_ranks = 1,
274 .device_width = 16,
Zheng Pan56c19e52018-10-23 17:01:11 -0700275 .module_mfg_id = { .msb = 0x0b, .lsb = 0x03 },
276 .dram_mfg_id = { .msb = 0x0b, .lsb = 0x03 },
277
Zheng Pan56c19e52018-10-23 17:01:11 -0700278 .part_num = { 'N', 'T', '5', 'C', 'C', '2', '5', '6',
279 'M', '1', '6', 'E', 'R', '-', 'E', 'K' },
280};
281
Huanhuan Liu22e02562020-10-14 14:57:39 +0800282const struct nonspd_mem_info nanya_lpddr3_nt6cl512t32am_h0 = {
283 .dram_type = SPD_DRAM_TYPE_LPDDR3,
284 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
285
286 .module_size_mbits = 16384,
287 .num_ranks = 2,
288 .device_width = 32,
Huanhuan Liu22e02562020-10-14 14:57:39 +0800289 .module_mfg_id = { .msb = 0x0b, .lsb = 0x03 },
290 .dram_mfg_id = { .msb = 0x0b, .lsb = 0x03 },
291
292 .part_num = { 'N', 'T', '6', 'C', 'L', '5', '1', '2',
293 'T', '3', '2', 'A', 'M', '-', 'H', '0' },
294};
295
David Hendricks6638f872015-11-04 14:52:02 -0800296const struct nonspd_mem_info samsung_k4b4g1646d = {
297 .dram_type = SPD_DRAM_TYPE_DDR3,
298 .module_type.ddr3_type = DDR3_MODULE_TYPE_UNDEFINED,
299
300 .module_size_mbits = 4096,
301 .num_ranks = 1,
302 .device_width = 16,
David Hendricks6638f872015-11-04 14:52:02 -0800303
304 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
305 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
306
David Hendricks6638f872015-11-04 14:52:02 -0800307 .part_num =
308 { 'K', '4', 'B', '4', 'G', '1', '6', '4', '6', 'D',
309 '-', 'B', 'Y', 'K', '0' },
310};
311
312const struct nonspd_mem_info samsung_k4b4g1646e = {
313 .dram_type = SPD_DRAM_TYPE_DDR3,
314 .module_type.ddr3_type = DDR3_MODULE_TYPE_UNDEFINED,
315
316 .module_size_mbits = 4096,
317 .num_ranks = 1,
318 .device_width = 16,
David Hendricks6638f872015-11-04 14:52:02 -0800319
320 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
321 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
322
David Hendricks6638f872015-11-04 14:52:02 -0800323 .part_num =
324 { 'K', '4', 'B', '4', 'G', '1', '6', '4', '6', 'E',
325 '-', 'B', 'Y', 'K', '0' },
326};
327
Zheng Pan56c19e52018-10-23 17:01:11 -0700328const struct nonspd_mem_info samsung_k4b4g1646e_byma = {
329 .dram_type = SPD_DRAM_TYPE_DDR3,
330 .module_type.ddr3_type = DDR3_MODULE_TYPE_UNDEFINED,
331
332 .module_size_mbits = 4096,
333 .num_ranks = 1,
334 .device_width = 16,
Zheng Pan56c19e52018-10-23 17:01:11 -0700335
336 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
337 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
338
Zheng Pan56c19e52018-10-23 17:01:11 -0700339 .part_num =
340 { 'K', '4', 'B', '4', 'G', '1', '6', '4', '6', 'E',
341 '-', 'B', 'Y', 'M', 'A' },
342};
343
David Hendricks0fa54152016-03-16 15:08:56 -0700344const struct nonspd_mem_info samsung_ddr3l_k4b4g1646d_byk0 = {
David Hendricks6638f872015-11-04 14:52:02 -0800345 .dram_type = SPD_DRAM_TYPE_DDR3,
346 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
347
348 .module_size_mbits = 4096,
349 .num_ranks = 1,
350 .device_width = 16,
David Hendricks6638f872015-11-04 14:52:02 -0800351
352 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
353 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
354
David Hendricks6638f872015-11-04 14:52:02 -0800355 .part_num =
356 { 'K', '4', 'B', '4', 'G', '1', '6', '4', '6', 'D', '-',
357 'B', 'Y', 'K', '0' },
358};
359
David Hendricks0fa54152016-03-16 15:08:56 -0700360const struct nonspd_mem_info samsung_ddr3l_k4b4g1646q_hyk0 = {
David Hendricks6638f872015-11-04 14:52:02 -0800361 .dram_type = SPD_DRAM_TYPE_DDR3,
362 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
363
364 .module_size_mbits = 4096,
365 .num_ranks = 1,
366 .device_width = 16,
David Hendricks6638f872015-11-04 14:52:02 -0800367
368 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
369 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
370
David Hendricks6638f872015-11-04 14:52:02 -0800371 .part_num =
372 { 'K', '4', 'B', '4', 'G', '1', '6', '4', '6', 'Q', '-',
373 'H', 'Y', 'K', '0' },
374};
375
David Hendricks0fa54152016-03-16 15:08:56 -0700376const struct nonspd_mem_info samsung_ddr3l_k4b8g1646q_myk0 = {
David Hendricks6638f872015-11-04 14:52:02 -0800377 .dram_type = SPD_DRAM_TYPE_DDR3,
378 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
379 .module_size_mbits = 8192,
380 .num_ranks = 2,
381 .device_width = 16,
David Hendricks6638f872015-11-04 14:52:02 -0800382
383 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
384 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
385
David Hendricks6638f872015-11-04 14:52:02 -0800386 .part_num =
387 { 'K', '4', 'B', '8', 'G', '1', '6', '4', '6', 'Q', '-',
388 'M', 'Y', 'K', '0' },
389};
390
David Hendricks0fa54152016-03-16 15:08:56 -0700391const struct nonspd_mem_info samsung_lpddr3_k3qf2f20em_agce = {
David Hendricks6638f872015-11-04 14:52:02 -0800392 .dram_type = SPD_DRAM_TYPE_LPDDR3,
393 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
394
395 .module_size_mbits = 8192,
396 .num_ranks = 2,
397 .device_width = 32,
David Hendricks6638f872015-11-04 14:52:02 -0800398
399 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
400 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
401
402 .part_num =
403 { 'K', '3', 'Q', 'F', '2', 'F', '2', '0', 'E', 'M', '-',
404 'A', 'G', 'C', 'E' },
405};
406
Vincent Palatin90af8e62016-05-20 12:12:49 -0700407const struct nonspd_mem_info samsung_lpddr3_k4e6e304eb_egce = {
408 .dram_type = SPD_DRAM_TYPE_LPDDR3,
409 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
410
411 .module_size_mbits = 16384,
412 .num_ranks = 2,
413 .device_width = 32,
Vincent Palatin90af8e62016-05-20 12:12:49 -0700414
415 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
416 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
417
418 .part_num =
419 { 'K', '4', 'E', '6', 'E', '3', '0', '4', 'E', 'B', '-',
420 'E', 'G', 'C', 'E' },
421};
422
David Hendricks0fa54152016-03-16 15:08:56 -0700423const struct nonspd_mem_info samsung_lpddr3_k4e6e304ee_egce = {
David Hendricks6638f872015-11-04 14:52:02 -0800424 .dram_type = SPD_DRAM_TYPE_LPDDR3,
425 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
426
427 .module_size_mbits = 16384,
428 .num_ranks = 2,
429 .device_width = 32,
David Hendricks6638f872015-11-04 14:52:02 -0800430
431 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
432 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
433
434 .part_num =
435 { 'K', '4', 'E', '6', 'E', '3', '0', '4', 'E', 'E', '-',
436 'E', 'G', 'C', 'E' },
437};
438
Milton Chiang1bcd0e62016-04-12 16:38:25 +0800439const struct nonspd_mem_info samsung_lpddr3_k4e6e304eb_egcf = {
440 .dram_type = SPD_DRAM_TYPE_LPDDR3,
441 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
442
443 .module_size_mbits = 16384,
444 .num_ranks = 2,
445 .device_width = 32,
Milton Chiang1bcd0e62016-04-12 16:38:25 +0800446
447 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
448 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
449
450 .part_num =
451 { 'K', '4', 'E', '6', 'E', '3', '0', '4', 'E', 'B', '-',
452 'E', 'G', 'C', 'F' },
453};
454
xuxinxiong6079e222021-02-21 16:10:07 +0800455const struct nonspd_mem_info samsung_lpddr3_k4e6e304ec_egcg = {
456 .dram_type = SPD_DRAM_TYPE_LPDDR3,
457 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
458
459 .module_size_mbits = 16384,
460 .num_ranks = 2,
461 .device_width = 32,
xuxinxiong6079e222021-02-21 16:10:07 +0800462
463 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
464 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
465
466 .part_num = { 'K', '4', 'E', '6', 'E', '3', '0', '4', 'E', 'C',
467 '-', 'E', 'G', 'C', 'G' },
468};
469
David Hendricks0fa54152016-03-16 15:08:56 -0700470const struct nonspd_mem_info samsung_lpddr3_k4e8e304ee_egce = {
David Hendricks6638f872015-11-04 14:52:02 -0800471 .dram_type = SPD_DRAM_TYPE_LPDDR3,
472 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
473
474 .module_size_mbits = 8192,
475 .num_ranks = 2,
476 .device_width = 32,
David Hendricks6638f872015-11-04 14:52:02 -0800477
478 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
479 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
480
481 .part_num =
482 { 'K', '4', 'E', '8', 'E', '3', '0', '4', 'E', 'E', '-',
483 'E', 'G', 'C', 'E' },
484};
Vincent Palatin90af8e62016-05-20 12:12:49 -0700485
486const struct nonspd_mem_info samsung_lpddr3_k4e8e324eb_egcf = {
487 .dram_type = SPD_DRAM_TYPE_LPDDR3,
488 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
489
490 .module_size_mbits = 8192,
491 .num_ranks = 2,
492 .device_width = 32,
Vincent Palatin90af8e62016-05-20 12:12:49 -0700493
494 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
495 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
496
497 .part_num =
498 { 'K', '4', 'E', '8', 'E', '3', '2', '4', 'E', 'B', '-',
499 'E', 'G', 'C', 'F' },
500};
Ravi Sarawadi7ef277d2016-08-16 17:04:00 -0700501
Huanhuan Liu22e02562020-10-14 14:57:39 +0800502const struct nonspd_mem_info samsung_lpddr3_k4e6e304ed_egcg = {
503 .dram_type = SPD_DRAM_TYPE_LPDDR3,
504 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
505
506 .module_size_mbits = 16384,
507 .num_ranks = 2,
508 .device_width = 32,
Huanhuan Liu22e02562020-10-14 14:57:39 +0800509
510 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
511 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
512
513 .part_num = { 'K', '4', 'E', '6', 'E', '3', '0', '4', 'E', 'D', '-',
514 'E', 'G', 'C', 'G' },
515};
516
Loop Wue0fa3212016-12-01 16:25:41 +0800517const struct nonspd_mem_info micron_lpddr3_mt52l256m32d1pf_107wtb = {
518 .dram_type = SPD_DRAM_TYPE_LPDDR3,
519 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
520
521 .module_size_mbits = 8192,
522 .num_ranks = 1,
523 .device_width = 32,
Loop Wue0fa3212016-12-01 16:25:41 +0800524
525 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
526 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
527
528 .part_num =
529 { 'M', 'T', '5', '2', 'L', '2', '5', '6', 'M', '3', '2', 'D',
530 '1', 'P', 'F', '-', '1', '0', '7', 'W', 'T', ':', 'B' },
531};
532
Jack Rosenthal10611d32020-05-06 12:46:38 -0600533const struct nonspd_mem_info micron_lpddr3_mt52l256m32d1pf_10 = {
534 .dram_type = SPD_DRAM_TYPE_LPDDR3,
535 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
536
537 .module_size_mbits = 2048 * 8,
538 .num_ranks = 1,
539 .device_width = 64,
Jack Rosenthal10611d32020-05-06 12:46:38 -0600540
541 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
542 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
543
544 .part_num = { 'M', 'T', '5', '2', 'L', '2', '5', '6', 'M', '3', '2',
545 'D', '1', 'P', 'F', '-', '1', '0' },
546};
547
jiazi Yang5e3d5942017-04-05 22:30:45 -0400548const struct nonspd_mem_info micron_lpddr3_mt52l256m64d2pp_107wtb = {
549 .dram_type = SPD_DRAM_TYPE_LPDDR3,
550 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
551
552 .module_size_mbits = 8192,
553 .num_ranks = 1,
554 .device_width = 32,
jiazi Yang5e3d5942017-04-05 22:30:45 -0400555
556 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
557 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
558
559 .part_num =
560 { 'M', 'T', '5', '2', 'L', '2', '5', '6', 'M', '6', '4', 'D',
561 '2', 'P', 'P', '-', '1', '0', '7', 'W', 'T', ':', 'B' },
562};
563
Loop Wue0fa3212016-12-01 16:25:41 +0800564const struct nonspd_mem_info micron_lpddr3_mt52l512m32d2pf_107wtb = {
565 .dram_type = SPD_DRAM_TYPE_LPDDR3,
566 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
567
568 .module_size_mbits = 16384,
569 .num_ranks = 2,
570 .device_width = 32,
Loop Wue0fa3212016-12-01 16:25:41 +0800571
572 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
573 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
574
575 .part_num =
576 { 'M', 'T', '5', '2', 'L', '5', '1', '2', 'M', '3', '2', 'D',
577 '2', 'P', 'F', '-', '1', '0', '7', 'W', 'T', ':', 'B' },
578};
579
Jack Rosenthal1ca003d2020-05-07 09:04:54 -0600580const struct nonspd_mem_info micron_lpddr3_mt52l512m32d2pf_10 = {
581 .dram_type = SPD_DRAM_TYPE_LPDDR3,
582 .module_type.ddr3_type = DDR3_MODULE_TYPE_SO_DIMM,
583
584 .module_size_mbits = 4096 * 8,
585 .num_ranks = 2,
586 .device_width = 64,
Jack Rosenthal1ca003d2020-05-07 09:04:54 -0600587
588 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
589 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
590
591 .part_num = { 'M', 'T', '5', '2', 'L', '5', '1', '2', 'M', '3', '2',
592 'D', '2', 'P', 'F', '-', '1', '0' },
593};
594
Kaka Niae6ece42019-02-26 09:55:57 +0800595const struct nonspd_mem_info micron_lpddr4x_mt53e1g32d4nq_046wte = {
596 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
597
598 .module_size_mbits = 32768,
599 .num_ranks = 2,
600 .device_width = 32,
Kaka Niae6ece42019-02-26 09:55:57 +0800601
602 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
603 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
604
605 .part_num =
606 { 'M', 'T', '5', '3', 'E', '1', 'G', '3', '2', 'D', '4', 'N',
607 'Q', '-', '4', '6', 'W', 'T', ':', 'E'},
608};
609
Bob Moraguesfdcf0552020-04-23 14:50:16 -0700610const struct nonspd_mem_info micron_lpddr4x_mt53e1g32d2np_046wta = {
611 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
612
613 .module_size_mbits = 32768,
614 .num_ranks = 1,
615 .device_width = 32,
Bob Moraguesfdcf0552020-04-23 14:50:16 -0700616
617 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
618 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
619
620 .part_num =
621 { 'M', 'T', '5', '3', 'E', '1', 'G', '3', '2', 'D', '2', 'N',
622 'P', '-', '4', '6', 'W', 'T', ':', 'A'},
623};
624
625const struct nonspd_mem_info micron_lpddr4x_mt53e2g32d4nq_046wta = {
626 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
627
Paul Huang2fe53be2020-11-17 14:02:55 +0800628 .module_size_mbits = 65536,
Bob Moraguesfdcf0552020-04-23 14:50:16 -0700629 .num_ranks = 2,
630 .device_width = 32,
Bob Moraguesfdcf0552020-04-23 14:50:16 -0700631
632 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
633 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
634
635 .part_num =
636 { 'M', 'T', '5', '3', 'E', '2', 'G', '3', '2', 'D', '4', 'N',
637 'Q', '-', '4', '6', 'W', 'T', ':', 'A'},
638};
639
karen_wuc94b8d32020-07-16 14:54:14 +0800640const struct nonspd_mem_info micron_lpddr4x_mt53d1g32d4dt_046wtd = {
641 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
642
643 .module_size_mbits = 32768,
644 .num_ranks = 2,
645 .device_width = 32,
karen_wuc94b8d32020-07-16 14:54:14 +0800646
647 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
648 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
649
650 .part_num =
651 { 'M', 'T', '5', '3', 'D', '1', 'G', '3', '2', 'D', '4', 'D',
652 'T', '-', '4', '6', 'W', 'T', ':', 'D'},
653};
654
Hsin-Yi Wang4e357982019-06-04 16:54:59 +0800655const struct nonspd_mem_info micron_lpddr4x_mt29vzzzad8dqksl = {
656 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
657
658 .module_size_mbits = 32768,
659 .num_ranks = 2,
660 .device_width = 32,
Hsin-Yi Wang4e357982019-06-04 16:54:59 +0800661
662 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
663 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
664
665 .part_num =
666 { 'M', 'T', '2', '9', 'V', 'Z', 'Z', 'Z', 'A', 'D', '8', 'D',
667 'Q', 'K', 'S', 'L'},
668};
669
Hsin-Yi Wangd62a29d2020-07-20 18:05:16 +0800670const struct nonspd_mem_info micron_lpddr4x_mt29vzzzad8gqfsl_046 = {
671 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
672
673 .module_size_mbits = 32768,
674 .num_ranks = 2,
675 .device_width = 32,
Hsin-Yi Wangd62a29d2020-07-20 18:05:16 +0800676
677 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
678 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
679
680 .part_num =
681 { 'M', 'T', '2', '9', 'V', 'Z', 'Z', 'Z', 'A', 'D', '8', 'G',
682 'Q', 'F', 'S', 'L', '-', '0', '4', '6'},
683};
684
685const struct nonspd_mem_info micron_lpddr4x_mt29vzzzbd9dqkpr_046 = {
686 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
687
688 .module_size_mbits = 32768,
689 .num_ranks = 2,
690 .device_width = 32,
Hsin-Yi Wangd62a29d2020-07-20 18:05:16 +0800691
692 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
693 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
694
695 .part_num =
696 { 'M', 'T', '2', '9', 'V', 'Z', 'Z', 'Z', 'B', 'D', '9', 'D',
697 'Q', 'K', 'P', 'R', '-', '0', '4', '6'},
698};
699
Jessy Jiangb558da22021-03-23 10:13:47 +0800700const struct nonspd_mem_info micron_lpddr4x_mt29vzzzad9gqfsm_046 = {
701 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
702
703 .module_size_mbits = 32768,
704 .num_ranks = 2,
705 .device_width = 32,
Jessy Jiangb558da22021-03-23 10:13:47 +0800706
707 .module_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
708 .dram_mfg_id = { .msb = 0x2c, .lsb = 0x00 },
709
710 .part_num =
711 { 'M', 'T', '2', '9', 'V', 'Z', 'Z', 'Z', 'A', 'D', '9', 'G',
712 'Q', 'F', 'S', 'M', '-', '0', '4', '6'},
713};
714
Philip Chencccc7042018-09-25 20:31:37 -0700715const struct nonspd_mem_info samsung_lpddr4_k3uh5h50mm_agcj = {
716 .dram_type = SPD_DRAM_TYPE_LPDDR4,
717
718 .module_size_mbits = 32768,
719 .num_ranks = 2,
720 .device_width = 32,
Philip Chencccc7042018-09-25 20:31:37 -0700721
722 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
723 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
724
725 .part_num =
726 { 'K', '3', 'U', 'H', '5', 'H', '5', '0', 'M', 'M', '-',
727 'A', 'G', 'C', 'J' },
728};
729
Hsin-Yi Wang12ebb282019-07-05 12:31:10 +0800730const struct nonspd_mem_info samsung_lpddr4x_kmdh6001da_b422 = {
731 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
732
733 .module_size_mbits = 32768,
734 .num_ranks = 2,
735 .device_width = 32,
Hsin-Yi Wang12ebb282019-07-05 12:31:10 +0800736
737 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
738 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
739
740 .part_num =
741 { 'K', 'M', 'D', 'H', '6', '0', '0', '1', 'D', 'A', '-',
742 'B', '4', '2', '2' },
743};
744
Hsin-Yi Wang4e357982019-06-04 16:54:59 +0800745const struct nonspd_mem_info samsung_lpddr4x_kmdp6001da_b425 = {
746 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
747
748 .module_size_mbits = 32768,
749 .num_ranks = 2,
750 .device_width = 32,
Hsin-Yi Wang4e357982019-06-04 16:54:59 +0800751
752 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
753 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
754
755 .part_num =
756 { 'K', 'M', 'D', 'P', '6', '0', '0', '1', 'D', 'A', '-',
757 'B', '4', '2', '5' },
758};
759
Hsin-Yi Wang12ebb282019-07-05 12:31:10 +0800760const struct nonspd_mem_info samsung_lpddr4x_kmdv6001da_b620 = {
761 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
762
763 .module_size_mbits = 32768,
764 .num_ranks = 2,
765 .device_width = 32,
Hsin-Yi Wang12ebb282019-07-05 12:31:10 +0800766
767 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
768 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
769
770 .part_num =
771 { 'K', 'M', 'D', 'V', '6', '0', '0', '1', 'D', 'A', '-',
772 'B', '6', '2', '0' },
773};
774
cherish8851df02019-09-01 14:35:55 +0800775const struct nonspd_mem_info samsung_lpddr4x_k4ube3d4aa_mgcl = {
776 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
777
778 .module_size_mbits = 32768,
779 .num_ranks = 2,
780 .device_width = 32,
cherish8851df02019-09-01 14:35:55 +0800781
782 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
783 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
784
785 .part_num =
786 { 'K', '4', 'U', 'B', 'E', '3', 'D', '4', 'A', 'A', '-',
787 'M', 'G', 'C', 'L' },
788};
789
Chia-Hsiu Chang065a3c42020-08-27 19:08:13 +0800790const struct nonspd_mem_info samsung_lpddr4x_k4ube3d4aa_mgcr = {
791 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
792
793 .module_size_mbits = 32768,
794 .num_ranks = 2,
795 .device_width = 32,
Chia-Hsiu Chang065a3c42020-08-27 19:08:13 +0800796
797 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
798 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
799
800 .part_num =
801 { 'K', '4', 'U', 'B', 'E', '3', 'D', '4', 'A', 'A', '-',
802 'M', 'G', 'C', 'R' },
803};
804
Ren Kuofcda40b2021-04-01 15:28:27 +0800805const struct nonspd_mem_info samsung_lpddr4x_k4uce3q4aa_mgcr = {
806 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
807
808 .module_size_mbits = 65536,
809 .num_ranks = 2,
810 .device_width = 32,
811
812 .module_mfg_id = { .msb = 0xce, .lsb = 0x00 },
813 .dram_mfg_id = { .msb = 0xce, .lsb = 0x00 },
814
815 .part_num =
816 { 'K', '4', 'U', 'C', 'E', '3', 'Q', '4', 'A', 'A', '-',
817 'M', 'G', 'C', 'R' },
818};
819
Kaka Ni9db5d8a2019-07-05 12:13:33 +0800820const struct nonspd_mem_info sandisk_lpddr4x_sdada4cr_128g = {
821 .dram_type = SPD_DRAM_TYPE_LPDDR4X,
822
823 .module_size_mbits = 32768,
824 .num_ranks = 2,
825 .device_width = 32,
Kaka Ni9db5d8a2019-07-05 12:13:33 +0800826
827 .module_mfg_id = { .msb = 0x45, .lsb = 0x00 },
828 .dram_mfg_id = { .msb = 0x45, .lsb = 0x00 },
829
830 .part_num =
831 { 'S', 'D', 'A', 'D', 'A', '4', 'C', 'R', '-', '1', '2',
832 '8', 'G' },
833};