|
@@ -280,9 +280,11 @@ static irqreturn_t mal_txeob(int irq, void *dev_instance)
|
|
|
mal_schedule_poll(mal);
|
|
|
set_mal_dcrn(mal, MAL_TXEOBISR, r);
|
|
|
|
|
|
+#ifdef CONFIG_PPC_DCR_NATIVE
|
|
|
if (mal_has_feature(mal, MAL_FTR_CLEAR_ICINTSTAT))
|
|
|
mtdcri(SDR0, DCRN_SDR_ICINTSTAT,
|
|
|
(mfdcri(SDR0, DCRN_SDR_ICINTSTAT) | ICINTSTAT_ICTX));
|
|
|
+#endif
|
|
|
|
|
|
return IRQ_HANDLED;
|
|
|
}
|
|
@@ -298,9 +300,11 @@ static irqreturn_t mal_rxeob(int irq, void *dev_instance)
|
|
|
mal_schedule_poll(mal);
|
|
|
set_mal_dcrn(mal, MAL_RXEOBISR, r);
|
|
|
|
|
|
+#ifdef CONFIG_PPC_DCR_NATIVE
|
|
|
if (mal_has_feature(mal, MAL_FTR_CLEAR_ICINTSTAT))
|
|
|
mtdcri(SDR0, DCRN_SDR_ICINTSTAT,
|
|
|
(mfdcri(SDR0, DCRN_SDR_ICINTSTAT) | ICINTSTAT_ICRX));
|
|
|
+#endif
|
|
|
|
|
|
return IRQ_HANDLED;
|
|
|
}
|
|
@@ -572,9 +576,18 @@ static int __devinit mal_probe(struct of_device *ofdev,
|
|
|
goto fail;
|
|
|
}
|
|
|
|
|
|
- if (of_device_is_compatible(ofdev->node, "ibm,mcmal-405ez"))
|
|
|
+ if (of_device_is_compatible(ofdev->node, "ibm,mcmal-405ez")) {
|
|
|
+#if defined(CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT) && \
|
|
|
+ defined(CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR)
|
|
|
mal->features |= (MAL_FTR_CLEAR_ICINTSTAT |
|
|
|
MAL_FTR_COMMON_ERR_INT);
|
|
|
+#else
|
|
|
+ printk(KERN_ERR "%s: Support for 405EZ not enabled!\n",
|
|
|
+ ofdev->node->full_name);
|
|
|
+ err = -ENODEV;
|
|
|
+ goto fail;
|
|
|
+#endif
|
|
|
+ }
|
|
|
|
|
|
mal->txeob_irq = irq_of_parse_and_map(ofdev->node, 0);
|
|
|
mal->rxeob_irq = irq_of_parse_and_map(ofdev->node, 1);
|