From 3e8eb32fbaa5783a2ec1f1d72a1fbc9d04573263 Mon Sep 17 00:00:00 2001
From: Aamir Bohra <aamir.bohra@intel.com>
Date: Thu, 22 Nov 2018 15:52:19 +0530
Subject: mb/intel/icelake_rvp: Add USB port capablity information

This implementation adds USB port capablity map for ICL-U and ICL-Y
RVP.

Change-Id: I20bb43c47439df0a25ff148eae2b3e0546e4bc63
Signed-off-by: Aamir Bohra <aamir.bohra@intel.com>
Reviewed-on: https://review.coreboot.org/c/29792
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subrata.banik@intel.com>
---
 src/mainboard/intel/icelake_rvp/Kconfig            |   1 +
 .../intel/icelake_rvp/variants/icl_u/devicetree.cb | 121 ++++++++++++++++++---
 .../intel/icelake_rvp/variants/icl_y/devicetree.cb | 121 ++++++++++++++++++---
 3 files changed, 209 insertions(+), 34 deletions(-)

(limited to 'src')

diff --git a/src/mainboard/intel/icelake_rvp/Kconfig b/src/mainboard/intel/icelake_rvp/Kconfig
index 66957aa833..ecab319e47 100644
--- a/src/mainboard/intel/icelake_rvp/Kconfig
+++ b/src/mainboard/intel/icelake_rvp/Kconfig
@@ -10,6 +10,7 @@ config BOARD_SPECIFIC_OPTIONS
 	select GENERIC_SPD_BIN
 	select DRIVERS_I2C_HID
 	select DRIVERS_I2C_GENERIC
+	select DRIVERS_USB_ACPI
 	select SOC_INTEL_ICELAKE
 
 config MAINBOARD_DIR
diff --git a/src/mainboard/intel/icelake_rvp/variants/icl_u/devicetree.cb b/src/mainboard/intel/icelake_rvp/variants/icl_u/devicetree.cb
index 603be42d91..a971332c20 100644
--- a/src/mainboard/intel/icelake_rvp/variants/icl_u/devicetree.cb
+++ b/src/mainboard/intel/icelake_rvp/variants/icl_u/devicetree.cb
@@ -9,23 +9,23 @@ chip soc/intel/icelake
 	register "SmbusEnable" = "1"
 	register "ScsEmmcHs400Enabled" = "1"
 
-	register "usb2_ports[0]" = "USB2_PORT_TYPE_C(OC0)"
-	register "usb2_ports[1]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[2]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[3]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[4]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[5]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[6]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[7]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[8]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[9]" = "USB2_PORT_MID(OC0)"
+	register "usb2_ports[0]" = "USB2_PORT_TYPE_C(OC0)"	# USB3/2 Type A port1
+	register "usb2_ports[1]" = "USB2_PORT_MID(OC0)"	# USB2 WWAN
+	register "usb2_ports[2]" = "USB2_PORT_MID(OC0)"	# USB2 Bluetooth
+	register "usb2_ports[3]" = "USB2_PORT_MID(OC0)"	# Type-C Port1
+	register "usb2_ports[4]" = "USB2_PORT_MID(OC0)"	# Type-C Port2
+	register "usb2_ports[5]" = "USB2_PORT_MID(OC0)"	# Type-C Port3
+	register "usb2_ports[6]" = "USB2_PORT_MID(OC0)"	# Type-C Port4
+	register "usb2_ports[7]" = "USB2_PORT_MID(OC0)"	# USB3/2 Type A port2
+	register "usb2_ports[8]" = "USB2_PORT_MID(OC0)"	# USB2 Type A port2
+	register "usb2_ports[9]" = "USB2_PORT_MID(OC0)"	# USB2 Type A port2
 
