Hi Jonathan, please use plain text, no HTML....
On Wednesday 16 August 2006 13:58, Jonathan Sturges wrote: > PCI: No IRQ known for interrupt pin A of device 00:13.0. Please try > using pci=biosirq. > usb-ohci.c: found OHCI device with no IRQ assigned. check BIOS > settings! > ...which basically means the entries for these devices in the IRQ map > are either wrong, or missing. What's needed now is a way to determine > those interrupts, and put them in the map. Did you have to go through > a similar process on your board, and if so, can you detail what you > did? Yes, similar to my experience. I tried (no chance to read back any values due to WinCE-Bootloader instead of BIOS) with this irq map and it works. Source attached. Juergen
/** * This file was generated by getpir.c, do not modify! * (but if you do, please run checkpir on it to verify) * Contains the IRQ Routing Table dumped directly from your memory, which BIOS sets up * * Documentation at : http://www.microsoft.com/whdc/archive/pciirq.mspx **/ #include <arch/pirq_routing.h> /* * northbridge slot#1 slot#2 slot#3 slot#4 RealTec8139C free free free * INT A INTA INTD INTC INTB * INT B INTB INTA INTD INTC * INT C INTC INTB INTA INTD * INT D INTD INTC INTB INTA */ /** * mask of available IRQs for the PCI bus **/ #define AVAIL_IRQS 0xdeb8 /* 0xDEB8 = 1101 1110 1011 1000 * ^____ IRQ3 * ^______ IRQ4 * ^_______ IRQ5 * ^_________ IRQ7 * ^____________ IRQ9 * ^_____________ IRQ10 * ^______________ IRQ11 * ^________________ IRQ12 * ^__________________ IRQ14 * ^___________________ IRQ15 */ #define CHECKSUM 0xBF const struct irq_routing_table intel_irq_routing_table = { .signature = PIRQ_SIGNATURE, /* u32 signature */ .version = PIRQ_VERSION, /* u16 version */ .size = 32+16*IRQ_SLOT_COUNT, /* there can be total 2 devices on the bus */ .rtr_bus = 0x00, /* Where the interrupt router lies (bus) */ .rtr_devfn = (0x12<<3)|0x0, /* Where the interrupt router lies (dev) */ .exclusive_irqs = 0x800, /* IRQs devoted exclusively to PCI usage */ .rtr_vendor = 0x1078, /* Vendor */ .rtr_device = 0x2, /* Device */ .miniport_data = 0, /* Crap (miniport) */ .checksum = CHECKSUM, /* this hase to set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */ /* * Definition for "slot#1". There is no real slot, the network device is soldered... */ .slots = { [0] = { .bus = 0x00, .devfn = (0x0e<<3)|0x0, .irq = { [0] = { .link = 0x01, /* INT A */ .bitmap = AVAIL_IRQS }, [1] = { .link = 0x02, /* INT B */ .bitmap = AVAIL_IRQS }, [2] = { .link = 0x03, /* INT C */ .bitmap = AVAIL_IRQS }, [3] = { .link = 0x04, /* INT D */ .bitmap = AVAIL_IRQS } }, .slot = 0x1, }, { .bus = 0x00, /* .devfn = (0x0f<<3)|0x0, */ .devfn = (0x13<<3)|0x0, /* This enables USB OHCI to IRQ 11 ??? */ .irq = { [0] = { .link = 0x02, .bitmap = AVAIL_IRQS }, [1] = { .link = 0x03, .bitmap = AVAIL_IRQS }, [2] = { .link = 0x04, .bitmap = AVAIL_IRQS }, [3] = { .link = 0x01, .bitmap = AVAIL_IRQS } }, .slot = 0x2, } } }; /** * copy the IRQ routing table to memory * @addr destination address (between 0xF0000...0x100000) **/ unsigned long write_pirq_routing_table(unsigned long addr) { return copy_pirq_routing_table(addr); } /* end of file irq_tables.c */
-- linuxbios mailing list linuxbios@linuxbios.org http://www.openbios.org/mailman/listinfo/linuxbios