[PATCH 1/1] ARM: EXYNOS: Add default latency values for Device and Power Domain
Sachin Kamat
sachin.kamat at linaro.org
Sun Nov 10 22:22:07 EST 2013
Hi Tomasz,
Thanks for reviewing.
On 10 November 2013 22:25, Tomasz Figa <tomasz.figa at gmail.com> wrote:
> Hi Sachin, Prasanna,
>
> [CCing Rafael and respective mailing lists]
>
> Please see my comments inline. Also please always remember to add all
> appropriate recipients on CC list. More reviewers means higher chance of
> spotting (and so eliminating) potential issues.
Indeed. Thanks for adding. get_maintainers somehow did not list PM
related folks.
So missed this.
>
> On Friday 08 of November 2013 11:57:05 Sachin Kamat wrote:
>> From: Prasanna Kumar <prasanna.ps at samsung.com>
>>
>> Power domain and device timing data are intialized with default
>> values to avoid dump of warnings from various power domains
>> during power gating.
>>
>> Signed-off-by: Prasanna Kumar <prasanna.ps at samsung.com>
>> Signed-off-by: Prathyush K <prathyush.k at samsung.com>
>> Signed-off-by: Sachin Kamat <sachin.kamat at linaro.org>
>> ---
>> arch/arm/mach-exynos/pm_domains.c | 15 ++++++++++++++-
>> 1 file changed, 14 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c
>> index 84e0483a0500..9bbb4ac23980 100644
>> --- a/arch/arm/mach-exynos/pm_domains.c
>> +++ b/arch/arm/mach-exynos/pm_domains.c
>> @@ -25,6 +25,10 @@
>> #include <mach/regs-pmu.h>
>> #include <plat/devs.h>
>>
>> +#define DEFAULT_DEV_LATENCY_NS 1000000UL
>> +#define DEFAULT_PD_PWRON_LATENCY_NS 10000000UL
>> +#define DEFAULT_PD_PWROFF_LATENCY_NS 10000000UL
>
> Is there any rationale behind choosing these particular values?
IMO, these values were obtained more from experimentation. Prasanna,
please comment.
>
>> +
>> /*
>> * Exynos specific wrapper around the generic power domain
>> */
>> @@ -36,6 +40,13 @@ struct exynos_pm_domain {
>> u32 enable;
>> };
>>
>> +static struct gpd_timing_data dev_latencies = {
>> + .stop_latency_ns = DEFAULT_DEV_LATENCY_NS,
>> + .start_latency_ns = DEFAULT_DEV_LATENCY_NS,
>> + .save_state_latency_ns = DEFAULT_DEV_LATENCY_NS,
>> + .restore_state_latency_ns = DEFAULT_DEV_LATENCY_NS,
>
> I don't think that stop, start, save and restore latencies should be all
> the same.
They could be different. But again as I said it was based on
experimentation rather than reference.
>
>> +};
>> +
>> static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
>> {
>> struct exynos_pm_domain *pd;
>> @@ -83,7 +94,7 @@ static void exynos_add_device_to_domain(struct exynos_pm_domain *pd,
>> dev_dbg(dev, "adding to power domain %s\n", pd->pd.name);
>>
>> while (1) {
>> - ret = pm_genpd_add_device(&pd->pd, dev);
>> + ret = __pm_genpd_add_device(&pd->pd, dev, &dev_latencies);
>
> The double underscore prefix scares me a bit. Is this function really
> supposed to be used like this?
We did not find a wrapper/helper function to set this. Hence had to
use this. In fact I did not
find any other users of this function (pm_genpd_add_device) too.
>
>> if (ret != -EAGAIN)
>> break;
>> cond_resched();
>> @@ -173,6 +184,8 @@ static __init int exynos4_pm_init_power_domain(void)
>> pd->base = of_iomap(np, 0);
>> pd->pd.power_off = exynos_pd_power_off;
>> pd->pd.power_on = exynos_pd_power_on;
>> + pd->pd.power_off_latency_ns = DEFAULT_PD_PWROFF_LATENCY_NS;
>> + pd->pd.power_on_latency_ns = DEFAULT_PD_PWRON_LATENCY_NS;
>
> It might be worth to set up the latencies indeed, but wrong values can do
> more harm than good.
Right. As of this now, this is a well tested set of values.
--
With warm regards,
Sachin
More information about the linux-arm-kernel
mailing list