mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
ibm_newemac: Fix new MAL feature handling
Support for new features needed by the PPC 405EZ boards introduced some errors in the MAL and EMAC feature handling. This broke 'allmodconfig' builds as CONFIG_PPC_DCR_NATIVE is not set for those. This patch fixes these errors by wrapping the code in the appropriate #ifdefs. Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
This commit is contained in:
parent
878e7556bf
commit
1ff0fcfcb1
2 changed files with 23 additions and 2 deletions
|
@ -2604,8 +2604,16 @@ static int __devinit emac_init_config(struct emac_instance *dev)
|
|||
if (of_device_is_compatible(np, "ibm,emac-440ep") ||
|
||||
of_device_is_compatible(np, "ibm,emac-440gr"))
|
||||
dev->features |= EMAC_FTR_440EP_PHY_CLK_FIX;
|
||||
if (of_device_is_compatible(np, "ibm,emac-405ez"))
|
||||
if (of_device_is_compatible(np, "ibm,emac-405ez")) {
|
||||
#ifdef CONFIG_IBM_NEW_EMAC_NO_FLOW_CONTROL
|
||||
dev->features |= EMAC_FTR_NO_FLOW_CONTROL_40x;
|
||||
#else
|
||||
printk(KERN_ERR "%s: Flow control not disabled!\n",
|
||||
np->full_name);
|
||||
return -ENXIO;
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Fixup some feature bits based on the device tree */
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue