public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] eth: dtsec: fix TBI ANA setting bug in dtsec_configure_serdes()
@ 2015-11-25  7:04 Yuanzheng Li
  2015-11-25 17:02 ` York Sun
  0 siblings, 1 reply; 7+ messages in thread
From: Yuanzheng Li @ 2015-11-25  7:04 UTC (permalink / raw)
  To: u-boot

The TBI_ANA register is configurated with the wrong value 0x4001, refer
to QorIQ Data Path Acceleration Architecture (DPAA) Reference Manual.
It set the reserved areas, bit 1 and bit 11 to bit 15 in big endian,
which should be cleared. But the normal functions of the auto-negotiation,
e.g. Pause and Full Duplex, do not be set.

There is no problem in the p2041rdb board, because the ppc is connected
directly with the phy chip which support auto-negotiation by default in
SGMII interface. But the link problem will occur when it is connected with
a switch chip like BCM5389, the switch chip disable auto-negotiation by
default, and the ppc also disable auto-negotiation, then there is no link
between them.

So use the vlue TBIANA_SETTINGS to enable the ppc's auto-negotiation.

Signed-off-by: Yuanzheng Li <liyuanzheng01@163.com>
Cc: York Sun <yorksun@freescale.com>
---
 drivers/net/fm/eth.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c
index eb8e936..78c0988 100644
--- a/drivers/net/fm/eth.c
+++ b/drivers/net/fm/eth.c
@@ -81,7 +81,7 @@ qsgmii_loop:
 	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0, TBI_TBICON,
 			TBICON_CLK_SELECT);
 	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0, TBI_ANA,
-			TBIANA_SGMII_ACK);
+			TBIANA_SETTINGS);
 	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0,
 			TBI_CR, TBICR_SETTINGS);
 #endif
-- 
1.7.8

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH] eth: dtsec: fix TBI ANA setting bug in dtsec_configure_serdes()
  2015-11-25  7:04 [U-Boot] [PATCH] eth: dtsec: fix TBI ANA setting bug in dtsec_configure_serdes() Yuanzheng Li
@ 2015-11-25 17:02 ` York Sun
  2015-11-26  4:17   ` Shaohui Xie
  0 siblings, 1 reply; 7+ messages in thread
From: York Sun @ 2015-11-25 17:02 UTC (permalink / raw)
  To: u-boot

+ Experts

On 11/24/2015 11:04 PM, Yuanzheng Li wrote:
> The TBI_ANA register is configurated with the wrong value 0x4001, refer
> to QorIQ Data Path Acceleration Architecture (DPAA) Reference Manual.
> It set the reserved areas, bit 1 and bit 11 to bit 15 in big endian,
> which should be cleared. But the normal functions of the auto-negotiation,
> e.g. Pause and Full Duplex, do not be set.
> 
> There is no problem in the p2041rdb board, because the ppc is connected
> directly with the phy chip which support auto-negotiation by default in
> SGMII interface. But the link problem will occur when it is connected with
> a switch chip like BCM5389, the switch chip disable auto-negotiation by
> default, and the ppc also disable auto-negotiation, then there is no link
> between them.
> 
> So use the vlue TBIANA_SETTINGS to enable the ppc's auto-negotiation.
> 
> Signed-off-by: Yuanzheng Li <liyuanzheng01@163.com>
> Cc: York Sun <yorksun@freescale.com>
> ---
>  drivers/net/fm/eth.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c
> index eb8e936..78c0988 100644
> --- a/drivers/net/fm/eth.c
> +++ b/drivers/net/fm/eth.c
> @@ -81,7 +81,7 @@ qsgmii_loop:
>  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0, TBI_TBICON,
>  			TBICON_CLK_SELECT);
>  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0, TBI_ANA,
> -			TBIANA_SGMII_ACK);
> +			TBIANA_SETTINGS);
>  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0,
>  			TBI_CR, TBICR_SETTINGS);
>  #endif
> 

Yuanzheng,

After your change, TBIANA_SGMII_ACK is not used and should be removed.

Shaohui and Codrin,

Please comment.

York

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH] eth: dtsec: fix TBI ANA setting bug in dtsec_configure_serdes()
  2015-11-25 17:02 ` York Sun
@ 2015-11-26  4:17   ` Shaohui Xie
  2015-12-09 14:25     ` 李远正
  0 siblings, 1 reply; 7+ messages in thread
From: Shaohui Xie @ 2015-11-26  4:17 UTC (permalink / raw)
  To: u-boot

