mb/*: Copy bd82x6x boards' USB port config into devicetree

For mainboards using southbridge/intel/bd82x6x, copy the contents
of mainboard_usb_ports array into southbridge devicetree. In-line
comments are maintained.

Boards also capable of using MRC raminit are done in a separate
patch.

Change-Id: Ia8a967eb3466106f3a34e024260e13d02f449a25
Signed-off-by: Keith Hui <buurin@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/81879
Reviewed-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/mainboard/apple/macbookair4_2/devicetree.cb b/src/mainboard/apple/macbookair4_2/devicetree.cb
index c408d5a..176e2b8 100644
--- a/src/mainboard/apple/macbookair4_2/devicetree.cb
+++ b/src/mainboard/apple/macbookair4_2/devicetree.cb
@@ -26,6 +26,14 @@
 			register "pcie_port_coalesce" = "true"
 			register "sata_interface_speed_support" = "0x3"
 			register "sata_port_map" = "0x1"
+			register "usb_port_config" = "{
+				{1, 0, -1}, /* USB HUB 1 */
+				{0, 0, -1}, {0, 0, -1}, {0, 0, -1}, /* Unused x7 */
+				{0, 0, -1}, {0, 0, -1}, {0, 0, -1}, {0, 0, -1},
+				{1, 0, -1}, /* USB HUB 2 */
+				{1, 0, -1}, /* Camera */
+				{0, 0, -1}, {0, 0, -1}, {0, 0, -1}, {0, 0, -1} /* Unused x4 */
+				}"
 			device ref mei1 on # Management Engine Interface 1
 				subsystemid 0x8086 0x7270
 			end
diff --git a/src/mainboard/asrock/b75m-itx/devicetree.cb b/src/mainboard/asrock/b75m-itx/devicetree.cb
index 59645f0..8ecae25 100644
--- a/src/mainboard/asrock/b75m-itx/devicetree.cb
+++ b/src/mainboard/asrock/b75m-itx/devicetree.cb
@@ -27,6 +27,12 @@
 			register "xhci_switchable_ports" = "0x0000000f"
 			register "spi_uvscc" = "0x2005"
 			register "spi_lvscc" = "0x2005"
+			register "usb_port_config" = "{
+				{1, 0, 0}, {1, 0, 0}, {1, 1, 1}, {1, 1, 1},
+				{1, 1, 2}, {1, 1, 2}, {1, 0, 3}, {1, 0, 3},
+				{1, 0, 4}, {1, 0, 4}, {1, 0, 6},
+				{1, 1, 5}, {1, 1, 5}, {1, 0, 6}
+			}"
 
 			device ref xhci on
 				subsystemid 0x1849 0x1e31
diff --git a/src/mainboard/asrock/b75pro3-m/devicetree.cb b/src/mainboard/asrock/b75pro3-m/devicetree.cb
index e2c898d..1cf5015 100644
--- a/src/mainboard/asrock/b75pro3-m/devicetree.cb
+++ b/src/mainboard/asrock/b75pro3-m/devicetree.cb
@@ -39,6 +39,22 @@
 			register "xhci_switchable_ports" = "0x0000000f"
 			register "spi_uvscc" = "0x2005"
 			register "spi_lvscc" = "0x2005"
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 1, 1 },
+				{ 1, 1, 1 },
+				{ 1, 1, 2 },
+				{ 1, 1, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 6 },
+				{ 1, 1, 5 },
+				{ 1, 1, 5 },
+				{ 1, 0, 6 }
+			}"
 
 			device ref xhci on # USB 3.0 Controller
 				subsystemid 0x1849 0x1e31
diff --git a/src/mainboard/asrock/h77pro4-m/devicetree.cb b/src/mainboard/asrock/h77pro4-m/devicetree.cb
index 2624c38..05cb870 100644
--- a/src/mainboard/asrock/h77pro4-m/devicetree.cb
+++ b/src/mainboard/asrock/h77pro4-m/devicetree.cb
@@ -21,6 +21,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
 			register "xhci_switchable_ports" = "0x0000000f"
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 1, 1 },
+				{ 1, 1, 1 },
+				{ 1, 1, 2 },
+				{ 1, 1, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 6 },
+				{ 1, 1, 5 },
+				{ 1, 1, 5 },
+				{ 1, 0, 6 }
+			}"
 			device ref xhci on # USB 3.0 Controller
 				subsystemid 0x1849 0x1e31
 			end
diff --git a/src/mainboard/asus/h61-series/devicetree.cb b/src/mainboard/asus/h61-series/devicetree.cb
index 7f37acc..365b5ed 100644
--- a/src/mainboard/asus/h61-series/devicetree.cb
+++ b/src/mainboard/asus/h61-series/devicetree.cb
@@ -11,6 +11,22 @@
 			register "sata_port_map" = "0x33"
 			register "spi_lvscc" = "0x2005"
 			register "spi_uvscc" = "0x2005"
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 1 },
+				{ 1, 0, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 },
+				{ 1, 0, 6 }
+			}"
 
 			device ref mei1 on  end
 			device ref mei2 off end
diff --git a/src/mainboard/asus/maximus_iv_gene-z/devicetree.cb b/src/mainboard/asus/maximus_iv_gene-z/devicetree.cb
index 2642fbd..79213c4 100644
--- a/src/mainboard/asus/maximus_iv_gene-z/devicetree.cb
+++ b/src/mainboard/asus/maximus_iv_gene-z/devicetree.cb
@@ -15,6 +15,23 @@
 			register "spi_lvscc" = "0x2005"
 			register "spi_uvscc" = "0x2005"
 
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 1 },
+				{ 1, 0, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 },
+				{ 1, 0, 6 }
+			}"
+
 			device ref mei1 on  end
 			device ref mei2 off end
 			device ref me_ide_r off end
diff --git a/src/mainboard/asus/p8x7x-series/variants/p8c_ws/overridetree.cb b/src/mainboard/asus/p8x7x-series/variants/p8c_ws/overridetree.cb
index 4b7bb1c..1e8d807 100644
--- a/src/mainboard/asus/p8x7x-series/variants/p8c_ws/overridetree.cb
+++ b/src/mainboard/asus/p8x7x-series/variants/p8c_ws/overridetree.cb
@@ -7,6 +7,22 @@
 		subsystemid 0x1043 0x84ca inherit
 		chip southbridge/intel/bd82x6x
 			register "gen1_dec" = "0x000c0291"
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 1 },
+				{ 1, 0, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 6 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 }
+			}"
 			device ref pcie_rp1 on  end	# PCIEX16_4 (electrical x4)
 			device ref pcie_rp2 off end
 			device ref pcie_rp3 off end
