<p>Julien Viard de Galbert has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/23813">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mb/scaleway/tagada: Add bmcInfo interface<br><br>This interface gives access to configuration information stored in flash<br>by the Tagada BMC before booting the SoC.<br><br>Change-Id: I4351aa11b08bdf65e14706b261c532bbf8837aed<br>Signed-off-by: Julien Viard de Galbert <jviarddegalbert@online.net><br>---<br>M src/mainboard/scaleway/tagada/Kconfig<br>M src/mainboard/scaleway/tagada/Makefile.inc<br>A src/mainboard/scaleway/tagada/bmcinfo.c<br>A src/mainboard/scaleway/tagada/bmcinfo.h<br>A src/mainboard/scaleway/tagada/bootblock.c<br>M src/mainboard/scaleway/tagada/romstage.c<br>6 files changed, 242 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/13/23813/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/mainboard/scaleway/tagada/Kconfig b/src/mainboard/scaleway/tagada/Kconfig</span><br><span>index 53c1f6d..e03728d 100644</span><br><span>--- a/src/mainboard/scaleway/tagada/Kconfig</span><br><span>+++ b/src/mainboard/scaleway/tagada/Kconfig</span><br><span>@@ -33,4 +33,10 @@</span><br><span>      string</span><br><span>       default "Scaleway"</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+config BMC_INFO_LOC</span><br><span style="color: hsl(120, 100%, 40%);">+ hex "BMC information location in flash"</span><br><span style="color: hsl(120, 100%, 40%);">+     default 0xff802000</span><br><span style="color: hsl(120, 100%, 40%);">+    help</span><br><span style="color: hsl(120, 100%, 40%);">+    Location of BMC SERIAL information.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> endif # BOARD_SCALEWAY_TAGADA</span><br><span>diff --git a/src/mainboard/scaleway/tagada/Makefile.inc b/src/mainboard/scaleway/tagada/Makefile.inc</span><br><span>index 2c8186f..7d426df 100644</span><br><span>--- a/src/mainboard/scaleway/tagada/Makefile.inc</span><br><span>+++ b/src/mainboard/scaleway/tagada/Makefile.inc</span><br><span>@@ -14,6 +14,8 @@</span><br><span> ## GNU General Public License for more details.</span><br><span> ##</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+bootblock-y += bootblock.c</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> romstage-y += hsio.c</span><br><span> </span><br><span> ramstage-y += ramstage.c</span><br><span>@@ -21,4 +23,10 @@</span><br><span> ramstage-$(CONFIG_HAVE_ACPI_TABLES) += acpi_tables.c</span><br><span> ramstage-$(CONFIG_HAVE_ACPI_TABLES) += fadt.c</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+bootblock-y += bmcinfo.c</span><br><span style="color: hsl(120, 100%, 40%);">+postcar-y += bmcinfo.c</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-y += bmcinfo.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += bmcinfo.c</span><br><span style="color: hsl(120, 100%, 40%);">+smm-$(CONFIG_HAVE_SMI_HANDLER) += bmcinfo.c</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> CPPFLAGS_common += -Isrc/mainboard/$(MAINBOARDDIR)/</span><br><span>diff --git a/src/mainboard/scaleway/tagada/bmcinfo.c b/src/mainboard/scaleway/tagada/bmcinfo.c</span><br><span>new file mode 100644</span><br><span>index 0000000..e9761b6</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/scaleway/tagada/bmcinfo.c</span><br><span>@@ -0,0 +1,155 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright (C) 2017 Online SAS.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <stdint.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <stdlib.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <string.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <arch/early_variables.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <console/console.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include "bmcinfo.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+typedef struct {</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 magic0; // "BMCI"</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 magic1; // "nfo0"</span><br><span style="color: hsl(120, 100%, 40%);">+       u16 length;</span><br><span style="color: hsl(120, 100%, 40%);">+   u16 chksum;</span><br><span style="color: hsl(120, 100%, 40%);">+   u8 uuid[16];</span><br><span style="color: hsl(120, 100%, 40%);">+  u8 bmcSerial[9]; // as null terminated string</span><br><span style="color: hsl(120, 100%, 40%);">+ u8 slot;</span><br><span style="color: hsl(120, 100%, 40%);">+      u8 corebootVerbosityLevel;</span><br><span style="color: hsl(120, 100%, 40%);">+    u8 relaxSecurity;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 baudrate;</span><br><span style="color: hsl(120, 100%, 40%);">+ u8 bootOption;</span><br><span style="color: hsl(120, 100%, 40%);">+        u8 endMarker; // Insert new fields before</span><br><span style="color: hsl(120, 100%, 40%);">+} biosBmcInfo_t;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define BIOSBMCINFO_MAGIC0 0x49434d42</span><br><span style="color: hsl(120, 100%, 40%);">+#define BIOSBMCINFO_MAGIC1 0x306f666e</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define BMC_INFO ((biosBmcInfo_t *)CONFIG_BMC_INFO_LOC)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum biosBmcInfoValidFlag_e {</span><br><span style="color: hsl(120, 100%, 40%);">+     BMCINFO_UNTESTED = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ BMCINFO_INVALID,</span><br><span style="color: hsl(120, 100%, 40%);">+      BMCINFO_INVALID_WARNED,</span><br><span style="color: hsl(120, 100%, 40%);">+       BMCINFO_VALID,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static enum biosBmcInfoValidFlag_e CAR_GLOBAL biosBmcInfoValidFlag;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static bool bmcInfoIsValid(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      const biosBmcInfo_t *bmc_info = BMC_INFO;</span><br><span style="color: hsl(120, 100%, 40%);">+     int flag = car_get_var(biosBmcInfoValidFlag);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (flag == BMCINFO_UNTESTED) {</span><br><span style="color: hsl(120, 100%, 40%);">+               flag = BMCINFO_INVALID;</span><br><span style="color: hsl(120, 100%, 40%);">+               if ((bmc_info->magic0 == BIOSBMCINFO_MAGIC0)</span><br><span style="color: hsl(120, 100%, 40%);">+                && (bmc_info->magic1 == BIOSBMCINFO_MAGIC1)</span><br><span style="color: hsl(120, 100%, 40%);">+                && (bmc_info->length >= offsetof(biosBmcInfo_t, endMarker))</span><br><span style="color: hsl(120, 100%, 40%);">+             && (bmc_info->length <= 0x1000)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     u16 chksum = 0 - (bmc_info->chksum & 0xff)</span><br><span style="color: hsl(120, 100%, 40%);">+                             - (bmc_info->chksum >> 8);</span><br><span style="color: hsl(120, 100%, 40%);">+                   int i;</span><br><span style="color: hsl(120, 100%, 40%);">+                        for (i = 0; i < bmc_info->length ; i++)</span><br><span style="color: hsl(120, 100%, 40%);">+                         chksum += ((u8 *)bmc_info)[i];</span><br><span style="color: hsl(120, 100%, 40%);">+                        if (bmc_info->chksum == chksum)</span><br><span style="color: hsl(120, 100%, 40%);">+                            flag = BMCINFO_VALID;</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+             car_set_var(biosBmcInfoValidFlag, flag);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+#if !defined(__PRE_RAM__)</span><br><span style="color: hsl(120, 100%, 40%);">+  if (flag == BMCINFO_INVALID) {</span><br><span style="color: hsl(120, 100%, 40%);">+                int length = offsetof(biosBmcInfo_t, endMarker);</span><br><span style="color: hsl(120, 100%, 40%);">+              printk(BIOS_CRIT, "WARNING "</span><br><span style="color: hsl(120, 100%, 40%);">+                        "bmcInfo not available please update your BMC.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+         flag = BMCINFO_INVALID_WARNED;</span><br><span style="color: hsl(120, 100%, 40%);">+                car_set_var(biosBmcInfoValidFlag, flag);</span><br><span style="color: hsl(120, 100%, 40%);">+              printk(BIOS_CRIT, "bmcInfo magic = \"%x-%x\"\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                          bmc_info->magic0, bmc_info->magic1);</span><br><span style="color: hsl(120, 100%, 40%);">+            printk(BIOS_CRIT, "bmcInfo length = %d expected = %d\"\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                             bmc_info->length, length);</span><br><span style="color: hsl(120, 100%, 40%);">+         u16 chksum = 0 - (bmc_info->chksum & 0xff)</span><br><span style="color: hsl(120, 100%, 40%);">+                     - (bmc_info->chksum >> 8);</span><br><span style="color: hsl(120, 100%, 40%);">+           int i;</span><br><span style="color: hsl(120, 100%, 40%);">+                for (i = 0; i < bmc_info->length; i++)</span><br><span style="color: hsl(120, 100%, 40%);">+                  chksum += ((u8 *)bmc_info)[i];</span><br><span style="color: hsl(120, 100%, 40%);">+                printk(BIOS_CRIT, "bmcInfo chksum = 0x%x expected = 0x%x\"\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                         bmc_info->chksum, chksum);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+     return (flag == BMCINFO_VALID);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const char *bmcInfoSerial(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    if (bmcInfoIsValid())</span><br><span style="color: hsl(120, 100%, 40%);">+         return (char*) BMC_INFO->bmcSerial;</span><br><span style="color: hsl(120, 100%, 40%);">+        return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const u8 *bmcInfoUuid(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     if (bmcInfoIsValid())</span><br><span style="color: hsl(120, 100%, 40%);">+         return BMC_INFO->uuid;</span><br><span style="color: hsl(120, 100%, 40%);">+     return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const u32 bmcInfoBaudrate(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ if (bmcInfoIsValid())</span><br><span style="color: hsl(120, 100%, 40%);">+         return BMC_INFO->baudrate;</span><br><span style="color: hsl(120, 100%, 40%);">+ return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const int bmcInfoCorebootVerbosityLevel(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      if (bmcInfoIsValid())</span><br><span style="color: hsl(120, 100%, 40%);">+         return BMC_INFO->corebootVerbosityLevel & 0xf;</span><br><span style="color: hsl(120, 100%, 40%);">+ return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const int bmcInfoFSPVerbosityLevel(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  if (bmcInfoIsValid())</span><br><span style="color: hsl(120, 100%, 40%);">+         return BMC_INFO->corebootVerbosityLevel >> 4;</span><br><span style="color: hsl(120, 100%, 40%);">+        return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const int bmcInfoSlot(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        if (bmcInfoIsValid())</span><br><span style="color: hsl(120, 100%, 40%);">+         return BMC_INFO->slot;</span><br><span style="color: hsl(120, 100%, 40%);">+     return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const int bmcInfoRelaxSecurity(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      if (bmcInfoIsValid())</span><br><span style="color: hsl(120, 100%, 40%);">+         return BMC_INFO->relaxSecurity;</span><br><span style="color: hsl(120, 100%, 40%);">+    return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const int bmcInfoBootOption(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  if (bmcInfoIsValid())</span><br><span style="color: hsl(120, 100%, 40%);">+         return BMC_INFO->bootOption;</span><br><span style="color: hsl(120, 100%, 40%);">+       return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/src/mainboard/scaleway/tagada/bmcinfo.h b/src/mainboard/scaleway/tagada/bmcinfo.h</span><br><span>new file mode 100644</span><br><span>index 0000000..d7d6541</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/scaleway/tagada/bmcinfo.h</span><br><span>@@ -0,0 +1,39 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright (C) 2017 Online SAS.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef MAINBOARD_BMCINFO_H</span><br><span style="color: hsl(120, 100%, 40%);">+#define MAINBOARD_BMCINFO_H</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+// Do not place disks in boot order</span><br><span style="color: hsl(120, 100%, 40%);">+#define BOOT_OPTION_NIC_ONLY 0</span><br><span style="color: hsl(120, 100%, 40%);">+// Boot to disk first (before network)</span><br><span style="color: hsl(120, 100%, 40%);">+#define BOOT_OPTION_DISK_FIRST 1</span><br><span style="color: hsl(120, 100%, 40%);">+// Boot to disk second (after network)</span><br><span style="color: hsl(120, 100%, 40%);">+#define BOOT_OPTION_DISK_SECOND 2</span><br><span style="color: hsl(120, 100%, 40%);">+// Boot order mask</span><br><span style="color: hsl(120, 100%, 40%);">+#define BOOT_OPTION_ORDER_MASK 3</span><br><span style="color: hsl(120, 100%, 40%);">+// Reset after boot sequence (don't go to EFI shell)</span><br><span style="color: hsl(120, 100%, 40%);">+#define BOOT_OPTION_NO_EFISHELL 0x80</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const char *bmcInfoSerial(void);</span><br><span style="color: hsl(120, 100%, 40%);">+const u8 *bmcInfoUuid(void);</span><br><span style="color: hsl(120, 100%, 40%);">+const u32 bmcInfoBaudrate(void);</span><br><span style="color: hsl(120, 100%, 40%);">+const int bmcInfoCorebootVerbosityLevel(void);</span><br><span style="color: hsl(120, 100%, 40%);">+const int bmcInfoFSPVerbosityLevel(void);</span><br><span style="color: hsl(120, 100%, 40%);">+const int bmcInfoSlot(void);</span><br><span style="color: hsl(120, 100%, 40%);">+const int bmcInfoRelaxSecurity(void);</span><br><span style="color: hsl(120, 100%, 40%);">+const int bmcInfoBootOption(void);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#endif     /* MAINBOARD_BMCINFO_H */</span><br><span>diff --git a/src/mainboard/scaleway/tagada/bootblock.c b/src/mainboard/scaleway/tagada/bootblock.c</span><br><span>new file mode 100644</span><br><span>index 0000000..e8443fd</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/scaleway/tagada/bootblock.c</span><br><span>@@ -0,0 +1,30 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright (C) 2018 Online SAS.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <bootblock_common.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <console/console.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include "bmcinfo.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Display board serial early</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void bootblock_mainboard_init(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ if (IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE))</span><br><span style="color: hsl(120, 100%, 40%);">+             printk(BIOS_SPEW, "Board Serial: %s.\n", bmcInfoSerial());</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/src/mainboard/scaleway/tagada/romstage.c b/src/mainboard/scaleway/tagada/romstage.c</span><br><span>index d6a1282..cae6324f 100644</span><br><span>--- a/src/mainboard/scaleway/tagada/romstage.c</span><br><span>+++ b/src/mainboard/scaleway/tagada/romstage.c</span><br><span>@@ -20,6 +20,7 @@</span><br><span> #include <fsp/api.h></span><br><span> #include <fsp/soc_binding.h></span><br><span> #include <string.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include "bmcinfo.h"</span><br><span> </span><br><span> void mainboard_config_gpios(void);</span><br><span> void mainboard_memory_init_params(FSPM_UPD *mupd);</span><br><span>@@ -32,6 +33,7 @@</span><br><span>     size_t num;</span><br><span>  const struct pad_config *table;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   printk(BIOS_SPEW, "Board Serial: %s.\n", bmcInfoSerial());</span><br><span>         /* Configure pads prior to SiliconInit() in case there's any</span><br><span>     * dependencies during hardware initialization.</span><br><span>       */</span><br><span>@@ -50,7 +52,8 @@</span><br><span> </span><br><span> void mainboard_memory_init_params(FSPM_UPD *mupd)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    mupd->FspmConfig.PcdFspDebugPrintErrorLevel = 3; // Verbose</span><br><span style="color: hsl(120, 100%, 40%);">+        mupd->FspmConfig.PcdFspDebugPrintErrorLevel =</span><br><span style="color: hsl(120, 100%, 40%);">+              bmcInfoFSPVerbosityLevel();</span><br><span> </span><br><span>      // Enable Rmt and Fast Boot by default, RMT will be run only on first</span><br><span>        // boot or when dimms change</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/23813">change 23813</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/23813"/><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: I4351aa11b08bdf65e14706b261c532bbf8837aed </div>
<div style="display:none"> Gerrit-Change-Number: 23813 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Julien Viard de Galbert <jviarddegalbert@online.net> </div>