Commit 6998d718 authored by Anton Blanchard's avatar Anton Blanchard Committed by Linus Torvalds

[PATCH] ppc64: pci cleanup

Cleanup ppc64 pci code.
Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent b8ca38f1
...@@ -292,7 +292,6 @@ void iSeries_pcibios_init(void) ...@@ -292,7 +292,6 @@ void iSeries_pcibios_init(void)
iomm_table_initialize(); iomm_table_initialize();
find_and_init_phbs(); find_and_init_phbs();
io_page_mask = -1; io_page_mask = -1;
/* pci_assign_all_busses = 0; SFRXXX*/
PPCDBG(PPCDBG_BUSWALK, "iSeries_pcibios_init Exit.\n"); PPCDBG(PPCDBG_BUSWALK, "iSeries_pcibios_init Exit.\n");
} }
......
...@@ -32,9 +32,6 @@ ...@@ -32,9 +32,6 @@
#define DBG(x...) #define DBG(x...)
#endif #endif
extern int pci_probe_only;
extern int pci_read_irq_line(struct pci_dev *pci_dev);
static struct pci_controller *u3_agp, *u3_ht; static struct pci_controller *u3_agp, *u3_ht;
static int __init fixup_one_level_bus_range(struct device_node *node, int higher) static int __init fixup_one_level_bus_range(struct device_node *node, int higher)
...@@ -377,7 +374,7 @@ void __init maple_pcibios_fixup(void) ...@@ -377,7 +374,7 @@ void __init maple_pcibios_fixup(void)
DBG(" -> maple_pcibios_fixup\n"); DBG(" -> maple_pcibios_fixup\n");
while ((dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) for_each_pci_dev(dev)
pci_read_irq_line(dev); pci_read_irq_line(dev);
/* Do the mapping of the IO space */ /* Do the mapping of the IO space */
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/threads.h> #include <linux/threads.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/delay.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/bootmem.h> #include <linux/bootmem.h>
...@@ -37,7 +36,6 @@ ...@@ -37,7 +36,6 @@
#include <asm/prom.h> #include <asm/prom.h>
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/pci-bridge.h> #include <asm/pci-bridge.h>
#include <asm/ppcdebug.h>
#include <asm/naca.h> #include <asm/naca.h>
#include <asm/iommu.h> #include <asm/iommu.h>
#include <asm/rtas.h> #include <asm/rtas.h>
...@@ -53,7 +51,6 @@ static int ibm_write_pci_config; ...@@ -53,7 +51,6 @@ static int ibm_write_pci_config;
static int s7a_workaround; static int s7a_workaround;
extern unsigned long pci_probe_only;
extern struct mpic *pSeries_mpic; extern struct mpic *pSeries_mpic;
static int rtas_read_config(struct device_node *dn, int where, int size, u32 *val) static int rtas_read_config(struct device_node *dn, int where, int size, u32 *val)
...@@ -248,17 +245,16 @@ static enum phb_types get_phb_type(struct device_node *dev) ...@@ -248,17 +245,16 @@ static enum phb_types get_phb_type(struct device_node *dev)
return type; return type;
} }
int get_phb_reg_prop(struct device_node *dev, unsigned int addr_size_words, static int get_phb_reg_prop(struct device_node *dev,
unsigned int addr_size_words,
struct reg_property64 *reg) struct reg_property64 *reg)
{ {
unsigned int *ui_ptr = NULL, len; unsigned int *ui_ptr = NULL, len;
/* Found a PHB, now figure out where his registers are mapped. */ /* Found a PHB, now figure out where his registers are mapped. */
ui_ptr = (unsigned int *) get_property(dev, "reg", &len); ui_ptr = (unsigned int *) get_property(dev, "reg", &len);
if (ui_ptr == NULL) { if (ui_ptr == NULL)
PPCDBG(PPCDBG_PHBINIT, "\tget reg failed.\n");
return 1; return 1;
}
if (addr_size_words == 1) { if (addr_size_words == 1) {
reg->address = ((struct reg_property32 *)ui_ptr)->address; reg->address = ((struct reg_property32 *)ui_ptr)->address;
...@@ -270,7 +266,8 @@ int get_phb_reg_prop(struct device_node *dev, unsigned int addr_size_words, ...@@ -270,7 +266,8 @@ int get_phb_reg_prop(struct device_node *dev, unsigned int addr_size_words,
return 0; return 0;
} }
int phb_set_bus_ranges(struct device_node *dev, struct pci_controller *phb) static int phb_set_bus_ranges(struct device_node *dev,
struct pci_controller *phb)
{ {
int *bus_range; int *bus_range;
unsigned int len; unsigned int len;
......
...@@ -16,14 +16,9 @@ ...@@ -16,14 +16,9 @@
#include <linux/config.h> #include <linux/config.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/delay.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/capability.h>
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/bootmem.h> #include <linux/bootmem.h>
#include <linux/module.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/list.h> #include <linux/list.h>
...@@ -33,11 +28,8 @@ ...@@ -33,11 +28,8 @@
#include <asm/pci-bridge.h> #include <asm/pci-bridge.h>
#include <asm/byteorder.h> #include <asm/byteorder.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/uaccess.h>
#include <asm/ppcdebug.h>
#include <asm/naca.h>
#include <asm/iommu.h>
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/udbg.h>
#include "pci.h" #include "pci.h"
...@@ -50,8 +42,10 @@ ...@@ -50,8 +42,10 @@
unsigned long pci_probe_only = 1; unsigned long pci_probe_only = 1;
unsigned long pci_assign_all_buses = 0; unsigned long pci_assign_all_buses = 0;
/* legal IO pages under MAX_ISA_PORT. This is to ensure we don't touch /*
devices we don't have access to. */ * legal IO pages under MAX_ISA_PORT. This is to ensure we don't touch
* devices we don't have access to.
*/
unsigned long io_page_mask; unsigned long io_page_mask;
EXPORT_SYMBOL(io_page_mask); EXPORT_SYMBOL(io_page_mask);
...@@ -702,7 +696,7 @@ void __init pci_setup_phb_io(struct pci_controller *hose, int primary) ...@@ -702,7 +696,7 @@ void __init pci_setup_phb_io(struct pci_controller *hose, int primary)
struct device_node *isa_dn; struct device_node *isa_dn;
hose->io_base_virt = reserve_phb_iospace(size); hose->io_base_virt = reserve_phb_iospace(size);
PPCDBG(PPCDBG_PHBINIT, "phb%d io_base_phys 0x%lx io_base_virt 0x%lx\n", DBG("phb%d io_base_phys 0x%lx io_base_virt 0x%lx\n",
hose->global_number, hose->io_base_phys, hose->global_number, hose->io_base_phys,
(unsigned long) hose->io_base_virt); (unsigned long) hose->io_base_virt);
...@@ -733,7 +727,7 @@ void __devinit pci_setup_phb_io_dynamic(struct pci_controller *hose) ...@@ -733,7 +727,7 @@ void __devinit pci_setup_phb_io_dynamic(struct pci_controller *hose)
hose->io_base_virt = __ioremap(hose->io_base_phys, size, hose->io_base_virt = __ioremap(hose->io_base_phys, size,
_PAGE_NO_CACHE); _PAGE_NO_CACHE);
PPCDBG(PPCDBG_PHBINIT, "phb%d io_base_phys 0x%lx io_base_virt 0x%lx\n", DBG("phb%d io_base_phys 0x%lx io_base_virt 0x%lx\n",
hose->global_number, hose->io_base_phys, hose->global_number, hose->io_base_phys,
(unsigned long) hose->io_base_virt); (unsigned long) hose->io_base_virt);
...@@ -833,13 +827,10 @@ void phbs_remap_io(void) ...@@ -833,13 +827,10 @@ void phbs_remap_io(void)
} }
/*********************************************************************** /*
* pci_find_hose_for_OF_device
*
* This function finds the PHB that matching device_node in the * This function finds the PHB that matching device_node in the
* OpenFirmware by scanning all the pci_controllers. * OpenFirmware by scanning all the pci_controllers.
* */
***********************************************************************/
struct pci_controller* pci_find_hose_for_OF_device(struct device_node *node) struct pci_controller* pci_find_hose_for_OF_device(struct device_node *node)
{ {
while (node) { while (node) {
...@@ -972,44 +963,31 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus) ...@@ -972,44 +963,31 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
} }
EXPORT_SYMBOL(pcibios_fixup_bus); EXPORT_SYMBOL(pcibios_fixup_bus);
/****************************************************************** /*
* pci_read_irq_line * Reads the interrupt pin to determine if interrupt is use by card.
*
* Reads the Interrupt Pin to determine if interrupt is use by card.
* If the interrupt is used, then gets the interrupt line from the * If the interrupt is used, then gets the interrupt line from the
* openfirmware and sets it in the pci_dev and pci_config line. * openfirmware and sets it in the pci_dev and pci_config line.
* */
******************************************************************/
int pci_read_irq_line(struct pci_dev *pci_dev) int pci_read_irq_line(struct pci_dev *pci_dev)
{ {
u8 intpin; u8 intpin;
struct device_node *node; struct device_node *node;
pci_read_config_byte(pci_dev, PCI_INTERRUPT_PIN, &intpin); pci_read_config_byte(pci_dev, PCI_INTERRUPT_PIN, &intpin);
if (intpin == 0)
if (intpin == 0) {
PPCDBG(PPCDBG_BUSWALK,"\tDevice: %s No Interrupt used by device.\n",
pci_name(pci_dev));
return 0; return 0;
}
node = pci_device_to_OF_node(pci_dev); node = pci_device_to_OF_node(pci_dev);
if (node == NULL) { if (node == NULL)
PPCDBG(PPCDBG_BUSWALK,"\tDevice: %s Device Node not found.\n",
pci_name(pci_dev));
return -1; return -1;
}
if (node->n_intrs == 0) { if (node->n_intrs == 0)
PPCDBG(PPCDBG_BUSWALK,"\tDevice: %s No Device OF interrupts defined.\n",
pci_name(pci_dev));
return -1; return -1;
}
pci_dev->irq = node->intrs[0].line; pci_dev->irq = node->intrs[0].line;
pci_write_config_byte(pci_dev, PCI_INTERRUPT_LINE, pci_dev->irq); pci_write_config_byte(pci_dev, PCI_INTERRUPT_LINE, pci_dev->irq);
PPCDBG(PPCDBG_BUSWALK,"\tDevice: %s pci_dev->irq = 0x%02X\n",
pci_name(pci_dev), pci_dev->irq);
return 0; return 0;
} }
EXPORT_SYMBOL(pci_read_irq_line); EXPORT_SYMBOL(pci_read_irq_line);
......
...@@ -25,16 +25,11 @@ extern void pci_setup_phb_io_dynamic(struct pci_controller *hose); ...@@ -25,16 +25,11 @@ extern void pci_setup_phb_io_dynamic(struct pci_controller *hose);
extern struct list_head hose_list; extern struct list_head hose_list;
extern int global_phb_number; extern int global_phb_number;
/*******************************************************************
* Platform functions that are brand specific implementation.
*******************************************************************/
extern unsigned long find_and_init_phbs(void); extern unsigned long find_and_init_phbs(void);
extern struct pci_dev *ppc64_isabridge_dev; /* may be NULL if no ISA bus */ extern struct pci_dev *ppc64_isabridge_dev; /* may be NULL if no ISA bus */
/******************************************************************* /* PCI device_node operations */
* PCI device_node operations
*******************************************************************/
struct device_node; struct device_node;
typedef void *(*traverse_func)(struct device_node *me, void *data); typedef void *(*traverse_func)(struct device_node *me, void *data);
void *traverse_pci_devices(struct device_node *start, traverse_func pre, void *traverse_pci_devices(struct device_node *start, traverse_func pre,
...@@ -55,5 +50,7 @@ void pci_addr_cache_remove_device(struct pci_dev *dev); ...@@ -55,5 +50,7 @@ void pci_addr_cache_remove_device(struct pci_dev *dev);
void init_pci_config_tokens (void); void init_pci_config_tokens (void);
unsigned long get_phb_buid (struct device_node *); unsigned long get_phb_buid (struct device_node *);
extern int pci_probe_only;
extern int pci_read_irq_line(struct pci_dev *pci_dev);
#endif /* __PPC_KERNEL_PCI_H__ */ #endif /* __PPC_KERNEL_PCI_H__ */
...@@ -39,9 +39,6 @@ ...@@ -39,9 +39,6 @@
#define DBG(x...) #define DBG(x...)
#endif #endif
extern int pci_probe_only;
extern int pci_read_irq_line(struct pci_dev *pci_dev);
/* XXX Could be per-controller, but I don't think we risk anything by /* XXX Could be per-controller, but I don't think we risk anything by
* assuming we won't have both UniNorth and Bandit */ * assuming we won't have both UniNorth and Bandit */
static int has_uninorth; static int has_uninorth;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment