<p>Seunghwan Kim has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/27147">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mb/google/poppy/variant/nautilus: Configure for 2nd nautilus SKU<br><br>For supporting new SKU, we need to override GPIO table and device configuration.<br>The board ID of 2nd SKU of nautilus is started from 9, so we would determine SKU with it.<br><br>BUG=b:80052672<br>BRANCH=poppy<br>TEST=emerge-nautilus coreboot<br><br>Change-Id: I7242f23f47010664cc29ea86a126e63c9dd62ccd<br>Signed-off-by: Seunghwan Kim <sh_.kim@samsung.com><br>---<br>M src/mainboard/google/poppy/variants/nautilus/Makefile.inc<br>M src/mainboard/google/poppy/variants/nautilus/gpio.c<br>A src/mainboard/google/poppy/variants/nautilus/include/variant/sku.h<br>A src/mainboard/google/poppy/variants/nautilus/mainboard.c<br>4 files changed, 121 insertions(+), 10 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/47/27147/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><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 a4f4165..2167282 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>@@ -9,3 +9,4 @@</span><br><span> </span><br><span> ramstage-y += gpio.c</span><br><span> ramstage-y += nhlt.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += mainboard.c</span><br><span>diff --git a/src/mainboard/google/poppy/variants/nautilus/gpio.c b/src/mainboard/google/poppy/variants/nautilus/gpio.c</span><br><span>index b4db7ee..b496651 100644</span><br><span>--- a/src/mainboard/google/poppy/variants/nautilus/gpio.c</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/gpio.c</span><br><span>@@ -16,6 +16,7 @@</span><br><span> #include <baseboard/gpio.h></span><br><span> #include <baseboard/variants.h></span><br><span> #include <commonlib/helpers.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <variant/sku.h></span><br><span> </span><br><span> /* Pad configuration in ramstage */</span><br><span> /* Leave eSPI pins untouched from default settings */</span><br><span>@@ -49,8 +50,6 @@</span><br><span>  PAD_CFG_NF(GPP_A16, NONE, DEEP, NF1),</span><br><span>        /* A17 : SD_PWR_EN# ==> CPU1_SDCARD_PWREN_L */</span><br><span>    PAD_CFG_NF(GPP_A17, NONE, DEEP, NF1),</span><br><span style="color: hsl(0, 100%, 40%);">-   /* A18 : ISH_GP0 ==> NC */</span><br><span style="color: hsl(0, 100%, 40%);">-   PAD_CFG_NC(GPP_A18),</span><br><span>         /* A19 : ISH_GP1 ==> NC */</span><br><span>        PAD_CFG_NC(GPP_A19),</span><br><span>         /* A20 : ISH_GP2 ==> NC */</span><br><span>@@ -102,8 +101,8 @@</span><br><span>  PAD_CFG_NC(GPP_B18),</span><br><span>         /* B19 : GSPI1_CS# ==> CHP3_PEN_EJECT - for notification */</span><br><span>       PAD_CFG_GPI_GPIO_DRIVER(GPP_B19, NONE, DEEP),</span><br><span style="color: hsl(0, 100%, 40%);">-   /* B20 : GSPI1_CLK ==> NC */</span><br><span style="color: hsl(0, 100%, 40%);">- PAD_CFG_NC(GPP_B20),</span><br><span style="color: hsl(120, 100%, 40%);">+  /* B20 : GSPI1_CLK ==> LTE3_STRAP# - for SAR sensor presence */</span><br><span style="color: hsl(120, 100%, 40%);">+    PAD_CFG_GPI(GPP_B20, 20K_PD, DEEP),</span><br><span>  /* B21 : GSPI1_MISO ==> CHP3_PEN_EJECT - for wake event */</span><br><span>        PAD_CFG_GPI_ACPI_SCI(GPP_B21, NONE, DEEP, NONE),</span><br><span>     /* B22 : GSPI1_MOSI ==> NC */</span><br><span>@@ -160,8 +159,6 @@</span><br><span>       /* C23 : UART2_CTS# ==> CHP3_PCH_WP*/</span><br><span>     PAD_CFG_GPI(GPP_C23, 20K_PU, DEEP),</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* D0  : SPI1_CS# ==> NC */</span><br><span style="color: hsl(0, 100%, 40%);">-  PAD_CFG_NC(GPP_D0),</span><br><span>  /* D1  : SPI1_CLK ==> NC */</span><br><span>       PAD_CFG_NC(GPP_D1),</span><br><span>  /* D2  : SPI1_MISO ==> NC */</span><br><span>@@ -192,8 +189,6 @@</span><br><span>        PAD_CFG_NC(GPP_D14),</span><br><span>         /* D15 : ISH_UART0_RTS# ==> NC */</span><br><span>         PAD_CFG_NC(GPP_D15),</span><br><span style="color: hsl(0, 100%, 40%);">-    /* D16 : ISH_UART0_CTS# ==> NC */</span><br><span style="color: hsl(0, 100%, 40%);">-    PAD_CFG_NC(GPP_D16),</span><br><span>         /* D17 : DMIC_CLK1 */</span><br><span>        PAD_CFG_NF(GPP_D17, NONE, DEEP, NF1),</span><br><span>        /* D18 : DMIC_DATA1 */</span><br><span>@@ -202,8 +197,6 @@</span><br><span>         PAD_CFG_NF(GPP_D19, NONE, DEEP, NF1),</span><br><span>        /* D20 : DMIC_DATA0 */</span><br><span>       PAD_CFG_NF(GPP_D20, NONE, DEEP, NF1),</span><br><span style="color: hsl(0, 100%, 40%);">-   /* D21 : SPI1_IO2 ==> NC */</span><br><span style="color: hsl(0, 100%, 40%);">-  PAD_CFG_NC(GPP_D21),</span><br><span>         /* D22 : SPI1_IO3 ==> CHP1_BOOT_BEEP_OVERRIDE */</span><br><span>  PAD_CFG_GPO(GPP_D22, 1, DEEP),</span><br><span>       /* D23 : I2S_MCLK ==> CHP1_I2S_MCLK */</span><br><span>@@ -382,3 +375,42 @@</span><br><span>     *num = ARRAY_SIZE(early_gpio_table);</span><br><span>         return early_gpio_table;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const struct pad_config nautilus_default_sku_gpio_table[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* A18 : ISH_GP0 ==> NC */</span><br><span style="color: hsl(120, 100%, 40%);">+ PAD_CFG_NC(GPP_A18),</span><br><span style="color: hsl(120, 100%, 40%);">+  /* D0  : SPI1_CS# ==> NC */</span><br><span style="color: hsl(120, 100%, 40%);">+        PAD_CFG_NC(GPP_D0),</span><br><span style="color: hsl(120, 100%, 40%);">+   /* D16 : ISH_UART0_CTS# ==> NC */</span><br><span style="color: hsl(120, 100%, 40%);">+  PAD_CFG_NC(GPP_D16),</span><br><span style="color: hsl(120, 100%, 40%);">+  /* D21 : SPI1_IO2 ==> NC */</span><br><span style="color: hsl(120, 100%, 40%);">+        PAD_CFG_NC(GPP_D21),</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 const struct pad_config lte_sku_gpio_table[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+   /* A18 : ISH_GP0 ==> LTE1_P_SENSOR_INT_L */</span><br><span style="color: hsl(120, 100%, 40%);">+        PAD_CFG_GPI_APIC(GPP_A18, NONE, DEEP),</span><br><span style="color: hsl(120, 100%, 40%);">+        /* D0  : SPI1_CS# ==> LTE_PWROFF# */</span><br><span style="color: hsl(120, 100%, 40%);">+       PAD_CFG_GPO(GPP_D0, 1, DEEP),</span><br><span style="color: hsl(120, 100%, 40%);">+ /* D16 : ISH_UART0_CTS# ==> LTE3_W_DISABLE# */</span><br><span style="color: hsl(120, 100%, 40%);">+     PAD_CFG_GPO(GPP_D16, 1, DEEP),</span><br><span style="color: hsl(120, 100%, 40%);">+        /* D21 : SPI1_IO2 ==> LTE3_BODY_SAR */</span><br><span style="color: hsl(120, 100%, 40%);">+     PAD_CFG_GPO(GPP_D21, 0, DEEP),</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 struct pad_config *variant_sku_gpio_table(size_t *num)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t sku_id = variant_board_sku();</span><br><span style="color: hsl(120, 100%, 40%);">+        const struct pad_config *board_gpio_tables;</span><br><span style="color: hsl(120, 100%, 40%);">+   switch (sku_id) {</span><br><span style="color: hsl(120, 100%, 40%);">+     case SKU_1_NAUTILUS_LTE:</span><br><span style="color: hsl(120, 100%, 40%);">+              *num = ARRAY_SIZE(lte_sku_gpio_table);</span><br><span style="color: hsl(120, 100%, 40%);">+                board_gpio_tables = lte_sku_gpio_table;</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              *num = ARRAY_SIZE(nautilus_default_sku_gpio_table);</span><br><span style="color: hsl(120, 100%, 40%);">+           board_gpio_tables = nautilus_default_sku_gpio_table;</span><br><span style="color: hsl(120, 100%, 40%);">+          break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+     return board_gpio_tables;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/mainboard/google/poppy/variants/nautilus/include/variant/sku.h b/src/mainboard/google/poppy/variants/nautilus/include/variant/sku.h</span><br><span>new file mode 100644</span><br><span>index 0000000..c101451</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/include/variant/sku.h</span><br><span>@@ -0,0 +1,23 @@</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%);">+#ifndef __MAINBOARD_SKU_H__</span><br><span style="color: hsl(120, 100%, 40%);">+#define __MAINBOARD_SKU_H__</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define SKU_UNKNOWN         0xFFFFFFFF</span><br><span style="color: hsl(120, 100%, 40%);">+#define SKU_0_NAUTILUS              0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+#define SKU_1_NAUTILUS_LTE      0x0001</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#endif /* __MAINBOARD_SKU_H__ */</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>new file mode 100644</span><br><span>index 0000000..12d16db</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/mainboard.c</span><br><span>@@ -0,0 +1,55 @@</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 <boardid.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <baseboard/variants.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <chip.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <device/device.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%);">+   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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      if (board_id() < 9)</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 style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Override dev tree settings per board */</span><br><span style="color: hsl(120, 100%, 40%);">+void variant_devtree_update(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t sku_id = variant_board_sku();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct device *root = SA_DEV_ROOT;</span><br><span style="color: hsl(120, 100%, 40%);">+    config_t *cfg = root->chip_info;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ switch (sku_id) {</span><br><span style="color: hsl(120, 100%, 40%);">+     case SKU_1_NAUTILUS_LTE:</span><br><span style="color: hsl(120, 100%, 40%);">+              /* Configure LTE module - USB3_PORT_CONFIG(OC_SKIP) */</span><br><span style="color: hsl(120, 100%, 40%);">+                cfg->usb3_ports[3].enable = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+             cfg->usb3_ports[3].ocpin = OC_SKIP;</span><br><span style="color: hsl(120, 100%, 40%);">+                cfg->usb3_ports[3].tx_de_emp = 0x29;</span><br><span style="color: hsl(120, 100%, 40%);">+               cfg->usb3_ports[3].tx_downscale_amp = 0x00;</span><br><span style="color: hsl(120, 100%, 40%);">+                break;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</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/27147">change 27147</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/27147"/><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: I7242f23f47010664cc29ea86a126e63c9dd62ccd </div>
<div style="display:none"> Gerrit-Change-Number: 27147 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Seunghwan Kim <sh_.kim@samsung.com> </div>