• Lizhi Hou's avatar
    PCI: Create device tree node for bridge · 407d1a51
    Lizhi Hou authored
    The PCI endpoint device such as Xilinx Alveo PCI card maps the register
    spaces from multiple hardware peripherals to its PCI BAR. Normally,
    the PCI core discovers devices and BARs using the PCI enumeration process.
    There is no infrastructure to discover the hardware peripherals that are
    present in a PCI device, and which can be accessed through the PCI BARs.
    
    Apparently, the device tree framework requires a device tree node for the
    PCI device. Thus, it can generate the device tree nodes for hardware
    peripherals underneath. Because PCI is self discoverable bus, there might
    not be a device tree node created for PCI devices. Furthermore, if the PCI
    device is hot pluggable, when it is plugged in, the device tree nodes for
    its parent bridges are required. Add support to generate device tree node
    for PCI bridges.
    
    Add an of_pci_make_dev_node() interface that can be used to create device
    tree node for PCI devices.
    
    Add a PCI_DYNAMIC_OF_NODES config option. When the option is turned on,
    the kernel will generate device tree nodes for PCI bridges unconditionally.
    
    Initially, add the basic properties for the dynamically generated device
    tree nodes which include #address-cells, #size-cells, device_type,
    compatible, ranges, reg.
    Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: default avatarLizhi Hou <lizhi.hou@amd.com>
    Link: https://lore.kernel.org/r/1692120000-46900-3-git-send-email-lizhi.hou@amd.comSigned-off-by: default avatarRob Herring <robh@kernel.org>
    407d1a51
pci.h 26.6 KB