[PATCH] PCI Domains Support
Richard Liu
richardliu at ms1.techarea.org
Wed Dec 30 22:37:10 EST 2009
Dear Simon:
Regenerate the patch.
--
arch/arm/Kconfig | 3 +++
arch/arm/include/asm/mach/pci.h | 6 ++++++
arch/arm/include/asm/pci.h | 5 +++++
arch/arm/kernel/bios32.c | 17 +++++++++++++++++
4 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 233a222..cd3756c 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -957,6 +957,9 @@ config PCI
your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
VESA. If you have PCI, say Y, otherwise N.
+config PCI_DOMAINS
+ depends on PCI
+
config PCI_SYSCALL
def_bool PCI
diff --git a/arch/arm/include/asm/mach/pci.h
b/arch/arm/include/asm/mach/pci.h
index a38bdc7..e6f3ad7 100644
--- a/arch/arm/include/asm/mach/pci.h
+++ b/arch/arm/include/asm/mach/pci.h
@@ -20,6 +20,9 @@ struct hw_pci {
void (*postinit)(void);
u8 (*swizzle)(struct pci_dev *dev, u8 *pin);
int (*map_irq)(struct pci_dev *dev, u8 slot, u8 pin);
+#ifdef CONFIG_PCI_DOMAINS
+ int nr_domains;
+#endif
};
/*
@@ -37,6 +40,9 @@ struct pci_sys_data {
/* IRQ mapping */
int (*map_irq)(struct pci_dev *, u8, u8);
struct hw_pci *hw;
+#ifdef CONFIG_PCI_DOMAINS
+ int domain;
+#endif
};
/*
diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h
index 226cddd..6937d58 100644
--- a/arch/arm/include/asm/pci.h
+++ b/arch/arm/include/asm/pci.h
@@ -23,6 +23,11 @@ static inline void pcibios_penalize_isa_irq(int irq,
int active)
/* We don't do dynamic PCI IRQ allocation */
}
+#ifdef CONFIG_PCI_DOMAINS
+int pci_domain_nr(struct pci_bus *bus);
+int pci_proc_domain(struct pci_bus *bus);
+#endif
+
/*
* The PCI address space does equal the physical memory address space.
* The networking and block device layers use this boolean for bounce
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index 8096819..3a784a1 100644
--- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c
@@ -531,6 +531,7 @@ static void __init pcibios_init_hw(struct hw_pci *hw)
sys->busnr = busnr;
sys->swizzle = hw->swizzle;
sys->map_irq = hw->map_irq;
+ sys->domain = hw->nr_domains;
sys->resource[0] = &ioport_resource;
sys->resource[1] = &iomem_resource;
@@ -694,3 +695,19 @@ int pci_mmap_page_range(struct pci_dev *dev, struct
vm_area_struct *vma,
return 0;
}
+#ifdef CONFIG_PCI_DOMAINS
+int pci_domain_nr(struct pci_bus *bus)
+{
+
+ struct pci_sys_data *sd = bus->sysdata;
+ return sd->domain;
+
+}
+EXPORT_SYMBOL(pci_domain_nr);
+
+int pci_proc_domain(struct pci_bus *bus)
+{
+ return pci_domain_nr(bus);
+}
+EXPORT_SYMBOL(pci_proc_domain);
+#endif
More information about the linux-arm-kernel
mailing list