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: Sat, 3 Oct 2026 17:36:25 +0200 [thread overview]
Message-ID: <eaba2fa9-a1ce-4dac-9bd6-e0b3a3dd01ef@samsung.com> (raw)
In-Reply-To: <6cf9e611-bfc5-407b-8132-bd328f8b61fc@kernel.org>
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.
Split in two there is no cycle: the PHY's only input is xin24m - the 24 MHz
oscillator which gives a linear order - hdmi_phy, voutcrg, hdmi_controller.
>
> And really, I have no clue what hdmitx0_pixelclk and voutcrg are. I
> could probably study the patches a lot to figure that out, but my review
> queue has still 200 more, so I'll skip.
>
> But nevertheless assigning clock parent of HDMI clock to PHY is
> standard, most of the platforms have it, thus it is not a justification
> for odd design.
Agreed and that is what this is - I followed RK3328, which uses the same
Innosilicon IP and also describes it as two nodes:
hdmi: hdmi@ff3c0000 clocks = <&cru PCLK_HDMI>, ...
hdmiphy: phy@ff430000 clocks = <&cru PCLK_HDMIPHY>, <&xin24m>,
<&cru DCLK_HDMIPHY>
clock-output-names = "hdmi_phy";
#clock-cells = <0>;
#phy-cells = <0>;
The only difference is reg: RK3328 has two register ranges, the JH7110 has
one, so the parent owns it and the children have none.
>
>> functions with different clock inputs and one of them feeds back into
>> the SoC clock tree. The PHY generates hdmitx0_pixelclk which voutcrg
>> consumes the controller consumes pclk/mclk/bclk from voutcrg. Folded
>> into one node that node is both a provider to and a consumer of
>> voutcrg which is a cycle in the hardware description, not just in Linux.
>
>
> Best regards,
> Krzysztof
>
Best regards,
--
Michal Wilczynski <m.wilczynski@samsung.com>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
WARNING: multiple messages have this Message-ID (diff)
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: Sat, 3 Oct 2026 17:36:25 +0200 [thread overview]
Message-ID: <eaba2fa9-a1ce-4dac-9bd6-e0b3a3dd01ef@samsung.com> (raw)
In-Reply-To: <6cf9e611-bfc5-407b-8132-bd328f8b61fc@kernel.org>
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.
Split in two there is no cycle: the PHY's only input is xin24m - the 24 MHz
oscillator which gives a linear order - hdmi_phy, voutcrg, hdmi_controller.
>
> And really, I have no clue what hdmitx0_pixelclk and voutcrg are. I
> could probably study the patches a lot to figure that out, but my review
> queue has still 200 more, so I'll skip.
>
> But nevertheless assigning clock parent of HDMI clock to PHY is
> standard, most of the platforms have it, thus it is not a justification
> for odd design.
Agreed and that is what this is - I followed RK3328, which uses the same
Innosilicon IP and also describes it as two nodes:
hdmi: hdmi@ff3c0000 clocks = <&cru PCLK_HDMI>, ...
hdmiphy: phy@ff430000 clocks = <&cru PCLK_HDMIPHY>, <&xin24m>,
<&cru DCLK_HDMIPHY>
clock-output-names = "hdmi_phy";
#clock-cells = <0>;
#phy-cells = <0>;
The only difference is reg: RK3328 has two register ranges, the JH7110 has
one, so the parent owns it and the children have none.
>
>> functions with different clock inputs and one of them feeds back into
>> the SoC clock tree. The PHY generates hdmitx0_pixelclk which voutcrg
>> consumes the controller consumes pclk/mclk/bclk from voutcrg. Folded
>> into one node that node is both a provider to and a consumer of
>> voutcrg which is a cycle in the hardware description, not just in Linux.
>
>
> Best regards,
> Krzysztof
>
Best regards,
--
Michal Wilczynski <m.wilczynski@samsung.com>
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
WARNING: multiple messages have this Message-ID (diff)
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: Sat, 3 Oct 2026 17:36:25 +0200 [thread overview]
Message-ID: <eaba2fa9-a1ce-4dac-9bd6-e0b3a3dd01ef@samsung.com> (raw)
In-Reply-To: <6cf9e611-bfc5-407b-8132-bd328f8b61fc@kernel.org>
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.
Split in two there is no cycle: the PHY's only input is xin24m - the 24 MHz
oscillator which gives a linear order - hdmi_phy, voutcrg, hdmi_controller.
>
> And really, I have no clue what hdmitx0_pixelclk and voutcrg are. I
> could probably study the patches a lot to figure that out, but my review
> queue has still 200 more, so I'll skip.
>
> But nevertheless assigning clock parent of HDMI clock to PHY is
> standard, most of the platforms have it, thus it is not a justification
> for odd design.
Agreed and that is what this is - I followed RK3328, which uses the same
Innosilicon IP and also describes it as two nodes:
hdmi: hdmi@ff3c0000 clocks = <&cru PCLK_HDMI>, ...
hdmiphy: phy@ff430000 clocks = <&cru PCLK_HDMIPHY>, <&xin24m>,
<&cru DCLK_HDMIPHY>
clock-output-names = "hdmi_phy";
#clock-cells = <0>;
#phy-cells = <0>;
The only difference is reg: RK3328 has two register ranges, the JH7110 has
one, so the parent owns it and the children have none.
>
>> functions with different clock inputs and one of them feeds back into
>> the SoC clock tree. The PHY generates hdmitx0_pixelclk which voutcrg
>> consumes the controller consumes pclk/mclk/bclk from voutcrg. Folded
>> into one node that node is both a provider to and a consumer of
>> voutcrg which is a cycle in the hardware description, not just in Linux.
>
>
> Best regards,
> Krzysztof
>
Best regards,
--
Michal Wilczynski <m.wilczynski@samsung.com>
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
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: Sat, 3 Oct 2026 17:36:25 +0200 [thread overview]
Message-ID: <eaba2fa9-a1ce-4dac-9bd6-e0b3a3dd01ef@samsung.com> (raw)
In-Reply-To: <6cf9e611-bfc5-407b-8132-bd328f8b61fc@kernel.org>
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.
Split in two there is no cycle: the PHY's only input is xin24m - the 24 MHz
oscillator which gives a linear order - hdmi_phy, voutcrg, hdmi_controller.
>
> And really, I have no clue what hdmitx0_pixelclk and voutcrg are. I
> could probably study the patches a lot to figure that out, but my review
> queue has still 200 more, so I'll skip.
>
> But nevertheless assigning clock parent of HDMI clock to PHY is
> standard, most of the platforms have it, thus it is not a justification
> for odd design.
Agreed and that is what this is - I followed RK3328, which uses the same
Innosilicon IP and also describes it as two nodes:
hdmi: hdmi@ff3c0000 clocks = <&cru PCLK_HDMI>, ...
hdmiphy: phy@ff430000 clocks = <&cru PCLK_HDMIPHY>, <&xin24m>,
<&cru DCLK_HDMIPHY>
clock-output-names = "hdmi_phy";
#clock-cells = <0>;
#phy-cells = <0>;
The only difference is reg: RK3328 has two register ranges, the JH7110 has
one, so the parent owns it and the children have none.
>
>> functions with different clock inputs and one of them feeds back into
>> the SoC clock tree. The PHY generates hdmitx0_pixelclk which voutcrg
>> consumes the controller consumes pclk/mclk/bclk from voutcrg. Folded
>> into one node that node is both a provider to and a consumer of
>> voutcrg which is a cycle in the hardware description, not just in Linux.
>
>
> Best regards,
> Krzysztof
>
Best regards,
--
Michal Wilczynski <m.wilczynski@samsung.com>
next prev parent reply other threads:[~2026-10-03 15:36 UTC|newest]
Thread overview: 262+ 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
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` [PATCH v4 01/20] dt-bindings: phy: Add starfive,jh7110-inno-hdmi-phy Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:35 ` sashiko-bot
2026-09-15 15:35 ` sashiko-bot
2026-09-17 6:51 ` Krzysztof Kozlowski
2026-09-17 6:51 ` Krzysztof Kozlowski
2026-09-17 6:51 ` Krzysztof Kozlowski
2026-09-17 6:51 ` Krzysztof Kozlowski
2026-09-18 0:34 ` Joshua Peisach
2026-09-18 0:34 ` Joshua Peisach
2026-09-18 0:34 ` Joshua Peisach
2026-09-18 0:34 ` Joshua Peisach
2026-09-18 6:16 ` Krzysztof Kozlowski
2026-09-18 6:16 ` Krzysztof Kozlowski
2026-09-18 6:16 ` Krzysztof Kozlowski
2026-09-18 6:16 ` Krzysztof Kozlowski
2026-09-18 6:21 ` Icenowy Zheng
2026-09-18 6:21 ` Icenowy Zheng
2026-09-18 6:21 ` Icenowy Zheng
2026-09-18 6:21 ` Icenowy Zheng
2026-09-18 6:41 ` Krzysztof Kozlowski
2026-09-18 6:41 ` Krzysztof Kozlowski
2026-09-18 6:41 ` Krzysztof Kozlowski
2026-09-18 6:41 ` Krzysztof Kozlowski
2026-09-25 21:27 ` Michal Wilczynski
2026-09-25 21:27 ` Michal Wilczynski
2026-09-25 21:27 ` Michal Wilczynski
2026-09-25 21:27 ` Michal Wilczynski
2026-09-25 21:05 ` Michal Wilczynski
2026-09-25 21:05 ` Michal Wilczynski
2026-09-25 21:05 ` Michal Wilczynski
2026-09-25 21:05 ` Michal Wilczynski
2026-09-30 11:01 ` Krzysztof Kozlowski
2026-09-30 11:01 ` Krzysztof Kozlowski
2026-09-30 11:01 ` Krzysztof Kozlowski
2026-09-30 11:01 ` Krzysztof Kozlowski
2026-10-03 15:36 ` Michal Wilczynski [this message]
2026-10-03 15:36 ` Michal Wilczynski
2026-10-03 15:36 ` Michal Wilczynski
2026-10-03 15:36 ` Michal Wilczynski
2026-10-03 20:45 ` Krzysztof Kozlowski
2026-10-03 20:45 ` Krzysztof Kozlowski
2026-10-03 20:45 ` Krzysztof Kozlowski
2026-10-03 20:45 ` Krzysztof Kozlowski
2026-10-03 22:35 ` Michal Wilczynski
2026-10-03 22:35 ` Michal Wilczynski
2026-10-03 22:35 ` Michal Wilczynski
2026-10-03 22:35 ` Michal Wilczynski
2026-10-04 7:15 ` Krzysztof Kozlowski
2026-10-04 7:15 ` Krzysztof Kozlowski
2026-10-04 7:15 ` Krzysztof Kozlowski
2026-10-04 7:15 ` Krzysztof Kozlowski
2026-10-10 12:23 ` Michal Wilczynski
2026-10-10 12:23 ` Michal Wilczynski
2026-10-10 12:23 ` Michal Wilczynski
2026-10-10 12:23 ` Michal Wilczynski
2026-10-05 7:27 ` Icenowy Zheng
2026-10-05 7:27 ` Icenowy Zheng
2026-10-05 7:27 ` Icenowy Zheng
2026-10-05 7:27 ` Icenowy Zheng
2026-09-15 15:32 ` [PATCH v4 02/20] dt-bindings: display: bridge: Add starfive,jh7110-inno-hdmi-controller Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:35 ` sashiko-bot
2026-09-15 15:35 ` sashiko-bot
2026-09-15 15:32 ` [PATCH v4 03/20] dt-bindings: mfd: Add starfive,jh7110-hdmi-subsystem Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:42 ` sashiko-bot
2026-09-15 15:42 ` sashiko-bot
2026-09-17 6:54 ` Krzysztof Kozlowski
2026-09-17 6:54 ` Krzysztof Kozlowski
2026-09-17 6:54 ` Krzysztof Kozlowski
2026-09-17 6:54 ` Krzysztof Kozlowski
2026-09-28 18:34 ` Michal Wilczynski
2026-09-28 18:34 ` Michal Wilczynski
2026-09-28 18:34 ` Michal Wilczynski
2026-09-28 18:34 ` Michal Wilczynski
2026-09-15 15:32 ` [PATCH v4 04/20] dt-bindings: soc: starfive: Add starfive,jh7110-vout-syscon Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:35 ` sashiko-bot
2026-09-15 15:35 ` sashiko-bot
2026-09-17 6:55 ` Krzysztof Kozlowski
2026-09-17 6:55 ` Krzysztof Kozlowski
2026-09-17 6:55 ` Krzysztof Kozlowski
2026-09-17 6:55 ` Krzysztof Kozlowski
2026-09-15 15:32 ` [PATCH v4 05/20] dt-bindings: display: verisilicon: Add starfive,jh7110-dc8200 Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:35 ` sashiko-bot
2026-09-15 15:35 ` sashiko-bot
2026-09-18 5:58 ` Icenowy Zheng
2026-09-18 5:58 ` Icenowy Zheng
2026-09-18 5:58 ` Icenowy Zheng
2026-09-18 5:58 ` Icenowy Zheng
2026-09-27 15:26 ` Michal Wilczynski
2026-09-27 15:26 ` Michal Wilczynski
2026-09-27 15:26 ` Michal Wilczynski
2026-09-27 15:26 ` Michal Wilczynski
2026-09-15 15:32 ` [PATCH v4 06/20] dt-bindings: soc: starfive: Add starfive,jh7110-vout-subsystem Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:35 ` sashiko-bot
2026-09-15 15:35 ` sashiko-bot
2026-09-24 15:30 ` Rob Herring (Arm)
2026-09-24 15:30 ` Rob Herring (Arm)
2026-09-24 15:30 ` Rob Herring (Arm)
2026-09-24 15:30 ` Rob Herring (Arm)
2026-09-15 15:32 ` [PATCH v4 07/20] drm/bridge: inno-hdmi: Split probe out of bind Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:44 ` sashiko-bot
2026-09-15 15:44 ` sashiko-bot
2026-09-15 15:32 ` [PATCH v4 08/20] drm/bridge: inno-hdmi: Allow the register map to come from a parent Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:42 ` sashiko-bot
2026-09-15 15:42 ` sashiko-bot
2026-09-15 15:32 ` [PATCH v4 09/20] drm/bridge: inno-hdmi: Add .disable platform operation Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:43 ` sashiko-bot
2026-09-15 15:43 ` sashiko-bot
2026-09-15 15:32 ` [PATCH v4 10/20] drm/bridge: inno-hdmi: Add .mode_valid " Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:37 ` sashiko-bot
2026-09-15 15:37 ` sashiko-bot
2026-09-15 15:32 ` [PATCH v4 11/20] drm/bridge: inno-hdmi: Make the PHY configuration table optional Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:40 ` sashiko-bot
2026-09-15 15:40 ` sashiko-bot
2026-09-15 15:32 ` [PATCH v4 12/20] soc: starfive: Add jh7110-hdmi-subsystem driver Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:44 ` sashiko-bot
2026-09-15 15:44 ` sashiko-bot
2026-09-29 15:04 ` Icenowy Zheng
2026-09-29 15:04 ` Icenowy Zheng
2026-09-29 15:04 ` Icenowy Zheng
2026-09-29 15:04 ` Icenowy Zheng
2026-09-15 15:32 ` [PATCH v4 13/20] soc: starfive: Add jh7110-vout-subsystem driver Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:42 ` sashiko-bot
2026-09-15 15:42 ` sashiko-bot
2026-09-29 15:04 ` Icenowy Zheng
2026-09-29 15:04 ` Icenowy Zheng
2026-09-29 15:04 ` Icenowy Zheng
2026-09-29 15:04 ` Icenowy Zheng
2026-09-15 15:32 ` [PATCH v4 14/20] clk: starfive: jh7110-vout: Allow pixel clock rate propagation Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:38 ` sashiko-bot
2026-09-15 15:38 ` sashiko-bot
2026-09-15 15:32 ` [PATCH v4 15/20] drm/bridge: starfive: Add JH7110 HDMI controller driver Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:42 ` sashiko-bot
2026-09-15 15:42 ` sashiko-bot
2026-09-29 15:03 ` Icenowy Zheng
2026-09-29 15:03 ` Icenowy Zheng
2026-09-29 15:03 ` Icenowy Zheng
2026-09-29 15:03 ` Icenowy Zheng
2026-09-15 15:32 ` [PATCH v4 16/20] phy: Add common Innosilicon HDMI PHY helpers Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:42 ` sashiko-bot
2026-09-15 15:42 ` sashiko-bot
2026-10-03 14:22 ` Vinod Koul
2026-10-03 14:22 ` Vinod Koul
2026-10-03 14:22 ` Vinod Koul
2026-10-03 14:22 ` Vinod Koul
2026-09-15 15:32 ` [PATCH v4 17/20] phy: rockchip: inno-hdmi: Use the common Innosilicon " Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:44 ` sashiko-bot
2026-09-15 15:44 ` sashiko-bot
2026-09-15 15:32 ` [PATCH v4 18/20] phy: starfive: Add jh7110-inno-hdmi-phy driver Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:46 ` sashiko-bot
2026-09-15 15:46 ` sashiko-bot
2026-09-26 3:31 ` Dominique Belhachemi
2026-09-26 3:31 ` Dominique Belhachemi
2026-09-26 3:31 ` Dominique Belhachemi
2026-09-26 3:31 ` Dominique Belhachemi
2026-09-27 12:05 ` Michal Wilczynski
2026-09-27 12:05 ` Michal Wilczynski
2026-09-27 12:05 ` Michal Wilczynski
2026-09-27 12:05 ` Michal Wilczynski
2026-09-15 15:32 ` [PATCH v4 19/20] riscv: dts: starfive: jh7110: Update DT for display subsystem Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:49 ` sashiko-bot
2026-09-15 15:49 ` sashiko-bot
2026-09-29 15:06 ` Icenowy Zheng
2026-09-29 15:06 ` Icenowy Zheng
2026-09-29 15:06 ` Icenowy Zheng
2026-09-29 15:06 ` Icenowy Zheng
2026-09-15 15:32 ` [PATCH v4 20/20] MAINTAINERS: Add StarFive JH7110 display subsystem entry Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-15 15:32 ` Michal Wilczynski
2026-09-16 0:45 ` [PATCH v4 00/20] drm: starfive: jh7110: Enable display subsystem Joshua Peisach
2026-09-16 0:45 ` Joshua Peisach
2026-09-16 0:45 ` Joshua Peisach
2026-09-16 0:45 ` Joshua Peisach
2026-09-17 17:22 ` Michal Wilczynski
2026-09-17 17:22 ` Michal Wilczynski
2026-09-17 17:22 ` Michal Wilczynski
2026-09-17 17:22 ` Michal Wilczynski
2026-09-18 15:32 ` Joshua Peisach
2026-09-18 15:32 ` Joshua Peisach
2026-09-18 15:32 ` Joshua Peisach
2026-09-18 15:32 ` Joshua Peisach
2026-09-27 12:24 ` Michal Wilczynski
2026-09-27 12:24 ` Michal Wilczynski
2026-09-27 12:24 ` Michal Wilczynski
2026-09-27 12:24 ` Michal Wilczynski
2026-09-20 6:09 ` Byron Stanoszek
2026-09-20 6:09 ` Byron Stanoszek
2026-09-20 6:09 ` Byron Stanoszek
2026-09-20 6:09 ` Byron Stanoszek
2026-09-20 7:35 ` Icenowy Zheng
2026-09-20 7:35 ` Icenowy Zheng
2026-09-20 7:35 ` Icenowy Zheng
2026-09-20 7:35 ` Icenowy Zheng
2026-09-25 20:09 ` Michal Wilczynski
2026-09-25 20:09 ` Michal Wilczynski
2026-09-25 20:09 ` Michal Wilczynski
2026-09-25 20:09 ` Michal Wilczynski
2026-09-25 13:55 ` (subset) " Brian Masney
2026-09-25 13:55 ` Brian Masney
2026-09-25 13:55 ` Brian Masney
2026-09-25 13:55 ` 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=eaba2fa9-a1ce-4dac-9bd6-e0b3a3dd01ef@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.