x86 PCI DT details: =================== Some options are available to affect how PCI operates on x86. Optional properties: - u-boot,skip-auto-config-until-reloc : Don't set up PCI configuration until after U-Boot has relocated. Normally if PCI is used before relocation, this happens before relocation also. Some platforms set up static configuration in TPL/SPL to reduce code size and boot time, since these phases only know about a small subset of PCI devices. For PCI devices the following optional property is available: - pci,no-autoconfig : Don't automatically configure this PCI device at all. This is used when the device is statically configured and must maintain this same config throughout the boot process. An example is a serial UART being used to debug PCI configuration, since reconfiguring it stops the UART from working until the driver is re-probed, and this can cause output to be lost. This should not generally be used in production code, although it is often harmless. - u-boot,pci-pre-reloc : List of vendor/device IDs to bind before relocation, even if they are not bridges. This is useful if the device is needed (e.g. a UART). The format is 0xvvvvdddd where d is the device ID and v is the vendor ID. Example: pci { compatible = "pci-x86"; #address-cells = <3>; #size-cells = <2>; u-boot,dm-pre-reloc; ranges = <0x02000000 0x0 0xc0000000 0xc0000000 0 0x10000000 0x42000000 0x0 0xb0000000 0xb0000000 0 0x10000000 0x01000000 0x0 0x1000 0x1000 0 0xefff>; u-boot,skip-auto-config-until-reloc; u-boot,pci-pre-reloc = < PCI_VENDEV(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_APL_UART2)>; serial: serial@18,2 { reg = <0x0200c210 0 0 0 0>; u-boot,dm-pre-reloc; compatible = "intel,apl-ns16550"; early-regs = <0xde000000 0x20>; reg-shift = <2>; clock-frequency = <1843200>; current-speed = <115200>; pci,no-autoconfig; }; };