diff --git a/src/mainboard/asus/p8x7x-series/variants/p8h77-v/overridetree.cb b/src/mainboard/asus/p8x7x-series/variants/p8h77-v/overridetree.cb
index dbf1f35..1389304 100644
--- a/src/mainboard/asus/p8x7x-series/variants/p8h77-v/overridetree.cb
+++ b/src/mainboard/asus/p8x7x-series/variants/p8h77-v/overridetree.cb
@@ -4,6 +4,22 @@
 	device domain 0 on
 		subsystemid 0x1043 0x84ca inherit
 		chip southbridge/intel/bd82x6x
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 1 },
+				{ 1, 0, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 6 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 }
+			}"
 			register "gen1_dec" = "0x000c0291"
 			device ref pcie_rp1 on  end	# PCIEX16_2 (electrical x4)
 			device ref pcie_rp2 off end
diff --git a/src/mainboard/asus/p8x7x-series/variants/p8z77-v_lx2/overridetree.cb b/src/mainboard/asus/p8x7x-series/variants/p8z77-v_lx2/overridetree.cb
index 0ae41b3..66bc5bb 100644
--- a/src/mainboard/asus/p8x7x-series/variants/p8z77-v_lx2/overridetree.cb
+++ b/src/mainboard/asus/p8x7x-series/variants/p8z77-v_lx2/overridetree.cb
@@ -4,6 +4,23 @@
 	device domain 0 on
 		subsystemid 0x1043 0x84ca inherit
 		chip southbridge/intel/bd82x6x
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 1 },
+				{ 1, 0, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 6 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 }
+}"
+
 			register "gen1_dec" = "0x000c0291"
 
 			device ref pcie_rp1 on  end	# PCIEX16_2 (electrical x4)
diff --git a/src/mainboard/biostar/th61-itx/devicetree.cb b/src/mainboard/biostar/th61-itx/devicetree.cb
index af9f9b5..b75c92e 100644
--- a/src/mainboard/biostar/th61-itx/devicetree.cb
+++ b/src/mainboard/biostar/th61-itx/devicetree.cb
@@ -15,6 +15,22 @@
 			register "sata_port_map" = "0x33"
 			register "spi_lvscc" = "0x2005"
 			register "spi_uvscc" = "0x2005"
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 1 },
+				{ 1, 0, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 6 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 }
+			}"
 
 			device ref mei1 on  end	# MEI #1
 			device ref ehci2 on  end	# EHCI #2
diff --git a/src/mainboard/compulab/intense_pc/devicetree.cb b/src/mainboard/compulab/intense_pc/devicetree.cb
index d09c9e0..0c79309 100644
--- a/src/mainboard/compulab/intense_pc/devicetree.cb
+++ b/src/mainboard/compulab/intense_pc/devicetree.cb
@@ -48,6 +48,22 @@
 			register "xhci_switchable_ports" = "0x0000000f"
 			register "spi_uvscc" = "0x2005"
 			register "spi_lvscc" = "0x2005"
+			register "usb_port_config" = "{
+				{ 1, 1, 0 },
+				{ 1, 1, 0 },
+				{ 1, 1, 1 },
+				{ 1, 1, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 1, 4 },
+				{ 1, 1, 4 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 },
+				{ 1, 0, 6 }
+			}"
 
 			device ref xhci on  end	# USB 3.0 Controller
 			device ref mei1 off end	# Management Engine Interface 1
diff --git a/src/mainboard/dell/snb_ivb_workstations/variants/baseboard/devicetree.cb b/src/mainboard/dell/snb_ivb_workstations/variants/baseboard/devicetree.cb
index 28c8d05..2ba11b4 100644
--- a/src/mainboard/dell/snb_ivb_workstations/variants/baseboard/devicetree.cb
+++ b/src/mainboard/dell/snb_ivb_workstations/variants/baseboard/devicetree.cb
@@ -30,6 +30,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x08040201"
 			register "xhci_switchable_ports" = "0x0000000f"
+			register "usb_port_config" = "{
+				{ 1, 6, 0 },
+				{ 1, 6, 0 },
+				{ 1, 1, 1 },
+				{ 1, 1, 1 },
+				{ 1, 1, 2 },
+				{ 1, 1, 2 },
+				{ 1, 6, 3 },
+				{ 1, 6, 3 },
+				{ 1, 6, 4 },
+				{ 1, 6, 4 },
+				{ 1, 6, 5 },
+				{ 1, 1, 5 },
+				{ 1, 1, 6 },
+				{ 1, 6, 6 }
+			}"
 			device ref xhci on  end
 			device ref mei1 off end
 			device ref mei2 off end
diff --git a/src/mainboard/gigabyte/ga-b75m-d3h/devicetree.cb b/src/mainboard/gigabyte/ga-b75m-d3h/devicetree.cb
index 3b95843..81e243f 100644
--- a/src/mainboard/gigabyte/ga-b75m-d3h/devicetree.cb
+++ b/src/mainboard/gigabyte/ga-b75m-d3h/devicetree.cb
@@ -20,7 +20,22 @@
 
 			register "xhci_switchable_ports" = "0xf"
 			register "superspeed_capable_ports" = "0xf"
-
+			register "usb_port_config" = "{
+				{ 1, 5, 0 },
+				{ 1, 5, 0 },
+				{ 1, 5, 1 },
+				{ 1, 5, 1 },
+				{ 1, 5, 2 },
+				{ 1, 5, 2 },
+				{ 1, 5, 3 },
+				{ 1, 5, 3 },
+				{ 1, 5, 4 },
+				{ 1, 5, 4 },
+				{ 1, 5, 6 },
+				{ 1, 5, 5 },
+				{ 1, 5, 5 },
+				{ 1, 5, 6 }
+			}"
 
 			device ref xhci on	# USB 3.0 Controller
 				subsystemid 0x1458 0x5007
diff --git a/src/mainboard/gigabyte/ga-h61m-series/devicetree.cb b/src/mainboard/gigabyte/ga-h61m-series/devicetree.cb
index 8a29171..0a0a445 100644
--- a/src/mainboard/gigabyte/ga-h61m-series/devicetree.cb
+++ b/src/mainboard/gigabyte/ga-h61m-series/devicetree.cb
@@ -16,6 +16,23 @@
 			register "spi_lvscc" = "0x2005"
 			register "spi_uvscc" = "0x2005"
 
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 1 },
+				{ 1, 0, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 6 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 }
+			}"
+
 			device ref mei1 on  end	# MEI #1
 			device ref ehci2 on  end	# USB2 EHCI #2
 			device ref hda on  end	# HD Audio
diff --git a/src/mainboard/hp/compaq_8200_elite_sff/devicetree.cb b/src/mainboard/hp/compaq_8200_elite_sff/devicetree.cb
index 993721b..09ba412 100644
--- a/src/mainboard/hp/compaq_8200_elite_sff/devicetree.cb
+++ b/src/mainboard/hp/compaq_8200_elite_sff/devicetree.cb
@@ -26,6 +26,23 @@
 			register "spi_lvscc" = "0x2005"
 			register "spi_uvscc" = "0x0"
 
+			register "usb_port_config" = "{
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 }
+			}"
+
 			device ref mei1 on  end	# Management Engine Interface 1
 			device ref mei2 off end	# Management Engine Interface 2
 			device ref me_ide_r off end	# Management Engine IDE-R