-	register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC0)"
-	register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC0)"
-	register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC0)"
-	register "usb3_ports[3]" = "USB3_PORT_DEFAULT(OC0)"
-	register "usb3_ports[4]" = "USB3_PORT_DEFAULT(OC0)"
-	register "usb3_ports[5]" = "USB3_PORT_DEFAULT(OC0)"
+	register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC0)"	# USB3/2 Type A port1
+	register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC0)"	# USB3/2 Type A port2
+	register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC0)"	# USB3 WLAN
+	register "usb3_ports[3]" = "USB3_PORT_DEFAULT(OC0)"	# UNUSED
+	register "usb3_ports[4]" = "USB3_PORT_DEFAULT(OC0)"	# UNUSED
+	register "usb3_ports[5]" = "USB3_PORT_DEFAULT(OC0)"	# UNUSED
 
 	# EC host command ranges are in 0x800-0x8ff & 0x200-0x20f
 	register "gen1_dec" = "0x00fc0801"
@@ -99,7 +99,94 @@ chip soc/intel/icelake
 		device pci 12.0 on  end # Thermal Subsystem
 		device pci 12.5 off end # UFS SCS
 		device pci 12.6 off end # GSPI #2
-		device pci 14.0 on  end # USB xHCI
+		device pci 14.0 on
+			chip drivers/usb/acpi
+				register "desc" = ""Root Hub""
+				register "type" = "UPC_TYPE_HUB"
+				device usb 0.0 on
+					chip drivers/usb/acpi
+						register "desc" = ""USB3/2 Type-A Left Lower""
+						register "type" = "UPC_TYPE_A"
+						device usb 2.0 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""WWAN""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 2.1 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""Bluetooth""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 2.2 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB C Connector 1""
+						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
+						device usb 2.3 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB C Connector 2""
+						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
+						device usb 2.4 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB C Connector 3""
+						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
+						device usb 2.5 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB C Connector 4""
+						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
+						device usb 2.6 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3/2 Type-A Left Upper""
+						register "type" = "UPC_TYPE_A"
+						device usb 2.7 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB2 Type-A Right Lower""
+						register "type" = "UPC_TYPE_A"
+						device usb 2.8 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB2 Type-A Right Upper""
+						register "type" = "UPC_TYPE_A"
+						device usb 2.9 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3/2 Type-A Left Lower""
+						register "type" = "UPC_TYPE_A"
+						device usb 3.0 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3/2 Type-A Left Upper""
+						register "type" = "UPC_TYPE_A"
+						device usb 3.1 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""WLAN""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 3.2 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3 Port Unused1""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 3.3 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3 Port Unused2""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 3.4 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3 Port Unused3""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 3.5 on end
+					end
+				end
+			end
+		end # USB xHCI
 		device pci 14.1 off end # USB xDCI (OTG)
 		chip drivers/intel/wifi
 			register "wake" = "GPE0_PME_B0"
diff --git a/src/mainboard/intel/icelake_rvp/variants/icl_y/devicetree.cb b/src/mainboard/intel/icelake_rvp/variants/icl_y/devicetree.cb
index a1e64ee7a6..787097ea9e 100644
--- a/src/mainboard/intel/icelake_rvp/variants/icl_y/devicetree.cb
+++ b/src/mainboard/intel/icelake_rvp/variants/icl_y/devicetree.cb
@@ -9,23 +9,23 @@ chip soc/intel/icelake
 	register "SmbusEnable" = "1"
 	register "ScsEmmcHs400Enabled" = "1"
 
-	register "usb2_ports[0]" = "USB2_PORT_TYPE_C(OC0)"
-	register "usb2_ports[1]" = "USB2_PORT_TYPE_C(OC0)"
-	register "usb2_ports[2]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[3]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[4]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[5]" = "USB2_PORT_MID(OC0)"
-	register "usb2_ports[6]" = "USB2_PORT_EMPTY"
-	register "usb2_ports[7]" = "USB2_PORT_EMPTY"
-	register "usb2_ports[8]" = "USB2_PORT_EMPTY"
-	register "usb2_ports[9]" = "USB2_PORT_MID(OC0)"
+	register "usb2_ports[0]" = "USB2_PORT_TYPE_C(OC0)"	# USB3/2 Type A port1
+	register "usb2_ports[1]" = "USB2_PORT_TYPE_C(OC0)"	# USB3/2 Type A port2
+	register "usb2_ports[2]" = "USB2_PORT_MID(OC0)"	# Bluetooth
+	register "usb2_ports[3]" = "USB2_PORT_MID(OC0)"	# Type-C Port1
+	register "usb2_ports[4]" = "USB2_PORT_MID(OC0)"	# Type-C Port2
+	register "usb2_ports[5]" = "USB2_PORT_MID(OC0)"	# Type-C Port3
+	register "usb2_ports[6]" = "USB2_PORT_EMPTY"	# UNUSED
+	register "usb2_ports[7]" = "USB2_PORT_EMPTY"	# UNUSED
+	register "usb2_ports[8]" = "USB2_PORT_EMPTY"	# USB2 Type A port1
+	register "usb2_ports[9]" = "USB2_PORT_MID(OC0)"	# USB2 Type A port2
 
