coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
sdram_configs.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <boardid.h>
4 #include <cbfs.h>
5 #include <console/console.h>
6 #include <soc/emi.h>
7 
8 /*
9  * The RAM_CODE ADC on Kukui can support only 12 different levels. Each model
10  * can create its own mapping if needed, with an offset (0x10, 0x20, ...,
11  * defined as CONFIG_BOARD_SDRAM_TABLE_OFFSET) applied in ram_code().
12  */
13 static const char *const sdram_configs[] = {
14  /* Standard table. */
15  [0x00] = "sdram-lpddr4x-K4UBE3D4AA-MGCR-4GB",
16  [0x01] = "sdram-lpddr4x-H9HCNNNCPMALHR-4GB",
17  [0x02] = "sdram-lpddr4x-MT53E1G32D4NQ-4GB",
18  [0x03] = "sdram-lpddr4x-KMDH6001DA-B422-4GB",
19  [0x04] = "sdram-lpddr4x-KMDP6001DA-B425-4GB",
20  [0x05] = "sdram-lpddr4x-MT29VZZZAD8DQKSL-4GB",
21  [0x06] = "sdram-lpddr4x-KMDV6001DA-B620-4GB",
22  [0x07] = "sdram-lpddr4x-SDADA4CR-128G-4GB",
23  [0x08] = "sdram-lpddr4x-K4UBE3D4AA-MGCL-4GB",
24  [0x09] = "sdram-lpddr4x-MT53E2G32D4NQ-046-8GB",
25  [0x0a] = "sdram-lpddr4x-H9HCNNNCPMMLXR-NEE-4GB",
26  [0x0b] = "sdram-lpddr4x-MT29VZZZAD9GQFSM-046-4GB",
27 
28  /* Table shared by Burnet and its variants, Fennel and Cerise, offset = 0x10 */
29  [0x10] = "sdram-lpddr4x-K4UBE3D4AA-MGCR-4GB",
30  [0x11] = "sdram-lpddr4x-H9HCNNNCPMALHR-4GB",
31  [0x12] = "sdram-lpddr4x-MT53E1G32D4NQ-4GB",
32  [0x13] = "sdram-lpddr4x-K4UBE3D4AA-MGCL-4GB",
33  [0x14] = "sdram-lpddr4x-H9HCNNNCPMMLXR-NEE-4GB",
34  [0x15] = "sdram-lpddr4x-H9HCNNNFAMMLXR-NEE-8GB",
35  [0x16] = "sdram-lpddr4x-MT53E2G32D4NQ-046-8GB",
36  [0x17] = "sdram-lpddr4x-MT53E1G32D2NP-046-4GB",
37  [0x18] = "sdram-lpddr4x-MT53E1G32D4NQ-4GB",
38  [0x19] = "sdram-lpddr4x-H9HCNNNCPMALHR-4GB",
39  [0x1a] = "sdram-lpddr4x-K4UBE3D4AA-MGCL-4GB",
40  [0x1b] = "sdram-lpddr4x-H9HCNNNFAMMLXR-NEE-8GB",
41 
42  /* Table shared by Kakadu and its variants, offset = 0x20 */
43  [0x20] = "sdram-lpddr4x-K4UBE3D4AA-MGCR-4GB",
44  [0x21] = "sdram-lpddr4x-H9HCNNNCPMALHR-4GB",
45  [0x22] = "sdram-lpddr4x-MT53E1G32D4NQ-4GB",
46  [0x23] = "sdram-lpddr4x-KMDH6001DA-B422-4GB",
47  [0x24] = "sdram-lpddr4x-KMDP6001DA-B425-4GB",
48  [0x25] = "sdram-lpddr4x-MT29VZZZAD8DQKSL-4GB",
49  [0x26] = "sdram-lpddr4x-KMDV6001DA-B620-4GB",
50  [0x27] = "sdram-lpddr4x-SDADA4CR-128G-4GB",
51  [0x28] = "sdram-lpddr4x-MT29VZZZCD9GQKPR-046-8GB",
52  [0x29] = "sdram-lpddr4x-FEPRF6432-58A1930-4GB",
53 
54  /* Table shared by Cozmo and its variants, offset = 0x30 */
55  [0x30] = "sdram-lpddr4x-K4UBE3D4AA-MGCR-4GB",
56  [0x31] = "sdram-lpddr4x-H9HCNNNCPMALHR-4GB",
57  [0x32] = "sdram-lpddr4x-MT53E1G32D4NQ-4GB",
58  [0x38] = "sdram-lpddr4x-K4UBE3D4AA-MGCL-4GB",
59  [0x39] = "sdram-lpddr4x-MT53E2G32D4NQ-046-8GB",
60  [0x3a] = "sdram-lpddr4x-H9HCNNNCPMMLXR-NEE-4GB",
61  [0x3b] = "sdram-lpddr4x-H9HCNNNFAMMLXR-NEE-8GB",
62 
63  /* Table shared by Kappa and its variants, offset = 0x40 */
64  [0x40] = "sdram-lpddr4x-K4UBE3D4AA-MGCR-4GB",
65  [0x41] = "sdram-lpddr4x-H9HCNNNCPMALHR-4GB",
66  [0x42] = "sdram-lpddr4x-MT53E1G32D4NQ-4GB",
67  [0x43] = "sdram-lpddr4x-MT53E1G32D2NP-046-4GB",
68  [0x44] = "sdram-lpddr4x-MT53E1G32D4NQ-4GB",
69  [0x45] = "sdram-lpddr4x-H9HCNNNCPMALHR-4GB",
70  [0x46] = "sdram-lpddr4x-K4UBE3D4AA-MGCL-4GB",
71  [0x48] = "sdram-lpddr4x-K4UBE3D4AA-MGCL-4GB",
72  [0x49] = "sdram-lpddr4x-MT53E2G32D4NQ-046-8GB",
73  [0x4a] = "sdram-lpddr4x-H9HCNNNCPMMLXR-NEE-4GB",
74  [0x4b] = "sdram-lpddr4x-MT29VZZZAD9GQFSM-046-4GB",
75 };
76 
77 static struct sdram_params params;
78 
79 const struct sdram_params *get_sdram_config(void)
80 {
81  uint32_t ramcode = ram_code();
82  const char *name = NULL;
83 
84  if (ramcode < ARRAY_SIZE(sdram_configs))
85  name = sdram_configs[ramcode];
86 
87  if (!name || cbfs_load(name, &params, sizeof(params)) != sizeof(params))
88  die("Cannot load SDRAM parameter file for RAM code %#02x: %s!",
89  ramcode, name ? name : "unknown");
90 
91  return &params;
92 }
const char * name
Definition: mmu.c:92
const struct sdram_info * get_sdram_config(void)
Definition: sdram_configs.c:85
uint32_t ram_code(void)
#define ARRAY_SIZE(a)
Definition: helpers.h:12
static size_t cbfs_load(const char *name, void *buf, size_t size)
Definition: cbfs.h:282
void __noreturn die(const char *fmt,...)
Definition: die.c:17
static struct sdram_params params
Definition: sdram_configs.c:77
static const char *const sdram_configs[]
Definition: sdram_configs.c:13
#define NULL
Definition: stddef.h:19
unsigned int uint32_t
Definition: stdint.h:14
Defines the SDRAM parameter structure.
Definition: emi.h:15