diff options
Diffstat (limited to 'arch/sparc/kernel/pcic.c')
| -rw-r--r-- | arch/sparc/kernel/pcic.c | 116 | 
1 files changed, 7 insertions, 109 deletions
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c index 09f4fdd8d80..6cc78c213c0 100644 --- a/arch/sparc/kernel/pcic.c +++ b/arch/sparc/kernel/pcic.c @@ -36,6 +36,7 @@  #include <asm/uaccess.h>  #include <asm/irq_regs.h> +#include "kernel.h"  #include "irq.h"  /* @@ -162,8 +163,8 @@ static int pcic0_up;  static struct linux_pcic pcic0;  void __iomem *pcic_regs; -volatile int pcic_speculative; -volatile int pcic_trapped; +static volatile int pcic_speculative; +static volatile int pcic_trapped;  /* forward */  unsigned int pcic_build_device_irq(struct platform_device *op, @@ -329,7 +330,7 @@ int __init pcic_probe(void)  	pcic->pcic_res_cfg_addr.name = "pcic_cfg_addr";  	if ((pcic->pcic_config_space_addr = -	    ioremap(regs[2].phys_addr, regs[2].reg_size * 2)) == 0) { +	    ioremap(regs[2].phys_addr, regs[2].reg_size * 2)) == NULL) {  		prom_printf("PCIC: Error, cannot map "  			    "PCI Configuration Space Address.\n");  		prom_halt(); @@ -341,7 +342,7 @@ int __init pcic_probe(void)  	 */  	pcic->pcic_res_cfg_data.name = "pcic_cfg_data";  	if ((pcic->pcic_config_space_data = -	    ioremap(regs[3].phys_addr, regs[3].reg_size * 2)) == 0) { +	    ioremap(regs[3].phys_addr, regs[3].reg_size * 2)) == NULL) {  		prom_printf("PCIC: Error, cannot map "  			    "PCI Configuration Space Data.\n");  		prom_halt(); @@ -353,7 +354,6 @@ int __init pcic_probe(void)  	strcpy(pbm->prom_name, namebuf);  	{ -		extern volatile int t_nmi[4];  		extern int pcic_nmi_trap_patch[4];  		t_nmi[0] = pcic_nmi_trap_patch[0]; @@ -536,7 +536,7 @@ pcic_fill_irq(struct linux_pcic *pcic, struct pci_dev *dev, int node)  		prom_getstring(node, "name", namebuf, sizeof(namebuf));  	} -	if ((p = pcic->pcic_imap) == 0) { +	if ((p = pcic->pcic_imap) == NULL) {  		dev->irq = 0;  		return;  	} @@ -670,30 +670,6 @@ void pcibios_fixup_bus(struct pci_bus *bus)  	}  } -/* - * pcic_pin_to_irq() is exported to bus probing code - */ -unsigned int -pcic_pin_to_irq(unsigned int pin, const char *name) -{ -	struct linux_pcic *pcic = &pcic0; -	unsigned int irq; -	unsigned int ivec; - -	if (pin < 4) { -		ivec = readw(pcic->pcic_regs+PCI_INT_SELECT_LO); -		irq = ivec >> (pin << 2) & 0xF; -	} else if (pin < 8) { -		ivec = readw(pcic->pcic_regs+PCI_INT_SELECT_HI); -		irq = ivec >> ((pin-4) << 2) & 0xF; -	} else {					/* Corrupted map */ -		printk("PCIC: BAD PIN %d FOR %s\n", pin, name); -		for (;;) {}	/* XXX Cannot panic properly in case of PROLL */ -	} -/* P3 */ /* printk("PCIC: dev %s pin %d ivec 0x%x irq %x\n", name, pin, ivec, irq); */ -	return irq; -} -  /* Makes compiler happy */  static volatile int pcic_timer_dummy; @@ -783,7 +759,7 @@ int pcibios_enable_device(struct pci_dev *pdev, int mask)  void pcic_nmi(unsigned int pend, struct pt_regs *regs)  { -	pend = flip_dword(pend); +	pend = swab32(pend);  	if (!pcic_speculative || (pend & PCI_SYS_INT_PENDING_PIO) == 0) {  		/* @@ -875,82 +851,4 @@ void __init sun4m_pci_init_IRQ(void)  	sparc_config.load_profile_irq = pcic_load_profile_irq;  } -/* - * This probably belongs here rather than ioport.c because - * we do not want this crud linked into SBus kernels. - * Also, think for a moment about likes of floppy.c that - * include architecture specific parts. They may want to redefine ins/outs. - * - * We do not use horrible macros here because we want to - * advance pointer by sizeof(size). - */ -void outsb(unsigned long addr, const void *src, unsigned long count) -{ -	while (count) { -		count -= 1; -		outb(*(const char *)src, addr); -		src += 1; -		/* addr += 1; */ -	} -} -EXPORT_SYMBOL(outsb); - -void outsw(unsigned long addr, const void *src, unsigned long count) -{ -	while (count) { -		count -= 2; -		outw(*(const short *)src, addr); -		src += 2; -		/* addr += 2; */ -	} -} -EXPORT_SYMBOL(outsw); - -void outsl(unsigned long addr, const void *src, unsigned long count) -{ -	while (count) { -		count -= 4; -		outl(*(const long *)src, addr); -		src += 4; -		/* addr += 4; */ -	} -} -EXPORT_SYMBOL(outsl); - -void insb(unsigned long addr, void *dst, unsigned long count) -{ -	while (count) { -		count -= 1; -		*(unsigned char *)dst = inb(addr); -		dst += 1; -		/* addr += 1; */ -	} -} -EXPORT_SYMBOL(insb); - -void insw(unsigned long addr, void *dst, unsigned long count) -{ -	while (count) { -		count -= 2; -		*(unsigned short *)dst = inw(addr); -		dst += 2; -		/* addr += 2; */ -	} -} -EXPORT_SYMBOL(insw); - -void insl(unsigned long addr, void *dst, unsigned long count) -{ -	while (count) { -		count -= 4; -		/* -		 * XXX I am sure we are in for an unaligned trap here. -		 */ -		*(unsigned long *)dst = inl(addr); -		dst += 4; -		/* addr += 4; */ -	} -} -EXPORT_SYMBOL(insl); -  subsys_initcall(pcic_init);  | 
