ARM: 6058/1: Add support for PCI domains
This patch adds support for PCI domains on ARM platforms. Also, protect asm/mach/pci.h from multiple inclustions, otherwise build fails because of pci_domain_nr() and pci_proc_domain() redefinitions. Signed-off-by: Anton Vorontsov <avorontsov@mvista.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
e193ba290f
commit
52882173cf
|
@ -1074,6 +1074,10 @@ 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
|
||||
bool
|
||||
depends on PCI
|
||||
|
||||
config PCI_SYSCALL
|
||||
def_bool PCI
|
||||
|
||||
|
|
|
@ -8,10 +8,16 @@
|
|||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_MACH_PCI_H
|
||||
#define __ASM_MACH_PCI_H
|
||||
|
||||
struct pci_sys_data;
|
||||
struct pci_bus;
|
||||
|
||||
struct hw_pci {
|
||||
#ifdef CONFIG_PCI_DOMAINS
|
||||
int domain;
|
||||
#endif
|
||||
struct list_head buses;
|
||||
int nr_controllers;
|
||||
int (*setup)(int nr, struct pci_sys_data *);
|
||||
|
@ -26,6 +32,9 @@ struct hw_pci {
|
|||
* Per-controller structure
|
||||
*/
|
||||
struct pci_sys_data {
|
||||
#ifdef CONFIG_PCI_DOMAINS
|
||||
int domain;
|
||||
#endif
|
||||
struct list_head node;
|
||||
int busnr; /* primary bus number */
|
||||
u64 mem_offset; /* bus->cpu memory mapping offset */
|
||||
|
@ -70,3 +79,5 @@ extern int pci_v3_setup(int nr, struct pci_sys_data *);
|
|||
extern struct pci_bus *pci_v3_scan_bus(int nr, struct pci_sys_data *);
|
||||
extern void pci_v3_preinit(void);
|
||||
extern void pci_v3_postinit(void);
|
||||
|
||||
#endif /* __ASM_MACH_PCI_H */
|
||||
|
|
|
@ -4,8 +4,23 @@
|
|||
#ifdef __KERNEL__
|
||||
#include <asm-generic/pci-dma-compat.h>
|
||||
|
||||
#include <asm/mach/pci.h> /* for pci_sys_data */
|
||||
#include <mach/hardware.h> /* for PCIBIOS_MIN_* */
|
||||
|
||||
#ifdef CONFIG_PCI_DOMAINS
|
||||
static inline int pci_domain_nr(struct pci_bus *bus)
|
||||
{
|
||||
struct pci_sys_data *root = bus->sysdata;
|
||||
|
||||
return root->domain;
|
||||
}
|
||||
|
||||
static inline int pci_proc_domain(struct pci_bus *bus)
|
||||
{
|
||||
return pci_domain_nr(bus);
|
||||
}
|
||||
#endif /* CONFIG_PCI_DOMAINS */
|
||||
|
||||
#ifdef CONFIG_PCI_HOST_ITE8152
|
||||
/* ITE bridge requires setting latency timer to avoid early bus access
|
||||
termination by PIC bus mater devices
|
||||
|
|
|
@ -527,6 +527,9 @@ static void __init pcibios_init_hw(struct hw_pci *hw)
|
|||
if (!sys)
|
||||
panic("PCI: unable to allocate sys data!");
|
||||
|
||||
#ifdef CONFIG_PCI_DOMAINS
|
||||
sys->domain = hw->domain;
|
||||
#endif
|
||||
sys->hw = hw;
|
||||
sys->busnr = busnr;
|
||||
sys->swizzle = hw->swizzle;
|
||||
|
|
Loading…
Reference in New Issue