• David S. Miller's avatar
    [SPARC64]: Rewrite pci_intmap_match(). · 6154f94f
    David S. Miller authored
    The whole algorithm was wrong.  What we need to do is:
    
    1) Walk each PCI bus above this device on the path to the
       PCI controller nexus, and for each:
          a) If interrupt-map exists, apply it, record IRQ controller node
          b) Else, swivel interrupt number using PCI_SLOT(), use PCI bus
    	 parent OBP node as controller node
          c) Walk up to "controller node" until we hit the first PCI bus
    	 in this domain, or "controller node" is the PCI controller
    	 OBP node
    2) If we walked to PCI controller OBP node, we're done.
    3) Else, apply PCI controller interrupt-map to interrupt.
    
    There is some stuff that needs to be checked out for ebus and
    isa, but the PCI part is good to go.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6154f94f
pci_common.c 29.1 KB