diff --git a/src/mainboard/hp/compaq_elite_8300_usdt/devicetree.cb b/src/mainboard/hp/compaq_elite_8300_usdt/devicetree.cb
index 7a62df1..777ff00 100644
--- a/src/mainboard/hp/compaq_elite_8300_usdt/devicetree.cb
+++ b/src/mainboard/hp/compaq_elite_8300_usdt/devicetree.cb
@@ -19,6 +19,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
 			register "xhci_switchable_ports" = "0x0000000f"
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 1 },
+				{ 1, 0, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 6 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 }
+			}"
 			device ref xhci on # USB 3.0 Controller
 				subsystemid 0x103c 0x3398
 			end
diff --git a/src/mainboard/hp/snb_ivb_desktops/variants/z220_cmt_workstation/overridetree.cb b/src/mainboard/hp/snb_ivb_desktops/variants/z220_cmt_workstation/overridetree.cb
index 1867d3a..a8dcb17 100644
--- a/src/mainboard/hp/snb_ivb_desktops/variants/z220_cmt_workstation/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_desktops/variants/z220_cmt_workstation/overridetree.cb
@@ -9,6 +9,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_switchable_ports"    = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x0000000f"
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 1, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 7 },
+				{ 1, 0, 7 }
+			}"
 
 			device ref xhci on  end
 			device ref pcie_rp2 on  end
diff --git a/src/mainboard/hp/snb_ivb_desktops/variants/z220_sff_workstation/overridetree.cb b/src/mainboard/hp/snb_ivb_desktops/variants/z220_sff_workstation/overridetree.cb
index 560b407..4684b0e 100644
--- a/src/mainboard/hp/snb_ivb_desktops/variants/z220_sff_workstation/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_desktops/variants/z220_sff_workstation/overridetree.cb
@@ -9,6 +9,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_switchable_ports"    = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x0000000f"
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 1, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 7 },
+				{ 1, 0, 7 }
+			}"
 
 			device ref xhci on  end
 		end
diff --git a/src/mainboard/hp/snb_ivb_laptops/variants/2170p/overridetree.cb b/src/mainboard/hp/snb_ivb_laptops/variants/2170p/overridetree.cb
index 092049c..dfd1cce 100644
--- a/src/mainboard/hp/snb_ivb_laptops/variants/2170p/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_laptops/variants/2170p/overridetree.cb
@@ -23,6 +23,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
 			register "xhci_switchable_ports"    = "0x0000000f"
+			register "usb_port_config" = "{
+				{1, 1, 0}, /* SSP1: dock */
+				{1, 1, 0}, /* SSP2: left, EHCI Debug */
+				{0, 1, 1}, /* SSP3 */
+				{1, 1, 1}, /* SSP4: right */
+				{0, 0, 2}, /* B0P5 */
+				{0, 0, 2}, /* B0P6 */
+				{0, 0, 3}, /* B0P7 */
+				{1, 0, 3}, /* B0P8: smart card reader */
+				{1, 0, 4}, /* B1P1: fingerprint reader */
+				{1, 0, 4}, /* B1P2: (EHCI Debug) wlan usb */
+				{1, 1, 5}, /* B1P3: Camera */
+				{1, 0, 5}, /* B1P4 */
+				{1, 0, 6}, /* B1P5: wwan USB */
+				{0, 0, 6}
+			}"
 
 			device ref xhci on  end
 			device ref mei1 on  end
diff --git a/src/mainboard/hp/snb_ivb_laptops/variants/2560p/overridetree.cb b/src/mainboard/hp/snb_ivb_laptops/variants/2560p/overridetree.cb
index c73786a..f5db40f 100644
--- a/src/mainboard/hp/snb_ivb_laptops/variants/2560p/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_laptops/variants/2560p/overridetree.cb
@@ -21,6 +21,23 @@
 			# HDD(0), ODD(1), eSATA(4), dock eSATA(5)
 			register "sata_port_map" = "0x33"
 
+			register "usb_port_config" = "{
+				{1, 1, 0}, /* back bottom USB port, USB debug */
+				{1, 1, 0}, /* back upper USB port */
+				{1, 1, 1}, /* eSATA */
+				{1, 1, 1}, /* webcam */
+				{1, 0, 2},
+				{1, 0, 2}, /* bluetooth */
+				{1, 0, 3},
+				{1, 0, 3}, /* smartcard */
+				{1, 1, 4}, /* fingerprint reader */
+				{1, 1, 4}, /* WWAN */
+				{0, 0, 5},
+				{1, 0, 5}, /* docking */
+				{0, 0, 6},
+				{0, 0, 6}
+			}"
+
 			device ref pcie_rp1 off end
 			device ref pcie_rp2 on
 				smbios_slot_desc "SlotTypePcmcia" "SlotLengthShort"
diff --git a/src/mainboard/hp/snb_ivb_laptops/variants/2570p/overridetree.cb b/src/mainboard/hp/snb_ivb_laptops/variants/2570p/overridetree.cb
index af80813..ab6529e 100644
--- a/src/mainboard/hp/snb_ivb_laptops/variants/2570p/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_laptops/variants/2570p/overridetree.cb
@@ -22,6 +22,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
 			register "xhci_switchable_ports"    = "0x0000000f"
+			register "usb_port_config" = "{
+				{1, 1, 0},
+				{0, 1, 0},
+				{1, 1, 1},
+				{1, 1, 1},
+				{1, 0, 2},
+				{1, 0, 2}, /* bluetooth */
+				{0, 0, 3},
+				{1, 0, 3}, /* smartcard */
+				{1, 1, 4},
+				{1, 1, 4}, /* mainboard USB 2.0 */
+				{1, 0, 5}, /* camera */
+				{0, 0, 5},
+				{1, 0, 6}, /* WWAN */
+				{0, 0, 6}
+			}"
 
 			device ref xhci on  end
 			device ref pcie_rp1 on  end
diff --git a/src/mainboard/hp/snb_ivb_laptops/variants/2760p/overridetree.cb b/src/mainboard/hp/snb_ivb_laptops/variants/2760p/overridetree.cb
index 9d1890a..22f2b84 100644
--- a/src/mainboard/hp/snb_ivb_laptops/variants/2760p/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_laptops/variants/2760p/overridetree.cb
@@ -20,6 +20,23 @@
 			register "pcie_hotplug_map" = "{ 0, 1, 1, 0, 0, 0, 0, 0 }"
 			register "sata_port_map" = "0x21"
 
+			register "usb_port_config" = "{
+				{ 1, 1, 0 },
+				{ 1, 1, 0 },
+				{ 1, 1, 1 },
+				{ 1, 1, 1 },
+				{ 1, 0, 2 },
+				{ 1, 1, 2 },
+				{ 0, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 1, 4 },
+				{ 1, 0, 4 },
+				{ 0, 0, 5 },
+				{ 1, 1, 5 },
+				{ 0, 0, 6 },
+				{ 1, 1, 6 }
+			}"
+
 			device ref pcie_rp1 on  end
 			device ref pcie_rp2 on
 				smbios_slot_desc "SlotTypePcmcia" "SlotLengthShort"
