return isa_intr_establish(line, IST_LEVEL, level, func, arg, "pci");
return isa_intr_establish(line, IST_LEVEL, level, func, arg, what);
pci_map_int(tag, level, func, arg)	pcitag_t tag;	int level;	int (*func) __P((void *));	void *arg;{	pcireg_t data;	int pin, line;	data = pci_conf_read(tag, PCI_INTERRUPT_REG);	pin = PCI_INTERRUPT_PIN(data);	line = PCI_INTERRUPT_LINE(data);	if (pin == 0) {		/* No IRQ used. */		return 0;	}	if (pin > 4) {		printf("pci_map_int: bad interrupt pin %d\n", pin);		return NULL;	}	/*	 * Section 6.2.4, `Miscellaneous Functions', says that 255 means	 * `unknown' or `no connection' on a PC.  We assume that a device with	 * `no connection' either doesn't have an interrupt (in which case the	 * pin number should be 0, and would have been noticed above), or	 * wasn't configured by the BIOS (in which case we punt, since there's	 * no real way we can know how the interrupt lines are mapped in the	 * hardware).	 *	 * XXX	 * Since IRQ 0 is only used by the clock, and we can't actually be sure	 * that the BIOS did its job, we also recognize that as meaning that	 * the BIOS has not configured the device.	 */	if (line == 0 || line == 255) {		printf("pci_map_int: no mapping for pin %c\n", '@' + pin);		return NULL;	} else {		if (line >= ICU_LEN) {			printf("pci_map_int: bad interrupt line %d\n", line);			return NULL;		}		if (line == 2) {			printf("pci_map_int: changed line 2 to line 9\n");			line = 9;		}	}#if 1	printf("pci_map_int: pin %c mapped to line %d\n", '@' + pin, line);#endif	return isa_intr_establish(line, IST_LEVEL, level, func, arg, "pci");}