diff options
Diffstat (limited to 'arch/sparc64/kernel/pci_sabre.c')
-rw-r--r-- | arch/sparc64/kernel/pci_sabre.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c index caa7aeed5d14..846c1205aa9a 100644 --- a/arch/sparc64/kernel/pci_sabre.c +++ b/arch/sparc64/kernel/pci_sabre.c | |||
@@ -544,10 +544,10 @@ static unsigned int sabre_irq_build(struct pci_pbm_info *pbm, | |||
544 | struct pci_dev *pdev, | 544 | struct pci_dev *pdev, |
545 | unsigned int ino) | 545 | unsigned int ino) |
546 | { | 546 | { |
547 | struct ino_bucket *bucket; | ||
548 | unsigned long imap, iclr; | 547 | unsigned long imap, iclr; |
549 | unsigned long imap_off, iclr_off; | 548 | unsigned long imap_off, iclr_off; |
550 | int inofixup = 0; | 549 | int inofixup = 0; |
550 | int virt_irq; | ||
551 | 551 | ||
552 | ino &= PCI_IRQ_INO; | 552 | ino &= PCI_IRQ_INO; |
553 | if (ino < SABRE_ONBOARD_IRQ_BASE) { | 553 | if (ino < SABRE_ONBOARD_IRQ_BASE) { |
@@ -573,23 +573,23 @@ static unsigned int sabre_irq_build(struct pci_pbm_info *pbm, | |||
573 | if ((ino & 0x20) == 0) | 573 | if ((ino & 0x20) == 0) |
574 | inofixup = ino & 0x03; | 574 | inofixup = ino & 0x03; |
575 | 575 | ||
576 | bucket = __bucket(build_irq(inofixup, iclr, imap)); | 576 | virt_irq = build_irq(inofixup, iclr, imap, IBF_PCI); |
577 | bucket->flags |= IBF_PCI; | ||
578 | 577 | ||
579 | if (pdev) { | 578 | if (pdev) { |
580 | struct pcidev_cookie *pcp = pdev->sysdata; | 579 | struct pcidev_cookie *pcp = pdev->sysdata; |
581 | 580 | ||
582 | if (pdev->bus->number != pcp->pbm->pci_first_busno) { | 581 | if (pdev->bus->number != pcp->pbm->pci_first_busno) { |
583 | struct pci_controller_info *p = pcp->pbm->parent; | 582 | struct pci_controller_info *p = pcp->pbm->parent; |
584 | struct irq_desc *d = bucket->irq_info; | ||
585 | 583 | ||
586 | d->pre_handler = sabre_wsync_handler; | 584 | irq_install_pre_handler(virt_irq, |
587 | d->pre_handler_arg1 = pdev; | 585 | sabre_wsync_handler, |
588 | d->pre_handler_arg2 = (void *) | 586 | pdev, |
589 | p->pbm_A.controller_regs + SABRE_WRSYNC; | 587 | (void *) |
588 | p->pbm_A.controller_regs + | ||
589 | SABRE_WRSYNC); | ||
590 | } | 590 | } |
591 | } | 591 | } |
592 | return __irq(bucket); | 592 | return virt_irq; |
593 | } | 593 | } |
594 | 594 | ||
595 | /* SABRE error handling support. */ | 595 | /* SABRE error handling support. */ |