diff mbox series

[v1] net: sun8i-emac: Add support for fixed-link phy

Message ID 20230614214405.1038301-1-bigunclemax@gmail.com
State Superseded
Delegated to: Andre Przywara
Headers show
Series [v1] net: sun8i-emac: Add support for fixed-link phy | expand

Commit Message

Maxim Kiselev June 14, 2023, 9:44 p.m. UTC
From: Maksim Kiselev <bigunclemax@gmail.com>

Based on dt-specs fixed-link doesn't require phy-handle to be used.
Fix driver to only read phy related setting when phy-handle is found.

Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
---
 drivers/net/sun8i_emac.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

Comments

Ramon Fried July 22, 2023, 8:20 a.m. UTC | #1
On Thu, Jun 15, 2023 at 12:51 AM Maxim Kiselev <bigunclemax@gmail.com> wrote:
>
> From: Maksim Kiselev <bigunclemax@gmail.com>
>
> Based on dt-specs fixed-link doesn't require phy-handle to be used.
> Fix driver to only read phy related setting when phy-handle is found.
>
> Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
> ---
>  drivers/net/sun8i_emac.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
> index 04c3274fbe..0e339d69e0 100644
> --- a/drivers/net/sun8i_emac.c
> +++ b/drivers/net/sun8i_emac.c
> @@ -834,11 +834,8 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev)
>         priv->use_internal_phy = false;
>
>         offset = fdtdec_lookup_phandle(gd->fdt_blob, node, "phy-handle");
> -       if (offset < 0) {
> -               debug("%s: Cannot find PHY address\n", __func__);
> -               return -EINVAL;
> -       }
> -       priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> +       if (offset >= 0)
> +               priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
>
>         pdata->phy_interface = dev_read_phy_mode(dev);
>         debug("phy interface %d\n", pdata->phy_interface);
> --
> 2.39.2
>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Andre Przywara Jan. 16, 2024, 12:17 a.m. UTC | #2
On Thu, 15 Jun 2023 00:44:06 +0300
Maxim Kiselev <bigunclemax@gmail.com> wrote:

Hi Maxim,

> From: Maksim Kiselev <bigunclemax@gmail.com>
> 
> Based on dt-specs fixed-link doesn't require phy-handle to be used.

Do you have such a board? And where is that written down? I don't see
it explicitly mentioned as optional in ethernet-controller.yaml or in
the DT spec PDF. The sun8i EMAC binding lists phy-handle as required,
so that would need to be relaxed there then.

> Fix driver to only read phy related setting when phy-handle is found.

The patch itself looks fine, we already specify -1 as the default when
the PHY DT node does not contain a reg property, so that looks like it
would work.

Cheers,
Andre

> Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
> ---
>  drivers/net/sun8i_emac.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
> index 04c3274fbe..0e339d69e0 100644
> --- a/drivers/net/sun8i_emac.c
> +++ b/drivers/net/sun8i_emac.c
> @@ -834,11 +834,8 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev)
>  	priv->use_internal_phy = false;
>  
>  	offset = fdtdec_lookup_phandle(gd->fdt_blob, node, "phy-handle");
> -	if (offset < 0) {
> -		debug("%s: Cannot find PHY address\n", __func__);
> -		return -EINVAL;
> -	}
> -	priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> +	if (offset >= 0)
> +		priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
>  
>  	pdata->phy_interface = dev_read_phy_mode(dev);
>  	debug("phy interface %d\n", pdata->phy_interface);
Maxim Kiselev Jan. 16, 2024, 4:58 p.m. UTC | #3
вт, 16 янв. 2024 г. в 03:18, Andre Przywara <andre.przywara@arm.com>:
>
> On Thu, 15 Jun 2023 00:44:06 +0300
> Maxim Kiselev <bigunclemax@gmail.com> wrote:
>
> Hi Maxim,
>
> > From: Maksim Kiselev <bigunclemax@gmail.com>
> >
> > Based on dt-specs fixed-link doesn't require phy-handle to be used.
>
> Do you have such a board?

Yes, I had a custom board with T113 SoC which has fixed phy eth.

> And where is that written down? I don't see
> it explicitly mentioned as optional in ethernet-controller.yaml or in
> the DT spec PDF.

Sorry for that commit description. I just found the similar commit, that
fixes the same problem for zynq_gem
3888c8d1979289efe685fe29276aed4d4b685975 ("net: zynq_gem: Add support for
fixed-link phy") and copied the description from there.

> The sun8i EMAC binding lists phy-handle as required,
> so that would need to be relaxed there then.

Oh, indeed. So it will require to send dt-binding changes to Linux first...

Therefore, I think we can live without fixed-phy support for sun8i EMAC.
At least until some device with such a configuration appears on the
market :)

