mb/google/brya: Create rull variant
[coreboot2.git] / src / mainboard / google / cyan / variants / setzer / spd_util.c
blobf5ec218779862ec08fad275b9a4e82700466f4c4
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <console/console.h>
4 #include <gpio.h>
5 #include <mainboard/google/cyan/spd/spd_util.h>
7 /*
8 * 0b0000 - 4GiB total - 2 x 2GiB Samsung K4E8E304EE-EGCF
9 * 0b0001 - 2GiB total - 1 x 2GiB Samsung K4E8E304EE-EGCF
10 * 0b0010 - 4GiB total - 2 x 2GiB Hynix H9CCNNN8GTMLAR-NUD
11 * 0b0011 - 2GiB total - 1 x 2GiB Hynix H9CCNNN8GTMLAR-NUD
12 * 0b0100 - 4GiB total - 2 x 2GiB Micron MT52L256M32D1PF-107
13 * 0b0101 - 2GiB total - 1 x 2GiB Micron MT52L256M32D1PF-107
14 * 0b0110 - 2GiB total - 1 x 2GiB Samsung K4E8E324EB-EGCF
15 * 0b0111 - 4GiB total - 2 x 2GiB Samsung K4E8E324EB-EGCF
16 * 0b1000 - 2GiB total - 1 x 2GiB Hynix H9CCNNN8GTALAR-NUD
17 * 0b1001 - 4GiB total - 2 x 4GiB Hynix H9CCNNN8GTALAR-NUD
20 static const uint32_t dual_channel_config =
21 (1 << 0) | (1 << 2) | (1 << 4) | (1 << 7) | (1 << 9);
23 uint8_t get_ramid(void)
25 gpio_t spd_gpios[] = {
26 GP_SW_64, /* I2C3_SDA, RAMID0 */
27 GP_SE_02, /* MF_PLT_CLK1, RAMID1 */
28 GP_SW_67, /* I2C3_SCL, RAMID2 */
29 GP_SW_80, /* SATA_GP3, RAMID3 */
32 return gpio_base2_value(spd_gpios, ARRAY_SIZE(spd_gpios));
35 int get_variant_spd_index(int ram_id, int *dual)
37 /* Determine if single or dual channel memory system */
38 *dual = (dual_channel_config & (1 << ram_id)) ? 1 : 0;
40 /* Display the RAM type */
41 switch (ram_id) {
42 case 0:
43 printk(BIOS_DEBUG, "4GiB Samsung K4E8E304EE-EGCF\n");
44 break;
45 case 1:
46 printk(BIOS_DEBUG, "2GiB Samsung K4E8E304EE-EGCF\n");
47 break;
48 case 2:
49 printk(BIOS_DEBUG, "4GiB Hynix H9CCNNN8GTMLAR-NUD\n");
50 break;
51 case 3:
52 printk(BIOS_DEBUG, "2GiB Hynix H9CCNNN8GTMLAR-NUD\n");
53 break;
54 case 4:
55 printk(BIOS_DEBUG, "4GiB Micron MT52L256M32D1PF-107\n");
56 break;
57 case 5:
58 printk(BIOS_DEBUG, "2GiB Micron MT52L256M32D1PF-107\n");
59 break;
60 case 6:
61 printk(BIOS_DEBUG, "2GiB Samsung K4E8E324EB-EGCF\n");
62 break;
63 case 7:
64 printk(BIOS_DEBUG, "4GiB Samsung K4E8E324EB-EGCF\n");
65 break;
66 case 8:
67 printk(BIOS_DEBUG, "2GiB Hynix H9CCNNN8GTALAR-NUD\n");
68 break;
69 case 9:
70 printk(BIOS_DEBUG, "4GiB Hynix H9CCNNN8GTALAR-NUD\n");
71 break;
74 /* 1:1 mapping between ram_id and spd_index for setzer */
75 return ram_id;