> -----Original Message-----
> From: York Sun [mailto:yorksun at freescale.com]
> Sent: Thursday, November 26, 2015 1:03 AM
> To: Xie Shaohui-B21989; Ciubotariu Codrin Constantin-B43658
> Cc: Yuanzheng Li; u-boot at lists.denx.de; Liu Dave-R63238
> Subject: Re: [PATCH] eth: dtsec: fix TBI ANA setting bug in
> dtsec_configure_serdes()
> 
> + Experts
> 
> On 11/24/2015 11:04 PM, Yuanzheng Li wrote:
> > The TBI_ANA register is configurated with the wrong value 0x4001,
> > refer to QorIQ Data Path Acceleration Architecture (DPAA) Reference
> Manual.
> > It set the reserved areas, bit 1 and bit 11 to bit 15 in big endian,
> > which should be cleared. But the normal functions of the
> > auto-negotiation, e.g. Pause and Full Duplex, do not be set.
[S.H] The value 0x4001 is so special, as mentioned, it does not match the 
DPAA RM, So I dig some docs and found AN3869, in which the 0x4001 is the
desired one to write to TBI_ANA for SGMII.
 
> >
> > There is no problem in the p2041rdb board, because the ppc is
> > connected directly with the phy chip which support auto-negotiation by
> > default in SGMII interface. But the link problem will occur when it is
> > connected with a switch chip like BCM5389, the switch chip disable
> > auto-negotiation by default, and the ppc also disable
> > auto-negotiation, then there is no link between them.
[S.H] This seems a phyless connection. If BCM5389 disables AN, then PPC should
Also disable AN by setting TBI_CR.

> >
> > So use the vlue TBIANA_SETTINGS to enable the ppc's auto-negotiation.
[S.H] The TBI_ANA is " AN Advertisement Register ", it does not enable/disable AN.
A proper way should be to distinguish the phy and phyless connections and configure
The TBI registers accordingly.

Thanks,
Shaohui

> >
> > Signed-off-by: Yuanzheng Li <liyuanzheng01@163.com>
> > Cc: York Sun <yorksun@freescale.com>
> > ---
> >  drivers/net/fm/eth.c |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c index
> > eb8e936..78c0988 100644
> > --- a/drivers/net/fm/eth.c
> > +++ b/drivers/net/fm/eth.c
> > @@ -81,7 +81,7 @@ qsgmii_loop:
> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0, TBI_TBICON,
> >  			TBICON_CLK_SELECT);
> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0, TBI_ANA,
> > -			TBIANA_SGMII_ACK);
> > +			TBIANA_SETTINGS);
> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0,
> >  			TBI_CR, TBICR_SETTINGS);
> >  #endif
> >
> 
> Yuanzheng,
> 
> After your change, TBIANA_SGMII_ACK is not used and should be removed.
> 
> Shaohui and Codrin,
> 
> Please comment.
> 
> York

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH] eth: dtsec: fix TBI ANA setting bug in dtsec_configure_serdes()
  2015-11-26  4:17   ` Shaohui Xie
@ 2015-12-09 14:25     ` 李远正
  2015-12-14  3:54       ` York Sun
  0 siblings, 1 reply; 7+ messages in thread
From: 李远正 @ 2015-12-09 14:25 UTC (permalink / raw)
  To: u-boot

The value TBIANA_SETTINGS is also work on the p2041rdb board, so it can work 
on the both phy and phyless connections.



At 2015-11-26 12:17:42, "Shaohui Xie" <Shaohui.Xie@freescale.com> wrote:
>> -----Original Message-----
>> From: York Sun [mailto:yorksun at freescale.com]
>> Sent: Thursday, November 26, 2015 1:03 AM
>> To: Xie Shaohui-B21989; Ciubotariu Codrin Constantin-B43658
>> Cc: Yuanzheng Li; u-boot at lists.denx.de; Liu Dave-R63238
>> Subject: Re: [PATCH] eth: dtsec: fix TBI ANA setting bug in
>> dtsec_configure_serdes()
>> 
>> + Experts
>> 
>> On 11/24/2015 11:04 PM, Yuanzheng Li wrote:
>> > The TBI_ANA register is configurated with the wrong value 0x4001,
>> > refer to QorIQ Data Path Acceleration Architecture (DPAA) Reference
>> Manual.
>> > It set the reserved areas, bit 1 and bit 11 to bit 15 in big endian,
>> > which should be cleared. But the normal functions of the
>> > auto-negotiation, e.g. Pause and Full Duplex, do not be set.
>[S.H] The value 0x4001 is so special, as mentioned, it does not match the 
>DPAA RM, So I dig some docs and found AN3869, in which the 0x4001 is the
>desired one to write to TBI_ANA for SGMII.
> 
>> >
>> > There is no problem in the p2041rdb board, because the ppc is
>> > connected directly with the phy chip which support auto-negotiation by
>> > default in SGMII interface. But the link problem will occur when it is
>> > connected with a switch chip like BCM5389, the switch chip disable
>> > auto-negotiation by default, and the ppc also disable
>> > auto-negotiation, then there is no link between them.
>[S.H] This seems a phyless connection. If BCM5389 disables AN, then PPC should
>Also disable AN by setting TBI_CR.
>
>> >
>> > So use the vlue TBIANA_SETTINGS to enable the ppc's auto-negotiation.
>[S.H] The TBI_ANA is " AN Advertisement Register ", it does not enable/disable AN.
>A proper way should be to distinguish the phy and phyless connections and configure
>The TBI registers accordingly.
>
>Thanks,
>Shaohui

>
>> >
>> > Signed-off-by: Yuanzheng Li <liyuanzheng01@163.com>
>> > Cc: York Sun <yorksun@freescale.com>
>> > ---
>> >  drivers/net/fm/eth.c |    2 +-
>> >  1 files changed, 1 insertions(+), 1 deletions(-)
>> >
>> > diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c index
>> > eb8e936..78c0988 100644
>> > --- a/drivers/net/fm/eth.c
>> > +++ b/drivers/net/fm/eth.c
>> > @@ -81,7 +81,7 @@ qsgmii_loop:
>> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0, TBI_TBICON,
>> >  			TBICON_CLK_SELECT);
>> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0, TBI_ANA,
>> > -			TBIANA_SGMII_ACK);
>> > +			TBIANA_SETTINGS);
>> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0,
>> >  			TBI_CR, TBICR_SETTINGS);
>> >  #endif
>> >
>> 
>> Yuanzheng,
>> 
>> After your change, TBIANA_SGMII_ACK is not used and should be removed.
>> 
>> Shaohui and Codrin,
>> 
>> Please comment.
>> 
>> York

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH] eth: dtsec: fix TBI ANA setting bug in dtsec_configure_serdes()
  2015-12-09 14:25     ` 李远正
