From: Krzysztof Kozlowski <krzk@kernel.org>
To: Michal Wilczynski <m.wilczynski@samsung.com>
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>,
"Icenowy Zheng" <zhengxingda@iscas.ac.cn>,
"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: Sun, 4 Oct 2026 09:15:11 +0200 [thread overview]
Message-ID: <ac7b82e6-22ea-465c-8477-bbe0bd9c8c27@kernel.org> (raw)
In-Reply-To: <3c5c15d9-ea7e-49a2-adae-ec3e3c72594b@samsung.com>
On 04/10/2026 00:35, Michal Wilczynski wrote:
>
>
> 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.
Which is perfectly "fine" - present in many other SoCs as well. This is
not different and your arguments are insufficient to give here
exceptions. Why? Because again you use as an argument a Linux driver
problem (cyclic dependency). Basically to solve Linux problem you
introduce new empty nodes.
Best regards,
Krzysztof
next prev parent reply other threads:[~2026-10-04 7:15 UTC|newest]
Thread overview: 54+ 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 [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=ac7b82e6-22ea-465c-8477-bbe0bd9c8c27@kernel.org \
--to=krzk@kernel.org \
--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=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 \
--cc=zhengxingda@iscas.ac.cn \
/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®