All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomasz Figa <t.figa@samsung.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>, kgene.kim@samsung.com
Cc: linux-arm-kernel@lists.infradead.org,
	linux-samsung-soc@vger.kernel.org,
	linaro-kernel@lists.linaro.org, b.zolnierkie@samsung.com,
	sachin.kamat@linaro.org, viresh.kumar@linaro.org,
	rjw@rjwysocki.net
Subject: Re: [PATCH V4 10/20] ARM: exynos: cpuidle: Move clock setup to pm.c
Date: Fri, 11 Apr 2014 10:49:14 +0200	[thread overview]
Message-ID: <5347AC8A.7090006@samsung.com> (raw)
In-Reply-To: <5347A816.4020609@linaro.org>

[-- Attachment #1: Type: text/plain, Size: 2187 bytes --]

On 11.04.2014 10:30, Daniel Lezcano wrote:
> On 04/10/2014 05:34 PM, Tomasz Figa wrote:
>> On 10.04.2014 16:23, Daniel Lezcano wrote:
>>> On 04/10/2014 03:57 PM, Tomasz Figa wrote:
>>>> Hi Daniel,
>>>>
>>>> On 10.04.2014 11:55, Daniel Lezcano wrote:
>>>>> One more step is moving the clock ratio setting at idle time in pm.c
>>>>>
>>>>> The macro names have been changed to be consistent with the other
>>>>> macros
>>>>> name in the file.
>>>>>
>>>>> Note, the clock divider was working only when cpuidle was enabled
>>>>> because it
>>>>> was in its init routine. With this change, the clock divider is set in
>>>>> the pm's
>>>>> init routine, so it will also operate when the cpuidle driver is not
>>>>> set, which
>>>>> is good.
>>>>>
>>>>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>>>> Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
>>>>> Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
>>>>> Reviewed-by: Tomasz Figa <t.figa@samsung.com>
>>>>> ---
>>>>>   arch/arm/mach-exynos/cpuidle.c  |   54
>>>>> ---------------------------------------
>>>>>   arch/arm/mach-exynos/pm.c       |   35 +++++++++++++++++++++++++
>>>>>   arch/arm/mach-exynos/regs-pmu.h |   19 ++++++++++++++
>>>>>   3 files changed, 54 insertions(+), 54 deletions(-)
>>>>
>>>> Sorry that I didn't mention that before, but now I recall that there
>>>> was
>>>> already a similar patch moving this code to Exynos5250 clock driver,
>>>> which is the best place for setup of any CMU registers and a step
>>>> towards removing one more static IO mapping.
>>>
>>> Yes, Bartlomiej mentioned it.
>>>
>>> Is it possible to merge this mentioned patch or to give a pointer to it
>>> so I can integrate it into the patchset ?
>>
>> http://marc.info/?l=linux-arm-kernel&m=138147021207626&w=2
>>
>> I wonder if it still applies cleanly, though...
>
> Ok, if I refer to the date, this patch has been lost in the limbus. So I
> can integrate it with my patchset without conflicting with any tree.
> Right ?
>

As I suspected, it doesn't apply onto current sources. I have attached a 
rebased version. Feel free to send it as a part of next version of your 
series.

Best regards,
Tomasz

[-- Attachment #2: 0001-ARM-EXYNOS-Move-arm-core-power-down-clock-to-exynos5.patch --]
[-- Type: text/x-patch, Size: 6226 bytes --]

>From 31d02976c517c1e8d00a0c1296e5fa132af78880 Mon Sep 17 00:00:00 2001
From: Amit Daniel Kachhap <amit.daniel@samsung.com>
Date: Fri, 11 Oct 2013 11:12:14 +0530
Subject: [PATCH] ARM: EXYNOS: Move arm core power down clock to exynos5250
 common clock

Now with common clock support added for exynos5250 it is necessary to move
this code to exynos5250 common clock driver as clock registers should be
handled there. This change is tested in exynos5250 based arndale platform.

Cc: Abhilash Kesavan <a.kesavan@samsung.com>
Cc: Thomas Abraham <thomas.abraham@linaro.org>
Acked-by: Kukjin Kim <kgene.kim@samsugn.com>
Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com>
[t.figa: Rebased onto current kernel sources.]
Signed-off-by: Tomasz Figa <t.figa@samsung.com>
---
 arch/arm/mach-exynos/cpuidle.c       | 54 ------------------------------------
 drivers/clk/samsung/clk-exynos5250.c | 42 ++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 54 deletions(-)

diff --git a/arch/arm/mach-exynos/cpuidle.c b/arch/arm/mach-exynos/cpuidle.c
index c57cae0..8125a15 100644
--- a/arch/arm/mach-exynos/cpuidle.c
+++ b/arch/arm/mach-exynos/cpuidle.c
@@ -41,25 +41,6 @@
 
 #define S5P_CHECK_AFTR		0xFCBA0D10
 
-#define EXYNOS5_PWR_CTRL1			(S5P_VA_CMU + 0x01020)
-#define EXYNOS5_PWR_CTRL2			(S5P_VA_CMU + 0x01024)
-
-#define PWR_CTRL1_CORE2_DOWN_RATIO		(7 << 28)
-#define PWR_CTRL1_CORE1_DOWN_RATIO		(7 << 16)
-#define PWR_CTRL1_DIV2_DOWN_EN			(1 << 9)
-#define PWR_CTRL1_DIV1_DOWN_EN			(1 << 8)
-#define PWR_CTRL1_USE_CORE1_WFE			(1 << 5)
-#define PWR_CTRL1_USE_CORE0_WFE			(1 << 4)
-#define PWR_CTRL1_USE_CORE1_WFI			(1 << 1)
-#define PWR_CTRL1_USE_CORE0_WFI			(1 << 0)
-
-#define PWR_CTRL2_DIV2_UP_EN			(1 << 25)
-#define PWR_CTRL2_DIV1_UP_EN			(1 << 24)
-#define PWR_CTRL2_DUR_STANDBY2_VAL		(1 << 16)
-#define PWR_CTRL2_DUR_STANDBY1_VAL		(1 << 8)
-#define PWR_CTRL2_CORE2_UP_RATIO		(1 << 4)
-#define PWR_CTRL2_CORE1_UP_RATIO		(1 << 0)
-
 static int exynos4_enter_lowpower(struct cpuidle_device *dev,
 				struct cpuidle_driver *drv,
 				int index);
@@ -182,46 +163,11 @@ static int exynos4_enter_lowpower(struct cpuidle_device *dev,
 		return exynos4_enter_core0_aftr(dev, drv, new_index);
 }
 
-static void __init exynos5_core_down_clk(void)
-{
-	unsigned int tmp;
-
-	/*
-	 * Enable arm clock down (in idle) and set arm divider
-	 * ratios in WFI/WFE state.
-	 */
-	tmp = PWR_CTRL1_CORE2_DOWN_RATIO | \
-	      PWR_CTRL1_CORE1_DOWN_RATIO | \
-	      PWR_CTRL1_DIV2_DOWN_EN	 | \
-	      PWR_CTRL1_DIV1_DOWN_EN	 | \
-	      PWR_CTRL1_USE_CORE1_WFE	 | \
-	      PWR_CTRL1_USE_CORE0_WFE	 | \
-	      PWR_CTRL1_USE_CORE1_WFI	 | \
-	      PWR_CTRL1_USE_CORE0_WFI;
-	__raw_writel(tmp, EXYNOS5_PWR_CTRL1);
-
-	/*
-	 * Enable arm clock up (on exiting idle). Set arm divider
-	 * ratios when not in idle along with the standby duration
-	 * ratios.
-	 */
-	tmp = PWR_CTRL2_DIV2_UP_EN	 | \
-	      PWR_CTRL2_DIV1_UP_EN	 | \
-	      PWR_CTRL2_DUR_STANDBY2_VAL | \
-	      PWR_CTRL2_DUR_STANDBY1_VAL | \
-	      PWR_CTRL2_CORE2_UP_RATIO	 | \
-	      PWR_CTRL2_CORE1_UP_RATIO;
-	__raw_writel(tmp, EXYNOS5_PWR_CTRL2);
-}
-
 static int exynos_cpuidle_probe(struct platform_device *pdev)
 {
 	int cpu_id, ret;
 	struct cpuidle_device *device;
 
-	if (soc_is_exynos5250())
-		exynos5_core_down_clk();
-
 	if (soc_is_exynos5440())
 		exynos4_idle_driver.state_count = 1;
 
diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c
index e7ee442..2bb4625 100644
--- a/drivers/clk/samsung/clk-exynos5250.c
+++ b/drivers/clk/samsung/clk-exynos5250.c
@@ -24,6 +24,8 @@
 #define APLL_CON0		0x100
 #define SRC_CPU			0x200
 #define DIV_CPU0		0x500
+#define PWR_CTRL1		0x1020
+#define PWR_CTRL2		0x1024
 #define MPLL_LOCK		0x4000
 #define MPLL_CON0		0x4100
 #define SRC_CORE1		0x4204
@@ -80,6 +82,23 @@
 #define SRC_CDREX		0x20200
 #define PLL_DIV2_SEL		0x20a24
 
+/*Below definitions are used for PWR_CTRL settings*/
+#define PWR_CTRL1_CORE2_DOWN_RATIO		(7 << 28)
+#define PWR_CTRL1_CORE1_DOWN_RATIO		(7 << 16)
+#define PWR_CTRL1_DIV2_DOWN_EN			(1 << 9)
+#define PWR_CTRL1_DIV1_DOWN_EN			(1 << 8)
+#define PWR_CTRL1_USE_CORE1_WFE			(1 << 5)
+#define PWR_CTRL1_USE_CORE0_WFE			(1 << 4)
+#define PWR_CTRL1_USE_CORE1_WFI			(1 << 1)
+#define PWR_CTRL1_USE_CORE0_WFI			(1 << 0)
+
+#define PWR_CTRL2_DIV2_UP_EN			(1 << 25)
+#define PWR_CTRL2_DIV1_UP_EN			(1 << 24)
+#define PWR_CTRL2_DUR_STANDBY2_VAL		(1 << 16)
+#define PWR_CTRL2_DUR_STANDBY1_VAL		(1 << 8)
+#define PWR_CTRL2_CORE2_UP_RATIO		(1 << 4)
+#define PWR_CTRL2_CORE1_UP_RATIO		(1 << 0)
+
 /* list of PLLs to be registered */
 enum exynos5250_plls {
 	apll, mpll, cpll, epll, vpll, gpll, bpll,
@@ -98,6 +117,8 @@ static struct samsung_clk_reg_dump *exynos5250_save;
 static unsigned long exynos5250_clk_regs[] __initdata = {
 	SRC_CPU,
 	DIV_CPU0,
+	PWR_CTRL1,
+	PWR_CTRL2,
 	SRC_CORE1,
 	SRC_TOP0,
 	SRC_TOP2,
@@ -686,6 +707,7 @@ static struct of_device_id ext_clk_match[] __initdata = {
 /* register exynox5250 clocks */
 static void __init exynos5250_clk_init(struct device_node *np)
 {
+	unsigned int tmp;
 	if (np) {
 		reg_base = of_iomap(np, 0);
 		if (!reg_base)
@@ -722,6 +744,26 @@ static void __init exynos5250_clk_init(struct device_node *np)
 	samsung_clk_register_gate(exynos5250_gate_clks,
 			ARRAY_SIZE(exynos5250_gate_clks));
 
+	/*
+	 * Enable arm clock down (in idle) and set arm divider
+	 * ratios in WFI/WFE state.
+	 */
+	tmp = (PWR_CTRL1_CORE2_DOWN_RATIO | PWR_CTRL1_CORE1_DOWN_RATIO |
+		PWR_CTRL1_DIV2_DOWN_EN | PWR_CTRL1_DIV1_DOWN_EN |
+		PWR_CTRL1_USE_CORE1_WFE | PWR_CTRL1_USE_CORE0_WFE |
+		PWR_CTRL1_USE_CORE1_WFI | PWR_CTRL1_USE_CORE0_WFI);
+	__raw_writel(tmp, reg_base + PWR_CTRL1);
+
+	/*
+	 * Enable arm clock up (on exiting idle). Set arm divider
+	 * ratios when not in idle along with the standby duration
+	 * ratios.
+	 */
+	tmp = (PWR_CTRL2_DIV2_UP_EN | PWR_CTRL2_DIV1_UP_EN |
+		PWR_CTRL2_DUR_STANDBY2_VAL | PWR_CTRL2_DUR_STANDBY1_VAL |
+		PWR_CTRL2_CORE2_UP_RATIO | PWR_CTRL2_CORE1_UP_RATIO);
+	__raw_writel(tmp, reg_base + PWR_CTRL2);
+
 	exynos5250_clk_sleep_init();
 
 	pr_info("Exynos5250: clock setup completed, armclk=%ld\n",
-- 
1.9.1


WARNING: multiple messages have this Message-ID (diff)
From: t.figa@samsung.com (Tomasz Figa)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V4 10/20] ARM: exynos: cpuidle: Move clock setup to pm.c
Date: Fri, 11 Apr 2014 10:49:14 +0200	[thread overview]
Message-ID: <5347AC8A.7090006@samsung.com> (raw)
In-Reply-To: <5347A816.4020609@linaro.org>

On 11.04.2014 10:30, Daniel Lezcano wrote:
> On 04/10/2014 05:34 PM, Tomasz Figa wrote:
>> On 10.04.2014 16:23, Daniel Lezcano wrote:
>>> On 04/10/2014 03:57 PM, Tomasz Figa wrote:
>>>> Hi Daniel,
>>>>
>>>> On 10.04.2014 11:55, Daniel Lezcano wrote:
>>>>> One more step is moving the clock ratio setting at idle time in pm.c
>>>>>
>>>>> The macro names have been changed to be consistent with the other
>>>>> macros
>>>>> name in the file.
>>>>>
>>>>> Note, the clock divider was working only when cpuidle was enabled
>>>>> because it
>>>>> was in its init routine. With this change, the clock divider is set in
>>>>> the pm's
>>>>> init routine, so it will also operate when the cpuidle driver is not
>>>>> set, which
>>>>> is good.
>>>>>
>>>>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>>>> Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
>>>>> Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
>>>>> Reviewed-by: Tomasz Figa <t.figa@samsung.com>
>>>>> ---
>>>>>   arch/arm/mach-exynos/cpuidle.c  |   54
>>>>> ---------------------------------------
>>>>>   arch/arm/mach-exynos/pm.c       |   35 +++++++++++++++++++++++++
>>>>>   arch/arm/mach-exynos/regs-pmu.h |   19 ++++++++++++++
>>>>>   3 files changed, 54 insertions(+), 54 deletions(-)
>>>>
>>>> Sorry that I didn't mention that before, but now I recall that there
>>>> was
>>>> already a similar patch moving this code to Exynos5250 clock driver,
>>>> which is the best place for setup of any CMU registers and a step
>>>> towards removing one more static IO mapping.
>>>
>>> Yes, Bartlomiej mentioned it.
>>>
>>> Is it possible to merge this mentioned patch or to give a pointer to it
>>> so I can integrate it into the patchset ?
>>
>> http://marc.info/?l=linux-arm-kernel&m=138147021207626&w=2
>>
>> I wonder if it still applies cleanly, though...
>
> Ok, if I refer to the date, this patch has been lost in the limbus. So I
> can integrate it with my patchset without conflicting with any tree.
> Right ?
>

As I suspected, it doesn't apply onto current sources. I have attached a 
rebased version. Feel free to send it as a part of next version of your 
series.

Best regards,
Tomasz
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ARM-EXYNOS-Move-arm-core-power-down-clock-to-exynos5.patch
Type: text/x-patch
Size: 6226 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140411/1ad9e7d6/attachment.bin>

  reply	other threads:[~2014-04-11  8:49 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-10  9:55 [PATCH V4 00/20] ARM: exynos: cpuidle: Move the driver to drivers/cpuidle Daniel Lezcano
2014-04-10  9:55 ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 01/20] ARM: exynos: cpuidle: Prevent forward declaration Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 02/20] ARM: exynos: cpuidle: Use cpuidle_register Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 03/20] ARM: exynos: cpuidle: Change function name prefix Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 04/20] ARM: exynos: cpuidle: Encapsulate register access inside a function Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 05/20] ARM: exynos: cpuidle: Move some code inside the idle_finisher Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 06/20] ARM: exynos: cpuidle: Fix S5P_WAKEUP_STAT call Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 07/20] ARM: exynos: cpuidle: Use the cpu_pm notifier Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 08/20] ARM: exynos: cpuidle: Move scu_enable in " Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 09/20] ARM: exynos: cpuidle: Remove ifdef for scu_enable Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 10/20] ARM: exynos: cpuidle: Move clock setup to pm.c Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10 13:57   ` Tomasz Figa
2014-04-10 13:57     ` Tomasz Figa
2014-04-10 14:23     ` Daniel Lezcano
2014-04-10 14:23       ` Daniel Lezcano
2014-04-10 15:34       ` Tomasz Figa
2014-04-10 15:34         ` Tomasz Figa
2014-04-11  8:30         ` Daniel Lezcano
2014-04-11  8:30           ` Daniel Lezcano
2014-04-11  8:49           ` Tomasz Figa [this message]
2014-04-11  8:49             ` Tomasz Figa
2014-04-11  8:55             ` Daniel Lezcano
2014-04-11  8:55               ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 11/20] ARM: exynos: cpuidle: Pass wakeup mask parameter to function Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 12/20] ARM: exynos: cpuidle: Encapsulate boot vector code into a function Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 13/20] ARM: exynos: cpuidle: Disable cpuidle for 5440 Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 14/20] ARM: exynos: cpuidle: Encapsulate the AFTR code into a function Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 15/20] ARM: exynos: cpuidle: Move the AFTR state function into pm.c Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 16/20] ARM: exynos: cpuidle: Move the power sequence call in the cpu_pm notifier Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 17/20] ARM: exynos: cpuidle: Move S5P_CHECK_SLEEP into pm.c Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 18/20] ARM: exynos: cpuidle: Pass the AFTR callback to the platform_data Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 19/20] ARM: exynos: cpuidle: Cleanup all unneeded headers from cpuidle.c Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano
2014-04-10  9:55 ` [PATCH V4 20/20] ARM: exynos: cpuidle: Move the driver to drivers/cpuidle directory Daniel Lezcano
2014-04-10  9:55   ` Daniel Lezcano

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=5347AC8A.7090006@samsung.com \
    --to=t.figa@samsung.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=kgene.kim@samsung.com \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=sachin.kamat@linaro.org \
    --cc=viresh.kumar@linaro.org \
    /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.