From: Conor Dooley <conor@kernel.org>
To: netdev@vger.kernel.org
Cc: conor@kernel.org, "Conor Dooley" <conor.dooley@microchip.com>,
Valentina.FernandezAlanis@microchip.com,
"Andrew Lunn" <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Daire McNamara" <daire.mcnamara@microchip.com>,
"Paul Walmsley" <pjw@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Ghiti" <alex@ghiti.fr>,
"Nicolas Ferre" <nicolas.ferre@microchip.com>,
"Claudiu Beznea" <claudiu.beznea@tuxon.dev>,
"Richard Cochran" <richardcochran@gmail.com>,
"Samuel Holland" <samuel.holland@sifive.com>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-riscv@lists.infradead.org,
"Dave Stevenson" <dave.stevenson@raspberrypi.com>,
"Sean Anderson" <sean.anderson@linux.dev>,
"Vineeth Karumanchi" <vineeth.karumanchi@amd.com>,
"Abin Joseph" <abin.joseph@amd.com>,
"Théo Lebrun" <theo.lebrun@bootlin.com>,
Ryan.Wanner@microchip.com
Subject: [PATCH net-next v4 07/13] net: macb: warn on pclk use as a tsu_clk fallback
Date: Wed, 18 Mar 2026 16:37:38 +0000 [thread overview]
Message-ID: <20260318-greeting-tipper-70bbe3e4f5d2@spud> (raw)
In-Reply-To: <20260318-surpass-puzzle-f94b46aa8808@spud>
From: Conor Dooley <conor.dooley@microchip.com>
The Candence GEM IP has a configuration parameter which determines the
source of the clock used for the timestamp unit (if it is enabled),
switching it between using the pclk and a dedicated input.
When ptp support was added to the macb driver, a new tsu_clk was added
to represent the dedicated input. While this is understandable, I think
it is bug prone and that the tsu_clk should represent whatever clock is
used for the timestamper and not just that specific input.
>From a driver point of view, the benefit of taking the conceptual
approach is avoiding misconfiguring the driver when the hardware
supports ptp (and it is set as a capability in the relevant per-device
structure) but no tsu_clk is provided in devicetree. At the moment, the
timestamper will be registered and programmed with an increment that
reflects the pclk in these cases, but will malfunction if the pclk and
tsu_clk frequencies do not match. Obviously, this means the devicetree
incorrectly represents the hardware, but this change in approach would
make the driver more resilient without meaningfully impacting correctly
described users.
Out of the devices that claim MACB_CAPS_GEM_HAS_PTP the fu540, mpfs,
sama5d2 and sama7g5-emac (but not sama7g5-gem) are at risk of having
this problem with the in-kernel devicetrees. mpfs and sama7g5-emac
have been confirmed to be incorrect, and sama5d2 is correct. It may be
that the other platforms actually do use the pclk for the timestamper
(either by supplying pclk to the tsu_clk input of the IP, or by having
the IP block configured to use pclk instead of the tsu_clk input), but
at least two are wrong, as they do not use pclk for the tsu_clk, so the
driver is registering the ptp clock incorrectly.
Add a warning if no tsu_clk is provided on a platform that uses the
timerstamper, to encourage people to specifically provide a tsu_clk and
avoid silently registering the timerstamper with the wrong clock. If the
pclk is actually used, it can be provided as a tsu_clk for improved
clarity in devicetrees.
While this changes the meaning of the devicetree property, it is
backwards compatible as there's no functional change for platforms that
didn't provide a tsu_clk and the changed meaning of providing a tsu_clk
in the devicetree does not impact platforms that already provided one as
the decision about the tsu clock source is at IP instantiation time
rather than at runtime, so there's no driver behaviour that needs to
change based on the input to the IP used for the timestamping unit.
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
---
drivers/net/ethernet/cadence/macb_main.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index b476bc9663ecd..6b37598ac57cd 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -3534,6 +3534,7 @@ static unsigned int gem_get_tsu_rate(struct macb *bp)
else if (!IS_ERR(bp->pclk)) {
tsu_clk = bp->pclk;
tsu_rate = clk_get_rate(tsu_clk);
+ dev_warn(&bp->pdev->dev, "devicetree missing tsu_clk, using pclk as fallback\n");
} else
return -ENOTSUPP;
return tsu_rate;
--
2.51.0
next prev parent reply other threads:[~2026-03-18 16:38 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-18 16:37 [PATCH net-next v4 00/13] macb usrio/tsu patches Conor Dooley
2026-03-18 16:37 ` [PATCH net-next v4 01/13] net: macb: rename macb_default_usrio to at91_default_usrio as not all platforms have mii mode control in usrio Conor Dooley
2026-03-18 16:37 ` [PATCH net-next v4 02/13] net: macb: split USRIO_HAS_CLKEN capability in two Conor Dooley
2026-03-18 16:37 ` [PATCH net-next v4 03/13] dt-bindings: net: cdns,macb: replace cdns,refclk-ext with cdns,refclk-source Conor Dooley
2026-03-25 21:46 ` Rob Herring (Arm)
2026-03-18 16:37 ` [PATCH net-next v4 04/13] net: macb: rework usrio refclk selection code Conor Dooley
2026-03-18 16:37 ` [PATCH net-next v4 05/13] net: macb: np4 doesn't need a usrio pointer Conor Dooley
2026-03-18 16:37 ` [PATCH net-next v4 06/13] net: macb: add mpfs specific usrio configuration Conor Dooley
2026-03-18 16:37 ` Conor Dooley [this message]
2026-03-18 16:37 ` [PATCH net-next v4 08/13] net: macb: clean up tsu clk rate acquisition Conor Dooley
2026-03-18 16:37 ` [PATCH net-next v4 09/13] dt-bindings: net: macb: add property indicating timer adjust mode Conor Dooley
2026-03-18 16:37 ` [PATCH net-next v4 10/13] net: macb: timer adjust mode is not supported Conor Dooley
2026-03-18 16:37 ` [PATCH net-next v4 11/13] net: macb: runtime detect MACB_CAPS_USRIO_DISABLED Conor Dooley
2026-03-18 16:37 ` [PATCH net-next v4 12/13] net: macb: set MACB_CAPS_USRIO_DISABLED if no usrio config is provided Conor Dooley
2026-03-18 16:37 ` [PATCH net-next v4 13/13] net: macb: drop usrio pointer on EyeQ5 config Conor Dooley
2026-03-19 19:52 ` [PATCH net-next v4 00/13] macb usrio/tsu patches Simon Horman
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=20260318-greeting-tipper-70bbe3e4f5d2@spud \
--to=conor@kernel.org \
--cc=Ryan.Wanner@microchip.com \
--cc=Valentina.FernandezAlanis@microchip.com \
--cc=abin.joseph@amd.com \
--cc=alex@ghiti.fr \
--cc=andrew+netdev@lunn.ch \
--cc=aou@eecs.berkeley.edu \
--cc=claudiu.beznea@tuxon.dev \
--cc=conor+dt@kernel.org \
--cc=conor.dooley@microchip.com \
--cc=daire.mcnamara@microchip.com \
--cc=dave.stevenson@raspberrypi.com \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=netdev@vger.kernel.org \
--cc=nicolas.ferre@microchip.com \
--cc=pabeni@redhat.com \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=richardcochran@gmail.com \
--cc=robh@kernel.org \
--cc=samuel.holland@sifive.com \
--cc=sean.anderson@linux.dev \
--cc=theo.lebrun@bootlin.com \
--cc=vineeth.karumanchi@amd.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox