mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-04 10:56:49 +07:00
MIPS: PCI: Support for CONFIG_PCI_DOMAINS_GENERIC
Introduce support for CONFIG_PCI_DOMAINS_GENERIC, allowing for platforms to make use of generic PCI domains instead of the MIPS-specific implementation. The set_pci_need_domain_info function is introduced to abstract away the removed need_domain_info field in struct pci_controller, and pcibios_scanbus is adjusted to use the pci_domain_nr accessor instead of directly accessing the index field. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/14341/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
23dac14d05
commit
88555b4819
@ -2995,6 +2995,9 @@ config HT_PCI
|
|||||||
config PCI_DOMAINS
|
config PCI_DOMAINS
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
config PCI_DOMAINS_GENERIC
|
||||||
|
bool
|
||||||
|
|
||||||
source "drivers/pci/Kconfig"
|
source "drivers/pci/Kconfig"
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -39,10 +39,12 @@ struct pci_controller {
|
|||||||
struct resource *busn_resource;
|
struct resource *busn_resource;
|
||||||
unsigned long busn_offset;
|
unsigned long busn_offset;
|
||||||
|
|
||||||
|
#ifndef CONFIG_PCI_DOMAINS_GENERIC
|
||||||
unsigned int index;
|
unsigned int index;
|
||||||
/* For compatibility with current (as of July 2003) pciutils
|
/* For compatibility with current (as of July 2003) pciutils
|
||||||
and XFree86. Eventually will be removed. */
|
and XFree86. Eventually will be removed. */
|
||||||
unsigned int need_domain_info;
|
unsigned int need_domain_info;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Optional access methods for reading/writing the bus number
|
/* Optional access methods for reading/writing the bus number
|
||||||
of the PCI controller */
|
of the PCI controller */
|
||||||
@ -101,7 +103,18 @@ struct pci_dev;
|
|||||||
*/
|
*/
|
||||||
#define PCI_DMA_BUS_IS_PHYS (1)
|
#define PCI_DMA_BUS_IS_PHYS (1)
|
||||||
|
|
||||||
#ifdef CONFIG_PCI_DOMAINS
|
#ifdef CONFIG_PCI_DOMAINS_GENERIC
|
||||||
|
static inline int pci_proc_domain(struct pci_bus *bus)
|
||||||
|
{
|
||||||
|
return pci_domain_nr(bus);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void set_pci_need_domain_info(struct pci_controller *hose,
|
||||||
|
int need_domain_info)
|
||||||
|
{
|
||||||
|
/* nothing to do */
|
||||||
|
}
|
||||||
|
#elif defined(CONFIG_PCI_DOMAINS)
|
||||||
#define pci_domain_nr(bus) ((struct pci_controller *)(bus)->sysdata)->index
|
#define pci_domain_nr(bus) ((struct pci_controller *)(bus)->sysdata)->index
|
||||||
|
|
||||||
static inline int pci_proc_domain(struct pci_bus *bus)
|
static inline int pci_proc_domain(struct pci_bus *bus)
|
||||||
@ -109,6 +122,12 @@ static inline int pci_proc_domain(struct pci_bus *bus)
|
|||||||
struct pci_controller *hose = bus->sysdata;
|
struct pci_controller *hose = bus->sysdata;
|
||||||
return hose->need_domain_info;
|
return hose->need_domain_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void set_pci_need_domain_info(struct pci_controller *hose,
|
||||||
|
int need_domain_info)
|
||||||
|
{
|
||||||
|
hose->need_domain_info = need_domain_info;
|
||||||
|
}
|
||||||
#endif /* CONFIG_PCI_DOMAINS */
|
#endif /* CONFIG_PCI_DOMAINS */
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
@ -95,8 +95,8 @@ static void pcibios_scanbus(struct pci_controller *hose)
|
|||||||
&resources);
|
&resources);
|
||||||
hose->bus = bus;
|
hose->bus = bus;
|
||||||
|
|
||||||
need_domain_info = need_domain_info || hose->index;
|
need_domain_info = need_domain_info || pci_domain_nr(bus);
|
||||||
hose->need_domain_info = need_domain_info;
|
set_pci_need_domain_info(hose, need_domain_info);
|
||||||
|
|
||||||
if (!bus) {
|
if (!bus) {
|
||||||
pci_free_resource_list(&resources);
|
pci_free_resource_list(&resources);
|
||||||
|
Loading…
Reference in New Issue
Block a user