> > Fix driver to only read phy related setting when phy-handle is found.
>
> The patch itself looks fine, we already specify -1 as the default when
> the PHY DT node does not contain a reg property, so that looks like it
> would work.
>
> Cheers,
> Andre
>
> > Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
> > ---
> >  drivers/net/sun8i_emac.c | 7 ++-----
> >  1 file changed, 2 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
> > index 04c3274fbe..0e339d69e0 100644
> > --- a/drivers/net/sun8i_emac.c
> > +++ b/drivers/net/sun8i_emac.c
> > @@ -834,11 +834,8 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev)
> >       priv->use_internal_phy = false;
> >
> >       offset = fdtdec_lookup_phandle(gd->fdt_blob, node, "phy-handle");
> > -     if (offset < 0) {
> > -             debug("%s: Cannot find PHY address\n", __func__);
> > -             return -EINVAL;
> > -     }
> > -     priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> > +     if (offset >= 0)
> > +             priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> >
> >       pdata->phy_interface = dev_read_phy_mode(dev);
> >       debug("phy interface %d\n", pdata->phy_interface);
>

Best wishes,
Maksim
Andre Przywara Jan. 17, 2024, 12:13 a.m. UTC | #4
On Tue, 16 Jan 2024 19:58:56 +0300
Maxim Kiselev <bigunclemax@gmail.com> wrote:

Hi Maxim,

> вт, 16 янв. 2024 г. в 03:18, Andre Przywara <andre.przywara@arm.com>:
> >
> > On Thu, 15 Jun 2023 00:44:06 +0300
> > Maxim Kiselev <bigunclemax@gmail.com> wrote:
> >
> > Hi Maxim,
> >  
> > > From: Maksim Kiselev <bigunclemax@gmail.com>
> > >
> > > Based on dt-specs fixed-link doesn't require phy-handle to be used.  
> >
> > Do you have such a board?  
> 
> Yes, I had a custom board with T113 SoC which has fixed phy eth.
> 
> > And where is that written down? I don't see
> > it explicitly mentioned as optional in ethernet-controller.yaml or in
> > the DT spec PDF.  
> 
> Sorry for that commit description. I just found the similar commit, that
> fixes the same problem for zynq_gem
> 3888c8d1979289efe685fe29276aed4d4b685975 ("net: zynq_gem: Add support for
> fixed-link phy") and copied the description from there.
> 
> > The sun8i EMAC binding lists phy-handle as required,
> > so that would need to be relaxed there then.  
> 
> Oh, indeed. So it will require to send dt-binding changes to Linux first...

Well, in the long run yes, but this doesn't mean that this patch needs
to wait - if that fixes a problem for you. I think in general that
rationale is probably true and phy-handle should be optional,
especially since the code can already cope with it.

I would just like to have this documented in the commit message.

Cheers,
Andre

> Therefore, I think we can live without fixed-phy support for sun8i EMAC.
> At least until some device with such a configuration appears on the
> market :)
> 
> > > Fix driver to only read phy related setting when phy-handle is found.  
> >
> > The patch itself looks fine, we already specify -1 as the default when
> > the PHY DT node does not contain a reg property, so that looks like it
> > would work.
> >
> > Cheers,
> > Andre
> >  
> > > Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
> > > ---
> > >  drivers/net/sun8i_emac.c | 7 ++-----
> > >  1 file changed, 2 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
> > > index 04c3274fbe..0e339d69e0 100644
> > > --- a/drivers/net/sun8i_emac.c
> > > +++ b/drivers/net/sun8i_emac.c
> > > @@ -834,11 +834,8 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev)
> > >       priv->use_internal_phy = false;
> > >
> > >       offset = fdtdec_lookup_phandle(gd->fdt_blob, node, "phy-handle");
> > > -     if (offset < 0) {
> > > -             debug("%s: Cannot find PHY address\n", __func__);
> > > -             return -EINVAL;
> > > -     }
> > > -     priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> > > +     if (offset >= 0)
> > > +             priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> > >
> > >       pdata->phy_interface = dev_read_phy_mode(dev);
> > >       debug("phy interface %d\n", pdata->phy_interface);  
> >  
> 
> Best wishes,
> Maksim
Andre Przywara Jan. 19, 2024, 5:35 p.m. UTC | #5
On Tue, 16 Jan 2024 19:58:56 +0300
Maxim Kiselev <bigunclemax@gmail.com> wrote:

