<p>Furquan Shaikh has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/24972">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mb/google/poppy: Allow use of optional secondary SPD<br><br>This change adds support for variants to use secondary SPD if<br>required. This enables a variant to have different types of memory<br>supported using the same image.<br><br>BUG=b:73514687<br><br>Change-Id: I3add65ead99c510f2d6ec899fbf2cb9a06c79b0c<br>Signed-off-by: Furquan Shaikh <furquan@google.com><br>---<br>M src/mainboard/google/poppy/romstage.c<br>M src/mainboard/google/poppy/spd/Makefile.inc<br>M src/mainboard/google/poppy/variants/baseboard/include/baseboard/variants.h<br>3 files changed, 36 insertions(+), 13 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/72/24972/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/mainboard/google/poppy/romstage.c b/src/mainboard/google/poppy/romstage.c</span><br><span>index 6bb4076..f9b23e5 100644</span><br><span>--- a/src/mainboard/google/poppy/romstage.c</span><br><span>+++ b/src/mainboard/google/poppy/romstage.c</span><br><span>@@ -110,20 +110,21 @@</span><br><span>        }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static uintptr_t mainboard_get_spd_data(enum memory_type type)</span><br><span style="color: hsl(120, 100%, 40%);">+static uintptr_t mainboard_get_spd_data(enum memory_type type, bool use_sec_spd)</span><br><span> {</span><br><span>      char *spd_file;</span><br><span>      size_t spd_file_len;</span><br><span>         int spd_index;</span><br><span>       const size_t spd_len = spd_info[type].len;</span><br><span style="color: hsl(120, 100%, 40%);">+    const char *spd_bin = use_sec_spd ? "sec-spd.bin" : "spd.bin";</span><br><span> </span><br><span>       spd_index = variant_memory_sku();</span><br><span>    assert(spd_index >= 0);</span><br><span>   printk(BIOS_INFO, "SPD index %d\n", spd_index);</span><br><span> </span><br><span>        /* Load SPD data from CBFS */</span><br><span style="color: hsl(0, 100%, 40%);">-   spd_file = cbfs_boot_map_with_leak("spd.bin", CBFS_TYPE_SPD,</span><br><span style="color: hsl(0, 100%, 40%);">-          &spd_file_len);</span><br><span style="color: hsl(120, 100%, 40%);">+   spd_file = cbfs_boot_map_with_leak(spd_bin, CBFS_TYPE_SPD,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       &spd_file_len);</span><br><span>       if (!spd_file)</span><br><span>               die("SPD data not found.");</span><br><span> </span><br><span>@@ -160,7 +161,7 @@</span><br><span>              p.rcomp_resistor_size);</span><br><span>      memcpy(&mem_cfg->RcompTarget, p.rcomp_target, p.rcomp_target_size);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  mem_cfg->MemorySpdPtr00 = mainboard_get_spd_data(p.type);</span><br><span style="color: hsl(120, 100%, 40%);">+  mem_cfg->MemorySpdPtr00 = mainboard_get_spd_data(p.type, p.use_sec_spd);</span><br><span>  mem_cfg->MemorySpdPtr10 = mem_cfg->MemorySpdPtr00;</span><br><span>     mem_cfg->MemorySpdDataLen = spd_info[p.type].len;</span><br><span> }</span><br><span>diff --git a/src/mainboard/google/poppy/spd/Makefile.inc b/src/mainboard/google/poppy/spd/Makefile.inc</span><br><span>index 30e632d..1aaa6eb 100644</span><br><span>--- a/src/mainboard/google/poppy/spd/Makefile.inc</span><br><span>+++ b/src/mainboard/google/poppy/spd/Makefile.inc</span><br><span>@@ -1,5 +1,20 @@</span><br><span> </span><br><span> SPD_BIN = $(obj)/spd.bin</span><br><span style="color: hsl(120, 100%, 40%);">+SEC_SPD_BIN = $(obj)/sec-spd.bin</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+define gen_spd_bin</span><br><span style="color: hsl(120, 100%, 40%);">+ for f in $2; \</span><br><span style="color: hsl(120, 100%, 40%);">+          do for c in $$(cat $$f | grep -v ^#); \</span><br><span style="color: hsl(120, 100%, 40%);">+         do printf $$(printf '\%o' 0x$$c); \</span><br><span style="color: hsl(120, 100%, 40%);">+         done; \</span><br><span style="color: hsl(120, 100%, 40%);">+     done > $1</span><br><span style="color: hsl(120, 100%, 40%);">+endef</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+define add_spd_to_cbfs</span><br><span style="color: hsl(120, 100%, 40%);">+ $(eval cbfs-files-y += $1)</span><br><span style="color: hsl(120, 100%, 40%);">+    $(eval $1-file := $2)</span><br><span style="color: hsl(120, 100%, 40%);">+ $(eval $1-type := spd)</span><br><span style="color: hsl(120, 100%, 40%);">+endef</span><br><span> </span><br><span> ifeq ($(SPD_SOURCES),)</span><br><span>  SPD_DEPS := $(error SPD_SOURCES is not set. Variant must provide this)</span><br><span>@@ -7,14 +22,20 @@</span><br><span>  SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)</span><br><span> endif</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-# Include spd ROM data</span><br><span style="color: hsl(120, 100%, 40%);">+# Include SPD ROM data</span><br><span> $(SPD_BIN): $(SPD_DEPS)</span><br><span style="color: hsl(0, 100%, 40%);">-  for f in $+; \</span><br><span style="color: hsl(0, 100%, 40%);">-    do for c in $$(cat $$f | grep -v ^#); \</span><br><span style="color: hsl(0, 100%, 40%);">-           do printf $$(printf '\%o' 0x$$c); \</span><br><span style="color: hsl(0, 100%, 40%);">-   done; \</span><br><span style="color: hsl(0, 100%, 40%);">-       done > $@</span><br><span style="color: hsl(120, 100%, 40%);">+      $(call gen_spd_bin, $@, $+)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-cbfs-files-y += spd.bin</span><br><span style="color: hsl(0, 100%, 40%);">-spd.bin-file := $(SPD_BIN)</span><br><span style="color: hsl(0, 100%, 40%);">-spd.bin-type := spd</span><br><span style="color: hsl(120, 100%, 40%);">+$(call add_spd_to_cbfs, spd.bin, $(SPD_BIN))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Add optional secondary SPD ROM data if present</span><br><span style="color: hsl(120, 100%, 40%);">+ifneq ($(SEC_SPD_SOURCES),)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SEC_SPD_DEPS := $(foreach f, $(SEC_SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+$(SEC_SPD_BIN): $(SEC_SPD_DEPS)</span><br><span style="color: hsl(120, 100%, 40%);">+         $(call gen_spd_bin, $@, $+)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+$(call add_spd_to_cbfs, sec-spd.bin, $(SEC_SPD_BIN))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span>diff --git a/src/mainboard/google/poppy/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/poppy/variants/baseboard/include/baseboard/variants.h</span><br><span>index c88b99a..3cf11f6 100644</span><br><span>--- a/src/mainboard/google/poppy/variants/baseboard/include/baseboard/variants.h</span><br><span>+++ b/src/mainboard/google/poppy/variants/baseboard/include/baseboard/variants.h</span><br><span>@@ -45,6 +45,7 @@</span><br><span>        size_t rcomp_resistor_size;</span><br><span>  const void *rcomp_target;</span><br><span>    size_t rcomp_target_size;</span><br><span style="color: hsl(120, 100%, 40%);">+     bool use_sec_spd;</span><br><span> };</span><br><span> </span><br><span> void variant_memory_params(struct memory_params *p);</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/24972">change 24972</a>. To unsubscribe, or for help writing mail filters, 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/24972"/><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: I3add65ead99c510f2d6ec899fbf2cb9a06c79b0c </div>
<div style="display:none"> Gerrit-Change-Number: 24972 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Furquan Shaikh <furquan@google.com> </div>