David,<br><br>Sorry for the late response but I have been away for the last week.<br><br>This looks like a verbatim copy of the patches authored by me in ltib. I think it is considered gauche to submit someone else's work with your Signed-off-by.<br>
<br>Others have already spoken of the problems with this patch. I am working on an alternative with far fewer ifdefs that may actually pass review. It has passed an off line review by Scott Wood.<br><br>I'll submit my latest patch and we will see what people think.<br>
<br>John<br><br><div class="gmail_quote">On Wed, Jun 11, 2008 at 3:44 AM, David Jander <<a href="mailto:david.jander@protonic.nl">david.jander@protonic.nl</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
to current head<br>
<br>
Signed-off-by: David Jander <<a href="mailto:david@protonic.nl">david@protonic.nl</a>><br>
---<br>
drivers/net/fs_enet/Kconfig | 16 ++++-<br>
drivers/net/fs_enet/fec_mpc5121.h | 120 ++++++++++++++++++++++++++++++++++++<br>
drivers/net/fs_enet/fs_enet-main.c | 90 +++++++++++++++++++++++----<br>
drivers/net/fs_enet/fs_enet.h | 14 +++-<br>
drivers/net/fs_enet/mac-fec.c | 22 ++++++-<br>
drivers/net/fs_enet/mii-fec.c | 10 +++-<br>
6 files changed, 249 insertions(+), 23 deletions(-)<br>
create mode 100644 drivers/net/fs_enet/fec_mpc5121.h<br>
<br>
diff --git a/drivers/net/fs_enet/Kconfig b/drivers/net/fs_enet/Kconfig<br>
index 562ea68..8eea038 100644<br>
--- a/drivers/net/fs_enet/Kconfig<br>
+++ b/drivers/net/fs_enet/Kconfig<br>
@@ -1,9 +1,17 @@<br>
config FS_ENET<br>
tristate "Freescale Ethernet Driver"<br>
- depends on CPM1 || CPM2<br>
+ depends on CPM1 || CPM2 || FS_ENET_MPC5121_FEC<br>
select MII<br>
select PHYLIB<br>
<br>
+config FS_ENET_MPC5121_FEC<br>
+ bool "Freescale MPC512x FEC driver"<br>
+ depends on PPC_MPC512x<br>
+ select FS_ENET<br>
+ select FS_ENET_HAS_FEC<br>
+ select PPC_CPM_NEW_BINDING<br>
+ default n<br>
+<br>
config FS_ENET_HAS_SCC<br>
bool "Chip has an SCC usable for ethernet"<br>
depends on FS_ENET && (CPM1 || CPM2)<br>
@@ -16,13 +24,15 @@ config FS_ENET_HAS_FCC<br>
<br>
config FS_ENET_HAS_FEC<br>
bool "Chip has an FEC usable for ethernet"<br>
- depends on FS_ENET && CPM1<br>
+ depends on FS_ENET && (CPM1 || FS_ENET_MPC5121_FEC)<br>
select FS_ENET_MDIO_FEC<br>
default y<br>
<br>
+<br>
config FS_ENET_MDIO_FEC<br>
tristate "MDIO driver for FEC"<br>
- depends on FS_ENET && CPM1<br>
+ depends on FS_ENET && (CPM1 || FS_ENET_MPC5121_FEC)<br>
+<br>
<br>
config FS_ENET_MDIO_FCC<br>
tristate "MDIO driver for FCC"<br>
diff --git a/drivers/net/fs_enet/fec_mpc5121.h b/drivers/net/fs_enet/fec_mpc5121.h<br>
new file mode 100644<br>
index 0000000..b8a69d4<br>
--- /dev/null<br>
+++ b/drivers/net/fs_enet/fec_mpc5121.h<br>
@@ -0,0 +1,120 @@<br>
+/*<br>
+ * Copyright (C) 2007,2008 Freescale Semiconductor, Inc. All rights reserved.<br>
+ *<br>
+ * Author: John Rigby, <<a href="mailto:jrigby@freescale.com">jrigby@freescale.com</a>><br>
+ *<br>
+ * Modified version of drivers/net/fec.h:<br>
+ *<br>
+ * fec.h -- Fast Ethernet Controller for Motorola ColdFire SoC<br>
+ * processors.<br>
+ *<br>
+ * (C) Copyright 2000-2005, Greg Ungerer (<a href="mailto:gerg@snapgear.com">gerg@snapgear.com</a>)<br>
+ * (C) Copyright 2000-2001, Lineo (<a href="http://www.lineo.com" target="_blank">www.lineo.com</a>)<br>
+ *<br>
+ * This is free software; you can redistribute it and/or modify it<br>
+ * under the terms of the GNU General Public License as published by<br>
+ * the Free Software Foundation; either version 2 of the License, or<br>
+ * (at your option) any later version.<br>
+ */<br>
+#ifndef FEC_MPC5121_H<br>
+#define FEC_MPC5121_H<br>
+<br>
+typedef struct fec {<br>
+ u32 fec_reserved0;<br>
+ u32 fec_ievent; /* Interrupt event reg */<br>
+ u32 fec_imask; /* Interrupt mask reg */<br>
+ u32 fec_reserved1;<br>
+ u32 fec_r_des_active; /* Receive descriptor reg */<br>
+ u32 fec_x_des_active; /* Transmit descriptor reg */<br>
+ u32 fec_reserved2[3];<br>
+ u32 fec_ecntrl; /* Ethernet control reg */<br>
+ u32 fec_reserved3[6];<br>
+ u32 fec_mii_data; /* MII manage frame reg */<br>
+ u32 fec_mii_speed; /* MII speed control reg */<br>
+ u32 fec_reserved4[7];<br>
+ u32 fec_mib_ctrlstat; /* MIB control/status reg */<br>
+ u32 fec_reserved5[7];<br>
+ u32 fec_r_cntrl; /* Receive control reg */<br>
+ u32 fec_reserved6[15];<br>
+ u32 fec_x_cntrl; /* Transmit Control reg */<br>
+ u32 fec_reserved7[7];<br>
+ u32 fec_addr_low; /* Low 32bits MAC address */<br>
+ u32 fec_addr_high; /* High 16bits MAC address */<br>
+ u32 fec_opd; /* Opcode + Pause duration */<br>
+ u32 fec_reserved8[10];<br>
+ u32 fec_hash_table_high; /* High 32bits hash table */<br>
+ u32 fec_hash_table_low; /* Low 32bits hash table */<br>
+ u32 fec_grp_hash_table_high;/* High 32bits hash table */<br>
+ u32 fec_grp_hash_table_low; /* Low 32bits hash table */<br>
+ u32 fec_reserved9[7];<br>
+ u32 fec_x_wmrk; /* FIFO transmit water mark */<br>
+ u32 fec_reserved10;<br>
+ u32 fec_r_bound; /* FIFO receive bound reg */<br>
+ u32 fec_r_fstart; /* FIFO receive start reg */<br>
+ u32 fec_reserved11[11];<br>
+ u32 fec_r_des_start; /* Receive descriptor ring */<br>
+ u32 fec_x_des_start; /* Transmit descriptor ring */<br>
+ u32 fec_r_buff_size; /* Maximum receive buff size */<br>
+ u32 fec_dma_control; /* DMA Endian and other ctrl */<br>
+} fec_t;<br>
+<br>
+/*<br>
+ * Define the buffer descriptor structure.<br>
+ */<br>
+typedef struct bufdesc {<br>
+ unsigned short cbd_sc; /* Control and status info */<br>
+ unsigned short cbd_datlen; /* Data length */<br>
+ unsigned long cbd_bufaddr; /* Buffer address */<br>
+} cbd_t;<br>
+<br>
+/*<br>
+ * The following definitions courtesy of commproc.h, which where<br>
+ * Copyright (c) 1997 Dan Malek (<a href="mailto:dmalek@jlc.net">dmalek@jlc.net</a>).<br>
+ */<br>
+#define BD_SC_EMPTY ((ushort)0x8000) /* Recieve is empty */<br>
+#define BD_SC_READY ((ushort)0x8000) /* Transmit is ready */<br>
+#define BD_SC_WRAP ((ushort)0x2000) /* Last buffer descriptor */<br>
+#define BD_SC_INTRPT ((ushort)0x1000) /* Interrupt on change */<br>
+#define BD_SC_CM ((ushort)0x0200) /* Continous mode */<br>
+#define BD_SC_ID ((ushort)0x0100) /* Rec'd too many idles */<br>
+#define BD_SC_P ((ushort)0x0100) /* xmt preamble */<br>
+#define BD_SC_BR ((ushort)0x0020) /* Break received */<br>
+#define BD_SC_FR ((ushort)0x0010) /* Framing error */<br>
+#define BD_SC_PR ((ushort)0x0008) /* Parity error */<br>
+#define BD_SC_OV ((ushort)0x0002) /* Overrun */<br>
+#define BD_SC_CD ((ushort)0x0001) /* ?? */<br>
+<br>
+/* Buffer descriptor control/status used by Ethernet receive.<br>
+*/<br>
+#define BD_ENET_RX_EMPTY ((ushort)0x8000)<br>
+#define BD_ENET_RX_WRAP ((ushort)0x2000)<br>
+#define BD_ENET_RX_INTR ((ushort)0x1000)<br>
+#define BD_ENET_RX_LAST ((ushort)0x0800)<br>
+#define BD_ENET_RX_FIRST ((ushort)0x0400)<br>
+#define BD_ENET_RX_MISS ((ushort)0x0100)<br>
+#define BD_ENET_RX_LG ((ushort)0x0020)<br>
+#define BD_ENET_RX_NO ((ushort)0x0010)<br>
+#define BD_ENET_RX_SH ((ushort)0x0008)<br>
+#define BD_ENET_RX_CR ((ushort)0x0004)<br>
+#define BD_ENET_RX_OV ((ushort)0x0002)<br>
+#define BD_ENET_RX_CL ((ushort)0x0001)<br>
+#define BD_ENET_RX_STATS ((ushort)0x013f) /* All status bits */<br>
+<br>
+/* Buffer descriptor control/status used by Ethernet transmit.<br>
+*/<br>
+#define BD_ENET_TX_READY ((ushort)0x8000)<br>
+#define BD_ENET_TX_PAD ((ushort)0x4000)<br>
+#define BD_ENET_TX_WRAP ((ushort)0x2000)<br>
+#define BD_ENET_TX_INTR ((ushort)0x1000)<br>
+#define BD_ENET_TX_LAST ((ushort)0x0800)<br>
+#define BD_ENET_TX_TC ((ushort)0x0400)<br>
+#define BD_ENET_TX_DEF ((ushort)0x0200)<br>
+#define BD_ENET_TX_HB ((ushort)0x0100)<br>
+#define BD_ENET_TX_LC ((ushort)0x0080)<br>
+#define BD_ENET_TX_RL ((ushort)0x0040)<br>
+#define BD_ENET_TX_RCMASK ((ushort)0x003c)<br>
+#define BD_ENET_TX_UN ((ushort)0x0002)<br>
+#define BD_ENET_TX_CSL ((ushort)0x0001)<br>
+#define BD_ENET_TX_STATS ((ushort)0x03ff) /* All status bits */<br>
+<br>
+#endif /* FEC_MPC5121_H */<br>
diff --git a/drivers/net/fs_enet/fs_enet-main.c b/drivers/net/fs_enet/fs_enet-main.c<br>
index 31c9693..4ca8513 100644<br>
--- a/drivers/net/fs_enet/fs_enet-main.c<br>
+++ b/drivers/net/fs_enet/fs_enet-main.c<br>
@@ -69,6 +69,7 @@ MODULE_PARM_DESC(fs_enet_debug,<br>
static void fs_enet_netpoll(struct net_device *dev);<br>
#endif<br>
<br>
+#define ENET_RX_ALIGN 16<br>
static void fs_set_multicast_list(struct net_device *dev)<br>
{<br>
struct fs_enet_private *fep = netdev_priv(dev);<br>
@@ -592,6 +593,33 @@ void fs_cleanup_bds(struct net_device *dev)<br>
<br>
/**********************************************************************************/<br>
<br>
+#define TX_ALIGN_WORKAROUND<br>
+#ifdef TX_ALIGN_WORKAROUND<br>
+static struct sk_buff *aligntxskb(struct net_device *dev, struct sk_buff *skb)<br>
+{<br>
+ struct sk_buff *skbn;<br>
+ skbn = dev_alloc_skb(ENET_RX_FRSIZE+0x20);<br>
+ if (skbn)<br>
+ skb_align(skbn, 0x20);<br>
+<br>
+ if (!skbn) {<br>
+ printk(KERN_WARNING DRV_MODULE_NAME<br>
+ ": %s Memory squeeze, dropping tx packet.\n",<br>
+ dev->name);<br>
+ dev_kfree_skb_any(skb);<br>
+ return NULL;<br>
+ }<br>
+<br>
+ skb_copy_from_linear_data(skb, skbn->data, skb->len);<br>
+ skb_put(skbn, skb->len);<br>
+ dev_kfree_skb_any(skb);<br>
+ return skbn;<br>
+}<br>
+#else<br>
+#define aligntxskb(skb) skb<br>
+#endif<br>
+<br>
+<br>
static int fs_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)<br>
{<br>
struct fs_enet_private *fep = netdev_priv(dev);<br>
@@ -600,6 +628,7 @@ static int fs_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)<br>
u16 sc;<br>
unsigned long flags;<br>
<br>
+ skb = aligntxskb(dev, skb);<br>
spin_lock_irqsave(&fep->tx_lock, flags);<br>
<br>
/*<br>
@@ -951,7 +980,7 @@ static int fs_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)<br>
{<br>
struct fs_enet_private *fep = netdev_priv(dev);<br>
struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&rq->ifr_data;<br>
-<br>
+ printk("<1> %s: %s (%d)\n",__FILE__,__FUNCTION__,__LINE__);<br>
if (!netif_running(dev))<br>
return -EINVAL;<br>
<br>
@@ -1147,6 +1176,7 @@ static int fs_cleanup_instance(struct net_device *ndev)<br>
<br>
/**************************************************************************************/<br>
<br>
+#ifndef CONFIG_FS_ENET_MPC5121_FEC<br>
/* handy pointer to the immap */<br>
void __iomem *fs_enet_immap = NULL;<br>
<br>
@@ -1168,6 +1198,10 @@ static void cleanup_immap(void)<br>
iounmap(fs_enet_immap);<br>
#endif<br>
}<br>
+#else<br>
+#define setup_immap() 0<br>
+#define cleanup_immap() do {} while (0)<br>
+#endif<br>
<br>
/**************************************************************************************/<br>
<br>
@@ -1370,10 +1404,17 @@ static struct of_device_id fs_enet_match[] = {<br>
},<br>
#endif<br>
#ifdef CONFIG_FS_ENET_HAS_FEC<br>
+#ifndef CONFIG_FS_ENET_MPC5121_FEC<br>
{<br>
.compatible = "fsl,pq1-fec-enet",<br>
.data = (void *)&fs_fec_ops,<br>
},<br>
+#else<br>
+ {<br>
+ .compatible = "fsl,mpc5121-fec",<br>
+ .data = (void *)&fs_fec_ops,<br>
+ },<br>
+#endif<br>
#endif<br>
{}<br>
};<br>
@@ -1431,15 +1472,42 @@ static int fs_enet_remove(struct device *dev)<br>
return fs_cleanup_instance(dev_get_drvdata(dev));<br>
}<br>
<br>
+#ifdef CONFIG_PM<br>
+static int fs_enet_suspend(struct device *dev, pm_message_t state)<br>
+{<br>
+ struct net_device *ndev = dev_get_drvdata(dev);<br>
+<br>
+ if (netif_running(ndev))<br>
+ fs_enet_close(ndev);<br>
+<br>
+ return 0;<br>
+}<br>
+<br>
+static int fs_enet_resume(struct device *dev)<br>
+{<br>
+ struct net_device *ndev = dev_get_drvdata(dev);<br>
+<br>
+ if (netif_running(ndev))<br>
+ fs_enet_open(ndev);<br>
+<br>
+ return 0;<br>
+}<br>
+#else<br>
+#define fs_enet_suspend NULL<br>
+#define fs_enet_resume NULL<br>
+#endif<br>
+<br>
static struct device_driver fs_enet_fec_driver = {<br>
+#ifndef CONFIG_FS_ENET_MPC5121_FEC<br>
.name = "fsl-cpm-fec",<br>
+#else<br>
+ .name = "fsl-mpc5121-fec",<br>
+#endif<br>
.bus = &platform_bus_type,<br>
.probe = fs_enet_probe,<br>
.remove = fs_enet_remove,<br>
-#ifdef CONFIG_PM<br>
-/* .suspend = fs_enet_suspend, TODO */<br>
-/* .resume = fs_enet_resume, TODO */<br>
-#endif<br>
+ .suspend = fs_enet_suspend,<br>
+ .resume = fs_enet_resume,<br>
};<br>
<br>
static struct device_driver fs_enet_scc_driver = {<br>
@@ -1447,10 +1515,8 @@ static struct device_driver fs_enet_scc_driver = {<br>
.bus = &platform_bus_type,<br>
.probe = fs_enet_probe,<br>
.remove = fs_enet_remove,<br>
-#ifdef CONFIG_PM<br>
-/* .suspend = fs_enet_suspend, TODO */<br>
-/* .resume = fs_enet_resume, TODO */<br>
-#endif<br>
+ .suspend = fs_enet_suspend,<br>
+ .resume = fs_enet_resume,<br>
};<br>
<br>
static struct device_driver fs_enet_fcc_driver = {<br>
@@ -1458,10 +1524,8 @@ static struct device_driver fs_enet_fcc_driver = {<br>
.bus = &platform_bus_type,<br>
.probe = fs_enet_probe,<br>
.remove = fs_enet_remove,<br>
-#ifdef CONFIG_PM<br>
-/* .suspend = fs_enet_suspend, TODO */<br>
-/* .resume = fs_enet_resume, TODO */<br>
-#endif<br>
+ .suspend = fs_enet_suspend,<br>
+ .resume = fs_enet_resume,<br>
};<br>
<br>
static int __init fs_init(void)<br>
diff --git a/drivers/net/fs_enet/fs_enet.h b/drivers/net/fs_enet/fs_enet.h<br>
index e05389c..56d3f14 100644<br>
--- a/drivers/net/fs_enet/fs_enet.h<br>
+++ b/drivers/net/fs_enet/fs_enet.h<br>
@@ -9,11 +9,17 @@<br>
#include <linux/dma-mapping.h><br>
<br>
#include <linux/fs_enet_pd.h><br>
+#ifndef CONFIG_FS_ENET_MPC5121_FEC<br>
#include <asm/fs_pd.h><br>
+#else<br>
+#include "fec_mpc5121.h"<br>
+#endif<br>
<br>
#ifdef CONFIG_CPM1<br>
#include <asm/cpm1.h><br>
+#endif<br>
<br>
+#if defined(CONFIG_CPM1) || defined(CONFIG_FS_ENET_MPC5121_FEC)<br>
struct fec_info {<br>
fec_t __iomem *fecp;<br>
u32 mii_speed;<br>
@@ -170,10 +176,10 @@ void fs_enet_platform_cleanup(void);<br>
#define __cbd_in16(addr) __raw_readw(addr)<br>
#else<br>
/* for others play it safe */<br>
-#define __cbd_out32(addr, x) out_be32(addr, x)<br>
-#define __cbd_out16(addr, x) out_be16(addr, x)<br>
-#define __cbd_in32(addr) in_be32(addr)<br>
-#define __cbd_in16(addr) in_be16(addr)<br>
+#define __cbd_out32(addr, x) out_be32((volatile void __iomem *)addr, x)<br>
+#define __cbd_out16(addr, x) out_be16((volatile void __iomem *)addr, x)<br>
+#define __cbd_in32(addr) in_be32((volatile void __iomem *)addr)<br>
+#define __cbd_in16(addr) in_be16((volatile void __iomem *)addr)<br>
#endif<br>
<br>
/* write */<br>
diff --git a/drivers/net/fs_enet/mac-fec.c b/drivers/net/fs_enet/mac-fec.c<br>
index 8a311d1..d4de57f 100644<br>
--- a/drivers/net/fs_enet/mac-fec.c<br>
+++ b/drivers/net/fs_enet/mac-fec.c<br>
@@ -42,6 +42,9 @@<br>
#include <asm/mpc8xx.h><br>
#include <asm/cpm1.h><br>
#endif<br>
+#ifdef CONFIG_FS_ENET_MPC5121_FEC<br>
+#include "fec_mpc5121.h"<br>
+#endif<br>
<br>
#ifdef CONFIG_PPC_CPM_NEW_BINDING<br>
#include <asm/of_device.h><br>
@@ -306,7 +309,9 @@ static void restart(struct net_device *dev)<br>
* Set maximum receive buffer size.<br>
*/<br>
FW(fecp, r_buff_size, PKT_MAXBLR_SIZE);<br>
+#ifndef CONFIG_FS_ENET_MPC5121_FEC<br>
FW(fecp, r_hash, PKT_MAXBUF_SIZE);<br>
+#endif<br>
<br>
/* get physical address */<br>
rx_bd_base_phys = fep->ring_mem_addr;<br>
@@ -320,10 +325,17 @@ static void restart(struct net_device *dev)<br>
<br>
fs_init_bds(dev);<br>
<br>
+#ifndef CONFIG_FS_ENET_MPC5121_FEC<br>
/*<br>
* Enable big endian and don't care about SDMA FC.<br>
*/<br>
FW(fecp, fun_code, 0x78000000);<br>
+#else<br>
+ /*<br>
+ * Set DATA_BO and DESC_BO and leave the rest unchanged<br>
+ */<br>
+ FS(fecp, dma_control, 0xc0000000);<br>
+#endif<br>
<br>
/*<br>
* Set MII speed.<br>
@@ -334,11 +346,13 @@ static void restart(struct net_device *dev)<br>
* Clear any outstanding interrupt.<br>
*/<br>
FW(fecp, ievent, 0xffc0);<br>
+#ifndef CONFIG_FS_ENET_MPC5121_FEC<br>
#ifndef CONFIG_PPC_MERGE<br>
FW(fecp, ivec, (fep->interrupt / 2) << 29);<br>
#else<br>
FW(fecp, ivec, (virq_to_hw(fep->interrupt) / 2) << 29);<br>
#endif<br>
+#endif<br>
<br>
/*<br>
* adjust to speed (only for DUET & RMII)<br>
@@ -368,9 +382,13 @@ static void restart(struct net_device *dev)<br>
out_be32(&immap->im_cpm.cp_cptr, cptr);<br>
}<br>
#endif<br>
-<br>
-<br>
+#ifdef CONFIG_FS_ENET_MPC5121_FEC<br>
+ FW(fecp, r_cntrl, PKT_MAXBUF_SIZE<<16); /* max frame size */<br>
+ FS(fecp, r_cntrl, FEC_RCNTRL_MII_MODE); /* MII enable */<br>
+#else<br>
FW(fecp, r_cntrl, FEC_RCNTRL_MII_MODE); /* MII enable */<br>
+#endif<br>
+<br>
/*<br>
* adjust to duplex mode<br>
*/<br>
diff --git a/drivers/net/fs_enet/mii-fec.c b/drivers/net/fs_enet/mii-fec.c<br>
index f0014cf..5d9b846 100644<br>
--- a/drivers/net/fs_enet/mii-fec.c<br>
+++ b/drivers/net/fs_enet/mii-fec.c<br>
@@ -38,6 +38,7 @@<br>
<br>
#ifdef CONFIG_PPC_CPM_NEW_BINDING<br>
#include <asm/of_platform.h><br>
+#include <asm/time.h><br>
#endif<br>
<br>
#include "fs_enet.h"<br>
@@ -71,7 +72,7 @@ static int fs_mii_fec_init(struct fec_info* fec, struct fs_mii_fec_platform_info<br>
{<br>
struct resource *r;<br>
fec_t __iomem *fecp;<br>
- char* name = "fsl-cpm-fec";<br>
+ char *name = "fsl-cpm-fec";<br>
<br>
/* we need fec in order to be useful */<br>
struct platform_device *fec_pdev =<br>
@@ -261,9 +262,16 @@ static int fs_enet_mdio_remove(struct of_device *ofdev)<br>
}<br>
<br>
static struct of_device_id fs_enet_mdio_fec_match[] = {<br>
+#ifdef CONFIG_FS_ENET_FEC<br>
{<br>
.compatible = "fsl,pq1-fec-mdio",<br>
},<br>
+#endif<br>
+#ifdef CONFIG_FS_ENET_MPC5121_FEC<br>
+ {<br>
+ .compatible = "fsl,mpc5121-fec-mdio",<br>
+ },<br>
+#endif<br>
{},<br>
};<br>
<font color="#888888"><br>
--<br>
<a href="http://1.5.4.3" target="_blank">1.5.4.3</a><br>
<br>
_______________________________________________<br>
Linuxppc-embedded mailing list<br>
<a href="mailto:Linuxppc-embedded@ozlabs.org">Linuxppc-embedded@ozlabs.org</a><br>
<a href="https://ozlabs.org/mailman/listinfo/linuxppc-embedded" target="_blank">https://ozlabs.org/mailman/listinfo/linuxppc-embedded</a><br>
</font></blockquote></div><br>