-	register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC0)"
-	register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC0)"
-	register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC0)"
-	register "usb3_ports[3]" = "USB3_PORT_DEFAULT(OC0)"
-	register "usb3_ports[4]" = "USB3_PORT_DEFAULT(OC0)"
-	register "usb3_ports[5]" = "USB3_PORT_DEFAULT(OC0)"
+	register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC0)"	# USB3/2 Type A port1
+	register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC0)"	# USB3/2 Type A port2
+	register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC0)"	# USB3 WLAN
+	register "usb3_ports[3]" = "USB3_PORT_DEFAULT(OC0)"	# UNUSED
+	register "usb3_ports[4]" = "USB3_PORT_DEFAULT(OC0)"	# UNUSED
+	register "usb3_ports[5]" = "USB3_PORT_DEFAULT(OC0)"	# UNUSED
 
 	# EC host command ranges are in 0x800-0x8ff & 0x200-0x20f
 	register "gen1_dec" = "0x00fc0801"
@@ -83,7 +83,94 @@ chip soc/intel/icelake
 		device pci 12.0 on  end # Thermal Subsystem
 		device pci 12.5 off end # UFS SCS
 		device pci 12.6 off end # GSPI #2
-		device pci 14.0 on  end # USB xHCI
+		device pci 14.0 on
+			chip drivers/usb/acpi
+				register "desc" = ""Root Hub""
+				register "type" = "UPC_TYPE_HUB"
+				device usb 0.0 on
+					chip drivers/usb/acpi
+						register "desc" = ""USB3-2 Type-A Left Lower""
+						register "type" = "UPC_TYPE_A"
+						device usb 2.0 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3-2 Type-A Left Upper""
+						register "type" = "UPC_TYPE_A"
+						device usb 2.1 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""Bluetooth""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 2.2 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB C Connector 1""
+						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
+						device usb 2.3 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB C Connector 2""
+						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
+						device usb 2.4 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB C Connector 3""
+						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
+						device usb 2.5 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB2 Port Unused 1""
+						register "type" = "UPC_TYPE_UNUSED"
+						device usb 2.6 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB2 Port Unused 2""
+						register "type" = "UPC_TYPE_UNUSED"
+						device usb 2.7 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB2 Type-A Right Lower""
+						register "type" = "UPC_TYPE_A"
+						device usb 2.8 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB2 Type-A Right Upper""
+						register "type" = "UPC_TYPE_A"
+						device usb 2.9 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3/2 Type-A Left Lower""
+						register "type" = "UPC_TYPE_A"
+						device usb 3.0 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3/2 Type-A Left Upper""
+						register "type" = "UPC_TYPE_A"
+						device usb 3.1 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""WLAN""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 3.2 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3 Port Unused1""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 3.3 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3 Port Unused2""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 3.4 on end
+					end
+					chip drivers/usb/acpi
+						register "desc" = ""USB3 Port Unused3""
+						register "type" = "UPC_TYPE_INTERNAL"
+						device usb 3.5 on end
+					end
+				end
+			end
+		end # USB xHCI
 		device pci 14.1 off end # USB xDCI (OTG)
 		chip drivers/intel/wifi
 			register "wake" = "GPE0_PME_B0"
-- 
cgit v1.2.3