Patchwork [U-Boot] mx28evk: Convert to phylib framework

login
register
mail settings
Submitter Fabio Estevam
Date July 12, 2013, 4:28 a.m.
Message ID <1373603284-884-1-git-send-email-festevam@gmail.com>
Download mbox | patch
Permalink /patch/258689/
State Changes Requested
Delegated to: Stefano Babic
Headers show

Comments

Fabio Estevam - July 12, 2013, 4:28 a.m.
From: Fabio Estevam <fabio.estevam@freescale.com>

mx28evk has a LAN8270 ethernet phy and we can use the phylib framework.

One of the advantages of converting to phylib is that we no longer see a timeout
prior to the first transfer in the 'tftp' command.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
After applying this patch I get:

U-Boot 2013.04-11810-gd6d75ec-dirty (Jul 12 2013 - 01:15:03)                    
                                                                                
CPU:   Freescale i.MX28 rev1.2 at 454 MHz                                       
BOOT:  SSP SD/MMC #0, 3V3                                                       
DRAM:  128 MiB                               
MMC:   MXS MMC: 0                                                               
Video: MXSFB: 'videomode' variable not set!                                     
In:    serial                                                                   
Out:   serial                                                                   
Err:   serial                                                                   
Net:   Phy not found 

I still get this 'Phy not found' message, but I think this is not related to the
board code. 

 board/freescale/mx28evk/mx28evk.c | 15 +--------------
 include/configs/mx28evk.h         |  3 ++-
 2 files changed, 3 insertions(+), 15 deletions(-)
Marek Vasut - July 12, 2013, 4:58 a.m.
Dear Fabio Estevam,

> On Fri, Jul 12, 2013 at 1:40 AM, Marek Vasut <marex@denx.de> wrote:
> > Dear Fabio Estevam,
> > 
> >> From: Fabio Estevam <fabio.estevam@freescale.com>
> >> 
> >> mx28evk has a LAN8270 ethernet phy and we can use the phylib framework.
> >> 
> >> One of the advantages of converting to phylib is that we no longer see a
> >> timeout prior to the first transfer in the 'tftp' command.
> >> 
> >> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> >> ---
> >> After applying this patch I get:
> >> 
> >> U-Boot 2013.04-11810-gd6d75ec-dirty (Jul 12 2013 - 01:15:03)
> >> 
> >> CPU:   Freescale i.MX28 rev1.2 at 454 MHz
> >> BOOT:  SSP SD/MMC #0, 3V3
> >> DRAM:  128 MiB
> >> MMC:   MXS MMC: 0
> >> Video: MXSFB: 'videomode' variable not set!
> >> In:    serial
> >> Out:   serial
> >> Err:   serial
> >> Net:   Phy not found
> >> 
> >> I still get this 'Phy not found' message, but I think this is not
> >> related to the board code.
> > 
> > This is because PHYlib doesn't know your PHY. You might need to add a
> > definition for it into drivers/net/phy/smsc.c
> 
> mx28evk uses a LAN8270.
> 
> drivers/net/phy/smsc.c has an entry for "SMSC LAN8710/LAN8720", so not
> sure why it fails to recognize it.
> I haven't debugged it yet.
> 
> Which phy does sc_sps_1.h use? Is it also a 8720? Is the phy recognized on
> boot?

I think it's 8720 , but it's recognised , yes. Are you sure the PHY addresses 
are correct ? You can dig into phylib a bit and see what IDs does it report.

Best regards,
Marek Vasut
Alexandre Pereira da Silva - July 12, 2013, 5 a.m.
On Fri, Jul 12, 2013 at 1:58 AM, Marek Vasut <marex@denx.de> wrote:
> Dear Fabio Estevam,
>
>> On Fri, Jul 12, 2013 at 1:40 AM, Marek Vasut <marex@denx.de> wrote:
>> > Dear Fabio Estevam,
>> >
>> >> From: Fabio Estevam <fabio.estevam@freescale.com>
>> >>
>> >> mx28evk has a LAN8270 ethernet phy and we can use the phylib framework.
>> >>
>> >> One of the advantages of converting to phylib is that we no longer see a
>> >> timeout prior to the first transfer in the 'tftp' command.
>> >>
>> >> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
>> >> ---
>> >> After applying this patch I get:
>> >>
>> >> U-Boot 2013.04-11810-gd6d75ec-dirty (Jul 12 2013 - 01:15:03)
>> >>
>> >> CPU:   Freescale i.MX28 rev1.2 at 454 MHz
>> >> BOOT:  SSP SD/MMC #0, 3V3
>> >> DRAM:  128 MiB
>> >> MMC:   MXS MMC: 0
>> >> Video: MXSFB: 'videomode' variable not set!
>> >> In:    serial
>> >> Out:   serial
>> >> Err:   serial
>> >> Net:   Phy not found
>> >>
>> >> I still get this 'Phy not found' message, but I think this is not
>> >> related to the board code.
>> >
>> > This is because PHYlib doesn't know your PHY. You might need to add a
>> > definition for it into drivers/net/phy/smsc.c
>>
>> mx28evk uses a LAN8270.
>>
>> drivers/net/phy/smsc.c has an entry for "SMSC LAN8710/LAN8720", so not
>> sure why it fails to recognize it.
>> I haven't debugged it yet.
>>
>> Which phy does sc_sps_1.h use? Is it also a 8720? Is the phy recognized on
>> boot?
>
> I think it's 8720 , but it's recognised , yes. Are you sure the PHY addresses
> are correct ? You can dig into phylib a bit and see what IDs does it report.

