>As far as I understand PCI, it seems that only IRQs are
>backplane-specific. The other things are common to all PCI
>implementations.
>So I agree that we shouldn't do specific stuff in kernel,
>so we could simply tell the kernel how card is wired and let it do
>the remaining.
>
>Only specific inits should be done in a mini bios.
>
>And couldn't we detect IRQ used by a PCI card, just like the
>detect them with ISA cards ?
>
Err, no. ISA IRQs are hardwired, unless you use plug and pray
where you tickle the card and see what wiggles (roughly speaking).
PCI IRQs relate to which pin on the device is used for interrupts,
which slot the PCI card is plugged into and which bus the slot is
attached to. Interrupts are routed to an interrupt controller
(eventually). How those interrupts are routed is system/board
specific (slot 5, Pin A on bus 0 -> IRQ N). Interrupts routed
through PCI-PCI bridges are twizzled (A->B, B->C, C->D, D->A).
The BIOS undestands this board specific interrupt routing and
writes the IRQ number into the PCI config header for the device.
It is read from there by the device driver and handed to the kernel
in request_irq(). The kernel's (board specific) interrupt handler
figures out which IRQ went ping and turns it into a number that
matches the one that the BIOS wrote. It's a symbiotic relationship.
Dave
ps I wrote how this works in my LDP book 'The Linux Kernel',
chapter 6.
unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]