/* SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef __DRIVERS_INTEL_USB4_PCIE_H__ #define __DRIVERS_INTEL_USB4_PCIE_H__ /* * This virtual generic driver provides the ACPI properties for an * Intel USB4/TBT PCIe Root Port which is already declared in the DSDT, * * The associated USB4 port number is obtained from the generic ID and * the related host interface (DMA) device is provided by the devicetree. * * The "ExternalFacingPort", and "HotPlugSupportInD3" properties are defined at * https://docs.microsoft.com/en-us/windows-hardware/drivers/pci/dsd-for-pcie-root-ports * * Example: PCIe Root Port 2 via USB4 host interface 1 port 0: * * device pci 0d.3 alias tbt_dma1 on end # \_SB.PCI0.TDM1 * device pci 07.2 alias tbt_pcie_rp2 on # \_SB.PCI0.TRP2 * chip soc/intel/common/block/usb4 * use tbt_dma1 as usb4_port # USB4 host interface for this root port * device generic 0 on end # USB4 port number on this host interface * end * end * * The host interface and PCIe Root Port are declared in the DSDT: * * Scope (\_SB.PCI0) { * Device (TDM1) { * Name (_ADR, 0x000d0003) * } * Device (TRP2) { * Name (_ADR, 0x00070002) * } * } * * This driver will provide the following properties in the SSDT: * * Scope (\_SB.PCI0.TRP2) { * Name (_DSD, Package () { * ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), * Package () { * Package () { "usb4-host-interface", \_SB.PCI0.TDM1 }, * Package () { "usb4-port-number", 0 }, * }, * ToUUID ("6211e2c0-58a3-4af3-90e1-927a4e0c55a4"), * Package () { * Package () { "HotPlugSupportInD3", 1 }, * }, * ToUUID ("efcc06cc-73ac-4bc3-bff0-76143807c389"), * Package () { * Package () { "ExternalFacingPort", 1 }, * }, * } * } */ struct soc_intel_common_block_usb4_config { const char *desc; /* USB4 host interface (DMA device) that this PCIe root port is routed to. */ DEVTREE_CONST struct device *usb4_port; }; #endif /* __DRIVERS_INTEL_USB4_PCIE_H__ */