From: "Heiko Stübner" <heiko@sntech.de>
To: Jianfeng Liu <liujianfeng1994@gmail.com>,
Sebastian Reichel <sebastian.reichel@collabora.com>
Cc: airlied@gmail.com, andy.yan@rock-chips.com, conor+dt@kernel.org,
cristian.ciocaltea@collabora.com, devicetree@vger.kernel.org,
dri-devel@lists.freedesktop.org, hjc@rock-chips.com,
kernel@collabora.com, krzk+dt@kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
robh@kernel.org, simona@ffwll.ch, tzimmermann@suse.de
Subject: Re: [PATCH 3/4] arm64: dts: rockchip: Add HDMI1 PHY PLL clock source to VOP2 on RK3588
Date: Tue, 18 Feb 2025 15:53:06 +0100 [thread overview]
Message-ID: <2425191.NG923GbCHz@diego> (raw)
In-Reply-To: <lnuceofdwm6lgibworaghcujp6rrncvn4e2xc2vzltimjw3rqu@jur7x5cxt5ue>
Am Dienstag, 18. Februar 2025, 15:13:07 MEZ schrieb Sebastian Reichel:
> Hi,
>
> On Tue, Feb 18, 2025 at 08:17:46PM +0800, Jianfeng Liu wrote:
> > On Tue, 18 Feb 2025 11:00:57 +0100, Heiko Stübnerwrote:
> > >So I guess step1, check what error is actually returned.
> >
> > I have checked that the return value is -517:
> >
> > rockchip-drm display-subsystem: [drm] *ERROR* failed to get pll_hdmiphy1 with -517
> >
> > >Step2 check if clk_get_optional need to be adapted or alternatively
> > >catch the error in the vop2 and set the clock to NULL ourself in that case.
> >
> > I tried the following patch to set the clock to NULL when clk_get_optional
> > failed with value -517, and hdmi0 is working now. There are also some
> > boards like rock 5 itx which only use hdmi1, I think we should also add
> > this logic to vop2->pll_hdmiphy0.
> >
> > @@ -3733,6 +3751,15 @@ static int vop2_bind(struct device *dev, struct device *master, void *data)
> > return PTR_ERR(vop2->pll_hdmiphy0);
> > }
> >
> > + vop2->pll_hdmiphy1 = devm_clk_get_optional(vop2->dev, "pll_hdmiphy1");
> > + if (IS_ERR(vop2->pll_hdmiphy1)) {
> > + drm_err(vop2->drm, "failed to get pll_hdmiphy1 with %d\n", vop2->pll_hdmiphy1);
> > + if (vop2->pll_hdmiphy1 == -EPROBE_DEFER)
> > + vop2->pll_hdmiphy1 = NULL;
> > + else
> > + return PTR_ERR(vop2->pll_hdmiphy1);
> > + }
> > +
>
> This first of all shows, that we should replace drm_err in this
> place with dev_err_probe(), which hides -EPROBE_DEFER errors by
> default and instead captures the reason for /sys/kernel/debug/devices_deferred.
>
> Second what you are doing in the above suggestion will break kernel
> configurations where VOP is built-in and the HDMI PHY is build as a
> module.
>
> But I also think it would be better to have the clocks defined in the
> SoC level DT. I suppose that means vop2_bind would have to check if
> the HDMI controller <ID> is enabled and only requests pll_hdmiphy<ID>
> based on that. Considering there is the OF graph pointing from VOP
> to the enabled HDMI controllers, it should be able to do that.
I was more thinking about fixing the correct thing, with something like:
----------- 8< ----------
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index cf7720b9172f..50faafbf5dda 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -5258,6 +5258,10 @@ of_clk_get_hw_from_clkspec(struct of_phandle_args *clkspec)
if (!clkspec)
return ERR_PTR(-EINVAL);
+ /* Check if node in clkspec is in disabled/fail state */
+ if (!of_device_is_available(clkspec->np))
+ return ERR_PTR(-ENOENT);
+
mutex_lock(&of_clk_mutex);
list_for_each_entry(provider, &of_clk_providers, link) {
if (provider->node == clkspec->np) {
----------- 8< ----------
Because right now the clk framework does not handle nodes in
failed/disabled state and would defer indefinitly.
WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko@sntech.de>
To: Jianfeng Liu <liujianfeng1994@gmail.com>,
Sebastian Reichel <sebastian.reichel@collabora.com>
Cc: simona@ffwll.ch, devicetree@vger.kernel.org, conor+dt@kernel.org,
robh@kernel.org, maarten.lankhorst@linux.intel.com,
hjc@rock-chips.com, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org,
mripard@kernel.org, tzimmermann@suse.de, andy.yan@rock-chips.com,
krzk+dt@kernel.org, kernel@collabora.com, airlied@gmail.com,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 3/4] arm64: dts: rockchip: Add HDMI1 PHY PLL clock source to VOP2 on RK3588
Date: Tue, 18 Feb 2025 15:53:06 +0100 [thread overview]
Message-ID: <2425191.NG923GbCHz@diego> (raw)
In-Reply-To: <lnuceofdwm6lgibworaghcujp6rrncvn4e2xc2vzltimjw3rqu@jur7x5cxt5ue>
Am Dienstag, 18. Februar 2025, 15:13:07 MEZ schrieb Sebastian Reichel:
> Hi,
>
> On Tue, Feb 18, 2025 at 08:17:46PM +0800, Jianfeng Liu wrote:
> > On Tue, 18 Feb 2025 11:00:57 +0100, Heiko Stübnerwrote:
> > >So I guess step1, check what error is actually returned.
> >
> > I have checked that the return value is -517:
> >
> > rockchip-drm display-subsystem: [drm] *ERROR* failed to get pll_hdmiphy1 with -517
> >
> > >Step2 check if clk_get_optional need to be adapted or alternatively
> > >catch the error in the vop2 and set the clock to NULL ourself in that case.
> >
> > I tried the following patch to set the clock to NULL when clk_get_optional
> > failed with value -517, and hdmi0 is working now. There are also some
> > boards like rock 5 itx which only use hdmi1, I think we should also add
> > this logic to vop2->pll_hdmiphy0.
> >
> > @@ -3733,6 +3751,15 @@ static int vop2_bind(struct device *dev, struct device *master, void *data)
> > return PTR_ERR(vop2->pll_hdmiphy0);
> > }
> >
> > + vop2->pll_hdmiphy1 = devm_clk_get_optional(vop2->dev, "pll_hdmiphy1");
> > + if (IS_ERR(vop2->pll_hdmiphy1)) {
> > + drm_err(vop2->drm, "failed to get pll_hdmiphy1 with %d\n", vop2->pll_hdmiphy1);
> > + if (vop2->pll_hdmiphy1 == -EPROBE_DEFER)
> > + vop2->pll_hdmiphy1 = NULL;
> > + else
> > + return PTR_ERR(vop2->pll_hdmiphy1);
> > + }
> > +
>
> This first of all shows, that we should replace drm_err in this
> place with dev_err_probe(), which hides -EPROBE_DEFER errors by
> default and instead captures the reason for /sys/kernel/debug/devices_deferred.
>
> Second what you are doing in the above suggestion will break kernel
> configurations where VOP is built-in and the HDMI PHY is build as a
> module.
>
> But I also think it would be better to have the clocks defined in the
> SoC level DT. I suppose that means vop2_bind would have to check if
> the HDMI controller <ID> is enabled and only requests pll_hdmiphy<ID>
> based on that. Considering there is the OF graph pointing from VOP
> to the enabled HDMI controllers, it should be able to do that.
I was more thinking about fixing the correct thing, with something like:
----------- 8< ----------
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index cf7720b9172f..50faafbf5dda 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -5258,6 +5258,10 @@ of_clk_get_hw_from_clkspec(struct of_phandle_args *clkspec)
if (!clkspec)
return ERR_PTR(-EINVAL);
+ /* Check if node in clkspec is in disabled/fail state */
+ if (!of_device_is_available(clkspec->np))
+ return ERR_PTR(-ENOENT);
+
mutex_lock(&of_clk_mutex);
list_for_each_entry(provider, &of_clk_providers, link) {
if (provider->node == clkspec->np) {
----------- 8< ----------
Because right now the clk framework does not handle nodes in
failed/disabled state and would defer indefinitly.
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2025-02-18 14:59 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-15 0:55 [PATCH 0/4] Improve Rockchip VOP2 display modes handling on RK3588 HDMI1 Cristian Ciocaltea
2025-02-15 0:55 ` Cristian Ciocaltea
2025-02-15 0:55 ` [PATCH 1/4] drm/rockchip: vop2: Improve " Cristian Ciocaltea
2025-02-15 0:55 ` Cristian Ciocaltea
2025-02-15 0:55 ` [PATCH 2/4] arm64: dts: rockchip: Enable HDMI1 PHY clk provider on RK3588 Cristian Ciocaltea
2025-02-15 0:55 ` Cristian Ciocaltea
2025-02-15 0:55 ` [PATCH 3/4] arm64: dts: rockchip: Add HDMI1 PHY PLL clock source to VOP2 " Cristian Ciocaltea
2025-02-15 0:55 ` Cristian Ciocaltea
2025-02-17 2:44 ` Jianfeng Liu
2025-02-17 2:44 ` Jianfeng Liu
2025-02-17 14:33 ` [PATCH " Heiko Stübner
2025-02-17 14:33 ` Heiko Stübner
2025-02-17 23:33 ` Cristian Ciocaltea
2025-02-17 23:33 ` Cristian Ciocaltea
2025-02-18 3:38 ` Jianfeng Liu
2025-02-18 3:38 ` Jianfeng Liu
2025-02-18 9:52 ` Jianfeng Liu
2025-02-18 9:52 ` Jianfeng Liu
2025-02-18 10:00 ` Heiko Stübner
2025-02-18 10:00 ` Heiko Stübner
2025-02-18 12:17 ` Jianfeng Liu
2025-02-18 12:17 ` Jianfeng Liu
2025-02-18 14:13 ` Sebastian Reichel
2025-02-18 14:13 ` Sebastian Reichel
2025-02-18 14:53 ` Heiko Stübner [this message]
2025-02-18 14:53 ` Heiko Stübner
2025-02-18 16:05 ` Sebastian Reichel
2025-02-18 16:05 ` Sebastian Reichel
2025-02-18 23:40 ` Cristian Ciocaltea
2025-02-18 23:40 ` Cristian Ciocaltea
2025-02-22 6:10 ` Johannes Erdfelt
2025-02-22 6:10 ` Johannes Erdfelt
2025-02-15 0:55 ` [PATCH 4/4] arm64: dts: rockchip: Enable HDMI1 on rk3588-evb1 Cristian Ciocaltea
2025-02-15 0:55 ` Cristian Ciocaltea
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=2425191.NG923GbCHz@diego \
--to=heiko@sntech.de \
--cc=airlied@gmail.com \
--cc=andy.yan@rock-chips.com \
--cc=conor+dt@kernel.org \
--cc=cristian.ciocaltea@collabora.com \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=hjc@rock-chips.com \
--cc=kernel@collabora.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=liujianfeng1994@gmail.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=robh@kernel.org \
--cc=sebastian.reichel@collabora.com \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
/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.