mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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

  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®