@ 2015-12-14  3:54       ` York Sun
  2015-12-14  7:07         ` Shaohui Xie
  0 siblings, 1 reply; 7+ messages in thread
From: York Sun @ 2015-12-14  3:54 UTC (permalink / raw)
  To: u-boot

Shaohui,

Please comment/confirm.

York

On 12/09/2015 10:25 PM, ??? wrote:
> The value TBIANA_SETTINGS is also work on the p2041rdb board, so it can work 
> on the both phy and phyless connections.
> 
> 
> 
> At 2015-11-26 12:17:42, "Shaohui Xie" <Shaohui.Xie@freescale.com> wrote:
>>> -----Original Message-----
>>> From: York Sun [mailto:yorksun at freescale.com]
>>> Sent: Thursday, November 26, 2015 1:03 AM
>>> To: Xie Shaohui-B21989; Ciubotariu Codrin Constantin-B43658
>>> Cc: Yuanzheng Li; u-boot at lists.denx.de; Liu Dave-R63238
>>> Subject: Re: [PATCH] eth: dtsec: fix TBI ANA setting bug in
>>> dtsec_configure_serdes()
>>> 
>>> + Experts
>>> 
>>> On 11/24/2015 11:04 PM, Yuanzheng Li wrote:
>>> > The TBI_ANA register is configurated with the wrong value 0x4001,
>>> > refer to QorIQ Data Path Acceleration Architecture (DPAA) Reference
>>> Manual.
>>> > It set the reserved areas, bit 1 and bit 11 to bit 15 in big endian,
>>> > which should be cleared. But the normal functions of the
>>> > auto-negotiation, e.g. Pause and Full Duplex, do not be set.
>>[S.H] The value 0x4001 is so special, as mentioned, it does not match the 
>>DPAA RM, So I dig some docs and found AN3869, in which the 0x4001 is the
>>desired one to write to TBI_ANA for SGMII.
>> 
>>> >
>>> > There is no problem in the p2041rdb board, because the ppc is
>>> > connected directly with the phy chip which support auto-negotiation by
>>> > default in SGMII interface. But the link problem will occur when it is
>>> > connected with a switch chip like BCM5389, the switch chip disable
>>> > auto-negotiation by default, and the ppc also disable
>>> > auto-negotiation, then there is no link between them.
>>[S.H] This seems a phyless connection. If BCM5389 disables AN, then PPC should
>>Also disable AN by setting TBI_CR.
>>
>>> >
>>> > So use the vlue TBIANA_SETTINGS to enable the ppc's auto-negotiation.
>>[S.H] The TBI_ANA is " AN Advertisement Register ", it does not enable/disable AN.
>>A proper way should be to distinguish the phy and phyless connections and configure
>>The TBI registers accordingly.
>>
>>Thanks,
>>Shaohui
>>
>>> >
>>> > Signed-off-by: Yuanzheng Li <liyuanzheng01@163.com>
>>> > Cc: York Sun <yorksun@freescale.com>
>>> > ---
>>> >  drivers/net/fm/eth.c |    2 +-
>>> >  1 files changed, 1 insertions(+), 1 deletions(-)
>>> >
>>> > diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c index
>>> > eb8e936..78c0988 100644
>>> > --- a/drivers/net/fm/eth.c
>>> > +++ b/drivers/net/fm/eth.c
>>> > @@ -81,7 +81,7 @@ qsgmii_loop:
>>> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0, TBI_TBICON,
>>> >  			TBICON_CLK_SELECT);
>>> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0, TBI_ANA,
>>> > -			TBIANA_SGMII_ACK);
>>> > +			TBIANA_SETTINGS);
>>> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0,
>>> >  			TBI_CR, TBICR_SETTINGS);
>>> >  #endif
>>> >
>>> 
>>> Yuanzheng,
>>> 
>>> After your change, TBIANA_SGMII_ACK is not used and should be removed.
>>> 
>>> Shaohui and Codrin,
>>> 
>>> Please comment.
>>> 
>>> York
> 
> 
> 
>  
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH] eth: dtsec: fix TBI ANA setting bug in dtsec_configure_serdes()
  2015-12-14  3:54       ` York Sun
@ 2015-12-14  7:07         ` Shaohui Xie
  2016-03-22 18:57           ` york sun
  0 siblings, 1 reply; 7+ messages in thread
From: Shaohui Xie @ 2015-12-14  7:07 UTC (permalink / raw)
  To: u-boot

Hi,

As mentioned, the value 0x4001 is the desired one in AN3869 for SGMII setting,
quoted as below:
" Program TBI ANA = 0x4001 (SGMII) or 0x01A0 (1000BASE-X). "

I think the AN3869 should be followed, change SGMII setting just because it 
worked on P2041rdb is not a good reason.

To distinguish SGMII from other connections should be the way to program TBI ANA,
This is also follow the AN3869.

Best Regards, 
Shaohui Xie


> -----Original Message-----
> From: York Sun [mailto:yorksun at freescale.com]
> Sent: Monday, December 14, 2015 11:55 AM
> To: ???; Xie Shaohui-B21989
> Cc: Ciubotariu Codrin Constantin-B43658; u-boot at lists.denx.de; Liu Dave-
> R63238
> Subject: Re: [PATCH] eth: dtsec: fix TBI ANA setting bug in
> dtsec_configure_serdes()
> 
> Shaohui,
> 
> Please comment/confirm.
> 
> York
> 
> On 12/09/2015 10:25 PM, ??? wrote:
> > The value TBIANA_SETTINGS is also work on the p2041rdb board, so it
> > can work on the both phy and phyless connections.
> >
> >
> >
> > At 2015-11-26 12:17:42, "Shaohui Xie" <Shaohui.Xie@freescale.com> wrote:
> >>> -----Original Message-----
> >>> From: York Sun [mailto:yorksun at freescale.com]
> >>> Sent: Thursday, November 26, 2015 1:03 AM
> >>> To: Xie Shaohui-B21989; Ciubotariu Codrin Constantin-B43658
> >>> Cc: Yuanzheng Li; u-boot at lists.denx.de; Liu Dave-R63238
> >>> Subject: Re: [PATCH] eth: dtsec: fix TBI ANA setting bug in
> >>> dtsec_configure_serdes()
> >>>
> >>> + Experts
> >>>
> >>> On 11/24/2015 11:04 PM, Yuanzheng Li wrote:
> >>> > The TBI_ANA register is configurated with the wrong value 0x4001,
> >>> > refer to QorIQ Data Path Acceleration Architecture (DPAA)
> >>> > Reference
> >>> Manual.
> >>> > It set the reserved areas, bit 1 and bit 11 to bit 15 in big
> >>> > endian, which should be cleared. But the normal functions of the
> >>> > auto-negotiation, e.g. Pause and Full Duplex, do not be set.
> >>[S.H] The value 0x4001 is so special, as mentioned, it does not match
> >>the DPAA RM, So I dig some docs and found AN3869, in which the 0x4001
> >>is the desired one to write to TBI_ANA for SGMII.
> >>
> >>> >
> >>> > There is no problem in the p2041rdb board, because the ppc is
> >>> > connected directly with the phy chip which support
> >>> > auto-negotiation by default in SGMII interface. But the link
> >>> > problem will occur when it is connected with a switch chip like
> >>> > BCM5389, the switch chip disable auto-negotiation by default, and
> >>> > the ppc also disable auto-negotiation, then there is no link
> between them.
> >>[S.H] This seems a phyless connection. If BCM5389 disables AN, then
> >>PPC should Also disable AN by setting TBI_CR.
> >>
> >>> >
> >>> > So use the vlue TBIANA_SETTINGS to enable the ppc's auto-
> negotiation.
> >>[S.H] The TBI_ANA is " AN Advertisement Register ", it does not
> enable/disable AN.
> >>A proper way should be to distinguish the phy and phyless connections
> >>and configure The TBI registers accordingly.
> >>
> >>Thanks,
> >>Shaohui
> >>
> >>> >
> >>> > Signed-off-by: Yuanzheng Li <liyuanzheng01@163.com>
> >>> > Cc: York Sun <yorksun@freescale.com>
> >>> > ---
> >>> >  drivers/net/fm/eth.c |    2 +-
> >>> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >>> >
> >>> > diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c index
> >>> > eb8e936..78c0988 100644
> >>> > --- a/drivers/net/fm/eth.c
> >>> > +++ b/drivers/net/fm/eth.c
> >>> > @@ -81,7 +81,7 @@ qsgmii_loop:
> >>> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0,
> TBI_TBICON,
> >>> >  			TBICON_CLK_SELECT);
> >>> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0,
> TBI_ANA,
> >>> > -			TBIANA_SGMII_ACK);
> >>> > +			TBIANA_SETTINGS);
> >>> >  	tsec_local_mdio_write(phyregs, in_be32(&regs->tbipa), 0,
> >>> >  			TBI_CR, TBICR_SETTINGS);
> >>> >  #endif
> >>> >
> >>>
> >>> Yuanzheng,
> >>>
> >>> After your change, TBIANA_SGMII_ACK is not used and should be removed.
> >>>
> >>> Shaohui and Codrin,
> >>>
> >>> Please comment.
> >>>
> >>> York
> >
> >
> >
> >
> >

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH] eth: dtsec: fix TBI ANA setting bug in dtsec_configure_serdes()
  2015-12-14  7:07         ` Shaohui Xie
