All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.