linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx
@ 2013-06-17 13:16 Rajendra Nayak
  2013-06-17 13:16 ` [PATCH v2 1/2] ARM: OMAP2+: Powerdomain: Remove the need to always have a voltdm associated to a pwrdm Rajendra Nayak
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Rajendra Nayak @ 2013-06-17 13:16 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

The powerdomain framework currently expects to always have a voltagedomain
associated with a given powerdomain. We already have AM33xx which
has no Voltage Controller/Voltage Processor as part of PRCM.
There are more SoCs' to follow starting with AM437x and DRA7xx
which do not have VC/VP. All these SoCs', hence do not support any
form of auto-scaling of voltages, that was possible on earlier OMAPs'
using the VFSM to trigger an i2c communication to the PMIC automatically
on hitting a low power state.

Instead of adding dummy voltage domain data files, like was done for the
AM33xx case, make the powerdomain framework aware of the fact that some
SoCs' might not really have support for auto-scaling of voltages in hw.

Patches are based of 3.10-rc6 and are boot tested on am335x bone.

Rajendra Nayak (2):
  ARM: OMAP2+: Powerdomain: Remove the need to always have a voltdm
    associated to a pwrdm
  ARM: AM33xx: Remove the unused voltagedomain data

 arch/arm/mach-omap2/Makefile                  |    1 -
 arch/arm/mach-omap2/io.c                      |    1 -
 arch/arm/mach-omap2/powerdomain.c             |    5 +++
 arch/arm/mach-omap2/powerdomain.h             |    2 ++
 arch/arm/mach-omap2/prm33xx.c                 |    7 ++++
 arch/arm/mach-omap2/voltage.h                 |    1 -
 arch/arm/mach-omap2/voltagedomains33xx_data.c |   43 -------------------------
 7 files changed, 14 insertions(+), 46 deletions(-)
 delete mode 100644 arch/arm/mach-omap2/voltagedomains33xx_data.c

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/2] ARM: OMAP2+: Powerdomain: Remove the need to always have a voltdm associated to a pwrdm
  2013-06-17 13:16 [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx Rajendra Nayak
@ 2013-06-17 13:16 ` Rajendra Nayak
  2013-06-17 13:16 ` [PATCH v2 2/2] ARM: AM33xx: Remove the unused voltagedomain data Rajendra Nayak
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Rajendra Nayak @ 2013-06-17 13:16 UTC (permalink / raw)
  To: linux-arm-kernel

The powerdomain framework currently expects all powerdomains to be associated with
a corresponding voltagedomain. For some SoCs' (like the already existing AM33xx
family, or for the upcoming AM437x and DRA7 SoCs') which
do not have a Voltage controller/Voltage Processor (neither the SR I2C
bus to communicate with the PMIC) there is no need for a Powerdomain to have
a voltage domain association since there is no auto-scaling of voltages possible
using the voltage FSM.

Extend the arch operations to add an api which the powerdomain core can
then use to identify if a voltdm lookup and association for a powerdomain
is really needed.

Acked-by: Nishanth Menon <nm@ti.com>
Acked-by: Vaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
---
 arch/arm/mach-omap2/powerdomain.c |    5 +++++
 arch/arm/mach-omap2/powerdomain.h |    2 ++
 2 files changed, 7 insertions(+)

diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c
index 86babd7..e233dfc 100644
--- a/arch/arm/mach-omap2/powerdomain.c
+++ b/arch/arm/mach-omap2/powerdomain.c
@@ -102,6 +102,10 @@ static int _pwrdm_register(struct powerdomain *pwrdm)
 	if (_pwrdm_lookup(pwrdm->name))
 		return -EEXIST;
 
+	if (arch_pwrdm && arch_pwrdm->pwrdm_has_voltdm)
+		if (!arch_pwrdm->pwrdm_has_voltdm())
+			goto skip_voltdm;
+
 	voltdm = voltdm_lookup(pwrdm->voltdm.name);
 	if (!voltdm) {
 		pr_err("powerdomain: %s: voltagedomain %s does not exist\n",
@@ -111,6 +115,7 @@ static int _pwrdm_register(struct powerdomain *pwrdm)
 	pwrdm->voltdm.ptr = voltdm;
 	INIT_LIST_HEAD(&pwrdm->voltdm_node);
 	voltdm_add_pwrdm(voltdm, pwrdm);
+skip_voltdm:
 	spin_lock_init(&pwrdm->_lock);
 
 	list_add(&pwrdm->node, &pwrdm_list);
diff --git a/arch/arm/mach-omap2/powerdomain.h b/arch/arm/mach-omap2/powerdomain.h
index 140c360..9701ad5 100644
--- a/arch/arm/mach-omap2/powerdomain.h
+++ b/arch/arm/mach-omap2/powerdomain.h
@@ -166,6 +166,7 @@ struct powerdomain {
  * @pwrdm_disable_hdwr_sar: Disable Hardware Save-Restore feature for a pd
  * @pwrdm_set_lowpwrstchange: Enable pd transitions from a shallow to deep sleep
  * @pwrdm_wait_transition: Wait for a pd state transition to complete
+ * @pwrdm_has_voltdm: Check if a voltdm association is needed
  *
  * Regarding @pwrdm_set_lowpwrstchange: On the OMAP2 and 3-family
  * chips, a powerdomain's power state is not allowed to directly
@@ -196,6 +197,7 @@ struct pwrdm_ops {
 	int	(*pwrdm_disable_hdwr_sar)(struct powerdomain *pwrdm);
 	int	(*pwrdm_set_lowpwrstchange)(struct powerdomain *pwrdm);
 	int	(*pwrdm_wait_transition)(struct powerdomain *pwrdm);
+	int	(*pwrdm_has_voltdm)(void);
 };
 
 int pwrdm_register_platform_funcs(struct pwrdm_ops *custom_funcs);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/2] ARM: AM33xx: Remove the unused voltagedomain data
  2013-06-17 13:16 [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx Rajendra Nayak
  2013-06-17 13:16 ` [PATCH v2 1/2] ARM: OMAP2+: Powerdomain: Remove the need to always have a voltdm associated to a pwrdm Rajendra Nayak
