All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiko Stuebner <heiko@sntech.de>
To: Jonas Karlman <jonas@kwiboo.se>,
	Michael Riesch <michael.riesch@wolfvision.net>,
	Anand Moon <linux.amoon@gmail.com>,
	FUKAUMI Naoki <naoki@radxa.com>
Cc: linux-rockchip@lists.infradead.org
Subject: Re: [PATCH] arm64: dts: rockchip: rock-3a: make ethernet work
Date: Mon, 24 Jul 2023 20:48:12 +0200	[thread overview]
Message-ID: <5278776.Lt9SDvczpP@phil> (raw)
In-Reply-To: <EF4FC43DBE66C4B0+4cc055c3-9faa-d71c-8e99-62fa99f0368e@radxa.com>

Am Montag, 24. Juli 2023, 07:09:48 CEST schrieb FUKAUMI Naoki:
> hi,
> 
> On 7/24/23 07:54, Jonas Karlman wrote:
> > On 2023-07-17 19:11, Jonas Karlman wrote:
> >> On 2023-07-17 09:40, Michael Riesch wrote:
> >>> Hi all,
> >>>
> >>> In addition to what has been already said:
> >>>
> >>> On 7/16/23 15:50, Jonas Karlman wrote:
> >>>> On 2023-07-15 06:49, FUKAUMI Naoki wrote:
> >>>>> hi,
> >>>>>
> >>>>> On 7/15/23 01:24, Jonas Karlman wrote:
> >>>>>> On 2023-07-14 17:46, Heiko Stuebner wrote:
> >>>>>>> Am Freitag, 14. Juli 2023, 08:30:27 CEST schrieb FUKAUMI Naoki:
> >>>>>>>> ethernet on Radxa ROCK 3A is not working by following error:
> >>>>>>>>
> >>>>>>>>    rk_gmac-dwmac fe010000.ethernet eth0: no phy at addr -1
> >>>>>>>>    rk_gmac-dwmac fe010000.ethernet eth0: stmmac_open: Cannot attach to PHY (error: -19)
> >>>>>>>>
> >>>>>>>> to fix this problem, align related properties with vendor kernel
> >>>>>>>>    https://github.com/radxa/kernel/blob/linux-5.10-gen-rkr4.1/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
> >>>>>>>>
> >>>>>>>> Fixes: 22a442e6586c ("arm64: dts: rockchip: add basic dts for the radxa rock3 model a")
> >>>>>>>> Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
> >>>>>>>
> >>>>>>> There also is a second patch in the mix adding the gmac1_clkin
> >>>>>>> ef9f4b4a5020 ("arm64: dts: rockchip: Add support of external clock to ethernet node on Rock 3A SBC")
> >>>>>>>
> >>>>>>> And this patch does the exact opposite as the original nodes.
> >>>>>>> Can someone please mention board versions? Or did the gmac1 never
> >>>>>>> really work in the first place?
> >>>
> >>> As far as I know all schematics versions state that the PHY produces the
> >>> clock (see the most recent schematics here:
> >>> https://dl.radxa.com/rock3/docs/hw/3a/ROCK-3A-V1.3-SCH.pdf
> >>>
> >>> Although using the internal MAC clock works as well, using the
> >>> gmac1_clkin is most probably the correct way.
> >>>
> >>>>>> Ethernet have worked and probably still works booting with vendor U-Boot.
> >>>>>>
> >>>>>> However, when booting using mainline U-Boot the ethernet PHY is never
> >>>>>> initialized or reset due to lack of a ethernet gmac driver for rk35xx.
> >>>>>
> >>>>> surely I'm using mainline u-boot.
> >>>
> >>> Ah, this might explain why I never experienced this issue: I am using
> >>> mainline barebox with GMAC support.
> >>>
> >>>>>> With an early work-in-progress gmac driver the ethernet PHY is working
> >>>>>> same as with vendor U-Boot, and the ethernet PHY is identified.
> >>>>>>
> >>>>>> This revert from using reset-gpios to using the deprecated
> >>>>>> snps,reset-gpio is probably the wrong way forward.
> >>>>>>
> >>>>>> I suspect there is a bug in net/phy/mdio_device.c on how reset-gpios
> >>>>>> is asserted/deasserted, it works differently than how I would expect it
> >>>>>> to work, and also differs in how U-Boot handles reset-gpios.
> >>>>>>
> >>>>>> Some earlier findings regarding this reset issue:
> >>>>>> https://github.com/Kwiboo/linux-rockchip/compare/rk3568-eth-phy-reset~2...rk3568-eth-phy-reset
> >>>>>>
> >>>>>> Will try to get a proper patch/rfc out later this weekend or early next
> >>>>>> week after re-testing that on latest kernel.
> >>>>>
> >>>>> thank you so much for your awesome work!
> >>>>
> >>>> Thanks, made some progress on tracking down the root cause.
> >>>>  From what I have discovered so far there is a chicken-and-egg problem:
> >>>>
> >>>> - phy needs to be reset or phy_id read back as 0xffffffff on mdio bus
> >>>> - phy device is not created because a valid phy_id is not read back
> >>>> - phy device needs to be created before it can be reset
> >>>>
> >>>> Possible workarounds so far:
> >>>> - phy is reset in U-Boot
> >>>>    - very early work-in-progress at https://github.com/Kwiboo/u-boot-rockchip/commit/6ee80f9a895a32551cf30dd4252a4960ed80dfc9
> >>>> - phy is reset using mdio bus reset
> >>>>    - similar to old https://github.com/Kwiboo/linux-rockchip/commit/8597fcfa0c5c792dabb44a2db7b283c56c99ec6a
> >>>> - phy is reset using deprecated snps,reset-gpio
> >>>>    - similar to mdio bus reset
> >>>
> >>> There was a similar discussion here:
> >>> https://lore.kernel.org/all/CAMdYzYo_DGiO0UxJEb3xues7Um=X9AgPvz+Xp_YWb9pp9HaScg@mail.gmail.com/
> >>>
> >>> The approach that moves the reset to the MDIO bus has been mentioned
> >>> there as well. On the first glance this approach looks reasonable to me.
> >>
> >> It does not look like U-Boot support mdio bus reset-gpios, so changing
> >> to that would require adding even more code into U-Boot to get ethernet
> >> working in U-Boot.
> >>
> >> Moving to mdio bus would make it behave like with old snps,reset-gpio,
> >> however phy reset-gpios still describe the hw more accurately, a
> >> assert/deassert cycle of reset-gpios triggers a phy hard reset.
> >>
> >> Do not know if it is possible to have both mdio bus reset and phy reset.
> >>
> >> There also looks like there is a bug in dwmac-rk rk3568_set_to_rgmii,
> >> tx/rx delay is always enabled. It should be disabled in some phy modes.
> >> Can send a patch once I finish with the U-Boot ethernet driver.
> >>
> >> Will try to complete a U-Boot driver that supports both phy reset-gpios
> >> and the deprecated snps,reset-gpio as a first step.
> > 
> > I have now created a small U-Boot dummy ethernet phy reset driver that
> > will assert/deassert reset-gpios to help make linux detect the PHY.
> > 
> > With this my ROCK 3 Model B detects the RTL8211F PHY again without any
> > changes to linux device tree.
> > 
> > See the U-Boot patch "HACK: net: Add dummy PHY reset-gpios driver"
> > at https://github.com/Kwiboo/u-boot-rockchip/commits/rk3568-2023.10-hacks
> 
> your hack works fine on my ROCK 3A with mainline kernel.

very nice. Jonas, thanks for working on that.

So I'll disregard this dt patch.


Heiko



_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

  reply	other threads:[~2023-07-24 18:48 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-14  6:30 [PATCH] arm64: dts: rockchip: rock-3a: make ethernet work FUKAUMI Naoki
2023-07-14 15:46 ` Heiko Stuebner
2023-07-14 16:24   ` Jonas Karlman
2023-07-15  4:49     ` FUKAUMI Naoki
2023-07-16 13:50       ` Jonas Karlman
2023-07-17  7:40         ` Michael Riesch
2023-07-17 17:11           ` Jonas Karlman
2023-07-23 22:54             ` Jonas Karlman
2023-07-24  5:09               ` FUKAUMI Naoki
2023-07-24 18:48                 ` Heiko Stuebner [this message]
2023-08-05 16:22                   ` Richard Kojedzinszky
2023-08-05 21:40                     ` Jonas Karlman

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=5278776.Lt9SDvczpP@phil \
    --to=heiko@sntech.de \
    --cc=jonas@kwiboo.se \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux.amoon@gmail.com \
    --cc=michael.riesch@wolfvision.net \
    --cc=naoki@radxa.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.