I think Fabio needs to define CONFIG_PHY_SMSC and use PHY address 3.
Marek Vasut - July 12, 2013, 11:48 a.m.
Dear Alexandre Pereira da Silva,

> On Fri, Jul 12, 2013 at 1:58 AM, Marek Vasut <marex@denx.de> wrote:
> > Dear Fabio Estevam,
> > 
> >> On Fri, Jul 12, 2013 at 1:40 AM, Marek Vasut <marex@denx.de> wrote:
> >> > Dear Fabio Estevam,
> >> > 
> >> >> From: Fabio Estevam <fabio.estevam@freescale.com>
> >> >> 
> >> >> mx28evk has a LAN8270 ethernet phy and we can use the phylib
> >> >> framework.
> >> >> 
> >> >> One of the advantages of converting to phylib is that we no longer
> >> >> see a timeout prior to the first transfer in the 'tftp' command.
> >> >> 
> >> >> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> >> >> ---
> >> >> After applying this patch I get:
> >> >> 
> >> >> U-Boot 2013.04-11810-gd6d75ec-dirty (Jul 12 2013 - 01:15:03)
> >> >> 
> >> >> CPU:   Freescale i.MX28 rev1.2 at 454 MHz
> >> >> BOOT:  SSP SD/MMC #0, 3V3
> >> >> DRAM:  128 MiB
> >> >> MMC:   MXS MMC: 0
> >> >> Video: MXSFB: 'videomode' variable not set!
> >> >> In:    serial
> >> >> Out:   serial
> >> >> Err:   serial
> >> >> Net:   Phy not found
> >> >> 
> >> >> I still get this 'Phy not found' message, but I think this is not
> >> >> related to the board code.
> >> > 
> >> > This is because PHYlib doesn't know your PHY. You might need to add a
> >> > definition for it into drivers/net/phy/smsc.c
> >> 
> >> mx28evk uses a LAN8270.
> >> 
> >> drivers/net/phy/smsc.c has an entry for "SMSC LAN8710/LAN8720", so not
> >> sure why it fails to recognize it.
> >> I haven't debugged it yet.
> >> 
> >> Which phy does sc_sps_1.h use? Is it also a 8720? Is the phy recognized
> >> on boot?
> > 
> > I think it's 8720 , but it's recognised , yes. Are you sure the PHY
> > addresses are correct ? You can dig into phylib a bit and see what IDs
> > does it report.
> 
> I think Fabio needs to define CONFIG_PHY_SMSC and use PHY address 3.

He already did and the LAN8720 can use either phy addr 0x00 or 0x01, so that 
seem ok as well.

Best regards,
Marek Vasut

Patch

diff --git a/board/freescale/mx28evk/mx28evk.c b/board/freescale/mx28evk/mx28evk.c
index 4edd9f4..cd81d58 100644
--- a/board/freescale/mx28evk/mx28evk.c
+++ b/board/freescale/mx28evk/mx28evk.c
@@ -110,7 +110,6 @@  int board_eth_init(bd_t *bis)
 {
 	struct mxs_clkctrl_regs *clkctrl_regs =
 		(struct mxs_clkctrl_regs *)MXS_CLKCTRL_BASE;
-	struct eth_device *dev;
 	int ret;
 
 	ret = cpu_eth_init(bis);
@@ -133,24 +132,12 @@  int board_eth_init(bd_t *bis)
 		return ret;
 	}
 
-	ret = fecmxc_initialize_multi(bis, 1, 3, MXS_ENET1_BASE);
+	ret = fecmxc_initialize_multi(bis, 1, 1, MXS_ENET1_BASE);
 	if (ret) {
 		puts("FEC MXS: Unable to init FEC1\n");
 		return ret;
 	}
 
-	dev = eth_get_dev_by_name("FEC0");
-	if (!dev) {
-		puts("FEC MXS: Unable to get FEC0 device entry\n");
-		return -EINVAL;
-	}
-
-	dev = eth_get_dev_by_name("FEC1");
-	if (!dev) {
-		puts("FEC MXS: Unable to get FEC1 device entry\n");
-		return -EINVAL;
-	}
-
 	return ret;
 }
 
diff --git a/include/configs/mx28evk.h b/include/configs/mx28evk.h
index de69182..2431b83 100644
--- a/include/configs/mx28evk.h
+++ b/include/configs/mx28evk.h
@@ -170,12 +170,13 @@ 
 
 /* Ethernet on SOC (FEC) */
 #ifdef	CONFIG_CMD_NET
-#define CONFIG_NET_MULTI
 #define CONFIG_ETHPRIME	"FEC0"
 #define CONFIG_FEC_MXC
 #define CONFIG_MII
 #define CONFIG_FEC_XCV_TYPE	RMII
 #define CONFIG_MX28_FEC_MAC_IN_OCOTP
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_SMSC
 #endif
 
 /* RTC */