mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Michal Wilczynski <m.wilczynski@samsung.com>
To: 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>,
	"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 00:35:55 +0200	[thread overview]
Message-ID: <3c5c15d9-ea7e-49a2-adae-ec3e3c72594b@samsung.com> (raw)
In-Reply-To: <3ee91c92-4e3a-4bac-85cf-923f5d77ceff@kernel.org>



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.

[1] - https://doc-en.rvspace.org/JH7110/PDF/JH7110_TRM_StarFive_Preliminary_V2.pdf

> 
> Best regards,
> Krzysztof
> 

Best regards,
-- 
Michal Wilczynski <m.wilczynski@samsung.com>

  reply	other threads:[~2026-10-03 22:36 UTC|newest]

Thread overview: 53+ 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 [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=3c5c15d9-ea7e-49a2-adae-ec3e3c72594b@samsung.com \
    --to=m.wilczynski@samsung.com \
    --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=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®