<p>Duncan Laurie has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/26170">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">acpi: Add support for generating ACPI _UPC<br><br>This commit adds support for writing ACPI _UPC structures that<br>help describe USB ports for the OS.<br><br>This is a simple structure format which indicates what type of<br>port it is and whether it is connectable.  It should be paired<br>with an ACPI _PLD structure to define USB ports for the OS.<br><br>Change-Id: Ide3768f60f96e9ad7f919ad3fb11d91045dc174a<br>Signed-off-by: Duncan Laurie <dlaurie@google.com><br>---<br>M src/arch/x86/acpigen.c<br>M src/arch/x86/include/arch/acpi.h<br>M src/arch/x86/include/arch/acpigen.h<br>3 files changed, 39 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/70/26170/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/arch/x86/acpigen.c b/src/arch/x86/acpigen.c</span><br><span>index 10a4e1e..867c809 100644</span><br><span>--- a/src/arch/x86/acpigen.c</span><br><span>+++ b/src/arch/x86/acpigen.c</span><br><span>@@ -1221,6 +1221,21 @@</span><br><span>   acpigen_write_string(arg);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+void acpigen_write_upc(enum acpi_upc_type type)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       acpigen_write_name("_UPC");</span><br><span style="color: hsl(120, 100%, 40%);">+ acpigen_write_package(4);</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Connectable */</span><br><span style="color: hsl(120, 100%, 40%);">+     acpigen_write_byte(type == UPC_TYPE_UNUSED ? 0 : 0xff);</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Type */</span><br><span style="color: hsl(120, 100%, 40%);">+    acpigen_write_byte(type);</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Reserved0 */</span><br><span style="color: hsl(120, 100%, 40%);">+       acpigen_write_zero();</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Reserved1 */</span><br><span style="color: hsl(120, 100%, 40%);">+       acpigen_write_zero();</span><br><span style="color: hsl(120, 100%, 40%);">+ acpigen_pop_len();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> void acpigen_write_dsm(const char *uuid, void (**callbacks)(void *),</span><br><span>                     size_t count, void *arg)</span><br><span> {</span><br><span>diff --git a/src/arch/x86/include/arch/acpi.h b/src/arch/x86/include/arch/acpi.h</span><br><span>index fe0c6f2..39e5d5e 100644</span><br><span>--- a/src/arch/x86/include/arch/acpi.h</span><br><span>+++ b/src/arch/x86/include/arch/acpi.h</span><br><span>@@ -636,6 +636,29 @@</span><br><span>     u32 status;</span><br><span> } __packed acpi_tstate_t;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Port types for ACPI _UPC object */</span><br><span style="color: hsl(120, 100%, 40%);">+enum acpi_upc_type {</span><br><span style="color: hsl(120, 100%, 40%);">+     /* These types are defined in ACPI 6.2 section 9.14 */</span><br><span style="color: hsl(120, 100%, 40%);">+        UPC_TYPE_A,</span><br><span style="color: hsl(120, 100%, 40%);">+   UPC_TYPE_MINI_AB,</span><br><span style="color: hsl(120, 100%, 40%);">+     UPC_TYPE_EXPRESSCARD,</span><br><span style="color: hsl(120, 100%, 40%);">+ UPC_TYPE_USB3_A,</span><br><span style="color: hsl(120, 100%, 40%);">+      UPC_TYPE_USB3_B,</span><br><span style="color: hsl(120, 100%, 40%);">+      UPC_TYPE_USB3_MICRO_B,</span><br><span style="color: hsl(120, 100%, 40%);">+        UPC_TYPE_USB3_MICRO_AB,</span><br><span style="color: hsl(120, 100%, 40%);">+       UPC_TYPE_USB3_POWER_B,</span><br><span style="color: hsl(120, 100%, 40%);">+        UPC_TYPE_C_USB2_ONLY,</span><br><span style="color: hsl(120, 100%, 40%);">+ UPC_TYPE_C_USB2_SS_SWITCH,</span><br><span style="color: hsl(120, 100%, 40%);">+    UPC_TYPE_C_USB2_SS,</span><br><span style="color: hsl(120, 100%, 40%);">+   /*</span><br><span style="color: hsl(120, 100%, 40%);">+     * The following types are not directly defined in the ACPI</span><br><span style="color: hsl(120, 100%, 40%);">+    * spec but are used by coreboot to identify a USB device type.</span><br><span style="color: hsl(120, 100%, 40%);">+        */</span><br><span style="color: hsl(120, 100%, 40%);">+   UPC_TYPE_INTERNAL = 0xff,</span><br><span style="color: hsl(120, 100%, 40%);">+     UPC_TYPE_UNUSED,</span><br><span style="color: hsl(120, 100%, 40%);">+      UPC_TYPE_HUB</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> unsigned long fw_cfg_acpi_tables(unsigned long start);</span><br><span> </span><br><span> /* These are implemented by the target port or north/southbridge. */</span><br><span>diff --git a/src/arch/x86/include/arch/acpigen.h b/src/arch/x86/include/arch/acpigen.h</span><br><span>index 216e75f..250c0b7 100644</span><br><span>--- a/src/arch/x86/include/arch/acpigen.h</span><br><span>+++ b/src/arch/x86/include/arch/acpigen.h</span><br><span>@@ -255,6 +255,7 @@</span><br><span> void acpigen_write_return_byte_buffer(uint8_t *arr, size_t size);</span><br><span> void acpigen_write_return_singleton_buffer(uint8_t arg);</span><br><span> void acpigen_write_return_byte(uint8_t arg);</span><br><span style="color: hsl(120, 100%, 40%);">+void acpigen_write_upc(enum acpi_upc_type type);</span><br><span> /*</span><br><span>  * Generate ACPI AML code for _DSM method.</span><br><span>  * This function takes as input uuid for the device, set of callbacks and</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/26170">change 26170</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/26170"/><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: Ide3768f60f96e9ad7f919ad3fb11d91045dc174a </div>
<div style="display:none"> Gerrit-Change-Number: 26170 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Duncan Laurie <dlaurie@chromium.org> </div>