Hi Maxim,

> вт, 16 янв. 2024 г. в 03:18, Andre Przywara <andre.przywara@arm.com>:
> >
> > On Thu, 15 Jun 2023 00:44:06 +0300
> > Maxim Kiselev <bigunclemax@gmail.com> wrote:
> >
> > Hi Maxim,
> >  
> > > From: Maksim Kiselev <bigunclemax@gmail.com>
> > >
> > > Based on dt-specs fixed-link doesn't require phy-handle to be used.  
> >
> > Do you have such a board?  
> 
> Yes, I had a custom board with T113 SoC which has fixed phy eth.

So just to clarify: this board connected something like a switch directly
to the MAC, just using RMII/RGMII? And then you have a fixed-phy node in
the DT, detailing the speed and duplex parameters? Matching the fixed-phy
node description in ethernet-controller.yaml? And drivers/net/phy/fixed.c
takes care of parsing that?

> > And where is that written down? I don't see
> > it explicitly mentioned as optional in ethernet-controller.yaml or in
> > the DT spec PDF.  
> 
> Sorry for that commit description. I just found the similar commit, that
> fixes the same problem for zynq_gem
> 3888c8d1979289efe685fe29276aed4d4b685975 ("net: zynq_gem: Add support for
> fixed-link phy") and copied the description from there.
> 
> > The sun8i EMAC binding lists phy-handle as required,
> > so that would need to be relaxed there then.  
> 
> Oh, indeed. So it will require to send dt-binding changes to Linux first...
> 
> Therefore, I think we can live without fixed-phy support for sun8i EMAC.
> At least until some device with such a configuration appears on the
> market :)

Well, I am fine with that patch if it fixes a problem for you. It looks
like requiring the phy-handle property is too strict, and just needs to be
relaxed in the binding. If I see this correctly, the driver would still
accept every valid DT, by today's and future bindings?

If you could just confirm my above assumptions, and maybe send a v2 with an
amended commit message, I would be happy to merge that patch.

Cheers,
Andre

> > > Fix driver to only read phy related setting when phy-handle is found.  
> >
> > The patch itself looks fine, we already specify -1 as the default when
> > the PHY DT node does not contain a reg property, so that looks like it
> > would work.
> >
> > Cheers,
> > Andre
> >  
> > > Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
> > > ---
> > >  drivers/net/sun8i_emac.c | 7 ++-----
> > >  1 file changed, 2 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
> > > index 04c3274fbe..0e339d69e0 100644
> > > --- a/drivers/net/sun8i_emac.c
> > > +++ b/drivers/net/sun8i_emac.c
> > > @@ -834,11 +834,8 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev)
> > >       priv->use_internal_phy = false;
> > >
> > >       offset = fdtdec_lookup_phandle(gd->fdt_blob, node, "phy-handle");
> > > -     if (offset < 0) {
> > > -             debug("%s: Cannot find PHY address\n", __func__);
> > > -             return -EINVAL;
> > > -     }
> > > -     priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> > > +     if (offset >= 0)
> > > +             priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> > >
> > >       pdata->phy_interface = dev_read_phy_mode(dev);
> > >       debug("phy interface %d\n", pdata->phy_interface);  
> >  
> 
> Best wishes,
> Maksim
Maxim Kiselev Jan. 19, 2024, 6:11 p.m. UTC | #6
Hi Andre,

пт, 19 янв. 2024 г. в 20:35, Andre Przywara <andre.przywara@arm.com>:
>
> On Tue, 16 Jan 2024 19:58:56 +0300
> Maxim Kiselev <bigunclemax@gmail.com> wrote:
>
> Hi Maxim,
>
> > вт, 16 янв. 2024 г. в 03:18, Andre Przywara <andre.przywara@arm.com>:
> > >
> > > On Thu, 15 Jun 2023 00:44:06 +0300
> > > Maxim Kiselev <bigunclemax@gmail.com> wrote:
> > >
> > > Hi Maxim,
> > >
> > > > From: Maksim Kiselev <bigunclemax@gmail.com>
> > > >
> > > > Based on dt-specs fixed-link doesn't require phy-handle to be used.
> > >
> > > Do you have such a board?
> >
> > Yes, I had a custom board with T113 SoC which has fixed phy eth.
>
> So just to clarify: this board connected something like a switch directly
> to the MAC, just using RMII/RGMII? And then you have a fixed-phy node in
> the DT, detailing the speed and duplex parameters? Matching the fixed-phy
> node description in ethernet-controller.yaml? And drivers/net/phy/fixed.c
> takes care of parsing that?

