From: Michal Wilczynski <m.wilczynski@samsung.com>
To: Matt Coster <Matt.Coster@imgtec.com>, Maxime Ripard <mripard@kernel.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Danilo Krummrich <dakr@kernel.org>,
Pavel Machek <pavel@kernel.org>, Drew Fustini <drew@pdp7.com>,
Guo Ren <guoren@kernel.org>, Fu Wei <wefu@redhat.com>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Ulf Hansson <ulf.hansson@linaro.org>,
Philipp Zabel <p.zabel@pengutronix.de>,
Frank Binns <Frank.Binns@imgtec.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
"m.szyprowski@samsung.com" <m.szyprowski@samsung.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
"linux-riscv@lists.infradead.org"
<linux-riscv@lists.infradead.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH v2 4/4] drm/imagination: Skip clocks if platform PM manages resources
Date: Tue, 15 Apr 2025 13:05:17 +0200 [thread overview]
Message-ID: <a3142259-1c72-45b9-b148-5e5e6bef87f9@samsung.com> (raw)
In-Reply-To: <1226d261-247a-4a7c-a414-7db4a24fab9e@imgtec.com>
On 4/15/25 11:15, Matt Coster wrote:
> On 15/04/2025 09:55, Maxime Ripard wrote:
>> On Mon, Apr 14, 2025 at 08:52:58PM +0200, Michal Wilczynski wrote:
>>> Update the Imagination PVR driver to skip clock management during
>>> initialization if the platform PM has indicated that it manages platform
>>> resources.
>>>
>>> This is necessary for platforms like the T-HEAD TH1520, where the GPU's
>>> clocks and resets are managed via a PM domain, and should not be
>>> manipulated directly by the GPU driver.
>>>
>>> Signed-off-by: Michal Wilczynski <m.wilczynski@samsung.com>
>>> ---
>>> drivers/gpu/drm/imagination/pvr_device.c | 14 ++++++++++----
>>> 1 file changed, 10 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/imagination/pvr_device.c b/drivers/gpu/drm/imagination/pvr_device.c
>>> index 1704c0268589bdeb65fa6535f9ec63182b0a3e94..f40468b99cf14da418aeecde086f009695ff877c 100644
>>> --- a/drivers/gpu/drm/imagination/pvr_device.c
>>> +++ b/drivers/gpu/drm/imagination/pvr_device.c
>>> @@ -504,10 +504,16 @@ pvr_device_init(struct pvr_device *pvr_dev)
>>> if (err)
>>> return err;
>>>
>>> - /* Enable and initialize clocks required for the device to operate. */
>>> - err = pvr_device_clk_init(pvr_dev);
>>> - if (err)
>>> - return err;
>>> + /*
>>> + * Only initialize clocks if they are not managed by the platform's
>>> + * PM domain.
>>> + */
>>> + if (!device_platform_resources_pm_managed(dev)) {
>>> + /* Enable and initialize clocks required for the device to operate. */
>>> + err = pvr_device_clk_init(pvr_dev);
>>> + if (err)
>>> + return err;
>>> + }
>>
>> So, how does that work for devfreq? I can understand the rationale for
>> resets and the sys clock, but the core clock at least should really be
>> handled by the driver.
Hi Maxime, Matt,
Thanks for the feedback.
This commit is trying to prevent the pvr RUNTIME_PM_OPS from controlling the
clocks or resets, as there is a custom start/stop sequence needed for
the TH1520 SoC coded in patch 3 of this series.
static const struct dev_pm_ops pvr_pm_ops = {
RUNTIME_PM_OPS(pvr_power_device_suspend, pvr_power_device_resume, pvr_power_device_idle)
};
So, if the core clock needs to be used for other purposes like devfreq,
we could move the device_platform_resources_pm_managed() check to the
pvr_power_* functions instead. This would prevent the clocks and resets
from being managed in runtime PM in the consumer driver, while still
allowing the GPU driver to access and control clocks like the core clock
as needed for other purposes.
That way, clocks could be safely shared between the PM domain driver and the
device driver, with generic PM driver controlling the start/stop
sequence for reset and clocks. We would probably need to find a
better name for the flag then, to more clearly reflect that it's about
delegating clock/reset PM runtime control, rather than full resource
ownership.
>
> I agree, this feels a bit "all or nothing" to me. There's only one clock
> on this platform that has issues, we can still control the other two
> just fine.
>
> I thought fixed clocks were the standard mechanism for exposing
> non-controllable clocks to device drivers?
That's correct — and it's not really about the MEM clock at this point.
The main goal is to ensure the custom power-up sequence for the TH1520
SoC is followed. That sequence is implemented in
th1520_gpu_domain_start() in patch 3 of this series.
Regards,
Michał
>
> Cheers,
> Matt
>
>>
>> Maxime
>
>
prev parent reply other threads:[~2025-04-15 11:05 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20250414185313eucas1p1c4d13c657f3a3c3e47810955db645ca2@eucas1p1.samsung.com>
2025-04-14 18:52 ` [PATCH v2 0/4] Add GPU clock/reset management for TH1520 in genpd Michal Wilczynski
2025-04-14 18:52 ` [PATCH v2 1/4] PM: device: Introduce platform_resources_managed flag Michal Wilczynski
2025-04-15 16:42 ` Rafael J. Wysocki
2025-04-16 13:32 ` Michal Wilczynski
2025-04-16 14:48 ` Rafael J. Wysocki
2025-04-17 16:19 ` Michal Wilczynski
2025-04-24 16:51 ` Ulf Hansson
2025-04-25 7:09 ` Maxime Ripard
2025-04-25 10:10 ` Ulf Hansson
2025-04-14 18:52 ` [PATCH v2 2/4] dt-bindings: firmware: thead,th1520: Add resets for GPU clkgen Michal Wilczynski
2025-04-15 16:38 ` Conor Dooley
2025-04-16 11:40 ` Michal Wilczynski
2025-04-16 17:10 ` Conor Dooley
2025-04-14 18:52 ` [PATCH v2 3/4] pmdomain: thead: Add GPU-specific clock and reset handling for TH1520 Michal Wilczynski
2025-04-25 8:50 ` Ulf Hansson
2025-04-30 12:17 ` Michal Wilczynski
2025-05-08 11:13 ` Ulf Hansson
2025-04-14 18:52 ` [PATCH v2 4/4] drm/imagination: Skip clocks if platform PM manages resources Michal Wilczynski
2025-04-15 8:55 ` Maxime Ripard
2025-04-15 9:15 ` Matt Coster
2025-04-15 11:05 ` Michal Wilczynski [this message]
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=a3142259-1c72-45b9-b148-5e5e6bef87f9@samsung.com \
--to=m.wilczynski@samsung.com \
--cc=Frank.Binns@imgtec.com \
--cc=Matt.Coster@imgtec.com \
--cc=airlied@gmail.com \
--cc=conor+dt@kernel.org \
--cc=dakr@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=drew@pdp7.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=guoren@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=m.szyprowski@samsung.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=pavel@kernel.org \
--cc=rafael@kernel.org \
--cc=robh@kernel.org \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
--cc=ulf.hansson@linaro.org \
--cc=wefu@redhat.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