Hi Simon, On Wed, Apr 7, 2021 at 12:32 PM Simon Glass <s...@chromium.org> wrote: > > At present only bridge devices are bound before relocation, to save space > in pre-relocation memory. In some cases we do actually want to bind a > device, e.g. because it provides the console UART. Add a devicetree > binding to support this. > > Use the PCI_VENDEV() macro to encode the cell value. This is present in > U-Boot but not used, so move it to the binding header-file. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > doc/device-tree-bindings/pci/x86-pci.txt | 7 ++++- > drivers/pci/pci-uclass.c | 33 +++++++++++++++++++++++- > include/dt-bindings/pci/pci.h | 12 +++++++++ > include/pci.h | 1 - > 4 files changed, 50 insertions(+), 3 deletions(-) > create mode 100644 include/dt-bindings/pci/pci.h > > diff --git a/doc/device-tree-bindings/pci/x86-pci.txt > b/doc/device-tree-bindings/pci/x86-pci.txt > index 95e370b3e72..cf4e5ed595a 100644 > --- a/doc/device-tree-bindings/pci/x86-pci.txt > +++ b/doc/device-tree-bindings/pci/x86-pci.txt > @@ -20,6 +20,10 @@ For PCI devices the following optional property is > available: > 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.
Can we reuse "u-boot,dm-pre-reloc" to do such thing? The following is an example from arch/x86/dts/crownbay.dts pciuart0: uart@a,1 { compatible = "pci8086,8811.00", "pci8086,8811", "pciclass,070002", "pciclass,0700", "ns16550"; u-boot,dm-pre-reloc; reg = <0x00025100 0x0 0x0 0x0 0x0 0x01025110 0x0 0x0 0x0 0x0>; reg-shift = <0>; clock-frequency = <1843200>; current-speed = <115200>; }; Regards, Bin