From: Sascha Hauer <s.hauer@pengutronix.de>
To: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Cc: devicetree@vger.kernel.org,
Benjamin Gaignard <benjamin.gaignard@collabora.com>,
kernel@pengutronix.de, "elaine.zhang" <zhangqing@rock-chips.com>,
Sandy Huang <hjc@rock-chips.com>,
dri-devel@lists.freedesktop.org,
linux-rockchip@lists.infradead.org,
Michael Riesch <michael.riesch@wolfvision.net>,
Peter Geis <pgwipeout@gmail.com>,
Andy Yan <andy.yan@rock-chips.com>,
Robin Murphy <robin.murphy@arm.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v8 09/24] drm/rockchip: dw_hdmi: Add support for niu clk
Date: Wed, 16 Mar 2022 15:31:05 +0100 [thread overview]
Message-ID: <20220316143105.GS405@pengutronix.de> (raw)
In-Reply-To: <4c04da9c-f9c9-7375-df1a-4661807549dd@collabora.com>
On Wed, Mar 16, 2022 at 04:01:49PM +0300, Dmitry Osipenko wrote:
> On 3/16/22 12:12, Sascha Hauer wrote:
> > On Mon, Mar 14, 2022 at 08:54:27PM +0300, Dmitry Osipenko wrote:
> >> On 3/14/22 11:18, Sascha Hauer wrote:
> >>> On Sun, Mar 13, 2022 at 12:07:56AM +0300, Dmitry Osipenko wrote:
> >>>> On 3/11/22 11:33, Sascha Hauer wrote:
> >>>>> The rk3568 HDMI has an additional clock that needs to be enabled for the
> >>>>> HDMI controller to work. This clock is not needed for the HDMI
> >>>>> controller itself, but to make the SoC internal bus logic work. From the
> >>>>> reference manual:
> >>>>>
> >>>>>> 2.8.6 NIU Clock gating reliance
> >>>>>>
> >>>>>> A part of niu clocks have a dependence on another niu clock in order to
> >>>>>> sharing the internal bus. When these clocks are in use, another niu
> >>>>>> clock must be opened, and cannot be gated. These clocks and the special
> >>>>>> clock on which they are relied are as following:
> >>>>>>
> >>>>>> Clocks which have dependency The clock which can not be gated
> >>>>>> -----------------------------------------------------------------
> >>>>>> ...
> >>>>>> pclk_vo_niu, hclk_vo_s_niu hclk_vo_niu
> >>>>>> ...
> >>>>> The clock framework does not support turning on a clock whenever another
> >>>>> clock is turned on, so this patch adds support for the dependent clock
> >>>>> to the HDMI driver. We call it "NIU", which is for "Native Interface
> >>>>> Unit"
> >>>>
> >>>> This still doesn't make sense to me. You're saying that "pclk_vo_niu,
> >>>> hclk_vo_s_niu" depend on "hclk_vo_niu", but HDMI doesn't use pclk_vo, it
> >>>> uses pclk_hdmi.
> >>>
> >>> pclk_hdmi_host is a child clock of pclk_vo:
> >>>
> >>> aclk_vo 2 2 0 300000000 0 0 50000 Y
> >>> aclk_hdcp 0 0 0 300000000 0 0 50000 N
> >>> pclk_vo 2 3 0 75000000 0 0 50000 Y
> >>> pclk_edp_ctrl 0 0 0 75000000 0 0 50000 N
> >>> pclk_dsitx_1 0 0 0 75000000 0 0 50000 N
> >>> pclk_dsitx_0 1 2 0 75000000 0 0 50000 Y
> >>> pclk_hdmi_host 1 2 0 75000000 0 0 50000 Y
> >>> pclk_hdcp 0 0 0 75000000 0 0 50000 N
> >>> hclk_vo 2 5 0 150000000 0 0 50000 Y
> >>> hclk_hdcp 0 0 0 150000000 0 0 50000 N
> >>> hclk_vop 0 2 0 150000000 0 0 50000 N
> >>
> >> It was unclear that the pclk_hdmi is the child of pclk_vo by looking at
> >> the clk driver's code, thank you!
> >>
> >> Won't be better if the implicit clk dependency would be handled
> >> internally by the RK clk driver?
> >
> > I have considered handling something like coupled clocks in the clock
> > framework, but I have not yet considered handling this internally in the
> > Rockchip clock driver.
> >
> > I just had a quick look at the driver. While it sounds like an easy task
> > to enable gate A whenever gate B is enabled I haven't found a good way to
> > integrate that into the clk driver. It seems to me that it's not easier
> > to implement in the clk driver than it is to implement it in the clk
> > framework where it could be used by others as well.
> >
> >> For example, by making the common gate
> >> shared/refcounted. Have you considered this variant? Then we won't need
> >> to change the DT bindings.
> >
> > For the DT bindings it is just an additional clock. Should we have a
> > better way to handle that case in the future we could simply ignore the
> > additional clock. I wouldn't bother too much about this.
>
> To me that NIU quirk should be internal to the clk h/w module, so it
> doesn't feel nice to mix the clk h/w description with the HDMI h/w
> description.
>
> On the other hand, making clk driver to handle this case indeed will
> take some effort as I see now. For example, clk driver of NVIDIA Tegra
> has concept of shared gates, but bringing it to the RK clk driver will
> be quite messy.
>
> Alright, let's work around the clk limitation like you're suggesting. I
> agree that it shouldn't really be a problem to deprecate the extra clock
> later on.
>
> I have last questions..
>
> 1. Previously you said that the PD driver takes care of enabling all the
> clocks it can find in the device by itself on RPM-resume, then why HDMI
> driver needs to enable the clock explicitly?
The PD driver only does so when the device has pm_runtime enabled.
Currently that's not the case for the hdmi driver. That could be changed
of course, but I am not convinced that it's a good idea that the PD
driver messes with the consumers clocks. It would also make the PD
driver mandatory which it currently not is.
>
> 2. You added clk_prepare_enable(), but there is no corresponding
> clk_disable_unprepare(), AFAICS. Why?
Because I missed it ;)
Sascha
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2022-03-16 14:31 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-11 8:32 [PATCH v8 00/24] drm/rockchip: RK356x VOP2 support Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 01/24] drm/rockchip: Embed drm_encoder into rockchip_decoder Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 02/24] drm/rockchip: Add crtc_endpoint_id to rockchip_encoder Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 03/24] drm/rockchip: dw_hdmi: rename vpll clock to reference clock Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 04/24] dt-bindings: display: rockchip: dw-hdmi: use "ref" as clock name Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 05/24] arm64: dts: rockchip: rk3399: rename HDMI ref clock to 'ref' Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 06/24] drm/rockchip: dw_hdmi: add rk3568 support Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 07/24] dt-bindings: display: rockchip: dw-hdmi: Add compatible for rk3568 HDMI Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 08/24] drm/rockchip: dw_hdmi: add regulator support Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 09/24] drm/rockchip: dw_hdmi: Add support for niu clk Sascha Hauer
2022-03-12 21:07 ` Dmitry Osipenko
2022-03-14 8:18 ` Sascha Hauer
2022-03-14 17:54 ` Dmitry Osipenko
2022-03-16 9:12 ` Sascha Hauer
2022-03-16 13:01 ` Dmitry Osipenko
2022-03-16 13:55 ` Robin Murphy
2022-03-16 14:01 ` Dmitry Osipenko
2022-03-16 14:31 ` Sascha Hauer [this message]
2022-03-11 8:33 ` [PATCH v8 10/24] dt-bindings: display: rockchip: dw-hdmi: Add additional clock Sascha Hauer
2022-03-11 14:55 ` Rob Herring
2022-03-11 8:33 ` [PATCH v8 11/24] dt-bindings: display: rockchip: dw-hdmi: Add regulator support Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 12/24] drm/rockchip: dw_hdmi: Use auto-generated tables Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 13/24] drm/rockchip: dw_hdmi: drop mode_valid hook Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 14/24] drm/rockchip: dw_hdmi: Set cur_ctr to 0 always Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 15/24] drm/rockchip: dw_hdmi: add default 594Mhz clk for 4K@60hz Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 16/24] dt-bindings: display: rockchip: dw-hdmi: Make unwedge pinctrl optional Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 17/24] arm64: dts: rockchip: rk356x: Add VOP2 nodes Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 18/24] arm64: dts: rockchip: rk356x: Add HDMI nodes Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 19/24] arm64: dts: rockchip: rk3568-evb: Enable VOP2 and hdmi Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 20/24] arm64: dts: rockchip: enable vop2 and hdmi tx on quartz64a Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 21/24] drm/rockchip: Make VOP driver optional Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 22/24] drm: rockchip: Add VOP2 driver Sascha Hauer
2022-03-15 6:46 ` Andy Yan
2022-03-15 12:43 ` Daniel Stone
2022-03-16 1:14 ` Andy Yan
2022-03-16 7:40 ` Sascha Hauer
[not found] ` <f9d57503-1ac6-61c6-5fda-1a78b6e7270a@rock-chips.com>
[not found] ` <e6ab5ce2-4177-9e45-a50f-9ea3abb08800@rock-chips.com>
2022-03-18 8:52 ` Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 23/24] dt-bindings: display: rockchip: Add binding for VOP2 Sascha Hauer
2022-03-11 8:33 ` [PATCH v8 24/24] dt-bindings: display: rockchip: dw-hdmi: fix ports description Sascha Hauer
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=20220316143105.GS405@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=andy.yan@rock-chips.com \
--cc=benjamin.gaignard@collabora.com \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.osipenko@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hjc@rock-chips.com \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=michael.riesch@wolfvision.net \
--cc=pgwipeout@gmail.com \
--cc=robin.murphy@arm.com \
--cc=zhangqing@rock-chips.com \
/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;
as well as URLs for NNTP newsgroup(s).