From: Icenowy Zheng <zhengxingda@iscas.ac.cn>
To: Michal Wilczynski <m.wilczynski@samsung.com>,
Krzysztof Kozlowski <krzk@kernel.org>
Cc: "Vinod Koul" <vkoul@kernel.org>,
"Neil Armstrong" <neil.armstrong@linaro.org>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Andrzej Hajda" <andrzej.hajda@intel.com>,
"Robert Foss" <rfoss@kernel.org>,
"Laurent Pinchart" <Laurent.pinchart@ideasonboard.com>,
"Jonas Karlman" <jonas@kwiboo.se>,
"Jernej Skrabec" <jernej.skrabec@gmail.com>,
"Luca Ceresoli" <luca.ceresoli@bootlin.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Lee Jones" <lee@kernel.org>,
"Andy Yan" <andy.yan@rock-chips.com>,
"Philipp Zabel" <p.zabel@pengutronix.de>,
"Emil Renner Berthing" <kernel@esmil.dk>,
"Hal Feng" <hal.feng@starfivetech.com>,
"Michael Turquette" <mturquette@baylibre.com>,
"Stephen Boyd" <sboyd@kernel.org>,
"Heiko Stuebner" <heiko@sntech.de>,
"Paul Walmsley" <pjw@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Ghiti" <alex@ghiti.fr>,
"Dominique Belhachemi" <db@domibel.de>,
"Brian Masney" <bmasney+clk@redhat.com>,
"Jerome Brunet" <jbrunet+clk@baylibre.com>,
linux-phy@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
mfd@lists.linux.dev, linux-clk@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org,
linux-riscv@lists.infradead.org,
"Marek Szyprowski" <m.szyprowski@samsung.com>,
"Maud Spierings" <maud_spierings@murena.io>,
"Graham Markall" <hello@big-grey.co.uk>,
"Chaoyi Chen" <chaoyi.chen@rock-chips.com>,
"Joshua Peisach" <jpeisach@ubuntu.com>,
"Uwe Kleine-König" <u.kleine-koenig@baylibre.com>
Subject: Re: [PATCH v4 01/20] dt-bindings: phy: Add starfive,jh7110-inno-hdmi-phy
Date: Mon, 05 Oct 2026 15:27:04 +0800 [thread overview]
Message-ID: <b22705108be21d1b267fa5964e6c084a08c1fba1.camel@iscas.ac.cn> (raw)
In-Reply-To: <3c5c15d9-ea7e-49a2-adae-ec3e3c72594b@samsung.com>
在 2026-10-04日的 00:35 +0200,Michal Wilczynski写道:
>
>
> On 10/3/26 22:45, Krzysztof Kozlowski wrote:
> > On 03/10/2026 17:36, Michal Wilczynski wrote:
> > >
> > >
> > > On 9/30/26 13:01, Krzysztof Kozlowski wrote:
> > > > On 25/09/2026 23:05, Michal Wilczynski wrote:
> > > > > > > + clocks:
> > > > > > > + maxItems: 1
> > > > > > > + description: Reference oscillator.
> > > > > >
> > > > > > This barely counts as a resource, so usual question: no
> > > > > > resources here?
> > > > > > no MMIO? Even the user of this phy is the block itself.
> > > > > >
> > > > > > This makes me wonder if this should be a device node in the
> > > > > > first place
> > > > > > (instead folded into the parent).
> > > > >
> > > > > The PHY has no reg because the reg is shared with the
> > > > > controller and
> > > > > owned by the parent - patch 9 lets the bridge take its regmap
> > > > > from
> > > > > there.
> > > > >
> > > > > The user of the PHY is not only the block itself. It is the
> > > > > pixel clock
> > > > > provider for the whole display subsystem, voutcrg takes
> > > > > hdmitx0_pixelclk
> > > > > as the parent of its DC8200 pixel MUXes, and while HDMI
> > > > > output is active
> > > > > it is the only intended source for that clock. The parent has
> > > > > to be
> > > > > assigned explicitly so the general PLL does not end up
> > > > > driving the pixel
> > > > > clock, and so a DSI user does not reach the HDMI PHY clock
> > > > > generator.
> > > > >
> > > > > So it has to be its own node. The HDMI block has two
> > > > > independent
> > > >
> > > > I do not see the logic which lead to this conclusion. Pixel
> > > > clock
> > > > provider, so a clock controller, cannot be a user of a phy.
> > > > Clock
> > > > controller does not have a physical layer.
> > >
> > > Sorry I think the wording was not perfect. I meant the PHY node
> > > is a
> > > pixel clock provider. voutcrg consumes a clock not a PHY.
> > >
> > > voutcrg: clock-controller@295c0000 {
> > > clocks = <&syscrg ...>, <&hdmi_phy>;
> > > clock-names = ...,"hdmitx0_pixelclk";
> > > };
> > >
> > > The consumer of the PHY is only the hdmi controller.
> > >
> > > What matters for the node layout is where that clock goes.
> > > voutcrg is the
> > > SoC display clock controller - it is not part of the HDMI block:
> > >
> > > hdmi_phy -- pixel clock -> voutcrg
> > > |
> > > - pclk/mclk/bclk -> hdmi_controller
> > > - pix0/pix1 -> dc8200
> > >
> > > hdmi_phy and hdmi_controller are the same register block with one
> > > reg
> > > owned by the parent. So if that block is described as a single
> > > node:
> > >
> > > hdmi_node - pixel clock -> voutcrg
> > > ^ |
> > > --- pclk/mclk/bclk --------
> > >
> > > the node provides a clock to voutcrg and consumes three clocks
> > > from
> > > voutcrg. That is a cycle in the device tree description.
> >
> > There is no cycle. Internal signals to the block are not
> > represented in DT.
> >
> > What you have is a driver problem and you create some sort of DT
> > structure to solve that. DT purpose is NOT to solve your driver
> > dependencies or circular connections.
>
> The structure is not something I added. The voutcrg binding has
> required
> an input clock named hdmitx0_pixelclk since it was merged in 2023
> a097a5ec14df ("dt-bindings: clock: Add StarFive JH7110 Video-Output
> clock and reset generator") and this series does not touch that file:
>
> Documentation/devicetree/bindings/clock/starfive,jh7110-voutcrg.yaml
> - const: hdmitx0_pixelclk
>
> Mainline satisfies it with a placeholder, because so far nothing
> provided the
> real clock:
>
> hdmitx0_pixelclk: hdmitx0-pixel-clock {
> compatible = "fixed-
> clock";
>
> clock-output-names = "hdmitx0_pixelclk";
> #clock-cells = <0>;
> };
>
> All this series does is point that existing input at the device that
> actually
> generates it.
>
> TRM [1] table 5-3 on page 529 lists the display CRG's input clocks.
> Most come from
> dom_vout_top, but three come from IP blocks inside the subsystem:
>
> clk_hdmitx0_pixelclk 297 MHz u0_hdmi_tx.clk_pix
> clk_mipitx_dphy_rxesc 10 MHz u0_mipitx_dphy.clk_rxesc
> clk_mipitx_dphy_txbytehs 297 MHz u0_mipitx_dphy.clk_txbytehs
>
> and on page 530 the CRG offers clk_hdmitx0_pixelclk as Source1 for:
>
> u0_dc8200.clk_pix0 Source0 clk_dc8200_pix0 Source1
> clk_hdmitx0_pixelclk
> u0_dc8200.clk_pix1 Source0 clk_dc8200_pix0 Source1
> clk_hdmitx0_pixelclk
> u0_cdns_dsiTx.clk_dpi Source0 clk_dc8200_pix0 Source1
> clk_hdmitx0_pixelclk
>
> The DC8200 and the DSI TX are separate devices, so the pixel clock
> crosses two block boundaries to reach them.
>
> That is also why the DT has to be able to name it. Those MUXes have
> two
> parents and the selection is made in DT:
>
> &dc8200 {
> assigned-clocks = <&voutcrg JH7110_VOUTCLK_DC8200_PIX0>,
> ...;
> assigned-clock-parents = <&hdmi_phy>, <&hdmi_phy>;
> };
>
> and voutcrg takes it as an input clock because that is what the
> hardware
> does. If the PHY is folded into the HDMI node, that input phandle
> points at
> a node which also consumes pclk/mclk/bclk from voutcrg. That is where
> the
> cycle comes from - the hardware topology not the driver.
I think the common clock framework has a "orphaned clock" feature to
solve this kind of cyclic clock dependency, although this could be a
pandora's box if not properly used.
Thanks,
Icenowy
>
> [1] -
> https://doc-en.rvspace.org/JH7110/PDF/JH7110_TRM_StarFive_Preliminary_V2.pdf
>
> >
> > Best regards,
> > Krzysztof
> >
>
> Best regards,
next prev parent reply other threads:[~2026-10-05 7:28 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20260915153213eucas1p148f013af239a334fc78cdc249c0f8a61@eucas1p1.samsung.com>
2026-09-15 15:32 ` [PATCH v4 00/20] drm: starfive: jh7110: Enable display subsystem Michal Wilczynski
[not found] ` <CGME20260915153214eucas1p2b548f3236ef98fb0cbf320e397420125@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 01/20] dt-bindings: phy: Add starfive,jh7110-inno-hdmi-phy Michal Wilczynski
2026-09-17 6:51 ` Krzysztof Kozlowski
2026-09-18 0:34 ` Joshua Peisach
2026-09-18 6:16 ` Krzysztof Kozlowski
2026-09-18 6:21 ` Icenowy Zheng
2026-09-18 6:41 ` Krzysztof Kozlowski
2026-09-25 21:27 ` Michal Wilczynski
2026-09-25 21:05 ` Michal Wilczynski
2026-09-30 11:01 ` Krzysztof Kozlowski
2026-10-03 15:36 ` Michal Wilczynski
2026-10-03 20:45 ` Krzysztof Kozlowski
2026-10-03 22:35 ` Michal Wilczynski
2026-10-04 7:15 ` Krzysztof Kozlowski
2026-10-05 7:27 ` Icenowy Zheng [this message]
[not found] ` <CGME20260915153216eucas1p2388b49e6b4c064ea49639d21f987e05e@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 02/20] dt-bindings: display: bridge: Add starfive,jh7110-inno-hdmi-controller Michal Wilczynski
[not found] ` <CGME20260915153218eucas1p278c4870936afe1aaa52438660418f8c8@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 03/20] dt-bindings: mfd: Add starfive,jh7110-hdmi-subsystem Michal Wilczynski
2026-09-17 6:54 ` Krzysztof Kozlowski
2026-09-28 18:34 ` Michal Wilczynski
[not found] ` <CGME20260915153220eucas1p1f5b0e03015500d9d66db8993426c8734@eucas1p1.samsung.com>
2026-09-15 15:32 ` [PATCH v4 04/20] dt-bindings: soc: starfive: Add starfive,jh7110-vout-syscon Michal Wilczynski
2026-09-17 6:55 ` Krzysztof Kozlowski
[not found] ` <CGME20260915153222eucas1p213b95b05ea7eb9a18700af8888ef5a44@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 05/20] dt-bindings: display: verisilicon: Add starfive,jh7110-dc8200 Michal Wilczynski
2026-09-18 5:58 ` Icenowy Zheng
2026-09-27 15:26 ` Michal Wilczynski
[not found] ` <CGME20260915153224eucas1p1c19b20f6af600b1c3228a9a8f4bb4490@eucas1p1.samsung.com>
2026-09-15 15:32 ` [PATCH v4 06/20] dt-bindings: soc: starfive: Add starfive,jh7110-vout-subsystem Michal Wilczynski
2026-09-24 15:30 ` Rob Herring (Arm)
[not found] ` <CGME20260915153226eucas1p1d69e9e853b4b5cfb1d42c2c585b57f95@eucas1p1.samsung.com>
2026-09-15 15:32 ` [PATCH v4 07/20] drm/bridge: inno-hdmi: Split probe out of bind Michal Wilczynski
[not found] ` <CGME20260915153227eucas1p2c51b87dc8da5d9dfacd6db6bb7d6774e@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 08/20] drm/bridge: inno-hdmi: Allow the register map to come from a parent Michal Wilczynski
[not found] ` <CGME20260915153229eucas1p2d1b02b6f3871d6b536f678b9ea293c1c@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 09/20] drm/bridge: inno-hdmi: Add .disable platform operation Michal Wilczynski
[not found] ` <CGME20260915153231eucas1p1e106fee2d6f7db2aa8bb93d18d0f5dc1@eucas1p1.samsung.com>
2026-09-15 15:32 ` [PATCH v4 10/20] drm/bridge: inno-hdmi: Add .mode_valid " Michal Wilczynski
[not found] ` <CGME20260915153233eucas1p2e26a6953a31c5f836aeaed03a4ae325e@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 11/20] drm/bridge: inno-hdmi: Make the PHY configuration table optional Michal Wilczynski
[not found] ` <CGME20260915153234eucas1p221dd53b5f1bccb6228c0a5a7d0be8394@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 12/20] soc: starfive: Add jh7110-hdmi-subsystem driver Michal Wilczynski
2026-09-29 15:04 ` Icenowy Zheng
[not found] ` <CGME20260915153236eucas1p1712930425e569f894c870299f245e99f@eucas1p1.samsung.com>
2026-09-15 15:32 ` [PATCH v4 13/20] soc: starfive: Add jh7110-vout-subsystem driver Michal Wilczynski
2026-09-29 15:04 ` Icenowy Zheng
[not found] ` <CGME20260915153238eucas1p29917a31d10ce1aa55c1dcb44b62180f9@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 14/20] clk: starfive: jh7110-vout: Allow pixel clock rate propagation Michal Wilczynski
[not found] ` <CGME20260915153241eucas1p292a3312a0ca8aed99cc416c0e01c3b66@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 15/20] drm/bridge: starfive: Add JH7110 HDMI controller driver Michal Wilczynski
2026-09-29 15:03 ` Icenowy Zheng
[not found] ` <CGME20260915153242eucas1p1394a6a5e272f106b9cab2a0f709ddeb8@eucas1p1.samsung.com>
2026-09-15 15:32 ` [PATCH v4 16/20] phy: Add common Innosilicon HDMI PHY helpers Michal Wilczynski
2026-10-03 14:22 ` Vinod Koul
[not found] ` <CGME20260915153244eucas1p180f69e8f957a5c615d3c6a59a1c205b2@eucas1p1.samsung.com>
2026-09-15 15:32 ` [PATCH v4 17/20] phy: rockchip: inno-hdmi: Use the common Innosilicon " Michal Wilczynski
[not found] ` <CGME20260915153246eucas1p289987fd8757c89ff865c99b6465708a8@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 18/20] phy: starfive: Add jh7110-inno-hdmi-phy driver Michal Wilczynski
2026-09-26 3:31 ` Dominique Belhachemi
2026-09-27 12:05 ` Michal Wilczynski
[not found] ` <CGME20260915153248eucas1p27d8d2c9fa536bbd951e0102b04416dad@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 19/20] riscv: dts: starfive: jh7110: Update DT for display subsystem Michal Wilczynski
2026-09-29 15:06 ` Icenowy Zheng
[not found] ` <CGME20260915153250eucas1p2132ca4040b3c35a3aed471cb816b7857@eucas1p2.samsung.com>
2026-09-15 15:32 ` [PATCH v4 20/20] MAINTAINERS: Add StarFive JH7110 display subsystem entry Michal Wilczynski
2026-09-16 0:45 ` [PATCH v4 00/20] drm: starfive: jh7110: Enable display subsystem Joshua Peisach
2026-09-17 17:22 ` Michal Wilczynski
2026-09-18 15:32 ` Joshua Peisach
2026-09-27 12:24 ` Michal Wilczynski
2026-09-20 6:09 ` Byron Stanoszek
2026-09-20 7:35 ` Icenowy Zheng
2026-09-25 20:09 ` Michal Wilczynski
2026-09-25 13:55 ` (subset) " Brian Masney
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=b22705108be21d1b267fa5964e6c084a08c1fba1.camel@iscas.ac.cn \
--to=zhengxingda@iscas.ac.cn \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=alex@ghiti.fr \
--cc=andrzej.hajda@intel.com \
--cc=andy.yan@rock-chips.com \
--cc=aou@eecs.berkeley.edu \
--cc=bmasney+clk@redhat.com \
--cc=chaoyi.chen@rock-chips.com \
--cc=conor+dt@kernel.org \
--cc=db@domibel.de \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=hal.feng@starfivetech.com \
--cc=heiko@sntech.de \
--cc=hello@big-grey.co.uk \
--cc=jbrunet+clk@baylibre.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=jpeisach@ubuntu.com \
--cc=kernel@esmil.dk \
--cc=krzk+dt@kernel.org \
--cc=krzk@kernel.org \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=luca.ceresoli@bootlin.com \
--cc=m.szyprowski@samsung.com \
--cc=m.wilczynski@samsung.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=maud_spierings@murena.io \
--cc=mfd@lists.linux.dev \
--cc=mripard@kernel.org \
--cc=mturquette@baylibre.com \
--cc=neil.armstrong@linaro.org \
--cc=p.zabel@pengutronix.de \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=rfoss@kernel.org \
--cc=robh@kernel.org \
--cc=sboyd@kernel.org \
--cc=tzimmermann@suse.de \
--cc=u.kleine-koenig@baylibre.com \
--cc=vkoul@kernel.org \
/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
all inboxes | Powered by JetHome®