Yes, you are absolutely right. The T113s connected directly to the switch port
via RMII interface. Here is the part of DT, that describes that configuration

&emac {
       pinctrl-names = "default";
       pinctrl-0 = <&rmii_pg_pins>;
       phy-mode = "rmii";
       snps,reset-gpio = <&pio 4 12 GPIO_ACTIVE_LOW>; /* PE12 */
       allwinner,tx-delay-ps = <700>;
       allwinner,rx-delay-ps = <3100>;

       fixed-link {
               speed = <100>;
               full-duplex;
       };
};

>
> > > And where is that written down? I don't see
> > > it explicitly mentioned as optional in ethernet-controller.yaml or in
> > > the DT spec PDF.
> >
> > Sorry for that commit description. I just found the similar commit, that
> > fixes the same problem for zynq_gem
> > 3888c8d1979289efe685fe29276aed4d4b685975 ("net: zynq_gem: Add support for
> > fixed-link phy") and copied the description from there.
> >
> > > The sun8i EMAC binding lists phy-handle as required,
> > > so that would need to be relaxed there then.
> >
> > Oh, indeed. So it will require to send dt-binding changes to Linux first...
> >
> > Therefore, I think we can live without fixed-phy support for sun8i EMAC.
> > At least until some device with such a configuration appears on the
> > market :)
>
> Well, I am fine with that patch if it fixes a problem for you. It looks
> like requiring the phy-handle property is too strict, and just needs to be
> relaxed in the binding. If I see this correctly, the driver would still
> accept every valid DT, by today's and future bindings?
>
> If you could just confirm my above assumptions, and maybe send a v2 with an
> amended commit message, I would be happy to merge that patch.

Sure, I'll fix the commit description and send v2 asap.

> Cheers,
> Andre
>
> > > > Fix driver to only read phy related setting when phy-handle is found.
> > >
> > > The patch itself looks fine, we already specify -1 as the default when
> > > the PHY DT node does not contain a reg property, so that looks like it
> > > would work.
> > >
> > > Cheers,
> > > Andre
> > >
> > > > Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
> > > > ---
> > > >  drivers/net/sun8i_emac.c | 7 ++-----
> > > >  1 file changed, 2 insertions(+), 5 deletions(-)
> > > >
> > > > diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
> > > > index 04c3274fbe..0e339d69e0 100644
> > > > --- a/drivers/net/sun8i_emac.c
> > > > +++ b/drivers/net/sun8i_emac.c
> > > > @@ -834,11 +834,8 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev)
> > > >       priv->use_internal_phy = false;
> > > >
> > > >       offset = fdtdec_lookup_phandle(gd->fdt_blob, node, "phy-handle");
> > > > -     if (offset < 0) {
> > > > -             debug("%s: Cannot find PHY address\n", __func__);
> > > > -             return -EINVAL;
> > > > -     }
> > > > -     priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> > > > +     if (offset >= 0)
> > > > +             priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> > > >
> > > >       pdata->phy_interface = dev_read_phy_mode(dev);
> > > >       debug("phy interface %d\n", pdata->phy_interface);
> > >
> >
> > Best wishes,
> > Maksim
>

Best wishes,
Maksim
Andre Przywara Jan. 19, 2024, 9:56 p.m. UTC | #7
On Fri, 19 Jan 2024 21:11:07 +0300
Maxim Kiselev <bigunclemax@gmail.com> wrote:

Hi Maxim,

> пт, 19 янв. 2024 г. в 20:35, Andre Przywara <andre.przywara@arm.com>:
> >
> > On Tue, 16 Jan 2024 19:58:56 +0300
> > Maxim Kiselev <bigunclemax@gmail.com> wrote:
> >
> > Hi Maxim,
> >  
> > > вт, 16 янв. 2024 г. в 03:18, Andre Przywara <andre.przywara@arm.com>:  
> > > >
> > > > On Thu, 15 Jun 2023 00:44:06 +0300
> > > > Maxim Kiselev <bigunclemax@gmail.com> wrote:
> > > >
> > > > Hi Maxim,
> > > >  
> > > > > From: Maksim Kiselev <bigunclemax@gmail.com>
> > > > >
> > > > > Based on dt-specs fixed-link doesn't require phy-handle to be used.  
> > > >
> > > > Do you have such a board?  
> > >
> > > Yes, I had a custom board with T113 SoC which has fixed phy eth.  
> >
> > So just to clarify: this board connected something like a switch directly
> > to the MAC, just using RMII/RGMII? And then you have a fixed-phy node in
> > the DT, detailing the speed and duplex parameters? Matching the fixed-phy
> > node description in ethernet-controller.yaml? And drivers/net/phy/fixed.c
> > takes care of parsing that?  
> 
> Yes, you are absolutely right. The T113s connected directly to the switch port
> via RMII interface. Here is the part of DT, that describes that configuration

