public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Stephan Linz <linz@li-pro.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] net: fix some bugs in LL TEMAC driver
Date: Sat, 20 Nov 2010 19:48:08 +0100	[thread overview]
Message-ID: <201011201948.08516.linz@li-pro.net> (raw)
In-Reply-To: <AANLkTimGj9QzmYsjkL93WBsfdOp3QEOGeTd=Cmy0GVRD@mail.gmail.com>

Am Samstag, 20. November 2010, um 10:27:45 schrieb Michal Simek:
> 2010/11/19 Stephan Linz <linz@li-pro.net>
>
> >  * avoid using link variable uninitialized
> >  * avoid using phy_addr variable with invalid value
> >  * reorganize phy control: first looking for phy than link
> >  * return with error (result value -1) if no phy/link was found
> >  * fix boolean mistake in wait for link: wait as long as we got
> >    phy register 1 has no link indication (BMSR != 0x24)
> >  * expand the 'first run' flag handling in ll_temac_init() in
> >    respect to possible error detection in xps_ll_temac_phy_ctrl()
>
> I will test your changes on real hw.
>
> Some comments below.

I do it so on Monday ... printf() --> puts()

Regards,
Stephan

>
> Thanks,
> Michal
>
> > Signed-off-by: Stephan Linz <linz@li-pro.net>
> > ---
> >  drivers/net/xilinx_ll_temac.c |   44
> > ++++++++++++++++++++++++++++++----------
> >  1 files changed, 33 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/net/xilinx_ll_temac.c
> > b/drivers/net/xilinx_ll_temac.c index 72a1632..a72e072 100644
> > --- a/drivers/net/xilinx_ll_temac.c
> > +++ b/drivers/net/xilinx_ll_temac.c
> > @@ -225,24 +225,21 @@ static void read_phy_reg (struct eth_device *dev,
> > int phy_addr)
> >  #endif
> >
> >  static int phy_addr = -1;
> > -static int link;
> > +static int link = 0;
> >
> >  /* setting ll_temac and phy to proper setting */
> >  static int xps_ll_temac_phy_ctrl(struct eth_device *dev)
> >  {
> > -       int i;
> > +       int i, retries;
> >        unsigned int result;
> > -       unsigned retries = 10;
> >
> > +        /* link is setup */
> >        if (link == 1)
> > -               return 1; /* link is setup */
> > -
> > -       /* wait for link up */
> > -       while (retries-- &&
> > -               ((xps_ll_temac_hostif_get(dev, 0, phy_addr, 1) & 0x24) ==
> > 0x24))
> > -               ;
> > +               return 1;
> >
> > +       /* try out if have ever found the right phy? */
> >        if (phy_addr == -1) {
> > +               printf("Looking for phy ... ");
>
> use puts instead.
>
> >                for (i = 31; i >= 0; i--) {
> >                        result = xps_ll_temac_hostif_get(dev, 0, i, 1);
> >                        if ((result & 0x0ffff) != 0x0ffff) {
> > @@ -251,7 +248,27 @@ static int xps_ll_temac_phy_ctrl(struct eth_device
> > *dev)
> >                                break;
> >                        }
> >                }
> > +
> > +               /* no success? -- wery bad */
> > +               if (phy_addr == -1) {
> > +                       printf("ERROR\n");
>
> same here
>
> > +                       return -1;
> > +               }
> > +               printf("OK\n");
> > +       }
> > +
> > +       /* wait for link up */
> > +       printf("Waiting for link ... ");
>
> and here.
>
> > +       retries = 10;
> > +       while (retries-- &&
> > +               ((xps_ll_temac_hostif_get(dev, 0, phy_addr, 1) & 0x24) !=
> > 0x24))
> > +               ;
> > +
> > +       if (retries < 0) {
> > +               printf("ERROR\n");
>
> and here
>
> > +               return 0;
> >        }
> > +       printf("OK\n");
>
> and here.
>
> >        /* get PHY id */
> >        i = (xps_ll_temac_hostif_get(dev, 0, phy_addr, 2) << 16) | \
> > @@ -491,7 +508,6 @@ static int ll_temac_init(struct eth_device *dev, bd_t
> > *bis)
> >  #endif
> >        if (!first)
> >                return 0;
> > -       first = 0;
> >
> >        xps_ll_temac_init(dev, bis);
> >
> > @@ -502,7 +518,13 @@ static int ll_temac_init(struct eth_device *dev,
> > bd_t *bis)
> >        for (i = 0; i < 32; i++)
> >                read_phy_reg(dev, i);
> >  #endif
> > -       xps_ll_temac_phy_ctrl(dev);
> > +
> > +       if (xps_ll_temac_phy_ctrl(dev) == 0) {
> > +               xps_ll_temac_halt(dev);
> > +               return -1;
> > +       }
> > +
> > +       first = 0;
> >        return 1;
> >  }
> >
> > --
> > 1.6.0.4


-- 
Viele Gr??e,
Stephan Linz
______________________________________________________________________________
OpenDCC: http://www.li-pro.net/opendcc.phtml
PC/M: http://www.li-pro.net/pcm.phtml
CDK4AVR: http://cdk4avr.sourceforge.net/
CDK4NIOS: http://cdk4nios.sourceforge.net/
CDK4MSP: http://cdk4msp.sourceforge.net/
CPM4L: http://download.opensuse.org/repositories/home:/rexut:/CPM4L

  reply	other threads:[~2010-11-20 18:48 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-19 18:54 [U-Boot] [PATCH 1/2] net: fix some bugs in LL TEMAC driver Stephan Linz
2010-11-19 18:54 ` [U-Boot] [PATCH 2/2] net: Add National DP83865 PHY to " Stephan Linz
2010-11-20  9:23   ` Michal Simek
2010-11-20 18:48     ` Stephan Linz
2010-11-20  9:27 ` [U-Boot] [PATCH 1/2] net: fix some bugs in " Michal Simek
2010-11-20 18:48   ` Stephan Linz [this message]
2010-11-22  9:46 ` [U-Boot] corrections for LL TEMAC bug fixing Stephan Linz
2010-11-22  9:46   ` [U-Boot] [PATCH V2 1/1] net: fix some bugs in LL TEMAC driver Stephan Linz
2010-11-28 20:35     ` Wolfgang Denk
2010-11-29 11:06       ` Stephan Linz
2010-12-03  8:48     ` Michal Simek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201011201948.08516.linz@li-pro.net \
    --to=linz@li-pro.net \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox