diff --git a/src/mainboard/google/beltino/devicetree.cb b/src/mainboard/google/beltino/devicetree.cb index af09000042..95f108402b 100644 --- a/src/mainboard/google/beltino/devicetree.cb +++ b/src/mainboard/google/beltino/devicetree.cb @@ -68,6 +68,9 @@ chip northbridge/intel/haswell # Disable PCIe CLKOUT 1,5 and CLKOUT_XDP register "icc_clock_disable" = "0x01220000" + # Route all USB ports to XHCI per default + register "xhci_default" = "1" + device pci 13.0 off end # Smart Sound Audio DSP device pci 14.0 on end # USB3 XHCI device pci 15.0 on end # Serial I/O DMA diff --git a/src/southbridge/intel/lynxpoint/chip.h b/src/southbridge/intel/lynxpoint/chip.h index 1b4ac2a355..37b009d8a4 100644 --- a/src/southbridge/intel/lynxpoint/chip.h +++ b/src/southbridge/intel/lynxpoint/chip.h @@ -104,6 +104,9 @@ struct southbridge_intel_lynxpoint_config { * [24] = CLKOUT_ITPXDP */ uint32_t icc_clock_disable; + + /* Route USB ports to XHCI per default */ + uint8_t xhci_default; }; extern struct chip_operations southbridge_intel_lynxpoint_ops; diff --git a/src/southbridge/intel/lynxpoint/usb_xhci.c b/src/southbridge/intel/lynxpoint/usb_xhci.c index 405277c4fc..41c29f9f10 100644 --- a/src/southbridge/intel/lynxpoint/usb_xhci.c +++ b/src/southbridge/intel/lynxpoint/usb_xhci.c @@ -26,6 +26,8 @@ #include #include "pch.h" +typedef struct southbridge_intel_lynxpoint_config config_t; + static u32 usb_xhci_mem_base(device_t dev) { u32 mem_base = pci_read_config32(dev, PCI_BASE_ADDRESS_0); @@ -294,6 +296,7 @@ static void usb_xhci_init(device_t dev) u32 reg32; u16 reg16; u32 mem_base = usb_xhci_mem_base(dev); + config_t *config = dev->chip_info; /* D20:F0:74h[1:0] = 00b (set D0 state) */ reg16 = pci_read_config16(dev, XHCI_PWR_CTL_STS); @@ -357,8 +360,11 @@ static void usb_xhci_init(device_t dev) /* Reset ports that are disabled or * polling before returning to the OS. */ usb_xhci_reset_usb3(dev, 0); - } + } else #endif + /* Route all ports to XHCI */ + if (config->xhci_default) + outb(0xca, 0xb2); } static void usb_xhci_set_subsystem(device_t dev, unsigned vendor,