<p>Mario Scheithauer has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/25822">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">siemens/mc_apl1: Move board specific things to mc_apl1 variant<br><br>The following things are specific characteristic of mc_apl1 board<br>variant:<br><br>- initialization for the eDP to LVDS converter<br>- enable decoding address range for COM 3<br>- legacy IRQ routing for PCI devices<br>- wait function for old legacy devices<br>- set coreboot ready LED<br><br>Change-Id: I5c853e6caae6cc880ead436f232cabddeee6d09a<br>Signed-off-by: Mario Scheithauer <mario.scheithauer@siemens.com><br>---<br>M src/mainboard/siemens/mc_apl1/Makefile.inc<br>M src/mainboard/siemens/mc_apl1/mainboard.c<br>M src/mainboard/siemens/mc_apl1/variants/baseboard/include/baseboard/variants.h<br>A src/mainboard/siemens/mc_apl1/variants/mc_apl1/Makefile.inc<br>R src/mainboard/siemens/mc_apl1/variants/mc_apl1/include/variant/ptn3460.h<br>A src/mainboard/siemens/mc_apl1/variants/mc_apl1/mainboard.c<br>R src/mainboard/siemens/mc_apl1/variants/mc_apl1/ptn3460.c<br>M src/soc/intel/common/block/include/intelblocks/gpio_defs.h<br>8 files changed, 108 insertions(+), 60 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/22/25822/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/mainboard/siemens/mc_apl1/Makefile.inc b/src/mainboard/siemens/mc_apl1/Makefile.inc</span><br><span>index ec4d0ad..f6b12d5 100644</span><br><span>--- a/src/mainboard/siemens/mc_apl1/Makefile.inc</span><br><span>+++ b/src/mainboard/siemens/mc_apl1/Makefile.inc</span><br><span>@@ -6,7 +6,7 @@</span><br><span> romstage-y += romstage.c</span><br><span> </span><br><span> ramstage-y += mainboard.c</span><br><span style="color: hsl(0, 100%, 40%);">-ramstage-y += ptn3460.c</span><br><span style="color: hsl(120, 100%, 40%);">+#ramstage-y += ptn3460.c</span><br><span> </span><br><span> subdirs-y += variants/baseboard</span><br><span> CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/baseboard/include</span><br><span>diff --git a/src/mainboard/siemens/mc_apl1/mainboard.c b/src/mainboard/siemens/mc_apl1/mainboard.c</span><br><span>index ec110d8..09667cc 100644</span><br><span>--- a/src/mainboard/siemens/mc_apl1/mainboard.c</span><br><span>+++ b/src/mainboard/siemens/mc_apl1/mainboard.c</span><br><span>@@ -14,26 +14,19 @@</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%);">+#include <compiler.h></span><br><span> #include <console/console.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <delay.h></span><br><span> #include <device/device.h></span><br><span> #include <device/pci.h></span><br><span> #include <device/pci_ids.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <gpio.h></span><br><span> #include <hwilib.h></span><br><span> #include <i210.h></span><br><span> #include <intelblocks/cpulib.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <intelblocks/lpc_lib.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <intelblocks/pcr.h></span><br><span> #include <intelblocks/systemagent.h></span><br><span> #include <soc/pci_devs.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <soc/pcr_ids.h></span><br><span> #include <string.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <bootstate.h></span><br><span> #include <timer.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <timestamp.h></span><br><span> #include <baseboard/variants.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include "ptn3460.h"</span><br><span> </span><br><span> #define MAX_PATH_DEPTH            12</span><br><span> #define MAX_NUM_MAPPINGS  10</span><br><span>@@ -202,22 +195,11 @@</span><br><span> </span><br><span> static void mainboard_final(void *chip_info)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     int status;</span><br><span>  uint16_t cmd = 0;</span><br><span>    device_t dev = NULL;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        /*</span><br><span style="color: hsl(0, 100%, 40%);">-       * Set up the DP2LVDS converter.</span><br><span style="color: hsl(0, 100%, 40%);">-         * ptn3460_init() may only be executed after i2c bus init.</span><br><span style="color: hsl(0, 100%, 40%);">-       */</span><br><span style="color: hsl(0, 100%, 40%);">-     status = ptn3460_init("hwinfo.hex");</span><br><span style="color: hsl(0, 100%, 40%);">-  if (status)</span><br><span style="color: hsl(0, 100%, 40%);">-             printk(BIOS_ERR, "LCD: Set up PTN with status 0x%x\n", status);</span><br><span style="color: hsl(0, 100%, 40%);">-       else</span><br><span style="color: hsl(0, 100%, 40%);">-            printk(BIOS_INFO, "LCD: Set up PTN was successful.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       /* Enable additional I/O decoding range on LPC for COM 3 */</span><br><span style="color: hsl(0, 100%, 40%);">-     lpc_open_pmio_window(0x3e8, 8);</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Do board specific things */</span><br><span style="color: hsl(120, 100%, 40%);">+        variant_mainboard_final();</span><br><span> </span><br><span>       /* Set Master Enable for on-board PCI device. */</span><br><span>     dev = dev_find_device(PCI_VENDOR_ID_SIEMENS, 0x403f, 0);</span><br><span>@@ -226,48 +208,13 @@</span><br><span>             cmd |= PCI_COMMAND_MASTER;</span><br><span>           pci_write_config16(dev, PCI_COMMAND, cmd);</span><br><span>   }</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%);">-       * PIR6 register mapping for PCIe root ports</span><br><span style="color: hsl(0, 100%, 40%);">-     * INTA#->PIRQB#, INTB#->PIRQC#, INTC#->PIRQD#, INTD#-> PIRQA#</span><br><span style="color: hsl(0, 100%, 40%);">-       */</span><br><span style="color: hsl(0, 100%, 40%);">-     pcr_write16(PID_ITSS, 0x314c, 0x0321);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void wait_for_legacy_dev(void *unused)</span><br><span style="color: hsl(120, 100%, 40%);">+/* The following function performs board specific things. */</span><br><span style="color: hsl(120, 100%, 40%);">+void __weak variant_mainboard_final(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      uint32_t legacy_delay, us_since_boot;</span><br><span style="color: hsl(0, 100%, 40%);">-   struct stopwatch sw;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    /* Open main hwinfo block. */</span><br><span style="color: hsl(0, 100%, 40%);">-   if (hwilib_find_blocks("hwinfo.hex") != CB_SUCCESS)</span><br><span style="color: hsl(0, 100%, 40%);">-           return;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* Get legacy delay parameter from hwinfo. */</span><br><span style="color: hsl(0, 100%, 40%);">-   if (hwilib_get_field(LegacyDelay, (uint8_t *) &legacy_delay,</span><br><span style="color: hsl(0, 100%, 40%);">-                              sizeof(legacy_delay)) != sizeof(legacy_delay))</span><br><span style="color: hsl(0, 100%, 40%);">-            return;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- us_since_boot = get_us_since_boot();</span><br><span style="color: hsl(0, 100%, 40%);">-    /* No need to wait if the time since boot is already long enough.*/</span><br><span style="color: hsl(0, 100%, 40%);">-     if (us_since_boot > legacy_delay)</span><br><span style="color: hsl(0, 100%, 40%);">-            return;</span><br><span style="color: hsl(0, 100%, 40%);">- stopwatch_init_msecs_expire(&sw, (legacy_delay - us_since_boot) / 1000);</span><br><span style="color: hsl(0, 100%, 40%);">-    printk(BIOS_NOTICE, "Wait remaining %d of %d us for legacy devices...",</span><br><span style="color: hsl(0, 100%, 40%);">-                       legacy_delay - us_since_boot, legacy_delay);</span><br><span style="color: hsl(0, 100%, 40%);">-    stopwatch_wait_until_expired(&sw);</span><br><span style="color: hsl(0, 100%, 40%);">-  printk(BIOS_NOTICE, "done!\n");</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void finalize_boot(void *unused)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-      /* Set coreboot ready LED. */</span><br><span style="color: hsl(0, 100%, 40%);">-   gpio_output(CNV_RGI_DT, 1);</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%);">-BOOT_STATE_INIT_ENTRY(BS_DEV_ENUMERATE, BS_ON_ENTRY, wait_for_legacy_dev, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_BOOT, BS_ON_ENTRY, finalize_boot, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> struct chip_operations mainboard_ops = {</span><br><span>    .init = mainboard_init,</span><br><span>      .final = mainboard_final,</span><br><span>diff --git a/src/mainboard/siemens/mc_apl1/variants/baseboard/include/baseboard/variants.h b/src/mainboard/siemens/mc_apl1/variants/baseboard/include/baseboard/variants.h</span><br><span>index 8061d97..09153c6 100644</span><br><span>--- a/src/mainboard/siemens/mc_apl1/variants/baseboard/include/baseboard/variants.h</span><br><span>+++ b/src/mainboard/siemens/mc_apl1/variants/baseboard/include/baseboard/variants.h</span><br><span>@@ -26,4 +26,7 @@</span><br><span> const struct pad_config *variant_gpio_table(size_t *num);</span><br><span> const struct pad_config *variant_early_gpio_table(size_t *num);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* The following function performs board specific things. */</span><br><span style="color: hsl(120, 100%, 40%);">+void variant_mainboard_final(void);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #endif /* _BASEBOARD_VARIANTS_H_ */</span><br><span>diff --git a/src/mainboard/siemens/mc_apl1/variants/mc_apl1/Makefile.inc b/src/mainboard/siemens/mc_apl1/variants/mc_apl1/Makefile.inc</span><br><span>new file mode 100644</span><br><span>index 0000000..adf9aff</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/siemens/mc_apl1/variants/mc_apl1/Makefile.inc</span><br><span>@@ -0,0 +1,2 @@</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += mainboard.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += ptn3460.c</span><br><span>diff --git a/src/mainboard/siemens/mc_apl1/ptn3460.h b/src/mainboard/siemens/mc_apl1/variants/mc_apl1/include/variant/ptn3460.h</span><br><span>similarity index 100%</span><br><span>rename from src/mainboard/siemens/mc_apl1/ptn3460.h</span><br><span>rename to src/mainboard/siemens/mc_apl1/variants/mc_apl1/include/variant/ptn3460.h</span><br><span>diff --git a/src/mainboard/siemens/mc_apl1/variants/mc_apl1/mainboard.c b/src/mainboard/siemens/mc_apl1/variants/mc_apl1/mainboard.c</span><br><span>new file mode 100644</span><br><span>index 0000000..540e322</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/siemens/mc_apl1/variants/mc_apl1/mainboard.c</span><br><span>@@ -0,0 +1,84 @@</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 Siemens AG</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 <bootstate.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <console/console.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <gpio.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <hwilib.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <intelblocks/lpc_lib.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <intelblocks/pcr.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <soc/pcr_ids.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <timer.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <timestamp.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <baseboard/variants.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <variant/ptn3460.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void variant_mainboard_final(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     int status;</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%);">+     * Set up the DP2LVDS converter.</span><br><span style="color: hsl(120, 100%, 40%);">+       * ptn3460_init() may only be executed after i2c bus init.</span><br><span style="color: hsl(120, 100%, 40%);">+     */</span><br><span style="color: hsl(120, 100%, 40%);">+   status = ptn3460_init("hwinfo.hex");</span><br><span style="color: hsl(120, 100%, 40%);">+        if (status)</span><br><span style="color: hsl(120, 100%, 40%);">+           printk(BIOS_ERR, "LCD: Set up PTN with status 0x%x\n", status);</span><br><span style="color: hsl(120, 100%, 40%);">+     else</span><br><span style="color: hsl(120, 100%, 40%);">+          printk(BIOS_INFO, "LCD: Set up PTN was successful.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Enable additional I/O decoding range on LPC for COM 3 */</span><br><span style="color: hsl(120, 100%, 40%);">+   lpc_open_pmio_window(0x3e8, 8);</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%);">+     * PIR6 register mapping for PCIe root ports</span><br><span style="color: hsl(120, 100%, 40%);">+   * INTA#->PIRQB#, INTB#->PIRQC#, INTC#->PIRQD#, INTD#-> PIRQA#</span><br><span style="color: hsl(120, 100%, 40%);">+     */</span><br><span style="color: hsl(120, 100%, 40%);">+   pcr_write16(PID_ITSS, 0x314c, 0x0321);</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 void wait_for_legacy_dev(void *unused)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t legacy_delay, us_since_boot;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct stopwatch sw;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Open main hwinfo block. */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (hwilib_find_blocks("hwinfo.hex") != CB_SUCCESS)</span><br><span style="color: hsl(120, 100%, 40%);">+         return;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Get legacy delay parameter from hwinfo. */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (hwilib_get_field(LegacyDelay, (uint8_t *) &legacy_delay,</span><br><span style="color: hsl(120, 100%, 40%);">+                            sizeof(legacy_delay)) != sizeof(legacy_delay))</span><br><span style="color: hsl(120, 100%, 40%);">+          return;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     us_since_boot = get_us_since_boot();</span><br><span style="color: hsl(120, 100%, 40%);">+  /* No need to wait if the time since boot is already long enough.*/</span><br><span style="color: hsl(120, 100%, 40%);">+   if (us_since_boot > legacy_delay)</span><br><span style="color: hsl(120, 100%, 40%);">+          return;</span><br><span style="color: hsl(120, 100%, 40%);">+       stopwatch_init_msecs_expire(&sw, (legacy_delay - us_since_boot) / 1000);</span><br><span style="color: hsl(120, 100%, 40%);">+  printk(BIOS_NOTICE, "Wait remaining %d of %d us for legacy devices...",</span><br><span style="color: hsl(120, 100%, 40%);">+                     legacy_delay - us_since_boot, legacy_delay);</span><br><span style="color: hsl(120, 100%, 40%);">+  stopwatch_wait_until_expired(&sw);</span><br><span style="color: hsl(120, 100%, 40%);">+        printk(BIOS_NOTICE, "done!\n");</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 void finalize_boot(void *unused)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Set coreboot ready LED. */</span><br><span style="color: hsl(120, 100%, 40%);">+ gpio_output(CNV_RGI_DT, 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%);">+BOOT_STATE_INIT_ENTRY(BS_DEV_ENUMERATE, BS_ON_ENTRY, wait_for_legacy_dev, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_BOOT, BS_ON_ENTRY, finalize_boot, NULL);</span><br><span>diff --git a/src/mainboard/siemens/mc_apl1/ptn3460.c b/src/mainboard/siemens/mc_apl1/variants/mc_apl1/ptn3460.c</span><br><span>similarity index 99%</span><br><span>rename from src/mainboard/siemens/mc_apl1/ptn3460.c</span><br><span>rename to src/mainboard/siemens/mc_apl1/variants/mc_apl1/ptn3460.c</span><br><span>index 1877e8b..f1cbf0f 100644</span><br><span>--- a/src/mainboard/siemens/mc_apl1/ptn3460.c</span><br><span>+++ b/src/mainboard/siemens/mc_apl1/variants/mc_apl1/ptn3460.c</span><br><span>@@ -17,7 +17,7 @@</span><br><span> #include <lib.h></span><br><span> #include <hwilib.h></span><br><span> #include <device/i2c_simple.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include "ptn3460.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <variant/ptn3460.h></span><br><span> </span><br><span> /**</span><br><span>  * This function sets up the DP2LVDS-converter to be used with the appropriate</span><br><span>diff --git a/src/soc/intel/common/block/include/intelblocks/gpio_defs.h b/src/soc/intel/common/block/include/intelblocks/gpio_defs.h</span><br><span>index 244c680..909eca8 100644</span><br><span>--- a/src/soc/intel/common/block/include/intelblocks/gpio_defs.h</span><br><span>+++ b/src/soc/intel/common/block/include/intelblocks/gpio_defs.h</span><br><span>@@ -198,6 +198,18 @@</span><br><span>             PAD_FUNC(GPIO) | PAD_RESET(rst) | PAD_CFG0_TX_DISABLE, \</span><br><span>             PAD_PULL(pull) | PAD_IOSSTATE(TxLASTRxE))</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* General purpose input. */</span><br><span style="color: hsl(120, 100%, 40%);">+#define PAD_CFG_GPI_IOSSTATE(pad, pull, rst, iosstate)     \</span><br><span style="color: hsl(120, 100%, 40%);">+     _PAD_CFG_STRUCT(pad,            \</span><br><span style="color: hsl(120, 100%, 40%);">+             PAD_FUNC(GPIO) | PAD_RESET(rst) | PAD_CFG0_TX_DISABLE, \</span><br><span style="color: hsl(120, 100%, 40%);">+              PAD_PULL(pull) | PAD_IOSSTATE(iosstate))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* General purpose output. */</span><br><span style="color: hsl(120, 100%, 40%);">+#define PAD_CFG_GPI_IOSSTATE_IOSTERM(pad, pull, rst, iosstate, ioterm)       \</span><br><span style="color: hsl(120, 100%, 40%);">+     _PAD_CFG_STRUCT(pad,            \</span><br><span style="color: hsl(120, 100%, 40%);">+             PAD_FUNC(GPIO) | PAD_RESET(rst) | PAD_CFG0_TX_DISABLE, \</span><br><span style="color: hsl(120, 100%, 40%);">+              PAD_PULL(pull) | PAD_IOSSTATE(iosstate) | PAD_IOSTERM(ioterm))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* General purpose input. The following macro sets the</span><br><span>  * Host Software Pad Ownership to GPIO Driver mode.</span><br><span>  */</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/25822">change 25822</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/25822"/><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: I5c853e6caae6cc880ead436f232cabddeee6d09a </div>
<div style="display:none"> Gerrit-Change-Number: 25822 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Mario Scheithauer <mario.scheithauer@siemens.com> </div>