|
@@ -984,6 +984,7 @@ static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm)
|
|
|
{
|
|
|
struct of_device *op = of_find_device_by_node(pbm->prom_node);
|
|
|
u64 tmp, err_mask, err_no_mask;
|
|
|
+ int err;
|
|
|
|
|
|
/* Tomatillo IRQ property layout is:
|
|
|
* 0: PCIERR
|
|
@@ -993,24 +994,39 @@ static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm)
|
|
|
* 4: POWER FAIL?
|
|
|
*/
|
|
|
|
|
|
- if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO))
|
|
|
- request_irq(op->irqs[1], schizo_ue_intr, 0,
|
|
|
- "TOMATILLO_UE", pbm);
|
|
|
-
|
|
|
- if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO))
|
|
|
- request_irq(op->irqs[2], schizo_ce_intr, 0,
|
|
|
- "TOMATILLO_CE", pbm);
|
|
|
-
|
|
|
- if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO))
|
|
|
- request_irq(op->irqs[0], schizo_pcierr_intr, 0,
|
|
|
- "TOMATILLO_PCIERR", pbm);
|
|
|
- else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO))
|
|
|
- request_irq(op->irqs[0], schizo_pcierr_intr, 0,
|
|
|
- "TOMATILLO_PCIERR", pbm);
|
|
|
-
|
|
|
- if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO))
|
|
|
- request_irq(op->irqs[3], schizo_safarierr_intr, 0,
|
|
|
- "TOMATILLO_SERR", pbm);
|
|
|
+ if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO)) {
|
|
|
+ err = request_irq(op->irqs[1], schizo_ue_intr, 0,
|
|
|
+ "TOMATILLO_UE", pbm);
|
|
|
+ if (err)
|
|
|
+ printk(KERN_WARNING "%s: Could not register UE, "
|
|
|
+ "err=%d\n", pbm->name, err);
|
|
|
+ }
|
|
|
+ if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO)) {
|
|
|
+ err = request_irq(op->irqs[2], schizo_ce_intr, 0,
|
|
|
+ "TOMATILLO_CE", pbm);
|
|
|
+ if (err)
|
|
|
+ printk(KERN_WARNING "%s: Could not register CE, "
|
|
|
+ "err=%d\n", pbm->name, err);
|
|
|
+ }
|
|
|
+ err = 0;
|
|
|
+ if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO)) {
|
|
|
+ err = request_irq(op->irqs[0], schizo_pcierr_intr, 0,
|
|
|
+ "TOMATILLO_PCIERR", pbm);
|
|
|
+ } else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO)) {
|
|
|
+ err = request_irq(op->irqs[0], schizo_pcierr_intr, 0,
|
|
|
+ "TOMATILLO_PCIERR", pbm);
|
|
|
+ }
|
|
|
+ if (err)
|
|
|
+ printk(KERN_WARNING "%s: Could not register PCIERR, "
|
|
|
+ "err=%d\n", pbm->name, err);
|
|
|
+
|
|
|
+ if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO)) {
|
|
|
+ err = request_irq(op->irqs[3], schizo_safarierr_intr, 0,
|
|
|
+ "TOMATILLO_SERR", pbm);
|
|
|
+ if (err)
|
|
|
+ printk(KERN_WARNING "%s: Could not register SERR, "
|
|
|
+ "err=%d\n", pbm->name, err);
|
|
|
+ }
|
|
|
|
|
|
/* Enable UE and CE interrupts for controller. */
|
|
|
schizo_write(pbm->controller_regs + SCHIZO_ECC_CTRL,
|
|
@@ -1064,6 +1080,7 @@ static void schizo_register_error_handlers(struct pci_pbm_info *pbm)
|
|
|
{
|
|
|
struct of_device *op = of_find_device_by_node(pbm->prom_node);
|
|
|
u64 tmp, err_mask, err_no_mask;
|
|
|
+ int err;
|
|
|
|
|
|
/* Schizo IRQ property layout is:
|
|
|
* 0: PCIERR
|
|
@@ -1073,24 +1090,39 @@ static void schizo_register_error_handlers(struct pci_pbm_info *pbm)
|
|
|
* 4: POWER FAIL?
|
|
|
*/
|
|
|
|
|
|
- if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO))
|
|
|
- request_irq(op->irqs[1], schizo_ue_intr, 0,
|
|
|
- "SCHIZO_UE", pbm);
|
|
|
-
|
|
|
- if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO))
|
|
|
- request_irq(op->irqs[2], schizo_ce_intr, 0,
|
|
|
- "SCHIZO_CE", pbm);
|
|
|
-
|
|
|
- if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO))
|
|
|
- request_irq(op->irqs[0], schizo_pcierr_intr, 0,
|
|
|
- "SCHIZO_PCIERR", pbm);
|
|
|
- else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO))
|
|
|
- request_irq(op->irqs[0], schizo_pcierr_intr, 0,
|
|
|
- "SCHIZO_PCIERR", pbm);
|
|
|
-
|
|
|
- if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO))
|
|
|
- request_irq(op->irqs[3], schizo_safarierr_intr, 0,
|
|
|
- "SCHIZO_SERR", pbm);
|
|
|
+ if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO)) {
|
|
|
+ err = request_irq(op->irqs[1], schizo_ue_intr, 0,
|
|
|
+ "SCHIZO_UE", pbm);
|
|
|
+ if (err)
|
|
|
+ printk(KERN_WARNING "%s: Could not register UE, "
|
|
|
+ "err=%d\n", pbm->name, err);
|
|
|
+ }
|
|
|
+ if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO)) {
|
|
|
+ err = request_irq(op->irqs[2], schizo_ce_intr, 0,
|
|
|
+ "SCHIZO_CE", pbm);
|
|
|
+ if (err)
|
|
|
+ printk(KERN_WARNING "%s: Could not register CE, "
|
|
|
+ "err=%d\n", pbm->name, err);
|
|
|
+ }
|
|
|
+ err = 0;
|
|
|
+ if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO)) {
|
|
|
+ err = request_irq(op->irqs[0], schizo_pcierr_intr, 0,
|
|
|
+ "SCHIZO_PCIERR", pbm);
|
|
|
+ } else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO)) {
|
|
|
+ err = request_irq(op->irqs[0], schizo_pcierr_intr, 0,
|
|
|
+ "SCHIZO_PCIERR", pbm);
|
|
|
+ }
|
|
|
+ if (err)
|
|
|
+ printk(KERN_WARNING "%s: Could not register PCIERR, "
|
|
|
+ "err=%d\n", pbm->name, err);
|
|
|
+
|
|
|
+ if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO)) {
|
|
|
+ err = request_irq(op->irqs[3], schizo_safarierr_intr, 0,
|
|
|
+ "SCHIZO_SERR", pbm);
|
|
|
+ if (err)
|
|
|
+ printk(KERN_WARNING "%s: Could not register SERR, "
|
|
|
+ "err=%d\n", pbm->name, err);
|
|
|
+ }
|
|
|
|
|
|
/* Enable UE and CE interrupts for controller. */
|
|
|
schizo_write(pbm->controller_regs + SCHIZO_ECC_CTRL,
|