@ 2013-06-17 13:16 ` Rajendra Nayak
  2013-06-17 13:22 ` [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx Santosh Shilimkar
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Rajendra Nayak @ 2013-06-17 13:16 UTC (permalink / raw)
  To: linux-arm-kernel

Now that there is a way to tell the powerdomain core about
missing voltage domain auto-scaling control in SoCs', get rid of the dummy
voltage domain data populated for AM33xx devices.

Acked-by: Nishanth Menon <nm@ti.com>
Acked-by: Vaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
---
 arch/arm/mach-omap2/Makefile                  |    1 -
 arch/arm/mach-omap2/io.c                      |    1 -
 arch/arm/mach-omap2/prm33xx.c                 |    7 ++++
 arch/arm/mach-omap2/voltage.h                 |    1 -
 arch/arm/mach-omap2/voltagedomains33xx_data.c |   43 -------------------------
 5 files changed, 7 insertions(+), 46 deletions(-)
 delete mode 100644 arch/arm/mach-omap2/voltagedomains33xx_data.c

diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 55a9d67..a4f1d2a 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -125,7 +125,6 @@ obj-$(CONFIG_ARCH_OMAP3)		+= voltagedomains3xxx_data.o
 obj-$(CONFIG_ARCH_OMAP4)		+= $(voltagedomain-common)
 obj-$(CONFIG_ARCH_OMAP4)		+= voltagedomains44xx_data.o
 obj-$(CONFIG_SOC_AM33XX)		+= $(voltagedomain-common)
-obj-$(CONFIG_SOC_AM33XX)                += voltagedomains33xx_data.o
 obj-$(CONFIG_SOC_OMAP5)			+= $(voltagedomain-common)
 
 # OMAP powerdomain framework
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 09abf99..50b93df 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -577,7 +577,6 @@ void __init am33xx_init_early(void)
 	omap2_set_globals_cm(AM33XX_L4_WK_IO_ADDRESS(AM33XX_PRCM_BASE), NULL);
 	omap3xxx_check_revision();
 	ti81xx_check_features();
-	am33xx_voltagedomains_init();
 	am33xx_powerdomains_init();
 	am33xx_clockdomains_init();
 	am33xx_hwmod_init();
diff --git a/arch/arm/mach-omap2/prm33xx.c b/arch/arm/mach-omap2/prm33xx.c
index 44c0d72..7204407 100644
--- a/arch/arm/mach-omap2/prm33xx.c
+++ b/arch/arm/mach-omap2/prm33xx.c
@@ -320,6 +320,12 @@ static int am33xx_pwrdm_wait_transition(struct powerdomain *pwrdm)
 	return 0;
 }
 
