How to assign IRQ's to PCI hardware?

Discussion in 'Windows Vista Drivers' started by Joerg Hoppe, Sep 4, 2009.

  1. Joerg Hoppe

    Joerg Hoppe Guest

    Hi,

    my company developed a PCI card for CAN bus.
    We have more than one CAN controller on it, and plug more than one card
    into customer PCs, to get a multi channel system.

    Problem:
    All cards share the same IRQ with many other system components.
    So on any interrupt in the system, our driver has to poll all our
    interrupt status registers to see if the IRQ has to be handled. In an 8
    channel system, this may waste up to 10 microseconds per interrupt!

    We'd like to control the IRQ our cards get assigned by the PnP
    management. Best would be an entry in the .INF file.

    Since this must be a common request, I feel a little dumb about asking
    it, but I found nothing on the net so far.

    Thank you!

    J. Hoppe
     
    Joerg Hoppe, Sep 4, 2009
    #1
    1. Advertisements

  2. All cards share the same IRQ with many other system components.
    Yes, this is how PCI bus works.
    Is this really so bad?
     
    Maxim S. Shatskih, Sep 4, 2009
    #2
    1. Advertisements

  3. Joerg Hoppe

    Pavel A. Guest

    Yes, unfortunately this is how PCI works on most common PC platforms.
    There's polling, and every driver sharing same IRQ can cause problems
    for others, if it detects interrupt on it's device incorrectly - or the
    hardware
    does not allow quick and correct detection of interrupt request.
    Ablilty to tweak IRQ allocation depends on the platform. YMMV.
    Generally, this is not possible; the BIOS and Windows will assign the IRQs.
    So, make sure to handle your IRQs well; then it should just work.

    Regards,
    --pa
     
    Pavel A., Sep 8, 2009
    #3
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.