diff --git a/src/mainboard/hp/snb_ivb_laptops/variants/8460p/overridetree.cb b/src/mainboard/hp/snb_ivb_laptops/variants/8460p/overridetree.cb
index bf64099..b1d03ba 100644
--- a/src/mainboard/hp/snb_ivb_laptops/variants/8460p/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_laptops/variants/8460p/overridetree.cb
@@ -21,6 +21,23 @@
 			# HDD(0), ODD(1), docking(3,5), eSATA(4)
 			register "sata_port_map" = "0x3b"
 
+			register "usb_port_config" = "{
+				{1, 1, 0}, /* USB0, eSATA */
+				{1, 0, 0}, /* USB charger */
+				{0, 1, 1},
+				{1, 1, 1}, /* camera */
+				{1, 0, 2}, /* USB4 expresscard */
+				{1, 0, 2}, /* bluetooth */
+				{0, 0, 3},
+				{1, 0, 3}, /* smartcard */
+				{1, 1, 4}, /* fingerprint */
+				{1, 1, 4}, /* WWAN */
+				{1, 0, 5}, /* CONN */
+				{1, 0, 5}, /* docking */
+				{1, 0, 6}, /* CONN */
+				{1, 0, 6}  /* docking */
+			}"
+
 			device ref me_kt on  end
 			device ref pcie_rp1 on  end
 			device ref pcie_rp2 on
diff --git a/src/mainboard/hp/snb_ivb_laptops/variants/8470p/overridetree.cb b/src/mainboard/hp/snb_ivb_laptops/variants/8470p/overridetree.cb
index cfc5372..b3cc3a9 100644
--- a/src/mainboard/hp/snb_ivb_laptops/variants/8470p/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_laptops/variants/8470p/overridetree.cb
@@ -23,6 +23,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
 			register "xhci_switchable_ports"    = "0x0000000f"
+			register "usb_port_config" = "{
+				{ 1, 1, 0 },
+				{ 1, 1, 0 },
+				{ 1, 1, 1 },
+				{ 1, 1, 1 },
+				{ 1, 0, 2 },
+				{ 0, 0, 2 },
+				{ 0, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 1, 4 },
+				{ 1, 1, 4 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 },
+				{ 1, 0, 6 }
+			}"
 
 			device ref xhci on  end
 			device ref me_kt on  end
diff --git a/src/mainboard/hp/snb_ivb_laptops/variants/8770w/overridetree.cb b/src/mainboard/hp/snb_ivb_laptops/variants/8770w/overridetree.cb
index f326c40..771cda0 100644
--- a/src/mainboard/hp/snb_ivb_laptops/variants/8770w/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_laptops/variants/8770w/overridetree.cb
@@ -24,6 +24,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
 			register "xhci_switchable_ports"    = "0x0000000f"
+			register "usb_port_config" = "{
+				{1, 1, 0}, /* Dock USB3.0 */
+				{1, 1, 0}, /* Conn */
+				{1, 1, 1}, /* USB 3.0 */
+				{1, 1, 1}, /* USB 3.0 */
+				{1, 0, 2}, /* Express Card */
+				{1, 0, 2}, /* Bluetooth */
+				{0, 0, 3},
+				{1, 0, 3}, /* Smart Card */
+				{1, 1, 4}, /* Fingerprint Reader */
+				{1, 1, 4}, /* Conn (Charger) */
+				{1, 0, 5}, /* Camera */
+				{1, 0, 5}, /* Dock */
+				{1, 0, 6}, /* WWAN */
+				{1, 0, 6}  /* Conn (eSATA Combo) */
+			}"
 
 			device ref xhci on  end
 			device ref pcie_rp1 on  end
diff --git a/src/mainboard/hp/snb_ivb_laptops/variants/folio_9470m/overridetree.cb b/src/mainboard/hp/snb_ivb_laptops/variants/folio_9470m/overridetree.cb
index 1e3984d..c16634d 100644
--- a/src/mainboard/hp/snb_ivb_laptops/variants/folio_9470m/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_laptops/variants/folio_9470m/overridetree.cb
@@ -22,6 +22,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
 			register "xhci_switchable_ports"    = "0x0000000f"
+			register "usb_port_config" = "{
+				{1, 1, 0}, /* SSP1: dock */
+				{1, 1, 0}, /* SSP2: left, EHCI Debug */
+				{1, 1, 1}, /* SSP3: right back side */
+				{1, 1, 1}, /* SSP4: right front side */
+				{1, 0, 2}, /* B0P5 */
+				{1, 0, 2}, /* B0P6: wlan USB */
+				{0, 0, 3}, /* B0P7 */
+				{1, 1, 3}, /* B0P8: smart card reader */
+				{1, 1, 4}, /* B1P1: fingerprint reader */
+				{0, 0, 4}, /* B1P2: (EHCI Debug, not connected) */
+				{1, 1, 5}, /* B1P3: Camera */
+				{0, 0, 5}, /* B1P4 */
+				{1, 1, 6}, /* B1P5: wwan USB */
+				{0, 0, 6}
+			}"
 
 			device ref xhci on  end
 			device ref pcie_rp1 on  end
diff --git a/src/mainboard/hp/snb_ivb_laptops/variants/probook_6360b/overridetree.cb b/src/mainboard/hp/snb_ivb_laptops/variants/probook_6360b/overridetree.cb
index 64653bc..b3bbe1c 100644
--- a/src/mainboard/hp/snb_ivb_laptops/variants/probook_6360b/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_laptops/variants/probook_6360b/overridetree.cb
@@ -20,6 +20,23 @@
 			# FIXME: ports 3, 5 are untested
 			register "sata_port_map" = "0x3b"
 
+			register "usb_port_config" = "{
+				{1, 1, 0}, /* left front */
+				{1, 1, 0}, /* left rear, debug */
+				{1, 1, 1}, /* eSATA */
+				{1, 1, 1}, /* webcam */
+				{1, 0, 2},
+				{1, 0, 2}, /* bluetooth */
+				{0, 0, 3},
+				{0, 0, 3},
+				{1, 1, 4}, /* fingerprint reader */
+				{1, 1, 4}, /* WWAN */
+				{1, 0, 5}, /* right */
+				{1, 0, 5},
+				{1, 0, 6},
+				{1, 0, 6}
+			}"
+
 			device ref pcie_rp1 on  end
 			device ref pcie_rp2 on
 				smbios_slot_desc "SlotTypePcmcia" "SlotLengthShort"
diff --git a/src/mainboard/hp/snb_ivb_laptops/variants/revolve_810_g1/overridetree.cb b/src/mainboard/hp/snb_ivb_laptops/variants/revolve_810_g1/overridetree.cb
index 2e36371..45a3c3e 100644
--- a/src/mainboard/hp/snb_ivb_laptops/variants/revolve_810_g1/overridetree.cb
+++ b/src/mainboard/hp/snb_ivb_laptops/variants/revolve_810_g1/overridetree.cb
@@ -22,6 +22,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
 			register "xhci_switchable_ports"    = "0x0000000f"
