Hi Simon,
On Wed, Apr 7, 2021 at 12:32 PM Simon Glass <[email protected]> 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 <[email protected]>
> ---
>
> 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