Introduce an additional private data field in `dw_pcie_priv` to allow vendors to store custom data without interfering with bridge->priv. Also add get/set pair to make accesing that private data less cumbersome.
Signed-off-by: Mykyta Poturai <mykyta_potu...@epam.com> Acked-by: Stefano Stabellini <sstabell...@kernel.org> --- v1->v2: * add Stefano's AB --- xen/arch/arm/pci/pci-designware.c | 12 ++++++++++++ xen/arch/arm/pci/pci-designware.h | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/xen/arch/arm/pci/pci-designware.c b/xen/arch/arm/pci/pci-designware.c index 47dd2dd4c0..0bd67524ac 100644 --- a/xen/arch/arm/pci/pci-designware.c +++ b/xen/arch/arm/pci/pci-designware.c @@ -403,3 +403,15 @@ dw_pcie_host_probe(struct dt_device_node *dev, const void *data, return bridge; } + +void *dw_pcie_get_priv(struct pci_host_bridge *bridge) +{ + struct dw_pcie_priv *priv = bridge->priv; + return priv->priv; +} + +void dw_pcie_set_priv(struct pci_host_bridge *bridge, void *other) +{ + struct dw_pcie_priv *priv = bridge->priv; + priv->priv = other; +} diff --git a/xen/arch/arm/pci/pci-designware.h b/xen/arch/arm/pci/pci-designware.h index 7efb1dc9a2..b9deb3b138 100644 --- a/xen/arch/arm/pci/pci-designware.h +++ b/xen/arch/arm/pci/pci-designware.h @@ -66,8 +66,12 @@ struct dw_pcie_priv { bool iatu_unroll_enabled; void __iomem *atu_base; unsigned int version; + void *priv; }; +void *dw_pcie_get_priv(struct pci_host_bridge *bridge); +void dw_pcie_set_priv(struct pci_host_bridge *bridge, void *other); + void dw_pcie_set_version(struct pci_host_bridge *bridge, unsigned int version); void __iomem *dw_pcie_child_map_bus(struct pci_host_bridge *bridge, -- 2.34.1