+			register "usb_port_config" = "{
+				{ 1, 1, 0 },
+				{ 1, 0, 0 },
+				{ 1, 1, 1 },
+				{ 0, 1, 1 },
+				{ 0, 0, 2 },
+				{ 1, 0, 2 },
+				{ 0, 0, 3 },
+				{ 0, 0, 3 },
+				{ 1, 0, 4 }, /* B1P1: Digitizer */
+				{ 1, 0, 4 }, /* B1P2: wlan USB, EHCI debug */
+				{ 1, 1, 5 }, /* B1P3: Camera */
+				{ 0, 0, 5 }, /* B1P4 */
+				{ 1, 0, 6 }, /* B1P5: wwan USB */
+				{ 0, 0, 6 }, /* B1P6 */
+			}"
 
 			device ref xhci on  end
 			device ref pcie_rp1 on  end
diff --git a/src/mainboard/intel/dq67sw/devicetree.cb b/src/mainboard/intel/dq67sw/devicetree.cb
index f29b772..6a28bcc 100644
--- a/src/mainboard/intel/dq67sw/devicetree.cb
+++ b/src/mainboard/intel/dq67sw/devicetree.cb
@@ -14,6 +14,22 @@
 			register "sata_port_map" = "0x3f"
 			register "spi_lvscc" = "0x2005"
 			register "spi_uvscc" = "0x2005"
+			register "usb_port_config" = "{
+				{ 1, 1, 0 },
+				{ 1, 1, 0 },
+				{ 1, 1, 1 },
+				{ 1, 1, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 1, 4 },
+				{ 1, 1, 4 },
+				{ 0, 0, 5 },
+				{ 0, 0, 5 },
+				{ 1, 0, 6 },
+				{ 1, 0, 6 }
+			}"
 			device ref mei1 on end		# Management Engine Interface 1
 			device ref me_ide_r on end	# Management Engine IDE-R
 			device ref me_kt on end		# Management Engine KT
diff --git a/src/mainboard/lenovo/l520/devicetree.cb b/src/mainboard/lenovo/l520/devicetree.cb
index a4fbe11..e398e78 100644
--- a/src/mainboard/lenovo/l520/devicetree.cb
+++ b/src/mainboard/lenovo/l520/devicetree.cb
@@ -43,6 +43,23 @@
 			register "spi_uvscc" = "0"
 			register "spi_lvscc" = "0x2005"
 
+			register "usb_port_config" = "{
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 }
+			}"
+
 			device ref mei1 on end # Management Engine Interface 1
 			device ref mei2 off end # Management Engine Interface 2
 			device ref me_ide_r off end # Management Engine IDE-R
diff --git a/src/mainboard/lenovo/s230u/devicetree.cb b/src/mainboard/lenovo/s230u/devicetree.cb
index eae9696..eb832be 100644
--- a/src/mainboard/lenovo/s230u/devicetree.cb
+++ b/src/mainboard/lenovo/s230u/devicetree.cb
@@ -34,6 +34,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
 			register "xhci_switchable_ports" = "0x0000000f"
+			register "usb_port_config" = "{
+				{ 1, 1, 0 },
+				{ 1, 0, 0 },
+				{ 1, 1, 1 },
+				{ 1, 0, 1 },
+				{ 1, 1, 2 },
+				{ 1, 0, 2 },
+				{ 0, 0, 3 },
+				{ 0, 1, 3 },
+				{ 1, 0, 4 },
+				{ 1, 1, 4 },
+				{ 1, 1, 5 },
+				{ 1, 1, 5 },
+				{ 1, 1, 6 },
+				{ 1, 1, 6 }
+			}"
 
 			register "spi_uvscc" = "0x2005"
 			register "spi_lvscc" = "0x2005"
diff --git a/src/mainboard/lenovo/t420/devicetree.cb b/src/mainboard/lenovo/t420/devicetree.cb
index d469da6..6b721f3 100644
--- a/src/mainboard/lenovo/t420/devicetree.cb
+++ b/src/mainboard/lenovo/t420/devicetree.cb
@@ -58,6 +58,24 @@
 			register "spi_uvscc" = "0x2005"
 			register "spi_lvscc" = "0x2005"
 
+			# OC3 set in BIOS to port 2-7, OC7 set in BIOS to port 10-13
+			register "usb_port_config" = "{
+				{1, 1,  0}, /* P0: system port 4, OC0 */
+				{1, 1,  1}, /* P1: system port 2 (EHCI debug), OC 1 */
+				{1, 1, -1}, /* P2: HALF MINICARD (WLAN) no oc */
+				{1, 0, -1}, /* P3: WWAN, no OC */
+				{1, 0, -1}, /* P4: smartcard, no OC */
+				{1, 1, -1}, /* P5: ExpressCard, no OC */
+				{0, 0, -1}, /* P6: empty */
+				{0, 0, -1}, /* P7: empty */
+				{1, 1,  4}, /* P8: system port 3, OC4*/
+				{1, 1,  5}, /* P9: system port 1 (EHCI debug), OC 5 */
+				{1, 0, -1}, /* P10: fingerprint reader, no OC */
+				{1, 0, -1}, /* P11: bluetooth, no OC. */
+				{1, 1, -1}, /* P12: docking, no OC */
+				{1, 1, -1}  /* P13: camera (LCD), no OC */
+				}"
+
 			device ref mei1 on  end # Management Engine Interface 1
 			device ref mei2 off end # Management Engine Interface 2
 			device ref me_ide_r off end # Management Engine IDE-R
diff --git a/src/mainboard/lenovo/t420s/devicetree.cb b/src/mainboard/lenovo/t420s/devicetree.cb
index 4ce9077..b358885 100644
--- a/src/mainboard/lenovo/t420s/devicetree.cb
+++ b/src/mainboard/lenovo/t420s/devicetree.cb
@@ -60,6 +60,23 @@
 			register "spi_uvscc" = "0x2005"
 			register "spi_lvscc" = "0x2005"
 
+			register "usb_port_config" = "{
+				{0, 1, -1}, /* P0: empty */
+				{1, 1,  1}, /* P1: system port 2 (To system port) (EHCI debug), OC 1 */
+				{1, 1, -1}, /* P2: HALF MINICARD (WLAN) no oc */
+				{1, 0, -1}, /* P3: WWAN, no OC */
+				{1, 1, -1}, /* P4: smartcard, no OC */
+				{1, 1, -1}, /* P5: ExpressCard, no OC */
+				{0, 0, -1}, /* P6: empty */
+				{0, 0, -1}, /* P7: empty */
+				{0, 1, -1}, /* P8: empty (touch panel) */
+				{1, 0,  5}, /* P9: system port 1 (To USBAO) (EHCI debug), OC 5 */
+				{1, 0, -1}, /* P10: fingerprint reader, no OC */
+				{1, 1, -1}, /* P11: bluetooth, no OC. */
+				{1, 1, -1}, /* P12: docking, no OC */
+				{1, 1, -1}  /* P13: camera (LCD), no OC */
+				}"
+
 			device ref mei1 on  end # Management Engine Interface 1
 			device ref mei2 off end # Management Engine Interface 2
 			device ref me_ide_r off end # Management Engine IDE-R