+static int am33xx_check_vcvp(void)
+{
+	/* No VC/VP on am33xx devices */
+	return 0;
+}
+
 struct pwrdm_ops am33xx_pwrdm_operations = {
 	.pwrdm_set_next_pwrst		= am33xx_pwrdm_set_next_pwrst,
 	.pwrdm_read_next_pwrst		= am33xx_pwrdm_read_next_pwrst,
@@ -335,4 +341,5 @@ struct pwrdm_ops am33xx_pwrdm_operations = {
 	.pwrdm_set_mem_onst		= am33xx_pwrdm_set_mem_onst,
 	.pwrdm_set_mem_retst		= am33xx_pwrdm_set_mem_retst,
 	.pwrdm_wait_transition		= am33xx_pwrdm_wait_transition,
+	.pwrdm_has_voltdm		= am33xx_check_vcvp,
 };
diff --git a/arch/arm/mach-omap2/voltage.h b/arch/arm/mach-omap2/voltage.h
index a0ce4f1..9bf796d 100644
--- a/arch/arm/mach-omap2/voltage.h
+++ b/arch/arm/mach-omap2/voltage.h
@@ -169,7 +169,6 @@ int omap_voltage_late_init(void);
 
 extern void omap2xxx_voltagedomains_init(void);
 extern void omap3xxx_voltagedomains_init(void);
-extern void am33xx_voltagedomains_init(void);
 extern void omap44xx_voltagedomains_init(void);
 
 struct voltagedomain *voltdm_lookup(const char *name);
diff --git a/arch/arm/mach-omap2/voltagedomains33xx_data.c b/arch/arm/mach-omap2/voltagedomains33xx_data.c
deleted file mode 100644
index 965458d..0000000
--- a/arch/arm/mach-omap2/voltagedomains33xx_data.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * AM33XX voltage domain data
- *
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation version 2.
- *
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
- * kind, whether express or implied; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-
-#include "voltage.h"
-
-static struct voltagedomain am33xx_voltdm_mpu = {
-	.name		= "mpu",
-};
-
-static struct voltagedomain am33xx_voltdm_core = {
-	.name		= "core",
-};
-
-static struct voltagedomain am33xx_voltdm_rtc = {
-	.name		= "rtc",
-};
-
-static struct voltagedomain *voltagedomains_am33xx[] __initdata = {
-	&am33xx_voltdm_mpu,
-	&am33xx_voltdm_core,
-	&am33xx_voltdm_rtc,
-	NULL,
-};
-
-void __init am33xx_voltagedomains_init(void)
-{
-	voltdm_init(voltagedomains_am33xx);
-}
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx
  2013-06-17 13:16 [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx Rajendra Nayak
  2013-06-17 13:16 ` [PATCH v2 1/2] ARM: OMAP2+: Powerdomain: Remove the need to always have a voltdm associated to a pwrdm Rajendra Nayak
  2013-06-17 13:16 ` [PATCH v2 2/2] ARM: AM33xx: Remove the unused voltagedomain data Rajendra Nayak
@ 2013-06-17 13:22 ` Santosh Shilimkar
  2013-06-17 13:43 ` Mohammed, Afzal
  2013-06-17 14:32 ` Kevin Hilman
  4 siblings, 0 replies; 6+ messages in thread
From: Santosh Shilimkar @ 2013-06-17 13:22 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 17 June 2013 09:16 AM, Rajendra Nayak wrote:
> Hi,
> 
> The powerdomain framework currently expects to always have a voltagedomain
> associated with a given powerdomain. We already have AM33xx which
> has no Voltage Controller/Voltage Processor as part of PRCM.
> There are more SoCs' to follow starting with AM437x and DRA7xx
> which do not have VC/VP. All these SoCs', hence do not support any
> form of auto-scaling of voltages, that was possible on earlier OMAPs'
> using the VFSM to trigger an i2c communication to the PMIC automatically
> on hitting a low power state.
> 
> Instead of adding dummy voltage domain data files, like was done for the
> AM33xx case, make the powerdomain framework aware of the fact that some
> SoCs' might not really have support for auto-scaling of voltages in hw.
> 
> Patches are based of 3.10-rc6 and are boot tested on am335x bone.
> 
> Rajendra Nayak (2):
>   ARM: OMAP2+: Powerdomain: Remove the need to always have a voltdm
>     associated to a pwrdm
>   ARM: AM33xx: Remove the unused voltagedomain data
> 
>  arch/arm/mach-omap2/Makefile                  |    1 -
>  arch/arm/mach-omap2/io.c                      |    1 -
>  arch/arm/mach-omap2/powerdomain.c             |    5 +++
>  arch/arm/mach-omap2/powerdomain.h             |    2 ++
>  arch/arm/mach-omap2/prm33xx.c                 |    7 ++++
>  arch/arm/mach-omap2/voltage.h                 |    1 -
>  arch/arm/mach-omap2/voltagedomains33xx_data.c |   43 -------------------------
>  7 files changed, 14 insertions(+), 46 deletions(-)
>  delete mode 100644 arch/arm/mach-omap2/voltagedomains33xx_data.c
> 
Nice !!

FWIW, Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx
  2013-06-17 13:16 [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx Rajendra Nayak
                   ` (2 preceding siblings ...)
  2013-06-17 13:22 ` [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx Santosh Shilimkar
@ 2013-06-17 13:43 ` Mohammed, Afzal
  2013-06-17 14:32 ` Kevin Hilman
  4 siblings, 0 replies; 6+ messages in thread
From: Mohammed, Afzal @ 2013-06-17 13:43 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Mon, Jun 17, 2013 at 18:46:21, Nayak, Rajendra wrote:

> The powerdomain framework currently expects to always have a voltagedomain
> associated with a given powerdomain. We already have AM33xx which
> has no Voltage Controller/Voltage Processor as part of PRCM.
> There are more SoCs' to follow starting with AM437x and DRA7xx
> which do not have VC/VP. All these SoCs', hence do not support any
> form of auto-scaling of voltages, that was possible on earlier OMAPs'
> using the VFSM to trigger an i2c communication to the PMIC automatically
> on hitting a low power state.
> 
> Instead of adding dummy voltage domain data files, like was done for the
> AM33xx case, make the powerdomain framework aware of the fact that some
> SoCs' might not really have support for auto-scaling of voltages in hw.
> 
> Patches are based of 3.10-rc6 and are boot tested on am335x bone.

Tested-by: Afzal Mohammed <afzal@ti.com> (am335x evm)

Regards
Afzal

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx
  2013-06-17 13:16 [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx Rajendra Nayak
                   ` (3 preceding siblings ...)
  2013-06-17 13:43 ` Mohammed, Afzal
@ 2013-06-17 14:32 ` Kevin Hilman
  4 siblings, 0 replies; 6+ messages in thread
From: Kevin Hilman @ 2013-06-17 14:32 UTC (permalink / raw)
  To: linux-arm-kernel

Rajendra Nayak <rnayak@ti.com> writes:

> Hi,
>
> The powerdomain framework currently expects to always have a voltagedomain
> associated with a given powerdomain. We already have AM33xx which
> has no Voltage Controller/Voltage Processor as part of PRCM.
> There are more SoCs' to follow starting with AM437x and DRA7xx
> which do not have VC/VP. All these SoCs', hence do not support any
> form of auto-scaling of voltages, that was possible on earlier OMAPs'
> using the VFSM to trigger an i2c communication to the PMIC automatically
> on hitting a low power state.
>
> Instead of adding dummy voltage domain data files, like was done for the
> AM33xx case, make the powerdomain framework aware of the fact that some
> SoCs' might not really have support for auto-scaling of voltages in hw.
>
> Patches are based of 3.10-rc6 and are boot tested on am335x bone.
>
> Rajendra Nayak (2):
>   ARM: OMAP2+: Powerdomain: Remove the need to always have a voltdm
>     associated to a pwrdm
>   ARM: AM33xx: Remove the unused voltagedomain data

Thanks, queuing up this series with ack from Santosh and tested-by from
Afzal.  I'll try, but not sure if it can make it for v3.11.

Kevin

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-06-17 14:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-17 13:16 [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx Rajendra Nayak
2013-06-17 13:16 ` [PATCH v2 1/2] ARM: OMAP2+: Powerdomain: Remove the need to always have a voltdm associated to a pwrdm Rajendra Nayak
2013-06-17 13:16 ` [PATCH v2 2/2] ARM: AM33xx: Remove the unused voltagedomain data Rajendra Nayak
2013-06-17 13:22 ` [PATCH v2 0/2] Remove unused voltagedomain data for AM33xx Santosh Shilimkar
2013-06-17 13:43 ` Mohammed, Afzal
2013-06-17 14:32 ` Kevin Hilman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).