* table, but unfortunately we have to know the interrupt router chip.
*/
-#define ALLOWED_IRQ_MASK 0x0ff8
-
static char *pcibios_lookup_irq(struct pci_dev *dev, struct irq_routing_table *rt, int pin, int assign)
{
struct irq_info *q;
DBG(" -> PIRQ %02x, mask %04x", pirq, mask);
if (!assign || (dev->class >> 8) == PCI_CLASS_DISPLAY_VGA)
newirq = 0;
- else for(newirq = 16; newirq && !(mask & ALLOWED_IRQ_MASK & (1 << newirq)); newirq--)
+ else for(newirq = 13; newirq && !(mask & (1 << newirq)); newirq--)
;
if (!(router = pci_find_slot(rt->rtr_bus, rt->rtr_devfn))) {
DBG(" -> router not found\n");
/*
* Fix out-of-range IRQ numbers and missing IRQs.
*/
- if (dev->irq >= 16) {
- DBG("%s: invalid IRQ %d\n", dev->irq);
+ if (dev->irq >= NR_IRQS)
dev->irq = 0;
- }
if (pin && !dev->irq && pirq_table) {
char *msg = pcibios_lookup_irq(dev, pirq_table, pin, 0);
if (msg)
err = usb_get_string(dev, dev->string_langid, index, tbuf, 255);
if (err < 0)
goto errout;
- info("actual string desc. length = %d", err);
size--; /* leave room for trailing NULL char in output buffer */
for (idx = 0, u = 2; u < err; u += 2) {
return -1;
}
+ info("new device strings: Mfr=%d, Product=%d, SerialNumber=%d",
+ dev->descriptor.iManufacturer, dev->descriptor.iProduct, dev->descriptor.iSerialNumber);
if (dev->descriptor.iManufacturer)
usb_show_string(dev, "Manufacturer", dev->descriptor.iManufacturer);
if (dev->descriptor.iProduct)