pin, edge_level, active_high_low, link); 
pin, edge_level, active_high_low, link, func); 
acpi_pci_irq_derive (	struct pci_dev		*dev,	int			pin,	int			*edge_level,	int			*active_high_low,	char			**link){	struct pci_dev		*bridge = dev;	int			irq = -1;	u8			bridge_pin = 0;	ACPI_FUNCTION_TRACE("acpi_pci_irq_derive");	if (!dev)		return_VALUE(-EINVAL);	/* 	 * Attempt to derive an IRQ for this device from a parent bridge's	 * PCI interrupt routing entry (eg. yenta bridge and add-in card bridge).	 */	while (irq < 0 && bridge->bus->self) {		pin = (pin + PCI_SLOT(bridge->devfn)) % 4;		bridge = bridge->bus->self;		if ((bridge->class >> 8) == PCI_CLASS_BRIDGE_CARDBUS) {			/* PC card has the same IRQ as its cardbridge */			pci_read_config_byte(bridge, PCI_INTERRUPT_PIN, &bridge_pin);			if (!bridge_pin) {				ACPI_DEBUG_PRINT((ACPI_DB_INFO, 					"No interrupt pin configured for device %s\n", pci_name(bridge)));				return_VALUE(-1);			}			/* Pin is from 0 to 3 */			bridge_pin --;			pin = bridge_pin;		}		irq = acpi_pci_irq_lookup(bridge->bus, PCI_SLOT(bridge->devfn),			pin, edge_level, active_high_low, link);	}	if (irq < 0) {		ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Unable to derive IRQ for device %s\n", pci_name(dev)));		return_VALUE(-1);	}	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Derive IRQ %d for device %s from %s\n",		irq, pci_name(dev), pci_name(bridge)));	return_VALUE(irq);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/87bec66b9691522414862dd8d41e430b063735ef/pci_irq.c/buggy/drivers/acpi/pci_irq.c