From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Chander Kashyap <chander.kashyap@linaro.org>,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-samsung-soc@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Cc: lorenzo.pieralisi@arm.com, rjw@rjwysocki.net,
kgene.kim@samsung.com, Chander Kashyap <k.chander@samsung.com>
Subject: Re: [PATCH 4/4] mcpm: exynos: populate suspend and powered_up callbacks
Date: Tue, 22 Apr 2014 12:51:06 +0200 [thread overview]
Message-ID: <5356499A.20609@linaro.org> (raw)
In-Reply-To: <1398080958-21677-5-git-send-email-chander.kashyap@linaro.org>
On 04/21/2014 01:49 PM, Chander Kashyap wrote:
> In order to support cpuidle through mcpm, suspend and powered-up
> callbacks are required in mcpm platform code.
> Hence populate the same callbacks.
>
> Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> Signed-off-by: Chander Kashyap <k.chander@samsung.com>
> ---
> arch/arm/mach-exynos/mcpm-exynos.c | 53 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 53 insertions(+)
>
> diff --git a/arch/arm/mach-exynos/mcpm-exynos.c b/arch/arm/mach-exynos/mcpm-exynos.c
> index 46d4968..16af0bd 100644
> --- a/arch/arm/mach-exynos/mcpm-exynos.c
> +++ b/arch/arm/mach-exynos/mcpm-exynos.c
> @@ -318,10 +318,63 @@ static int exynos_power_down_finish(unsigned int cpu, unsigned int cluster)
> return 0; /* success: the CPU is halted */
> }
>
> +static void enable_coherency(void)
> +{
> + unsigned long v, u;
> +
> + asm volatile(
> + "mrc p15, 0, %0, c1, c0, 1\n"
> + "orr %0, %0, %2\n"
> + "ldr %1, [%3]\n"
> + "and %1, %1, #0\n"
> + "orr %0, %0, %1\n"
> + "mcr p15, 0, %0, c1, c0, 1\n"
> + : "=&r" (v), "=&r" (u)
> + : "Ir" (0x40), "Ir" (S5P_INFORM0)
> + : "cc");
> +}
Shouldn't this function to be used from hotplug.c also ?
> +
> +void exynos_powered_up(void)
> +{
> + unsigned int mpidr, cpu, cluster;
> +
> + mpidr = read_cpuid_mpidr();
> + cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
> + cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
> +
> + arch_spin_lock(&bl_lock);
> + if (cpu_use_count[cpu][cluster] == 0)
> + cpu_use_count[cpu][cluster] = 1;
> + arch_spin_unlock(&bl_lock);
> +}
> +
> +static void exynos_suspend(u64 residency)
> +{
> + unsigned int mpidr, cpunr;
> +
> + mpidr = read_cpuid_mpidr();
> + cpunr = enynos_pmu_cpunr(mpidr);
*enynos*_pmu_cpunr ?
> +
> + __raw_writel(virt_to_phys(mcpm_entry_point), REG_ENTRY_ADDR);
> +
> + exynos_power_down();
> +
> + /*
> + * Execution reaches here only if cpu did not power down.
> + * Hence roll back the changes done in exynos_power_down function.
> + */
> + __raw_writel(EXYNOS_CORE_LOCAL_PWR_EN,
> + EXYNOS_ARM_CORE_CONFIGURATION(cpunr));
Why don't you use the functions defined in the
patch 5/5 arm: exynos: Add MCPM call-back functions
exynos_core_power_control() ?
> + set_cr(get_cr() | CR_C);
> + enable_coherency();
> +}
> +
> static const struct mcpm_platform_ops exynos_power_ops = {
> .power_up = exynos_power_up,
> .power_down = exynos_power_down,
> .power_down_finish = exynos_power_down_finish,
> + .suspend = exynos_suspend,
> + .powered_up = exynos_powered_up,
> };
>
> static void __init exynos_mcpm_usage_count_init(void)
>
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
WARNING: multiple messages have this Message-ID (diff)
From: daniel.lezcano@linaro.org (Daniel Lezcano)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/4] mcpm: exynos: populate suspend and powered_up callbacks
Date: Tue, 22 Apr 2014 12:51:06 +0200 [thread overview]
Message-ID: <5356499A.20609@linaro.org> (raw)
In-Reply-To: <1398080958-21677-5-git-send-email-chander.kashyap@linaro.org>
On 04/21/2014 01:49 PM, Chander Kashyap wrote:
> In order to support cpuidle through mcpm, suspend and powered-up
> callbacks are required in mcpm platform code.
> Hence populate the same callbacks.
>
> Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> Signed-off-by: Chander Kashyap <k.chander@samsung.com>
> ---
> arch/arm/mach-exynos/mcpm-exynos.c | 53 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 53 insertions(+)
>
> diff --git a/arch/arm/mach-exynos/mcpm-exynos.c b/arch/arm/mach-exynos/mcpm-exynos.c
> index 46d4968..16af0bd 100644
> --- a/arch/arm/mach-exynos/mcpm-exynos.c
> +++ b/arch/arm/mach-exynos/mcpm-exynos.c
> @@ -318,10 +318,63 @@ static int exynos_power_down_finish(unsigned int cpu, unsigned int cluster)
> return 0; /* success: the CPU is halted */
> }
>
> +static void enable_coherency(void)
> +{
> + unsigned long v, u;
> +
> + asm volatile(
> + "mrc p15, 0, %0, c1, c0, 1\n"
> + "orr %0, %0, %2\n"
> + "ldr %1, [%3]\n"
> + "and %1, %1, #0\n"
> + "orr %0, %0, %1\n"
> + "mcr p15, 0, %0, c1, c0, 1\n"
> + : "=&r" (v), "=&r" (u)
> + : "Ir" (0x40), "Ir" (S5P_INFORM0)
> + : "cc");
> +}
Shouldn't this function to be used from hotplug.c also ?
> +
> +void exynos_powered_up(void)
> +{
> + unsigned int mpidr, cpu, cluster;
> +
> + mpidr = read_cpuid_mpidr();
> + cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
> + cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
> +
> + arch_spin_lock(&bl_lock);
> + if (cpu_use_count[cpu][cluster] == 0)
> + cpu_use_count[cpu][cluster] = 1;
> + arch_spin_unlock(&bl_lock);
> +}
> +
> +static void exynos_suspend(u64 residency)
> +{
> + unsigned int mpidr, cpunr;
> +
> + mpidr = read_cpuid_mpidr();
> + cpunr = enynos_pmu_cpunr(mpidr);
*enynos*_pmu_cpunr ?
> +
> + __raw_writel(virt_to_phys(mcpm_entry_point), REG_ENTRY_ADDR);
> +
> + exynos_power_down();
> +
> + /*
> + * Execution reaches here only if cpu did not power down.
> + * Hence roll back the changes done in exynos_power_down function.
> + */
> + __raw_writel(EXYNOS_CORE_LOCAL_PWR_EN,
> + EXYNOS_ARM_CORE_CONFIGURATION(cpunr));
Why don't you use the functions defined in the
patch 5/5 arm: exynos: Add MCPM call-back functions
exynos_core_power_control() ?
> + set_cr(get_cr() | CR_C);
> + enable_coherency();
> +}
> +
> static const struct mcpm_platform_ops exynos_power_ops = {
> .power_up = exynos_power_up,
> .power_down = exynos_power_down,
> .power_down_finish = exynos_power_down_finish,
> + .suspend = exynos_suspend,
> + .powered_up = exynos_powered_up,
> };
>
> static void __init exynos_mcpm_usage_count_init(void)
>
--
<http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
next prev parent reply other threads:[~2014-04-22 10:51 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-21 11:49 [PATCH 0/4] add cpuidle support for Exynos5420 Chander Kashyap
2014-04-21 11:49 ` Chander Kashyap
2014-04-21 11:49 ` [PATCH 1/4] cpuidle: config: Add SOC_EXYNOS5420 entry to select cpuidle-big-little driver Chander Kashyap
2014-04-21 11:49 ` Chander Kashyap
2014-04-22 10:42 ` Daniel Lezcano
2014-04-22 10:42 ` Daniel Lezcano
2014-04-23 6:20 ` Chander Kashyap
2014-04-23 6:20 ` Chander Kashyap
2014-04-21 11:49 ` [PATCH 2/4] driver: cpuidle: cpuidle-big-little: init driver for Exynos5420 Chander Kashyap
2014-04-21 11:49 ` Chander Kashyap
2014-04-22 10:39 ` Daniel Lezcano
2014-04-22 10:39 ` Daniel Lezcano
2014-04-22 11:12 ` Daniel Lezcano
2014-04-22 11:12 ` Daniel Lezcano
2014-04-21 11:49 ` [PATCH 3/4] exynos: cpuidle: do not allow cpuidle registration " Chander Kashyap
2014-04-21 11:49 ` Chander Kashyap
2014-04-22 10:38 ` Daniel Lezcano
2014-04-22 10:38 ` Daniel Lezcano
2014-04-21 11:49 ` [PATCH 4/4] mcpm: exynos: populate suspend and powered_up callbacks Chander Kashyap
2014-04-21 11:49 ` Chander Kashyap
2014-04-22 10:51 ` Daniel Lezcano [this message]
2014-04-22 10:51 ` Daniel Lezcano
2014-04-23 8:22 ` Chander Kashyap
2014-04-23 8:22 ` Chander Kashyap
2014-04-23 9:25 ` [Patch v2 0/4] add cpuidle support for Exynos5420 Chander Kashyap
2014-04-23 9:25 ` Chander Kashyap
2014-04-23 9:25 ` [Patch v2 1/4] cpuidle: config: Add SOC_EXYNOS5420 entry to select cpuidle-big-little driver Chander Kashyap
2014-04-23 9:25 ` Chander Kashyap
2014-04-23 9:25 ` Chander Kashyap
2014-04-23 9:25 ` [Patch v2 2/4] driver: cpuidle: cpuidle-big-little: init driver for Exynos5420 Chander Kashyap
2014-04-23 9:25 ` Chander Kashyap
2014-04-23 16:32 ` Lorenzo Pieralisi
2014-04-23 16:32 ` Lorenzo Pieralisi
2014-04-24 7:47 ` Chander Kashyap
2014-04-24 7:47 ` Chander Kashyap
2014-04-23 9:25 ` [Patch v2 3/4] exynos: cpuidle: do not allow cpuidle registration " Chander Kashyap
2014-04-23 9:25 ` Chander Kashyap
2014-04-23 9:25 ` Chander Kashyap
2014-04-23 9:25 ` [Patch v2 4/4] mcpm: exynos: populate suspend and powered_up callbacks Chander Kashyap
2014-04-23 9:25 ` Chander Kashyap
2014-04-23 16:02 ` Lorenzo Pieralisi
2014-04-23 16:02 ` Lorenzo Pieralisi
2014-04-24 7:44 ` Chander Kashyap
2014-04-24 7:44 ` Chander Kashyap
2014-04-23 10:18 ` [Patch v2 0/4] add cpuidle support for Exynos5420 Rafael J. Wysocki
2014-04-23 10:18 ` Rafael J. Wysocki
2014-04-23 15:42 ` Kukjin Kim
2014-04-23 15:42 ` Kukjin Kim
2014-05-05 8:27 ` [PATCH v3 0/5] " Chander Kashyap
2014-05-05 8:27 ` Chander Kashyap
2014-05-05 8:27 ` [Patch v3 1/5] driver: cpuidle-big-little: add of_device_id structure Chander Kashyap
2014-05-05 8:27 ` Chander Kashyap
2014-05-05 8:27 ` [Patch v3 2/5] cpuidle: config: Add ARCH_EXYNOS entry to select cpuidle-big-little driver Chander Kashyap
2014-05-05 8:27 ` Chander Kashyap
2014-05-05 8:59 ` Andreas Färber
2014-05-05 8:59 ` Andreas Färber
2014-05-05 9:09 ` Chander Kashyap
2014-05-05 9:09 ` Chander Kashyap
2014-05-05 9:27 ` [PATCH v4 0/5] add cpuidle support for Exynos5420 Chander Kashyap
2014-05-05 9:27 ` Chander Kashyap
2014-05-05 9:27 ` [Patch v4 1/5] driver: cpuidle-big-little: add of_device_id structure Chander Kashyap
2014-05-05 9:27 ` Chander Kashyap
2014-05-05 9:27 ` [Patch v4 2/5] cpuidle: config: Add ARCH_EXYNOS entry to select cpuidle-big-little driver Chander Kashyap
2014-05-05 9:27 ` Chander Kashyap
2014-05-05 9:27 ` [Patch v4 3/5] driver: cpuidle: cpuidle-big-little: init driver for Exynos5420 Chander Kashyap
2014-05-05 9:27 ` Chander Kashyap
2014-05-05 9:27 ` [Patch v4 4/5] exynos: cpuidle: do not allow cpuidle registration " Chander Kashyap
2014-05-05 9:27 ` Chander Kashyap
2014-05-05 9:27 ` [Patch v4 5/5] mcpm: exynos: populate suspend and powered_up callbacks Chander Kashyap
2014-05-05 9:27 ` Chander Kashyap
2014-05-09 15:32 ` Lorenzo Pieralisi
2014-05-09 15:32 ` Lorenzo Pieralisi
2014-05-13 11:43 ` Chander Kashyap
2014-05-13 11:43 ` Chander Kashyap
2014-05-13 17:14 ` Lorenzo Pieralisi
2014-05-13 17:14 ` Lorenzo Pieralisi
2014-05-14 2:52 ` Chander Kashyap
2014-05-14 2:52 ` Chander Kashyap
2014-05-05 8:27 ` [Patch v3 3/5] driver: cpuidle: cpuidle-big-little: init driver for Exynos5420 Chander Kashyap
2014-05-05 8:27 ` Chander Kashyap
2014-05-05 8:27 ` [Patch v3 4/5] exynos: cpuidle: do not allow cpuidle registration " Chander Kashyap
2014-05-05 8:27 ` Chander Kashyap
2014-05-05 8:27 ` [Patch v3 5/5] mcpm: exynos: populate suspend and powered_up callbacks Chander Kashyap
2014-05-05 8:27 ` Chander Kashyap
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=5356499A.20609@linaro.org \
--to=daniel.lezcano@linaro.org \
--cc=chander.kashyap@linaro.org \
--cc=k.chander@samsung.com \
--cc=kgene.kim@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=rjw@rjwysocki.net \
/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.