diff --git a/src/mainboard/lenovo/t430/devicetree.cb b/src/mainboard/lenovo/t430/devicetree.cb
index 6492542..f0f7975 100644
--- a/src/mainboard/lenovo/t430/devicetree.cb
+++ b/src/mainboard/lenovo/t430/devicetree.cb
@@ -35,6 +35,22 @@
 			register "superspeed_capable_ports" = "0x7"
 			register "xhci_switchable_ports" = "0x7"
 			register "xhci_overcurrent_mapping" = "0x04000201"
+			register "usb_port_config" = "{
+				{ 1, 1,  0 },
+				{ 1, 1,  1 },
+				{ 1, 2,  3 },
+				{ 1, 1, -1 },
+				{ 1, 1,  2 },
+				{ 1, 0, -1 },
+				{ 0, 0, -1 },
+				{ 1, 2, -1 },
+				{ 1, 0, -1 },
+				{ 1, 1,  5 },
+				{ 1, 0, -1 },
+				{ 1, 0, -1 },
+				{ 1, 3, -1 },
+				{ 1, 1, -1 }
+			}"
 
 			# device specific SPI configuration
 			register "spi_uvscc" = "0x2005"
diff --git a/src/mainboard/lenovo/t430s/variants/t430s/overridetree.cb b/src/mainboard/lenovo/t430s/variants/t430s/overridetree.cb
index 5677a87..a9da730 100644
--- a/src/mainboard/lenovo/t430s/variants/t430s/overridetree.cb
+++ b/src/mainboard/lenovo/t430s/variants/t430s/overridetree.cb
@@ -2,6 +2,22 @@
 	register "spd_addresses" = "{0x50, 0, 0x51, 0}"
 	device domain 0 on
 		chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH
+			register "usb_port_config" = "{
+				{ 1, 0,  0 }, /* P0:, OC 0 */
+				{ 1, 1,  1 }, /* P1: (EHCI debug), OC 1 */
+				{ 1, 1,  3 }, /* P2:  OC 3 */
+				{ 1, 0, -1 }, /* P3: no OC */
+				{ 1, 2, -1 }, /* P4: no OC */
+				{ 1, 1, -1 }, /* P5: no OC */
+				{ 1, 1, -1 }, /* P6: no OC */
+				{ 0, 1, -1 }, /* P7: empty, no OC */
+				{ 1, 1, -1 }, /* P8: smart card reader, no OC */
+				{ 1, 0,  5 }, /* P9:  (EHCI debug), OC 5 */
+				{ 1, 0, -1 }, /* P10: fingerprint reader, no OC */
+				{ 1, 1, -1 }, /* P11: bluetooth, no OC. */
+				{ 0, 0, -1 }, /* P12: wlan, no OC */
+				{ 1, 1, -1 }, /* P13: camera, no OC */
+			}"
 			# Enable hotplug on Port 5 for Thunderbolt controller
 			register "pcie_hotplug_map" = "{ 0, 0, 1, 0, 1, 0, 0, 0 }"
 			device ref pcie_rp5 on end # Thunderbolt controller
diff --git a/src/mainboard/lenovo/t430s/variants/t431s/overridetree.cb b/src/mainboard/lenovo/t430s/variants/t431s/overridetree.cb
index e839358..15712f9 100644
--- a/src/mainboard/lenovo/t430s/variants/t431s/overridetree.cb
+++ b/src/mainboard/lenovo/t430s/variants/t431s/overridetree.cb
@@ -23,6 +23,23 @@
 			# T431s has no Express Card slot.
 			register "pcie_hotplug_map" = "{ 0, 0, 0, 0, 0, 0, 0, 0 }"
 
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },  /* SSP1: right */
+				{ 1, 0, 1 },  /* SSP2: left, EHCI Debug */
+				{ 1, 1, 3 },  /* SSP3: dock USB3 */
+				{ 1, 1, -1 }, /* B0P4: wwan USB */
+				{ 1, 1, 2 },  /* B0P5: dock USB2 */
+				{ 0, 0, -1 }, /* B0P6 */
+				{ 0, 0, -1 }, /* B0P7 */
+				{ 1, 2, -1 }, /* B0P8: unknown */
+				{ 1, 0, -1 }, /* B1P1: smart card reader */
+				{ 0, 2, 5 },  /* B1P2 */
+				{ 1, 1, -1 }, /* B1P3: fingerprint reader */
+				{ 0, 0, -1 }, /* B1P4 */
+				{ 1, 1, -1 }, /* B1P5: wlan USB */
+				{ 1, 1, -1 }, /* B1P6: Camera */
+			}"
+
 			device ref pcie_rp1 on
 				chip drivers/ricoh/rce822 # Ricoh cardreader
 					register "disable_mask" = "0x87"
diff --git a/src/mainboard/lenovo/t530/variants/t530/overridetree.cb b/src/mainboard/lenovo/t530/variants/t530/overridetree.cb
index b574f36..3f058e3 100644
--- a/src/mainboard/lenovo/t530/variants/t530/overridetree.cb
+++ b/src/mainboard/lenovo/t530/variants/t530/overridetree.cb
@@ -2,6 +2,22 @@
 	register "spd_addresses" = "{0x50, 0, 0x51, 0}"
 	device domain 0 on
 		chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH
+			register "usb_port_config" = "{
+				{ 1, 1,  0 }, /* P0: USB double port upper, USB3, OC 0 */
+				{ 1, 1,  1 }, /* P1: USB double port lower, USB3, (EHCI debug) OC 1 */
+				{ 1, 2,  3 }, /* P2: Dock, USB3, OC 3 */
+				{ 1, 1, -1 }, /* P3: WWAN slot, no OC */
+				{ 1, 1,  2 }, /* P4: yellow USB, OC 2 */
+				{ 1, 0, -1 }, /* P5: ExpressCard slot, no OC */
+				{ 0, 0, -1 }, /* P6: empty */
+				{ 1, 2, -1 }, /* P7: docking, no OC */
+				{ 1, 0, -1 }, /* P8: smart card reader, no OC */
+				{ 1, 1,  5 }, /* P9: USB port single (EHCI debug), OC 5 */
+				{ 1, 0, -1 }, /* P10: fingerprint reader, no OC */
+				{ 1, 0, -1 }, /* P11: bluetooth, no OC. */
+				{ 1, 3, -1 }, /* P12: wlan, no OC - disabled in vendor bios*/
+				{ 1, 1, -1 }, /* P13: camera, no OC */
+			}"
 			device ref lpc on
 				chip ec/lenovo/h8
 					device pnp ff.2 on end # dummy
