diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-03-10 12:49:16 +0000 | 
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-05-13 17:12:17 +0100 | 
| commit | c23bfc3835173f5229b2503e3b616001a28affad (patch) | |
| tree | 109f74ea29224587bead91289f55f2d30032b615 /arch/arm/include | |
| parent | daeb4c0c3bf2df72d0cd6e4330bad9e2e520552b (diff) | |
| download | olio-linux-3.10-c23bfc3835173f5229b2503e3b616001a28affad.tar.xz olio-linux-3.10-c23bfc3835173f5229b2503e3b616001a28affad.zip  | |
ARM: PCI: provide a default bus scan implementation
Most PCI implementations perform simple root bus scanning.  Rather than
having each group of platforms provide a duplicated bus scan function,
provide the PCI configuration ops structure via the hw_pci structure,
and call the root bus scanning function from core ARM PCI code.
Acked-by: Krzysztof HaĆasa <khc@pm.waw.pl>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/include')
| -rw-r--r-- | arch/arm/include/asm/hardware/it8152.h | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/mach/pci.h | 10 | 
2 files changed, 7 insertions, 5 deletions
diff --git a/arch/arm/include/asm/hardware/it8152.h b/arch/arm/include/asm/hardware/it8152.h index 73f84fa4f36..d36a73d7c0e 100644 --- a/arch/arm/include/asm/hardware/it8152.h +++ b/arch/arm/include/asm/hardware/it8152.h @@ -110,6 +110,6 @@ extern void it8152_irq_demux(unsigned int irq, struct irq_desc *desc);  extern void it8152_init_irq(void);  extern int it8152_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);  extern int it8152_pci_setup(int nr, struct pci_sys_data *sys); -extern struct pci_bus *it8152_pci_scan_bus(int nr, struct pci_sys_data *sys); +extern struct pci_ops it8152_ops;  #endif /* __ASM_HARDWARE_IT8152_H */ diff --git a/arch/arm/include/asm/mach/pci.h b/arch/arm/include/asm/mach/pci.h index ff8146a6968..b4b94b4341f 100644 --- a/arch/arm/include/asm/mach/pci.h +++ b/arch/arm/include/asm/mach/pci.h @@ -12,6 +12,7 @@  #define __ASM_MACH_PCI_H  struct pci_sys_data; +struct pci_ops;  struct pci_bus;  struct hw_pci { @@ -19,6 +20,7 @@ struct hw_pci {  	int		domain;  #endif  	struct list_head buses; +	struct pci_ops	*ops;  	int		nr_controllers;  	int		(*setup)(int nr, struct pci_sys_data *);  	struct pci_bus *(*scan)(int nr, struct pci_sys_data *); @@ -56,22 +58,22 @@ void pci_common_init(struct hw_pci *);  /*   * PCI controllers   */ +extern struct pci_ops iop3xx_ops;  extern int iop3xx_pci_setup(int nr, struct pci_sys_data *); -extern struct pci_bus *iop3xx_pci_scan_bus(int nr, struct pci_sys_data *);  extern void iop3xx_pci_preinit(void);  extern void iop3xx_pci_preinit_cond(void); +extern struct pci_ops dc21285_ops;  extern int dc21285_setup(int nr, struct pci_sys_data *); -extern struct pci_bus *dc21285_scan_bus(int nr, struct pci_sys_data *);  extern void dc21285_preinit(void);  extern void dc21285_postinit(void); +extern struct pci_ops via82c505_ops;  extern int via82c505_setup(int nr, struct pci_sys_data *); -extern struct pci_bus *via82c505_scan_bus(int nr, struct pci_sys_data *);  extern void via82c505_init(void *sysdata); +extern struct pci_ops pci_v3_ops;  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);  |