Patchwork [U-Boot,2/2] net: Add National DP83865 PHY to LL TEMAC driver

login
register
mail settings
Submitter Stephan Linz
Date Nov. 19, 2010, 6:54 p.m.
Message ID <e9b512a205e6abb68827d23dc0aa76ddcff1d671.1290192590.git.linz@li-pro.net>
Download mbox | patch
Permalink /patch/72291/
State Changes Requested
Headers show

Comments

Stephan Linz - Nov. 19, 2010, 6:54 p.m.
Adding the missing phy-id for the National 10/100/1000 MBit
PHY DP83865 used on the Xilinx Spartan-3A DSP evaluation board
SP3ADSP1800.

Signed-off-by: Stephan Linz <linz@li-pro.net>
---
 drivers/net/xilinx_ll_temac.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)
Michal Simek - Nov. 20, 2010, 9:23 a.m.
Hi Stephan,

2010/11/19 Stephan Linz <linz@li-pro.net>

> Adding the missing phy-id for the National 10/100/1000 MBit
> PHY DP83865 used on the Xilinx Spartan-3A DSP evaluation board
> SP3ADSP1800.
>

I understand that you want to add support for PHY which is on xilinx
development
board but here is one design problem.
Is this really way how to add support for PHYs? As you can suggest the
answer is NO.

I was talking about with Ben some months ago and there is only one solution
which can be acceptable. The solution is phy lib. Not sure if Ben did any
basic tests with
it but this is sensible way how to do it.

The main reason is that Xilinx have several development boards and every
custom board
can have different phy and I don't want to see that we will add support for
it directly to driver.

In general I agree that it is necessary to support more PHYs at least all
which are on
Xilinx development boards but I can't agree with adding it directly to the
driver.

Regards,
Michal



>
> Signed-off-by: Stephan Linz <linz@li-pro.net>
> ---
>  drivers/net/xilinx_ll_temac.c |    9 +++++++--
>  1 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/xilinx_ll_temac.c b/drivers/net/xilinx_ll_temac.c
> index a72e072..b19a74a 100644
> --- a/drivers/net/xilinx_ll_temac.c
> +++ b/drivers/net/xilinx_ll_temac.c
> @@ -287,8 +287,11 @@ static int xps_ll_temac_phy_ctrl(struct eth_device
> *dev)
>                return 1;
>        }
>
> -       /* Marwell 88e1111 id - ml50x */
> -       if (i == 0x1410cc2) {
> +       /*
> +        * Marwell 88e1111 id - ml50x, ml605
> +        * National DP83865 id - sp3adsp1800
> +        */
> +       if (i == 0x1410cc2 || i == 0x20005c7a) {
>                result = xps_ll_temac_hostif_get(dev, 0, phy_addr, 5);
>                if ((result & 0x8000) == 0x8000) {
>                        xps_ll_temac_indirect_set(dev, 0, EMMC, 0x80000000);
> @@ -305,6 +308,8 @@ static int xps_ll_temac_phy_ctrl(struct eth_device
> *dev)
>                }
>                return 1;
>        }
> +
> +       printf("Unsupported PHY\n");
>        return 0;
>  }
>
> --
> 1.6.0.4
>
>
Stephan Linz - Nov. 20, 2010, 6:48 p.m.
Am Samstag, 20. November 2010, um 10:23:18 schrieb Michal Simek:
> Hi Stephan,

Hi Michal,
Hi Ben (see last questen to you below),

>
> 2010/11/19 Stephan Linz <linz@li-pro.net>
>
> > Adding the missing phy-id for the National 10/100/1000 MBit
> > PHY DP83865 used on the Xilinx Spartan-3A DSP evaluation board
> > SP3ADSP1800.
>
> I understand that you want to add support for PHY which is on xilinx
> development

right.

> board but here is one design problem.
> Is this really way how to add support for PHYs? As you can suggest the
> answer is NO.

Yes of course, that is my opinion too.

