<p>Nick Vaccaro has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/22205">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mainboard/google/zoombini: Provide memory configuration variant API<br><br>Add support for memory configuration by providing weak implementation<br>from the baseboard. All SPD files are present under spd/<br>directory. SPD_SOURCES must be provided by the variants to ensure that<br>required SPD hex files are included in the SPD binary.<br><br>BUG=b:64395641<br>BRANCH=None<br>TEST=None<br><br>Change-Id: I449ab56dfc7a75752944b58ba6291b5ee32f81ad<br>Signed-off-by: Nick Vaccaro <nvaccaro@google.com><br>---<br>M src/mainboard/google/zoombini/romstage.c<br>M src/mainboard/google/zoombini/variants/baseboard/Makefile.inc<br>M src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h<br>A src/mainboard/google/zoombini/variants/baseboard/memory.c<br>A src/mainboard/google/zoombini/variants/zoombini/spd/Hynix_H9HCNNN8KUMLHR_1GB.spd.hex<br>A src/mainboard/google/zoombini/variants/zoombini/spd/Hynix_H9HCNNNBPUMLHR_2GB.spd.hex<br>A src/mainboard/google/zoombini/variants/zoombini/spd/Makefile.inc<br>A src/mainboard/google/zoombini/variants/zoombini/spd/Micron_MT53B1024M32D4_4GB.spd.hex<br>A src/mainboard/google/zoombini/variants/zoombini/spd/empty.spd.hex<br>9 files changed, 230 insertions(+), 5 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/05/22205/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/src/mainboard/google/zoombini/romstage.c b/src/mainboard/google/zoombini/romstage.c<br>index 44224c7..dcf7a35 100644<br>--- a/src/mainboard/google/zoombini/romstage.c<br>+++ b/src/mainboard/google/zoombini/romstage.c<br>@@ -1,7 +1,7 @@<br> /*<br>  * This file is part of the coreboot project.<br>  *<br>- * Copyright (C) 2017 Google Inc.<br>+ * Copyright 2017 Google Inc.<br>  *<br>  * This program is free software; you can redistribute it and/or modify<br>  * it under the terms of the GNU General Public License as published by<br>@@ -13,12 +13,12 @@<br>  * GNU General Public License for more details.<br>  */<br> <br>+#include <baseboard/variants.h><br>+#include <soc/meminit.h><br> #include <soc/romstage.h><br> <br> void mainboard_memory_init_params(FSPM_UPD *memupd)<br> {<br>-/*<br>-      meminit_lpddr4_by_sku(&memupd->FspmConfig, get_lpddr4_config(),<br>-                       get_memory_sku());<br>-*/<br>+      meminit_lpddr4(&memupd->FspmConfig, variant_cnl_lpddr4_config(),<br>+                      variant_memory_sku());<br> }<br>diff --git a/src/mainboard/google/zoombini/variants/baseboard/Makefile.inc b/src/mainboard/google/zoombini/variants/baseboard/Makefile.inc<br>index 3385b4c..c5bf067 100644<br>--- a/src/mainboard/google/zoombini/variants/baseboard/Makefile.inc<br>+++ b/src/mainboard/google/zoombini/variants/baseboard/Makefile.inc<br>@@ -16,6 +16,7 @@<br> bootblock-y += gpio.c<br> <br> romstage-y += boardid.c<br>+romstage-y += memory.c<br> <br> ramstage-y += boardid.c<br> ramstage-y += gpio.c<br>diff --git a/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h<br>index 8181b8e..669817a 100644<br>--- a/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h<br>+++ b/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h<br>@@ -1,6 +1,7 @@<br> /*<br>  * This file is part of the coreboot project.<br>  *<br>+ * Copyright 2017 Google Inc.<br>  * Copyright 2017 Intel Corporation.<br>  *<br>  * This program is free software; you can redistribute it and/or modify<br>@@ -19,6 +20,7 @@<br> #include <soc/gpio.h><br> #include <stdint.h><br> #include <vendorcode/google/chromeos/chromeos.h><br>+#include <soc/meminit.h><br> <br> /* Return the board id for the current variant board. */<br> uint8_t variant_board_id(void);<br>@@ -32,4 +34,10 @@<br> <br> const struct cros_gpio *variant_cros_gpios(size_t *num);<br> <br>+/* Return Cannon Lake LPDDR4 configuration structure. */<br>+const struct cnl_lpddr4_cfg *variant_cnl_lpddr4_config(void);<br>+<br>+/* Return memory SKU for the board. */<br>+size_t variant_memory_sku(void);<br>+<br> #endif /*__BASEBOARD_VARIANTS_H__ */<br>diff --git a/src/mainboard/google/zoombini/variants/baseboard/memory.c b/src/mainboard/google/zoombini/variants/baseboard/memory.c<br>new file mode 100644<br>index 0000000..c5e7b17<br>--- /dev/null<br>+++ b/src/mainboard/google/zoombini/variants/baseboard/memory.c<br>@@ -0,0 +1,62 @@<br>+/*<br>+ * This file is part of the coreboot project.<br>+ *<br>+ * Copyright 2017 Google Inc.<br>+ *<br>+ * This program is free software; you can redistribute it and/or modify<br>+ * it under the terms of the GNU General Public License as published by<br>+ * the Free Software Foundation; version 2 of the License.<br>+ *<br>+ * This program is distributed in the hope that it will be useful,<br>+ * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br>+ * GNU General Public License for more details.<br>+ */<br>+<br>+#include <baseboard/variants.h><br>+#include <gpio.h><br>+#include <baseboard/gpio.h><br>+#include <soc/meminit.h><br>+<br>+const struct lpddr4_cfg zoombini_lpddr4_cfg = {<br>+       .dq_map[LP4_CH0] = {<br>+         0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00,<br>+          0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },<br>+<br>+     .dq_map[LP4_CH1] = {<br>+         0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00,<br>+          0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },<br>+<br>+     .dqs_map[LP4_CH0] = { 3, 1, 2, 0, 4, 5, 6, 7 },<br>+<br>+   .dqs_map[LP4_CH1] = { 2, 0, 3, 1, 6, 5, 7, 4 },<br>+<br>+   .rcomp_resistor = { 100, 100, 100 },<br>+};<br>+<br>+const struct cnl_lpddr4_cfg zoombini_cnl_lpddr4_cfg = {<br>+<br>+    /* Cannonlake PCH Type */<br>+    .cnl_type = CANNONLAKE_Y,<br>+<br>+ /* Board lpddr4 info */<br>+      .board_lpddr4_cfg = &zoombini_lpddr4_cfg,<br>+};<br>+<br>+const struct cnl_lpddr4_cfg *__attribute__((weak))<br>+variant_cnl_lpddr4_config(void)<br>+{<br>+     return &zoombini_cnl_lpddr4_cfg;<br>+}<br>+<br>+size_t __attribute__((weak)) variant_memory_sku(void)<br>+{<br>+      gpio_t pads[] = {<br>+            [3] = GPIO_MEM_CONFIG_3, [2] = GPIO_MEM_CONFIG_2,<br>+            [1] = GPIO_MEM_CONFIG_1, [0] = GPIO_MEM_CONFIG_0,<br>+    };<br>+<br>+        /* Need internal pullups enabled as only pulldown stuffing options<br>+    * exist. */<br>+ return gpio_pullup_base2_value(pads, ARRAY_SIZE(pads));<br>+}<br>diff --git a/src/mainboard/google/zoombini/variants/zoombini/spd/Hynix_H9HCNNN8KUMLHR_1GB.spd.hex b/src/mainboard/google/zoombini/variants/zoombini/spd/Hynix_H9HCNNN8KUMLHR_1GB.spd.hex<br>new file mode 100644<br>index 0000000..7b13b4d<br>--- /dev/null<br>+++ b/src/mainboard/google/zoombini/variants/zoombini/spd/Hynix_H9HCNNN8KUMLHR_1GB.spd.hex<br>@@ -0,0 +1,32 @@<br>+23 11 10 0E 15 19 05 08 00 40 00 00 02 22 00 00<br>+48 00 05 FF 92 55 00 00 8C 00 90 A8 90 A0 05 D0<br>+02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 9E 00 A7 CF D0<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>diff --git a/src/mainboard/google/zoombini/variants/zoombini/spd/Hynix_H9HCNNNBPUMLHR_2GB.spd.hex b/src/mainboard/google/zoombini/variants/zoombini/spd/Hynix_H9HCNNNBPUMLHR_2GB.spd.hex<br>new file mode 100644<br>index 0000000..1b8c5f1<br>--- /dev/null<br>+++ b/src/mainboard/google/zoombini/variants/zoombini/spd/Hynix_H9HCNNNBPUMLHR_2GB.spd.hex<br>@@ -0,0 +1,32 @@<br>+23 11 10 0E 15 19 95 08 00 40 00 00 0A 22 00 00<br>+48 00 05 FF 92 55 00 00 8C 00 90 A8 90 A0 05 D0<br>+02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 9E 00 A7 7A 1A<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>diff --git a/src/mainboard/google/zoombini/variants/zoombini/spd/Makefile.inc b/src/mainboard/google/zoombini/variants/zoombini/spd/Makefile.inc<br>new file mode 100644<br>index 0000000..95ff86e<br>--- /dev/null<br>+++ b/src/mainboard/google/zoombini/variants/zoombini/spd/Makefile.inc<br>@@ -0,0 +1,26 @@<br>+##<br>+## This file is part of the coreboot project.<br>+##<br>+## Copyright 2017 Google Inc.<br>+## Copyright (C) 2017 Intel Corporation.<br>+##<br>+## This program is free software; you can redistribute it and/or modify<br>+## it under the terms of the GNU General Public License as published by<br>+## the Free Software Foundation; version 2 of the License.<br>+##<br>+## This program is distributed in the hope that it will be useful,<br>+## but WITHOUT ANY WARRANTY; without even the implied warranty of<br>+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br>+## GNU General Public License for more details.<br>+##<br>+<br>+SPD_BIN = $(obj)/spd.bin<br>+<br>+SPD_SOURCES = Hynix_H9HCNNN8KUMLHR_1GB             # 0b000<br>+SPD_SOURCES += Hynix_H9HCNNNBPUMLHR_2GB               # 1b001<br>+SPD_SOURCES += Micron_MT53B1024M32D4_4GB      # 2b010<br>+SPD_SOURCES += empty                          # 3b011<br>+SPD_SOURCES += empty                          # 4b100<br>+SPD_SOURCES += empty                          # 5b101<br>+SPD_SOURCES += empty                          # 6b110<br>+SPD_SOURCES += empty                          # 7b111<br>diff --git a/src/mainboard/google/zoombini/variants/zoombini/spd/Micron_MT53B1024M32D4_4GB.spd.hex b/src/mainboard/google/zoombini/variants/zoombini/spd/Micron_MT53B1024M32D4_4GB.spd.hex<br>new file mode 100644<br>index 0000000..67b46cd<br>--- /dev/null<br>+++ b/src/mainboard/google/zoombini/variants/zoombini/spd/Micron_MT53B1024M32D4_4GB.spd.hex<br>@@ -0,0 +1,32 @@<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>diff --git a/src/mainboard/google/zoombini/variants/zoombini/spd/empty.spd.hex b/src/mainboard/google/zoombini/variants/zoombini/spd/empty.spd.hex<br>new file mode 100644<br>index 0000000..67b46cd<br>--- /dev/null<br>+++ b/src/mainboard/google/zoombini/variants/zoombini/spd/empty.spd.hex<br>@@ -0,0 +1,32 @@<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br></pre><p>To view, visit <a href="https://review.coreboot.org/22205">change 22205</a>. To unsubscribe, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/22205"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I449ab56dfc7a75752944b58ba6291b5ee32f81ad </div>
<div style="display:none"> Gerrit-Change-Number: 22205 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Nick Vaccaro <nvaccaro@google.com> </div>