@ 2016-03-22 18:57           ` york sun
  0 siblings, 0 replies; 7+ messages in thread
From: york sun @ 2016-03-22 18:57 UTC (permalink / raw)
  To: u-boot

On 12/13/2015 11:07 PM, Xie Shaohui-B21989 wrote:
> Hi,
> 
> As mentioned, the value 0x4001 is the desired one in AN3869 for SGMII setting,
> quoted as below:
> " Program TBI ANA = 0x4001 (SGMII) or 0x01A0 (1000BASE-X). "
> 
> I think the AN3869 should be followed, change SGMII setting just because it 
> worked on P2041rdb is not a good reason.
> 
> To distinguish SGMII from other connections should be the way to program TBI ANA,
> This is also follow the AN3869.
> 
> Best Regards, 
> Shaohui Xie
> 
> 

Looks like this patch is dead. I will mark is NA.

York

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-03-22 18:57 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-25  7:04 [U-Boot] [PATCH] eth: dtsec: fix TBI ANA setting bug in dtsec_configure_serdes() Yuanzheng Li
2015-11-25 17:02 ` York Sun
2015-11-26  4:17   ` Shaohui Xie
2015-12-09 14:25     ` 李远正
2015-12-14  3:54       ` York Sun
2015-12-14  7:07         ` Shaohui Xie
2016-03-22 18:57           ` york sun

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox