Re: [PATCH] soc: rockchip: power-domain: remove PM clocks

From: Tomasz Figa
Date: Wed Feb 28 2018 - 07:49:38 EST


On Wed, Feb 28, 2018 at 9:32 PM, Geert Uytterhoeven
<geert@xxxxxxxxxxxxxx> wrote:
> Hi Tomasz,
>
> On Wed, Feb 28, 2018 at 1:29 PM, Tomasz Figa <tfiga@xxxxxxxxxxxx> wrote:
>> On Wed, Feb 28, 2018 at 9:17 PM, Geert Uytterhoeven
>> <geert@xxxxxxxxxxxxxx> wrote:
>>> On Wed, Feb 28, 2018 at 12:11 PM, Jeffy Chen <jeffy.chen@xxxxxxxxxxxxxx> wrote:
>>>> Currently we are adding all of the attached devices' clocks as pm clocks
>>>> and enable them when powering on the power domain.
>>>>
>>>> This seems unnecessary, because those clocks are already controlled in
>>>> the devices' drivers with better error handling.
>>>>
>>>> Tested on my chromebook minnie(rk3288) and chromebook kevin(rk3399).
>>>>
>>>> Signed-off-by: Jeffy Chen <jeffy.chen@xxxxxxxxxxxxxx>
>>>
>>> Thanks for your patch!
>>>
>>> Just wondering: so you prefer to handle the clocks explicitly in all drivers,
>>> instead of delegating this task to Runtime PM?
>>
>> Is it already possible to gate clocks immediately when the device
>> idles, but defer turning the power domain off until time long enough
>> to cover the power down and up latency elapses?
>
> I'm not 100% sure.
> Note that clocks are turned off when the device idles, while powering down
> the power domain requires all devices in the domain to be idle.

I remember seeing some ongoing work for multiple power states of PM
domains on LWN, which could possibly solve it. I guess it's not done
yet.

Also, for Rockchip SoC, the typical setup is one device per domain,
+/- some auxiliary devices such as IOMMU, which would have the same
runtime PM state as the master device. (It isn't implemented yet, but
Jeffy posted patches for using device links some time ago.)

>
>> Also, how about systems where runtime PM is disabled? I think that's
>> one of the reasons we control the clocks explicitly in the drivers
>> anyway.
>
> On many platforms, Runtime PM is always enabled.

Can we make such assumption? If so, could we just make an explicit
"select PM_RUNTIME" in Kconfig of the SoC?

Best regards,
Tomasz