diff --git a/src/mainboard/lenovo/t530/variants/w530/overridetree.cb b/src/mainboard/lenovo/t530/variants/w530/overridetree.cb
index 6b86387..a54db1e 100644
--- a/src/mainboard/lenovo/t530/variants/w530/overridetree.cb
+++ b/src/mainboard/lenovo/t530/variants/w530/overridetree.cb
@@ -5,6 +5,22 @@
 			subsystemid 0x17aa 0x21f5
 		end
 		chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH
+			register "usb_port_config" = "{
+				{ 1, 1,  0 }, /* P0: USB double port upper, USB3, OC 0 */
+				{ 1, 1,  1 }, /* P1: USB double port lower, USB3, (EHCI debug) OC 1 */
+				{ 1, 2,  3 }, /* P2: Dock, USB3, OC 3 */
+				{ 1, 1, -1 }, /* P3: WWAN slot, no OC */
+				{ 1, 1,  2 }, /* P4: yellow USB, OC 2 */
+				{ 1, 0, -1 }, /* P5: ExpressCard slot, no OC */
+				{ 1, 0, -1 }, /* P6: color sensor, no OC */
+				{ 1, 2, -1 }, /* P7: docking, no OC */
+				{ 1, 0, -1 }, /* P8: smart card reader, no OC */
+				{ 1, 1,  5 }, /* P9: USB port single (EHCI debug), OC 5 */
+				{ 1, 0, -1 }, /* P10: fingerprint reader, no OC */
+				{ 1, 0, -1 }, /* P11: bluetooth, no OC. */
+				{ 1, 3, -1 }, /* P12: wlan, no OC - disabled in vendor bios*/
+				{ 1, 1, -1 }, /* P13: camera, no OC */
+			}"
 			device ref me_kt on end
 			device ref pcie_rp1 on
 				chip drivers/ricoh/rce822 # Ricoh cardreader
diff --git a/src/mainboard/lenovo/x131e/devicetree.cb b/src/mainboard/lenovo/x131e/devicetree.cb
index 96385ed..b74e78f 100644
--- a/src/mainboard/lenovo/x131e/devicetree.cb
+++ b/src/mainboard/lenovo/x131e/devicetree.cb
@@ -43,6 +43,18 @@
 			register "xhci_switchable_ports" = "0xf"
 			register "superspeed_capable_ports" = "0xf"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
+			register "usb_port_config" = "{
+				{1, 1, 0},	/* P0: USB 3.0 1 (OC0) */
+				{1, 1, 0},	/* P1: USB 3.0 2 (OC0) */
+				{0, 0, 0},
+				{1, 1, -1},	/* P3: Camera (no OC) */
+				{1, 0, -1},	/* P4: WLAN (no OC) */
+				{1, 0, -1},	/* P5: WWAN (no OC) */
+				{0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+				{1, 1, 4},	/* P9: USB 2.0 (AUO4) (OC4) */
+				{0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+				{1, 0, -1}	/* P13: Bluetooth (no OC) */
+				}"
 
 			# Enable zero-based linear PCIe root port functions
 			register "pcie_port_coalesce" = "true"
diff --git a/src/mainboard/lenovo/x1_carbon_gen1/devicetree.cb b/src/mainboard/lenovo/x1_carbon_gen1/devicetree.cb
index a423246..4abc9c0 100644
--- a/src/mainboard/lenovo/x1_carbon_gen1/devicetree.cb
+++ b/src/mainboard/lenovo/x1_carbon_gen1/devicetree.cb
@@ -43,6 +43,22 @@
 			register "xhci_switchable_ports" = "0xf"
 			register "superspeed_capable_ports" = "0xf"
 			register "xhci_overcurrent_mapping" = "0x4000201"
+			register "usb_port_config" = "{
+				{0, 3, 0 }, /* P00 disconnected */
+				{1, 1, 1 }, /* P01 left or right */
+				{0, 1, 3 }, /* P02 disconnected */
+				{1, 3, -1}, /* P03 WWAN */
+				{0, 1, 2 }, /* P04 disconnected */
+				{0, 1, -1}, /* P05 disconnected */
+				{0, 1, -1}, /* P06 disconnected */
+				{0, 2, -1}, /* P07 disconnected */
+				{0, 1, -1}, /* P08 disconnected */
+				{1, 2, 5 }, /* P09 left or right */
+				{1, 3, -1}, /* P10 FPR */
+				{1, 3, -1}, /* P11 Bluetooth */
+				{1, 1, -1}, /* P12 WLAN */
+				{1, 1, -1}  /* P13 Camera */
+				}"
 
 			# Enable zero-based linear PCIe root port functions
 			register "pcie_port_coalesce" = "true"
diff --git a/src/mainboard/lenovo/x220/variants/x1/overridetree.cb b/src/mainboard/lenovo/x220/variants/x1/overridetree.cb
index bf88150..cb1d125 100644
--- a/src/mainboard/lenovo/x220/variants/x1/overridetree.cb
+++ b/src/mainboard/lenovo/x220/variants/x1/overridetree.cb
@@ -16,6 +16,22 @@
 		subsystemid 0x17aa 0x21e8 inherit
 
 		chip southbridge/intel/bd82x6x # Intel Series 6 Cougar Point PCH
+			register "usb_port_config" = "{
+				{ 1, 1, 0 },
+				{ 1, 1, 1 },
+				{ 1, 1, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 1, 3 },
+				{ 0, 0, 3 },
+				{ 0, 0, 3 },
+				{ 1, 1, 4 },
+				{ 1, 1, 5 },
+				{ 1, 0, 7 },
+				{ 1, 1, 7 },
+				{ 1, 1, 7 },
+				{ 1, 0, 7 }
+			}"
 			# Enable SATA ports 0 (HDD bay) & 2 (msata) & 3 (esatap)
 			register "sata_port_map" = "0x1d"
 			# X1 does not have ExpressCard slot
diff --git a/src/mainboard/lenovo/x230/variants/x230/overridetree.cb b/src/mainboard/lenovo/x230/variants/x230/overridetree.cb
index d82faae..e7b06b6 100644
--- a/src/mainboard/lenovo/x230/variants/x230/overridetree.cb
+++ b/src/mainboard/lenovo/x230/variants/x230/overridetree.cb
@@ -3,6 +3,22 @@
 		chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH
 			register "docking_supported" = "1"
 			register "pcie_hotplug_map" = "{ 0, 0, 1, 0, 0, 0, 0, 0 }"
+			register "usb_port_config" = "{
+				{1, 0, 0 }, /* P0 (left, fan side), OC 0 */
+				{1, 0, 1 }, /* P1 (left touchpad side), OC 1 */
+				{1, 1, 3 }, /* P2: dock, OC 3 */
+				{1, 1, -1}, /* P3: wwan, no OC */
+				{1, 1, -1}, /* P4: Wacom tablet on X230t, otherwise empty */
+				{1, 1, -1}, /* P5: Expresscard, no OC */
+				{0, 0, -1}, /* P6: Empty */
+				{1, 2, -1}, /* P7: dock, no OC */
+				{0, 0, -1}, /* P8: Empty */
+				{1, 2, 5 }, /* P9: Right (EHCI debug), OC 5 */
+				{1, 1, -1}, /* P10: fingerprint reader, no OC */
+				{1, 1, -1}, /* P11: bluetooth, no OC. */
+				{1, 1, -1}, /* P12: wlan, no OC */
+				{1, 1, -1}, /* P13: webcam, no OC */
+			}"
 			device ref pcie_rp3 on
 				smbios_slot_desc "7" "3" "ExpressCard Slot" "8"
 			end
