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>
This commit is contained in:
parent
25fcdce7d4
commit
02592ec291
|
@ -16,12 +16,14 @@
|
||||||
#include <arch/acpi.h>
|
#include <arch/acpi.h>
|
||||||
#include <baseboard/variants.h>
|
#include <baseboard/variants.h>
|
||||||
#include <boardid.h>
|
#include <boardid.h>
|
||||||
|
#include <bootstate.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <device/pci_def.h>
|
#include <device/pci_def.h>
|
||||||
#include <device/pci_ops.h>
|
#include <device/pci_ops.h>
|
||||||
#include <ec/google/chromeec/ec.h>
|
#include <ec/google/chromeec/ec.h>
|
||||||
#include <ec/ec.h>
|
#include <ec/ec.h>
|
||||||
|
#include <intelblocks/xhci.h>
|
||||||
#include <nhlt.h>
|
#include <nhlt.h>
|
||||||
#include <smbios.h>
|
#include <smbios.h>
|
||||||
#include <soc/cpu.h>
|
#include <soc/cpu.h>
|
||||||
|
@ -199,3 +201,16 @@ const char *smbios_mainboard_manufacturer(void)
|
||||||
|
|
||||||
return manuf;
|
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);
|
||||||
|
|
|
@ -47,6 +47,17 @@ void variant_nhlt_init(struct nhlt *nhlt);
|
||||||
/* Modify devictree settings during ramstage. */
|
/* Modify devictree settings during ramstage. */
|
||||||
struct device;
|
struct device;
|
||||||
void variant_update_devtree(struct device *dev);
|
void variant_update_devtree(struct device *dev);
|
||||||
|
/**
|
||||||
|
* variant_ext_usb_status() - Get status of externally visible USB ports
|
||||||
|
* @port_type: Type of USB port i.e. USB2/USB3
|
||||||
|
* @port_id: USB Port ID
|
||||||
|
*
|
||||||
|
* This function is supplied by the mainboard/variant to SoC's XHCI driver to
|
||||||
|
* identify the status of externally visible USB ports.
|
||||||
|
*
|
||||||
|
* Return: true if the port is present, false if the port is absent.
|
||||||
|
*/
|
||||||
|
bool variant_ext_usb_status(unsigned int port_type, unsigned int port_id);
|
||||||
|
|
||||||
/* Get no touchscreen SKU ID. */
|
/* Get no touchscreen SKU ID. */
|
||||||
bool no_touchscreen_sku(uint32_t sku_id);
|
bool no_touchscreen_sku(uint32_t sku_id);
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#include <baseboard/variants.h>
|
#include <baseboard/variants.h>
|
||||||
#include <sar.h>
|
#include <sar.h>
|
||||||
|
|
||||||
|
#define RIGHT_USB_C_PORT_ID 4
|
||||||
|
|
||||||
const char *get_wifi_sar_cbfs_filename(void)
|
const char *get_wifi_sar_cbfs_filename(void)
|
||||||
{
|
{
|
||||||
const char *filename = NULL;
|
const char *filename = NULL;
|
||||||
|
@ -26,3 +28,12 @@ const char *get_wifi_sar_cbfs_filename(void)
|
||||||
|
|
||||||
return filename;
|
return filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool variant_ext_usb_status(unsigned int port_type, unsigned int port_id)
|
||||||
|
{
|
||||||
|
uint32_t sku_id = get_board_sku();
|
||||||
|
|
||||||
|
if (sku_id == 2 && port_id == RIGHT_USB_C_PORT_ID)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue