<p>Bora Guvendik has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/25464">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">coreboot_tables: pass the early_mmc_wake_hw status to payload<br><br>Pass the return value from early_mmc_wake_hw() to the payload.<br><br>Change-Id: Ia4c57d05433c3966118c3642913d7017958cce55<br>Signed-off-by: Bora Guvendik <bora.guvendik@intel.com><br>---<br>M payloads/libpayload/include/coreboot_tables.h<br>M payloads/libpayload/include/sysinfo.h<br>M payloads/libpayload/libc/coreboot.c<br>M src/commonlib/include/commonlib/coreboot_tables.h<br>M src/lib/coreboot_table.c<br>5 files changed, 44 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/64/25464/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/payloads/libpayload/include/coreboot_tables.h b/payloads/libpayload/include/coreboot_tables.h</span><br><span>index 6b6d1b4..aabd0a9 100644</span><br><span>--- a/payloads/libpayload/include/coreboot_tables.h</span><br><span>+++ b/payloads/libpayload/include/coreboot_tables.h</span><br><span>@@ -287,6 +287,13 @@</span><br><span>        struct mac_address mac_addrs[0];</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define CB_TAG_MMC_INFO             0x0034</span><br><span style="color: hsl(120, 100%, 40%);">+struct cb_mmc_info {</span><br><span style="color: hsl(120, 100%, 40%);">+  uint32_t tag;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t size;</span><br><span style="color: hsl(120, 100%, 40%);">+        int early_cmd1_status;</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #define CB_TAG_SERIALNO         0x002a</span><br><span> #define CB_MAX_SERIALNO_LENGTH        32</span><br><span> </span><br><span>diff --git a/payloads/libpayload/include/sysinfo.h b/payloads/libpayload/include/sysinfo.h</span><br><span>index f221a15..75affd1 100644</span><br><span>--- a/payloads/libpayload/include/sysinfo.h</span><br><span>+++ b/payloads/libpayload/include/sysinfo.h</span><br><span>@@ -129,6 +129,7 @@</span><br><span>        uint64_t mtc_start;</span><br><span>  uint32_t mtc_size;</span><br><span>   void    *chromeos_vpd;</span><br><span style="color: hsl(120, 100%, 40%);">+        int     mmc_early_wake_status;</span><br><span> };</span><br><span> </span><br><span> extern struct sysinfo_t lib_sysinfo;</span><br><span>diff --git a/payloads/libpayload/libc/coreboot.c b/payloads/libpayload/libc/coreboot.c</span><br><span>index d831b96..4d0c3ef 100644</span><br><span>--- a/payloads/libpayload/libc/coreboot.c</span><br><span>+++ b/payloads/libpayload/libc/coreboot.c</span><br><span>@@ -94,6 +94,13 @@</span><br><span>       info->vbnv_size = vbnv->range_size;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static void cb_parse_mmc_info(unsigned char *ptr, struct sysinfo_t *info)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      struct cb_mmc_info *mmc_info = (struct cb_mmc_info *)ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   info->mmc_early_wake_status = mmc_info->early_cmd1_status;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)</span><br><span> {</span><br><span>         int i;</span><br><span>@@ -399,6 +406,9 @@</span><br><span>                 case CB_TAG_SPI_FLASH:</span><br><span>                       cb_parse_spi_flash(ptr, info);</span><br><span>                       break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case CB_TAG_MMC_INFO:</span><br><span style="color: hsl(120, 100%, 40%);">+                 cb_parse_mmc_info(ptr, info);</span><br><span style="color: hsl(120, 100%, 40%);">+                 break;</span><br><span>               case CB_TAG_MTC:</span><br><span>                     cb_parse_mtc(ptr, info);</span><br><span>                     break;</span><br><span>diff --git a/src/commonlib/include/commonlib/coreboot_tables.h b/src/commonlib/include/commonlib/coreboot_tables.h</span><br><span>index f411ff2..d6254b6 100644</span><br><span>--- a/src/commonlib/include/commonlib/coreboot_tables.h</span><br><span>+++ b/src/commonlib/include/commonlib/coreboot_tables.h</span><br><span>@@ -384,6 +384,13 @@</span><br><span>       uint8_t pad[2];         /* Pad it to 8 bytes to keep it simple. */</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define LB_TAG_MMC_INFO           0x0034</span><br><span style="color: hsl(120, 100%, 40%);">+struct lb_mmc_info {</span><br><span style="color: hsl(120, 100%, 40%);">+  uint32_t tag;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t size;</span><br><span style="color: hsl(120, 100%, 40%);">+        int early_cmd1_status;</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct lb_macs {</span><br><span>     uint32_t tag;</span><br><span>        uint32_t size;</span><br><span>diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c</span><br><span>index d03b771..8e05aa2 100644</span><br><span>--- a/src/lib/coreboot_table.c</span><br><span>+++ b/src/lib/coreboot_table.c</span><br><span>@@ -47,6 +47,7 @@</span><br><span> #include <cpu/x86/mtrr.h></span><br><span> #endif</span><br><span> #include <commonlib/helpers.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <intelblocks/early_mmc.h></span><br><span> </span><br><span> static struct lb_header *lb_table_init(unsigned long addr)</span><br><span> {</span><br><span>@@ -328,6 +329,21 @@</span><br><span>         printk(BIOS_INFO, "SKU ID: %d\n", sid);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static void lb_mmc_info(struct lb_header *header)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      struct lb_mmc_info *rec;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    rec = (struct lb_mmc_info *)lb_new_record(header);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  rec->tag = LB_TAG_MMC_INFO;</span><br><span style="color: hsl(120, 100%, 40%);">+        rec->size = sizeof(*rec);</span><br><span style="color: hsl(120, 100%, 40%);">+#if IS_ENABLED(CONFIG_SOC_INTEL_COMMON_EARLY_MMC_WAKE)</span><br><span style="color: hsl(120, 100%, 40%);">+  rec->early_cmd1_status = get_early_mmc_wake_status();</span><br><span style="color: hsl(120, 100%, 40%);">+#else</span><br><span style="color: hsl(120, 100%, 40%);">+       rec->early_cmd1_status = -1; // pass it as an error</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void add_cbmem_pointers(struct lb_header *header)</span><br><span> {</span><br><span>         /*</span><br><span>@@ -567,6 +583,9 @@</span><br><span>     lb_ram_code(head);</span><br><span>   lb_sku_id(head);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  /* Pass mmc early init status */</span><br><span style="color: hsl(120, 100%, 40%);">+      lb_mmc_info(head);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         /* Add SPI flash description if available */</span><br><span>         if (IS_ENABLED(CONFIG_BOOT_DEVICE_SPI_FLASH))</span><br><span>                lb_spi_flash(head);</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/25464">change 25464</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/25464"/><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: Ia4c57d05433c3966118c3642913d7017958cce55 </div>
<div style="display:none"> Gerrit-Change-Number: 25464 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Bora Guvendik <bora.guvendik@intel.com> </div>