 #ifdef CONFIG_MIPS_BOARDS_GEN if ((busnum == 0) && (PCI_SLOT(devfn) == 17)) { /* MIPS Core boards have Bonito connected as device 17 */ return -1; } #endif 
static int bonito64_pcibios_config_access(unsigned char access_type,				      struct pci_bus *bus,				      unsigned int devfn, int where,				      u32 * data){	unsigned char busnum = bus->number;	u32 dummy;	u64 pci_addr;	/* Algorithmics Bonito64 system controller. */	if ((busnum == 0) && (PCI_SLOT(devfn) > 21)) {		/* We number bus 0 devices from 0..21 */		return -1;	}#ifdef CONFIG_MIPS_BOARDS_GEN	if ((busnum == 0) && (PCI_SLOT(devfn) == 17)) {		/* MIPS Core boards have Bonito connected as device 17 */		return -1;	}#endif	/* Clear cause register bits */	BONITO_PCICMD |= (BONITO_PCICMD_MABORT_CLR |			  BONITO_PCICMD_MTABORT_CLR);	/*	 * Setup pattern to be used as PCI "address" for	 * Type 0 cycle	 */	if (busnum == 0) {		/* IDSEL */		pci_addr = (u64) 1 << (PCI_SLOT(devfn) + 10);	} else {		/* Bus number */		pci_addr = busnum << PCI_CFG_TYPE1_BUS_SHF;		/* Device number */		pci_addr |=		    PCI_SLOT(devfn) << PCI_CFG_TYPE1_DEV_SHF;	}	/* Function (same for Type 0/1) */	pci_addr |= PCI_FUNC(devfn) << PCI_CFG_TYPE0_FUNC_SHF;	/* Register number (same for Type 0/1) */	pci_addr |= (where & ~0x3) << PCI_CFG_TYPE0_REG_SHF;	if (busnum == 0) {		/* Type 0 */		BONITO_PCIMAP_CFG = pci_addr >> 16;	} else {		/* Type 1 */		BONITO_PCIMAP_CFG = (pci_addr >> 16) | 0x10000;	}	pci_addr &= 0xffff;	/* Flush Bonito register block */	dummy = BONITO_PCIMAP_CFG;	iob();		/* sync */	/* Perform access */	if (access_type == PCI_ACCESS_WRITE) {		*(volatile u32 *) (_pcictrl_bonito_pcicfg + (u32)pci_addr) = *(u32 *) data;		/* Wait till done */		while (BONITO_PCIMSTAT & 0xF);	} else {		*(u32 *) data = *(volatile u32 *) (_pcictrl_bonito_pcicfg + (u32)pci_addr);	}	/* Detect Master/Target abort */	if (BONITO_PCICMD & (BONITO_PCICMD_MABORT_CLR |			     BONITO_PCICMD_MTABORT_CLR)) {		/* Error occurred */		/* Clear bits */		BONITO_PCICMD |= (BONITO_PCICMD_MABORT_CLR |				  BONITO_PCICMD_MTABORT_CLR);		return -1;	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/aa0980b8090878bf42bc73a13d051a203a201d7d/ops-bonito64.c/clean/arch/mips/pci/ops-bonito64.c