/* SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef _ASM_MICROBLAZE_PCI_BRIDGE_H #define _ASM_MICROBLAZE_PCI_BRIDGE_H #ifdef __KERNEL__ /* */ #include #include #include struct device_node; #ifdef CONFIG_PCI extern struct list_head hose_list; extern int pcibios_vaddr_is_ioport(void __iomem *address); #else static inline int pcibios_vaddr_is_ioport(void __iomem *address) { return 0; } #endif /* * Structure of a PCI controller (host bridge) */ struct pci_controller { struct pci_bus *bus; struct device_node *dn; struct list_head list_node; struct device *parent; int first_busno; int last_busno; void __iomem *io_base_virt; resource_size_t io_base_phys; /* Some machines (PReP) have a non 1:1 mapping of * the PCI memory space in the CPU bus space */ resource_size_t pci_mem_offset; /* Currently, we limit ourselves to 1 IO range and 3 mem * ranges since the common pci_bus structure can't handle more */ struct resource io_resource; }; #ifdef CONFIG_PCI static inline struct pci_controller *pci_bus_to_host(const struct pci_bus *bus) { return bus->sysdata; } static inline int isa_vaddr_is_ioport(void __iomem *address) { /* No specific ISA handling on ppc32 at this stage, it * all goes through PCI */ return 0; } #endif /* CONFIG_PCI */ #endif /* __KERNEL__ */ #endif /* _ASM_MICROBLAZE_PCI_BRIDGE_H */