예제 #1
0
int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
{
	if (is_rm300_revd())
		return irq_tab_rm300d[slot][pin];

	return irq_tab_rm200[slot][pin];
}
예제 #2
0
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
	switch (sni_brd_type) {
	case SNI_BRD_PCI_TOWER_CPLUS:
		if (slot == 4) {
			while (dev && dev->bus->number != 1)
				dev = dev->bus->self;
			if (dev && dev->devfn >= PCI_DEVFN(4, 0))
				slot = 5;
		}
		return irq_tab_pcit_cplus[slot][pin];
	case SNI_BRD_PCI_TOWER:
	        return irq_tab_pcit[slot][pin];

	case SNI_BRD_PCI_MTOWER:
	        if (is_rm300_revd())
		        return irq_tab_rm300d[slot][pin];
	        

	case SNI_BRD_PCI_DESKTOP:
	        return irq_tab_rm200[slot][pin];

	case SNI_BRD_PCI_MTOWER_CPLUS:
	        return irq_tab_rm300e[slot][pin];
	}

	return 0;
}
예제 #3
0
파일: fixup-sni.c 프로젝트: 274914765/C
int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
    switch (sni_brd_type) {
    case SNI_BRD_PCI_TOWER_CPLUS:
        if (slot == 4) {
            /*
             * SNI messed up interrupt wiring for onboard
             * PCI bus 1; we need to fix this up here
             */
            while (dev && dev->bus->number != 1)
                dev = dev->bus->self;
            if (dev && dev->devfn >= PCI_DEVFN(4, 0))
                slot = 5;
        }
        return irq_tab_pcit_cplus[slot][pin];
    case SNI_BRD_PCI_TOWER:
            return irq_tab_pcit[slot][pin];

    case SNI_BRD_PCI_MTOWER:
            if (is_rm300_revd())
                return irq_tab_rm300d[slot][pin];
            /* fall through */

    case SNI_BRD_PCI_DESKTOP:
            return irq_tab_rm200[slot][pin];

    case SNI_BRD_PCI_MTOWER_CPLUS:
            return irq_tab_rm300e[slot][pin];
    }

    return 0;
}