Unverified Commit a57140e9 authored by Thomas Bogendoerfer's avatar Thomas Bogendoerfer Committed by Paul Burton
Browse files

MIPS: SGI-IP27: use generic PCI driver



Converted bridge code to a platform driver using the PCI generic driver
framework and use adding platform devices during xtalk scan. This allows
easier sharing bridge driver for other SGI platforms like IP30 (Octane) and
IP35 (Origin 3k, Fuel, Tezro).

Signed-off-by: default avatarThomas Bogendoerfer <tbogendoerfer@suse.de>
[paul.burton@mips.com:
  - Leave __phys_to_dma(), __dma_to_phys() & pcibus_to_node() in
    arch/mips/pci/pci-ip27.c since the motivation for moving them
    disappeared when the driver stopped being moved to drivers/pci.]
Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
parent 8041edb5
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -676,6 +676,8 @@ config SGI_IP27
	select HAVE_PCI
	select IRQ_MIPS_CPU
	select NR_CPUS_DEFAULT_64
	select PCI_DRIVERS_GENERIC
	select PCI_XTALK_BRIDGE
	select SYS_HAS_CPU_R10000
	select SYS_SUPPORTS_64BIT_KERNEL
	select SYS_SUPPORTS_BIG_ENDIAN
@@ -1249,6 +1251,9 @@ config IRQ_GT641XX
config PCI_GT64XXX_PCI0
	bool

config PCI_XTALK_BRIDGE
	bool

config NO_EXCEPT_FILL
	bool

+1 −10
Original line number Diff line number Diff line
@@ -7,18 +7,9 @@
#include <asm/mmzone.h>

struct cpuinfo_ip27 {
//	cpuid_t		p_cpuid;	/* PROM assigned cpuid */
	cnodeid_t	p_nodeid;	/* my node ID in compact-id-space */
	nasid_t		p_nasid;	/* my node ID in numa-as-id-space */
	unsigned char	p_slice;	/* Physical position on node board */
#if 0
	unsigned long		loops_per_sec;
	unsigned long		ipi_count;
	unsigned long		irq_attempt[NR_IRQS];
	unsigned long		smp_local_irq_count;
	unsigned long		prof_multiplier;
	unsigned long		prof_counter;
#endif
};

extern struct cpuinfo_ip27 sn_cpu_info[NR_CPUS];
@@ -30,7 +21,7 @@ extern struct cpuinfo_ip27 sn_cpu_info[NR_CPUS];
struct pci_bus;
extern int pcibus_to_node(struct pci_bus *);

#define cpumask_of_pcibus(bus)	(cpu_online_mask)
#define cpumask_of_pcibus(bus)	(cpumask_of_node(pcibus_to_node(bus)))

extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES];

+3 −8
Original line number Diff line number Diff line
@@ -801,15 +801,12 @@ struct bridge_err_cmdword {
#define PCI64_ATTR_RMF_SHFT	48

struct bridge_controller {
	struct pci_controller	pc;
	struct resource		mem;
	struct resource		io;
	struct resource		busn;
	struct bridge_regs	*base;
	nasid_t			nasid;
	unsigned int		widget_id;
	u64			baddr;
	unsigned long		baddr;
	unsigned long		intr_addr;
	unsigned int		pci_int[8];
	nasid_t			nasid;
};

#define BRIDGE_CONTROLLER(bus) \
@@ -824,6 +821,4 @@ struct bridge_controller {

extern int request_bridge_irq(struct bridge_controller *bc, int pin);

extern struct pci_ops bridge_pci_ops;

#endif /* _ASM_PCI_BRIDGE_H */
+0 −9
Original line number Diff line number Diff line
@@ -47,15 +47,6 @@ typedef struct xtalk_piomap_s *xtalk_piomap_t;
#define XIO_PORT(x)	((xwidgetnum_t)(((x)&XIO_PORT_BITS) >> XIO_PORT_SHIFT))
#define XIO_PACK(p, o)	((((uint64_t)(p))<<XIO_PORT_SHIFT) | ((o)&XIO_ADDR_BITS))

#ifdef CONFIG_PCI
extern int bridge_probe(nasid_t nasid, int widget, int masterwid);
#else
static inline int bridge_probe(nasid_t nasid, int widget, int masterwid)
{
	return 0;
}
#endif

#endif /* !__ASSEMBLY__ */

#endif /* _ASM_XTALK_XTALK_H */
+2 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ obj-$(CONFIG_PCI_AR2315) += pci-ar2315.o
obj-$(CONFIG_SOC_AR71XX)	+= pci-ar71xx.o
obj-$(CONFIG_PCI_AR724X)	+= pci-ar724x.o
obj-$(CONFIG_MIPS_PCI_VIRTIO)	+= pci-virtio-guest.o
obj-$(CONFIG_PCI_XTALK_BRIDGE)	+= pci-xtalk-bridge.o
#
# These are still pretty much in the old state, watch, go blind.
#
@@ -39,7 +40,7 @@ obj-$(CONFIG_MIPS_MALTA) += fixup-malta.o pci-malta.o
obj-$(CONFIG_PMC_MSP7120_GW)	+= fixup-pmcmsp.o ops-pmcmsp.o
obj-$(CONFIG_PMC_MSP7120_EVAL)	+= fixup-pmcmsp.o ops-pmcmsp.o
obj-$(CONFIG_PMC_MSP7120_FPGA)	+= fixup-pmcmsp.o ops-pmcmsp.o
obj-$(CONFIG_SGI_IP27)		+= ops-bridge.o pci-ip27.o
obj-$(CONFIG_SGI_IP27)		+= pci-ip27.o
obj-$(CONFIG_SGI_IP32)		+= fixup-ip32.o ops-mace.o pci-ip32.o
obj-$(CONFIG_SIBYTE_SB1250)	+= fixup-sb1250.o pci-sb1250.o
obj-$(CONFIG_SIBYTE_BCM112X)	+= fixup-sb1250.o pci-sb1250.o
Loading