soc/intel: Add support for USB ACPI code generation
To support generating USB devices in ACPI the platform needs to know how to determine a device name for each USB port, and for any root hubs that may be present. Recent Intel platforms route all ports to an XHCI controller through a root hub. This is supported by considering the root hub to be USB port type 0, the USB 2.0 ports to be type 2, and the USB 3.0 ports to be type 3. This was tested with a Kaby Lake platform by adding entries to the devicetree and checking the resulting SSDT. Change-Id: I527a63bdc64f9243fe57487363ee6d5f60be84ca Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://review.coreboot.org/26174 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
committed by
Patrick Georgi
parent
4721f43390
commit
bf713b04b6
@@ -34,6 +34,7 @@
|
||||
#include <intelblocks/xdci.h>
|
||||
#include <fsp/api.h>
|
||||
#include <fsp/util.h>
|
||||
#include <intelblocks/acpi.h>
|
||||
#include <intelblocks/cpulib.h>
|
||||
#include <intelblocks/itss.h>
|
||||
#include <intelblocks/pmclib.h>
|
||||
@@ -50,11 +51,44 @@
|
||||
|
||||
#include "chip.h"
|
||||
|
||||
static const char *soc_acpi_name(const struct device *dev)
|
||||
const char *soc_acpi_name(const struct device *dev)
|
||||
{
|
||||
if (dev->path.type == DEVICE_PATH_DOMAIN)
|
||||
return "PCI0";
|
||||
|
||||
if (dev->path.type == DEVICE_PATH_USB) {
|
||||
switch (dev->path.usb.port_type) {
|
||||
case 0:
|
||||
/* Root Hub */
|
||||
return "RHUB";
|
||||
case 2:
|
||||
/* USB2 ports */
|
||||
switch (dev->path.usb.port_id) {
|
||||
case 0: return "HS01";
|
||||
case 1: return "HS02";
|
||||
case 2: return "HS03";
|
||||
case 3: return "HS04";
|
||||
case 4: return "HS05";
|
||||
case 5: return "HS06";
|
||||
case 6: return "HS07";
|
||||
case 7: return "HS08";
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
/* USB3 ports */
|
||||
switch (dev->path.usb.port_id) {
|
||||
case 0: return "SS01";
|
||||
case 1: return "SS02";
|
||||
case 2: return "SS03";
|
||||
case 3: return "SS04";
|
||||
case 4: return "SS05";
|
||||
case 5: return "SS06";
|
||||
}
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (dev->path.type != DEVICE_PATH_PCI)
|
||||
return NULL;
|
||||
|
||||
|
Reference in New Issue
Block a user