Excellent, thanks for the confirmation!

Looking forward to v2!

Cheers,
Andre

> &emac {
>        pinctrl-names = "default";
>        pinctrl-0 = <&rmii_pg_pins>;
>        phy-mode = "rmii";
>        snps,reset-gpio = <&pio 4 12 GPIO_ACTIVE_LOW>; /* PE12 */
>        allwinner,tx-delay-ps = <700>;
>        allwinner,rx-delay-ps = <3100>;
> 
>        fixed-link {
>                speed = <100>;
>                full-duplex;
>        };
> };
> 
> >  
> > > > And where is that written down? I don't see
> > > > it explicitly mentioned as optional in ethernet-controller.yaml or in
> > > > the DT spec PDF.  
> > >
> > > Sorry for that commit description. I just found the similar commit, that
> > > fixes the same problem for zynq_gem
> > > 3888c8d1979289efe685fe29276aed4d4b685975 ("net: zynq_gem: Add support for
> > > fixed-link phy") and copied the description from there.
> > >  
> > > > The sun8i EMAC binding lists phy-handle as required,
> > > > so that would need to be relaxed there then.  
> > >
> > > Oh, indeed. So it will require to send dt-binding changes to Linux first...
> > >
> > > Therefore, I think we can live without fixed-phy support for sun8i EMAC.
> > > At least until some device with such a configuration appears on the
> > > market :)  
> >
> > Well, I am fine with that patch if it fixes a problem for you. It looks
> > like requiring the phy-handle property is too strict, and just needs to be
> > relaxed in the binding. If I see this correctly, the driver would still
> > accept every valid DT, by today's and future bindings?
> >
> > If you could just confirm my above assumptions, and maybe send a v2 with an
> > amended commit message, I would be happy to merge that patch.  
> 
> Sure, I'll fix the commit description and send v2 asap.
> 
> > Cheers,
> > Andre
> >  
> > > > > Fix driver to only read phy related setting when phy-handle is found.  
> > > >
> > > > The patch itself looks fine, we already specify -1 as the default when
> > > > the PHY DT node does not contain a reg property, so that looks like it
> > > > would work.
> > > >
> > > > Cheers,
> > > > Andre
> > > >  
> > > > > Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
> > > > > ---
> > > > >  drivers/net/sun8i_emac.c | 7 ++-----
> > > > >  1 file changed, 2 insertions(+), 5 deletions(-)
> > > > >
> > > > > diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
> > > > > index 04c3274fbe..0e339d69e0 100644
> > > > > --- a/drivers/net/sun8i_emac.c
> > > > > +++ b/drivers/net/sun8i_emac.c
> > > > > @@ -834,11 +834,8 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev)
> > > > >       priv->use_internal_phy = false;
> > > > >
> > > > >       offset = fdtdec_lookup_phandle(gd->fdt_blob, node, "phy-handle");
> > > > > -     if (offset < 0) {
> > > > > -             debug("%s: Cannot find PHY address\n", __func__);
> > > > > -             return -EINVAL;
> > > > > -     }
> > > > > -     priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> > > > > +     if (offset >= 0)
> > > > > +             priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
> > > > >
> > > > >       pdata->phy_interface = dev_read_phy_mode(dev);
> > > > >       debug("phy interface %d\n", pdata->phy_interface);  
> > > >  
> > >
> > > Best wishes,
> > > Maksim  
> >  
> 
> Best wishes,
> Maksim
diff mbox series

Patch

diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
index 04c3274fbe..0e339d69e0 100644
--- a/drivers/net/sun8i_emac.c
+++ b/drivers/net/sun8i_emac.c
@@ -834,11 +834,8 @@  static int sun8i_emac_eth_of_to_plat(struct udevice *dev)
 	priv->use_internal_phy = false;
 
 	offset = fdtdec_lookup_phandle(gd->fdt_blob, node, "phy-handle");
-	if (offset < 0) {
-		debug("%s: Cannot find PHY address\n", __func__);
-		return -EINVAL;
-	}
-	priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
+	if (offset >= 0)
+		priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
 
 	pdata->phy_interface = dev_read_phy_mode(dev);
 	debug("phy interface %d\n", pdata->phy_interface);