mb/google/octopus: Disable unused USB devices

Disable unused USB devices in the device tree so that the concerned ACPI
objects do not get exported to the OS.

BUG=b:133513961
BRANCH=octopus
TEST=Boot to ChromeOS. Ensure that the USB devices are disabled based
on port status and the concerned ACPI objects are not exported.

Change-Id: I0faccdfb8a9df9ec52130437433b15973e3d6f1a
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/34291
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
diff --git a/src/mainboard/google/octopus/mainboard.c b/src/mainboard/google/octopus/mainboard.c
index 91cf1e4..3312d4d 100644
--- a/src/mainboard/google/octopus/mainboard.c
+++ b/src/mainboard/google/octopus/mainboard.c
@@ -16,12 +16,14 @@
 #include <arch/acpi.h>
 #include <baseboard/variants.h>
 #include <boardid.h>
+#include <bootstate.h>
 #include <console/console.h>
 #include <device/device.h>
 #include <device/pci_def.h>
 #include <device/pci_ops.h>
 #include <ec/google/chromeec/ec.h>
 #include <ec/ec.h>
+#include <intelblocks/xhci.h>
 #include <nhlt.h>
 #include <smbios.h>
 #include <soc/cpu.h>
@@ -199,3 +201,16 @@
 
 	return manuf;
 }
+
+bool __weak variant_ext_usb_status(unsigned int port_type, unsigned int port_id)
+{
+	/* All externally visible USB ports are present */
+	return true;
+}
+
+static void disable_unused_devices(void *unused)
+{
+	usb_xhci_disable_unused(variant_ext_usb_status);
+}
+
+BOOT_STATE_INIT_ENTRY(BS_DEV_INIT, BS_ON_EXIT, disable_unused_devices, NULL);