John Zhao has uploaded this change for review.

View Change

ec/google/chromeec: Add support for USB Type-C alternate mode control

PMC mux control can be used for swapping the USB data role and for
setting connector to act in alternate modes.

BUG=b:151646486
BRANCH=None
TEST=Verify USB Type-C alternate mode (DP or TBT) along with PMC mux
control.

Change-Id: I8c872537d9c633f8eb4238fd9b023577c4570a5a
Signed-off-by: John Zhao <john.zhao@intel.com>
---
M src/ec/google/chromeec/acpi/cros_ec.asl
1 file changed, 113 insertions(+), 0 deletions(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/24/40424/1
diff --git a/src/ec/google/chromeec/acpi/cros_ec.asl b/src/ec/google/chromeec/acpi/cros_ec.asl
index 3e9b773..a8d859f 100644
--- a/src/ec/google/chromeec/acpi/cros_ec.asl
+++ b/src/ec/google/chromeec/acpi/cros_ec.asl
@@ -56,4 +56,117 @@
{
Return (0xB)
}
+
+ Device (USBC)
+ {
+ Name (_HID, "GOOG0014")
+ Name (_DDN, "ChromeOS Embedded Controller USB Type-C Control")
+
+ /*
+ * Each connector shall have its own ACPI device entry
+ * (node), under the actual interface device.
+ */
+ Device (CON0)
+ {
+ Name (_ADR, 0)
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package() {
+ Package () { "usb-role-switch",
+ \_SB.PCI0.PMC.MUX.CON0 },
+ Package () { "mode-switch",
+ \_SB.PCI0.PMC.MUX.CON0 },
+ Package () { "orientation-switch",
+ \_SB.PCI0.PMC.MUX.CON0 },
+ Package () { "power-role", "dual" },
+ Package () { "data-role", "dual" },
+ }
+ })
+
+ /*
+ * Each supported alternate mode. Use _STA() to disable/enable
+ * them.
+ */
+
+ /* Thunderbolt 3 alternate mode */
+ Device (TBT3)
+ {
+ Name (_ADR, 0)
+
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package() {
+ Package () { "svid", 0x8087 },
+ Package () { "vdo", 1 },
+ }
+ })
+
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0F)
+ }
+ }
+
+ /* Display Port alternate mode */
+ Device (DP)
+ {
+ Name (_ADR, 1)
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package() {
+ Package () { "svid", 0xff01 },
+ Package () { "vdo", 0x1c46 },
+ }
+ })
+ }
+ }
+
+ Device (CON1)
+ {
+ Name (_ADR, 1)
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package() {
+ Package () { "usb-role-switch",
+ \_SB.PCI0.PMC.MUX.CON1 },
+ Package () { "mode-switch",
+ \_SB.PCI0.PMC.MUX.CON1 },
+ Package () { "orientation-switch",
+ \_SB.PCI0.PMC.MUX.CON1 },
+ Package () { "power-role", "dual" },
+ Package () { "data-role", "dual" },
+ },
+ })
+
+ Device (TBT3)
+ {
+ Name (_ADR, 0)
+
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package() {
+ Package () {"svid", 0x8087},
+ Package () {"vdo", 1},
+ }
+ })
+
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0F)
+ }
+ }
+
+ Device (DP)
+ {
+ Name (_ADR, 1)
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package() {
+ Package () { "svid", 0xff01 },
+ Package () { "vdo", 0x1c46 },
+ }
+ })
+ }
+ }
+ }
}

To view, visit change 40424. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I8c872537d9c633f8eb4238fd9b023577c4570a5a
Gerrit-Change-Number: 40424
Gerrit-PatchSet: 1
Gerrit-Owner: John Zhao <john.zhao@intel.com>
Gerrit-MessageType: newchange