Re: [PATCH] hw/net/xilinx_axienet: Fix PHY register 17 link status reporting

2026-07-22 Thread Peter Maydell
On Tue, 21 Jul 2026 at 20:03, Michael Tokarev  wrote:
>
> On 7/13/26 09:46, Jay Chang wrote:
> > The Marvell 88E PHY register 17 (PHY Specific Status Register)
> > bit 10 reports real-time link status. Previously, this register
> > returned a fixed value of 0x8800 with bit 10 always cleared,
> > causing U-Boot to always detect "No link" even when the link
> > was up.
> >
> > Signed-off-by: Jay Chang 
> > Reviewed-by: Frank Chang 
>
> I'm picking this up for qemu-stable.
> Please let me know if I should not.
>
> > ---
> >   hw/net/xilinx_axienet.c | 3 +++
> >   1 file changed, 3 insertions(+)
> >
> > diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c
> > index 970732b162..9f5f65ecfa 100644
> > --- a/hw/net/xilinx_axienet.c
> > +++ b/hw/net/xilinx_axienet.c
> > @@ -103,6 +103,9 @@ static unsigned int tdk_read(struct PHY *phy, unsigned 
> > int req)
> >   case 17:
> >   /* Marvell PHY on many xilinx boards.  */
> >   r = 0x8000; /* 1000Mb  */
> > +if (phy->link) {
> > +r |= 0x0400; /* Link is up */
> > +}
>
> Shouldn't we clear this bit somewhere?

You mean phy->link ? Probably that should be controlled by the
network backend. But that's a pre-existing thing (we already
report phy->link in a different PHY register).

-- PMM



Re: [PATCH] hw/net/xilinx_axienet: Fix PHY register 17 link status reporting

2026-07-21 Thread Michael Tokarev

On 7/13/26 09:46, Jay Chang wrote:

The Marvell 88E PHY register 17 (PHY Specific Status Register)
bit 10 reports real-time link status. Previously, this register
returned a fixed value of 0x8800 with bit 10 always cleared,
causing U-Boot to always detect "No link" even when the link
was up.

Signed-off-by: Jay Chang 
Reviewed-by: Frank Chang 


I'm picking this up for qemu-stable.
Please let me know if I should not.


---
  hw/net/xilinx_axienet.c | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c
index 970732b162..9f5f65ecfa 100644
--- a/hw/net/xilinx_axienet.c
+++ b/hw/net/xilinx_axienet.c
@@ -103,6 +103,9 @@ static unsigned int tdk_read(struct PHY *phy, unsigned int 
req)
  case 17:
  /* Marvell PHY on many xilinx boards.  */
  r = 0x8000; /* 1000Mb  */
+if (phy->link) {
+r |= 0x0400; /* Link is up */
+}


Shouldn't we clear this bit somewhere?

Thanks,

/mjt



Re: [PATCH] hw/net/xilinx_axienet: Fix PHY register 17 link status reporting

2026-07-18 Thread Peter Maydell
On Mon, 13 Jul 2026 at 07:46, Jay Chang  wrote:
>
> The Marvell 88E PHY register 17 (PHY Specific Status Register)
> bit 10 reports real-time link status. Previously, this register
> returned a fixed value of 0x8800 with bit 10 always cleared,
> causing U-Boot to always detect "No link" even when the link
> was up.
>
> Signed-off-by: Jay Chang 
> Reviewed-by: Frank Chang 
> ---
>  hw/net/xilinx_axienet.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c
> index 970732b162..9f5f65ecfa 100644
> --- a/hw/net/xilinx_axienet.c
> +++ b/hw/net/xilinx_axienet.c
> @@ -103,6 +103,9 @@ static unsigned int tdk_read(struct PHY *phy, unsigned 
> int req)
>  case 17:
>  /* Marvell PHY on many xilinx boards.  */
>  r = 0x8000; /* 1000Mb  */
> +if (phy->link) {
> +r |= 0x0400; /* Link is up */
> +}
>  break;

This matches the Marvell PHY datasheet, so seems reasonable.

Applied to target-arm.next, thanks.

-- PMM



[PATCH] hw/net/xilinx_axienet: Fix PHY register 17 link status reporting

2026-07-12 Thread Jay Chang
The Marvell 88E PHY register 17 (PHY Specific Status Register)
bit 10 reports real-time link status. Previously, this register
returned a fixed value of 0x8800 with bit 10 always cleared,
causing U-Boot to always detect "No link" even when the link
was up.

Signed-off-by: Jay Chang 
Reviewed-by: Frank Chang 
---
 hw/net/xilinx_axienet.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c
index 970732b162..9f5f65ecfa 100644
--- a/hw/net/xilinx_axienet.c
+++ b/hw/net/xilinx_axienet.c
@@ -103,6 +103,9 @@ static unsigned int tdk_read(struct PHY *phy, unsigned int 
req)
 case 17:
 /* Marvell PHY on many xilinx boards.  */
 r = 0x8000; /* 1000Mb  */
+if (phy->link) {
+r |= 0x0400; /* Link is up */
+}
 break;
 case 18:
 {
-- 
2.48.1