<p>Seunghwan Kim has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/28439">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mb/google/poppy/variants/nautilus: Bump VCC_SA voltage offset 75mV<br><br>Nautilus-Wifi with m3 AP got a halt issue during CTS test.<br><br>Nautilus-Wifi was FCS with Celeron AP first and also its PCB/BOM was<br>validated only with Celeron. Since Celeron deos not support turbo<br>boost mode, its steady power demend and lower CPU frequency may not<br>reflect the potential noise hidden inside the board.<br><br>Bumping VCC_SA voltage offset 75mV confirmed works to mitigate the<br>potential noise coupling to VCC_GT/SA, and we verified this change<br>makes this issue go away on Nautilus-Wifi board.<br><br>Nautilus-LTE doesn't show this issue, since it has 10L PCB, will have<br>better grounding and less noise/ripple than 8L PCB.<br><br>BUG=b:111417632<br>BRANCH=poppy<br>TEST=Verified CTS test pass without an issue.<br><br>Change-Id: Id13fcc36a5b6ed42620c66f57a7303f30bff1a50<br>Signed-off-by: Seunghwan Kim <sh_.kim@samsung.com><br>---<br>M src/mainboard/google/poppy/romstage.c<br>M src/mainboard/google/poppy/variants/baseboard/include/baseboard/variants.h<br>M src/mainboard/google/poppy/variants/nautilus/Makefile.inc<br>M src/mainboard/google/poppy/variants/nautilus/mainboard.c<br>M src/mainboard/google/poppy/variants/nautilus/memory.c<br>A src/mainboard/google/poppy/variants/nautilus/sku.c<br>6 files changed, 79 insertions(+), 21 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/39/28439/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 af4f70b..adc13ed 100644</span><br><span>--- a/src/mainboard/google/poppy/romstage.c</span><br><span>+++ b/src/mainboard/google/poppy/romstage.c</span><br><span>@@ -173,4 +173,9 @@</span><br><span>  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 style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        if (p.enable_sa_oc_support) {</span><br><span style="color: hsl(120, 100%, 40%);">+         mem_cfg->SaOcSupport = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+          mem_cfg->SaVoltageOffset = p.sa_voltage_offset_val;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> }</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 391f809..ef41c9b 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>@@ -54,6 +54,8 @@</span><br><span>      const void *rcomp_target;</span><br><span>    size_t rcomp_target_size;</span><br><span>    bool use_sec_spd;</span><br><span style="color: hsl(120, 100%, 40%);">+     bool enable_sa_oc_support;</span><br><span style="color: hsl(120, 100%, 40%);">+    uint16_t sa_voltage_offset_val;</span><br><span> };</span><br><span> </span><br><span> void variant_memory_params(struct memory_params *p);</span><br><span>diff --git a/src/mainboard/google/poppy/variants/nautilus/Makefile.inc b/src/mainboard/google/poppy/variants/nautilus/Makefile.inc</span><br><span>index d52893e..130c940 100644</span><br><span>--- a/src/mainboard/google/poppy/variants/nautilus/Makefile.inc</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/Makefile.inc</span><br><span>@@ -7,9 +7,11 @@</span><br><span> </span><br><span> romstage-y += memory.c</span><br><span> romstage-y += gpio.c</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-y += sku.c</span><br><span> </span><br><span> ramstage-y += gpio.c</span><br><span> ramstage-y += nhlt.c</span><br><span> ramstage-y += mainboard.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += sku.c</span><br><span> </span><br><span> smm-$(CONFIG_HAVE_SMI_HANDLER) += smihandler.c</span><br><span>diff --git a/src/mainboard/google/poppy/variants/nautilus/mainboard.c b/src/mainboard/google/poppy/variants/nautilus/mainboard.c</span><br><span>index e51370c..32e9b97 100644</span><br><span>--- a/src/mainboard/google/poppy/variants/nautilus/mainboard.c</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/mainboard.c</span><br><span>@@ -15,32 +15,17 @@</span><br><span> </span><br><span> #include <baseboard/variants.h></span><br><span> #include <chip.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <gpio.h></span><br><span> #include <device/device.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <device/pci.h></span><br><span> #include <smbios.h></span><br><span> #include <string.h></span><br><span> #include <variant/sku.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <console/console.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-uint32_t variant_board_sku(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  static uint32_t sku_id = SKU_UNKNOWN;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   if (sku_id != SKU_UNKNOWN)</span><br><span style="color: hsl(0, 100%, 40%);">-              return sku_id;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  /*</span><br><span style="color: hsl(0, 100%, 40%);">-      *  Nautilus uses GPP_B20 to determine SKU</span><br><span style="color: hsl(0, 100%, 40%);">-       *  0 - Wifi SKU</span><br><span style="color: hsl(0, 100%, 40%);">- *  1 - LTE SKU</span><br><span style="color: hsl(0, 100%, 40%);">-  */</span><br><span style="color: hsl(0, 100%, 40%);">-      gpio_input_pulldown(GPP_B20);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (!gpio_get(GPP_B20))</span><br><span style="color: hsl(0, 100%, 40%);">-         sku_id = SKU_0_NAUTILUS;</span><br><span style="color: hsl(0, 100%, 40%);">-        else</span><br><span style="color: hsl(0, 100%, 40%);">-            sku_id = SKU_1_NAUTILUS_LTE;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    return sku_id;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+#define R_PCH_OC_WDT_CTL               0x54</span><br><span style="color: hsl(120, 100%, 40%);">+#define B_PCH_OC_WDT_CTL_FORCE_ALL        BIT15</span><br><span style="color: hsl(120, 100%, 40%);">+#define B_PCH_OC_WDT_CTL_EN              BIT14</span><br><span style="color: hsl(120, 100%, 40%);">+#define B_PCH_OC_WDT_CTL_UNXP_RESET_STS  BIT22</span><br><span> </span><br><span> const char *smbios_mainboard_sku(void)</span><br><span> {</span><br><span>@@ -57,11 +42,22 @@</span><br><span>       uint32_t sku_id = variant_board_sku();</span><br><span>       struct device *root = SA_DEV_ROOT;</span><br><span>   config_t *cfg = root->chip_info;</span><br><span style="color: hsl(120, 100%, 40%);">+   uint16_t abase;</span><br><span style="color: hsl(120, 100%, 40%);">+       uint32_t val32;</span><br><span> </span><br><span>  switch (sku_id) {</span><br><span>    case SKU_0_NAUTILUS:</span><br><span>                 /* Disable LTE module */</span><br><span>             cfg->usb3_ports[3].enable = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Enabling SaOcSupport flag makes OC_WDT be enabled in FSP-M.</span><br><span style="color: hsl(120, 100%, 40%);">+                 * We should clear OC_WDT to prevent turning the system off. */</span><br><span style="color: hsl(120, 100%, 40%);">+               abase = pci_read_config16(PCH_DEV_PMC, ABASE) & 0xfffc;</span><br><span style="color: hsl(120, 100%, 40%);">+           val32 = inl(abase + R_PCH_OC_WDT_CTL);</span><br><span style="color: hsl(120, 100%, 40%);">+                val32 &= ~(B_PCH_OC_WDT_CTL_EN |</span><br><span style="color: hsl(120, 100%, 40%);">+                  B_PCH_OC_WDT_CTL_FORCE_ALL |</span><br><span style="color: hsl(120, 100%, 40%);">+                  B_PCH_OC_WDT_CTL_UNXP_RESET_STS);</span><br><span style="color: hsl(120, 100%, 40%);">+             outl(val32, abase + R_PCH_OC_WDT_CTL);</span><br><span>               break;</span><br><span> </span><br><span>   case SKU_1_NAUTILUS_LTE:</span><br><span>diff --git a/src/mainboard/google/poppy/variants/nautilus/memory.c b/src/mainboard/google/poppy/variants/nautilus/memory.c</span><br><span>index dc845bc..a0dd76b 100644</span><br><span>--- a/src/mainboard/google/poppy/variants/nautilus/memory.c</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/memory.c</span><br><span>@@ -14,6 +14,7 @@</span><br><span>  */</span><br><span> </span><br><span> #include <baseboard/variants.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <variant/sku.h></span><br><span> </span><br><span> /* DQ byte map */</span><br><span> static const u8 dq_map[][12] = {</span><br><span>@@ -46,4 +47,13 @@</span><br><span>  p->rcomp_resistor_size = sizeof(rcomp_resistor);</span><br><span>  p->rcomp_target = rcomp_target;</span><br><span>   p->rcomp_target_size = sizeof(rcomp_target);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     switch (variant_board_sku()) {</span><br><span style="color: hsl(120, 100%, 40%);">+        case SKU_0_NAUTILUS:</span><br><span style="color: hsl(120, 100%, 40%);">+          /* Bumping VCC_SA voltage offset 75mV to allow a</span><br><span style="color: hsl(120, 100%, 40%);">+               * tolerance to PLLGT on Nautilus-Wifi sku */</span><br><span style="color: hsl(120, 100%, 40%);">+         p->enable_sa_oc_support = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+               p->sa_voltage_offset_val = 75;</span><br><span style="color: hsl(120, 100%, 40%);">+             break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> }</span><br><span>diff --git a/src/mainboard/google/poppy/variants/nautilus/sku.c b/src/mainboard/google/poppy/variants/nautilus/sku.c</span><br><span>new file mode 100644</span><br><span>index 0000000..55b118d</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/sku.c</span><br><span>@@ -0,0 +1,43 @@</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 2018 Google Inc.</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%);">+#include <baseboard/variants.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <gpio.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <variant/sku.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+uint32_t variant_board_sku(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+#if ENV_ROMSTAGE</span><br><span style="color: hsl(120, 100%, 40%);">+     uint32_t sku_id = SKU_UNKNOWN;</span><br><span style="color: hsl(120, 100%, 40%);">+#else</span><br><span style="color: hsl(120, 100%, 40%);">+ static uint32_t sku_id = SKU_UNKNOWN;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       if (sku_id != SKU_UNKNOWN)</span><br><span style="color: hsl(120, 100%, 40%);">+            return sku_id;</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 style="color: hsl(120, 100%, 40%);">+    *  Nautilus uses GPP_B20 to determine SKU</span><br><span style="color: hsl(120, 100%, 40%);">+     *  0 - Wifi SKU</span><br><span style="color: hsl(120, 100%, 40%);">+       *  1 - LTE SKU</span><br><span style="color: hsl(120, 100%, 40%);">+        */</span><br><span style="color: hsl(120, 100%, 40%);">+    gpio_input_pulldown(GPP_B20);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (!gpio_get(GPP_B20))</span><br><span style="color: hsl(120, 100%, 40%);">+               sku_id = SKU_0_NAUTILUS;</span><br><span style="color: hsl(120, 100%, 40%);">+      else</span><br><span style="color: hsl(120, 100%, 40%);">+          sku_id = SKU_1_NAUTILUS_LTE;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        return sku_id;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/28439">change 28439</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/28439"/><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: Id13fcc36a5b6ed42620c66f57a7303f30bff1a50 </div>
<div style="display:none"> Gerrit-Change-Number: 28439 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Seunghwan Kim <sh_.kim@samsung.com> </div>