>
> I was talking about with Ben some months ago and there is only one solution
> which can be acceptable. The solution is phy lib. Not sure if Ben did any
> basic tests with
> it but this is sensible way how to do it.

@Ben: last question to you: Did you any basic tests with the new phy library? 
Is there any documentation?

>
> The main reason is that Xilinx have several development boards and every
> custom board
> can have different phy and I don't want to see that we will add support for
> it directly to driver.

Yes I know. This will be a problem if we do not use the phy library.

>
> In general I agree that it is necessary to support more PHYs at least all
> which are on
> Xilinx development boards but I can't agree with adding it directly to the
> driver.

I accept your decision and will maintain my own patch set until we can use the 
new phy library.

Other question for the transitional time to use the phy lib. Can we introduce 
a LL TEMAC configuration for the board specific phy id? Example:

<include/configs/microblaze-generic.h>
#define CONFIG_XILINX_LL_TEMAC_PHYID	0x1410cc2

<drivers/net/xilinx_ll_temac.c>
#ifndef CONFIG_XILINX_LL_TEMAC_PHYID
#error define phyid in configuration
#endif

xps_ll_temac_phy_ctrl():
if (i == CONFIG_XILINX_LL_TEMAC_PHYID) {
   ....
}


Best regards,
Stephan

>
> Regards,
> Michal
>
> > Signed-off-by: Stephan Linz <linz@li-pro.net>
> > ---
> >  drivers/net/xilinx_ll_temac.c |    9 +++++++--
> >  1 files changed, 7 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/net/xilinx_ll_temac.c
> > b/drivers/net/xilinx_ll_temac.c index a72e072..b19a74a 100644
> > --- a/drivers/net/xilinx_ll_temac.c
> > +++ b/drivers/net/xilinx_ll_temac.c
> > @@ -287,8 +287,11 @@ static int xps_ll_temac_phy_ctrl(struct eth_device
> > *dev)
> >                return 1;
> >        }
> >
> > -       /* Marwell 88e1111 id - ml50x */
> > -       if (i == 0x1410cc2) {
> > +       /*
> > +        * Marwell 88e1111 id - ml50x, ml605
> > +        * National DP83865 id - sp3adsp1800
> > +        */
> > +       if (i == 0x1410cc2 || i == 0x20005c7a) {
> >                result = xps_ll_temac_hostif_get(dev, 0, phy_addr, 5);
> >                if ((result & 0x8000) == 0x8000) {
> >                        xps_ll_temac_indirect_set(dev, 0, EMMC,
> > 0x80000000); @@ -305,6 +308,8 @@ static int xps_ll_temac_phy_ctrl(struct
> > eth_device *dev)
> >                }
> >                return 1;
> >        }
> > +
> > +       printf("Unsupported PHY\n");
> >        return 0;
> >  }
> >
> > --
> > 1.6.0.4

Patch

diff --git a/drivers/net/xilinx_ll_temac.c b/drivers/net/xilinx_ll_temac.c
index a72e072..b19a74a 100644
--- a/drivers/net/xilinx_ll_temac.c
+++ b/drivers/net/xilinx_ll_temac.c
@@ -287,8 +287,11 @@  static int xps_ll_temac_phy_ctrl(struct eth_device *dev)
 		return 1;
 	}
 
-	/* Marwell 88e1111 id - ml50x */
-	if (i == 0x1410cc2) {
+	/*
+	 * Marwell 88e1111 id - ml50x, ml605
+	 * National DP83865 id - sp3adsp1800
+	 */
+	if (i == 0x1410cc2 || i == 0x20005c7a) {
 		result = xps_ll_temac_hostif_get(dev, 0, phy_addr, 5);
 		if ((result & 0x8000) == 0x8000) {
 			xps_ll_temac_indirect_set(dev, 0, EMMC, 0x80000000);
@@ -305,6 +308,8 @@  static int xps_ll_temac_phy_ctrl(struct eth_device *dev)
 		}
 		return 1;
 	}
+
+	printf("Unsupported PHY\n");
 	return 0;
 }