diff --git a/src/mainboard/lenovo/x230/variants/x230s/overridetree.cb b/src/mainboard/lenovo/x230/variants/x230s/overridetree.cb
index 09e7f92..a84b5f3 100644
--- a/src/mainboard/lenovo/x230/variants/x230s/overridetree.cb
+++ b/src/mainboard/lenovo/x230/variants/x230s/overridetree.cb
@@ -18,7 +18,22 @@
 			# X230s does not support docking
 			# Enable SATA ports 0 (HDD bay) & 1 (WWAN M.2 SATA)
 			register "sata_port_map" = "0x3"
-
+			register "usb_port_config" = "{
+				{1, 3, 0},  /* SSP1: Right */
+				{1, 3, 1},  /* SSP2: Left, EHCI Debug */
+				{0, 1, 3},  /* SSP3 */
+				{1, 3, -1}, /* B0P4: WWAN USB */
+				{0, 1, 2},  /* B0P5 */
+				{0, 1, -1}, /* B0P6 */
+				{0, 1, -1}, /* B0P7 */
+				{0, 1, -1}, /* B0P8 */
+				{0, 1, -1}, /* B1P1 */
+				{0, 1, 5},  /* B1P2 */
+				{1, 1, -1}, /* B1P3: Fingerprint Reader */
+				{0, 1, -1}, /* B1P4 */
+				{1, 3, -1}, /* B1P5: WLAN USB */
+				{1, 1, -1}, /* B1P6: Camera */
+			}"
 			device ref lpc on
 				chip ec/lenovo/h8
 					register "config1" = "0x05"
diff --git a/src/mainboard/msi/ms7707/devicetree.cb b/src/mainboard/msi/ms7707/devicetree.cb
index 90eea95..df1696a 100644
--- a/src/mainboard/msi/ms7707/devicetree.cb
+++ b/src/mainboard/msi/ms7707/devicetree.cb
@@ -17,6 +17,22 @@
 			register "spi_lvscc" = "0x2005"
 			register "spi_uvscc" = "0x2005"
 			register "gpe0_en" = "0x28000040"
+			register "usb_port_config" = "{
+				{1, 0, 0},
+				{1, 0, 0},
+				{1, 0, 1},
+				{1, 0, 1},
+				{1, 0, 2},
+				{1, 0, 2},
+				{1, 0, 3},
+				{1, 0, 3},
+				{1, 0, 4},
+				{1, 0, 4},
+				{1, 0, 6},
+				{1, 0, 5},
+				{1, 0, 5},
+				{1, 0, 6}
+			}"
 
 			device ref mei1 on  end	# Management Engine Interface 1
 			device ref mei2 off end	# Management Engine Interface 2
diff --git a/src/mainboard/sapphire/pureplatinumh61/devicetree.cb b/src/mainboard/sapphire/pureplatinumh61/devicetree.cb
index 87d1532..c44e2f3 100644
--- a/src/mainboard/sapphire/pureplatinumh61/devicetree.cb
+++ b/src/mainboard/sapphire/pureplatinumh61/devicetree.cb
@@ -9,6 +9,23 @@
 			register "pcie_port_coalesce" = "true"
 			register "sata_interface_speed_support" = "0x3"
 			register "sata_port_map" = "0x33"
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 1 },
+				{ 1, 0, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 6 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 }
+			}"
+
 			register "spi.opprefixes" = "{ 0x50, 0x06 }"
 			register "spi.ops" = "{{0x01, WRITE_NO_ADDR},
 						{0x02, WRITE_WITH_ADDR},
diff --git a/src/mainboard/supermicro/x9sae/devicetree.cb b/src/mainboard/supermicro/x9sae/devicetree.cb
index f518381..acaae83 100644
--- a/src/mainboard/supermicro/x9sae/devicetree.cb
+++ b/src/mainboard/supermicro/x9sae/devicetree.cb
@@ -26,6 +26,22 @@
 			register "superspeed_capable_ports" = "0x0000000f"
 			register "xhci_overcurrent_mapping" = "0x00000c03"
 			register "xhci_switchable_ports"    = "0x0000000f"
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },
+				{ 1, 0, 0 },
+				{ 1, 0, 1 },
+				{ 1, 0, 1 },
+				{ 1, 0, 2 },
+				{ 1, 0, 2 },
+				{ 1, 0, 3 },
+				{ 1, 0, 3 },
+				{ 1, 0, 4 },
+				{ 1, 0, 4 },
+				{ 1, 0, 6 },
+				{ 1, 0, 5 },
+				{ 1, 0, 5 },
+				{ 1, 0, 6 }
+			}"
 
 			device ref xhci on  end		# xHCI
 			device ref mei1 on  end		# MEI #1
diff --git a/src/mainboard/supermicro/x9scl/devicetree.cb b/src/mainboard/supermicro/x9scl/devicetree.cb
index 203a7a6..7240d6d 100644
--- a/src/mainboard/supermicro/x9scl/devicetree.cb
+++ b/src/mainboard/supermicro/x9scl/devicetree.cb
@@ -17,6 +17,24 @@
 			register "sata_port_map" = "0x3f"
 			register "spi_lvscc" = "0x2005"
 			register "spi_uvscc" = "0x2005"
+
+			register "usb_port_config" = "{
+				{ 1, 0, 0 },	/* ? USB0  1d.0 port 1 */
+				{ 1, 0, 0 },	/* ? USB1  1d.0 port 2 */
+				{ 1, 0, 1 },	/* ? USB2  1d.0 port 3 */
+				{ 1, 0, 1 },	/* ? USB3  1d.0 port 4 */
+				{ 1, 0, 2 },	/* ? USB4  1d.0 port 5 */
+				{ 1, 0, 2 },	/* ? USB5  1d.0 port 6 */
+				{ 1, 0, 3 },	/* ? ???   1a.0 port 1 */
+				{ 1, 0, 3 },	/* ? BMC   1a.0 port 2 */
+				{ 1, 0, 4 },	/* ? ???   1a.0 port 3 */
+				{ 1, 0, 4 },	/* ? USB11 1a.0 port 4 */
+				{ 1, 0, 6 },	/* ? USB12 1a.0 port 5 */
+				{ 1, 0, 5 },	/* ? USB13 1a.0 port 6 */
+				{ 1, 0, 5 },
+				{ 1, 0, 6 }
+			}"
+
 			device ref mei1 off end # Management Engine Interface 1
 			device ref mei2 off end # Management Engine Interface 2
 			device ref me_ide_r off end # Management Engine IDE-R