From: Mike Chan <mike@android.com>
To: linux-omap@vger.kernel.org
Cc: inux-omap@vger.kernel.org, Mike Chan <mike@android.com>
Subject: [PATCH] OMAP3: PM: Add voltage levels to prm_setup_vc (previously prm_setup_time)
Date: Thu, 21 May 2009 16:47:11 -0700 [thread overview]
Message-ID: <1242949631-27191-1-git-send-email-mike@android.com> (raw)
Expand configure_vc() to support configurable voltage levels.
Signed-off-by: Mike Chan <mike@android.com>
---
arch/arm/mach-omap2/pm.h | 14 ++++++++-
arch/arm/mach-omap2/pm34xx.c | 60 +++++++++++++++++++++--------------------
2 files changed, 43 insertions(+), 31 deletions(-)
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
index 2547e1b..50a7a98 100644
--- a/arch/arm/mach-omap2/pm.h
+++ b/arch/arm/mach-omap2/pm.h
@@ -33,18 +33,28 @@ extern unsigned short wakeup_timer_seconds;
extern struct omap_dm_timer *gptimer_wakeup;
#ifdef CONFIG_ARCH_OMAP3
-struct prm_setup_times {
+struct prm_setup_vc {
u16 clksetup;
u16 voltsetup_time1;
u16 voltsetup_time2;
u16 voltoffset;
u16 voltsetup2;
+/* PRM_VC_CMD_VAL_0 specific bits */
+ u16 vdd0_on;
+ u16 vdd0_onlp;
+ u16 vdd0_ret;
+ u16 vdd0_off;
+/* PRM_VC_CMD_VAL_1 specific bits */
+ u16 vdd1_on;
+ u16 vdd1_onlp;
+ u16 vdd1_ret;
+ u16 vdd1_off;
};
extern void omap3_pm_off_mode_enable(int);
extern int omap3_pm_get_suspend_state(struct powerdomain *pwrdm);
extern int omap3_pm_set_suspend_state(struct powerdomain *pwrdm, int state);
-extern void omap3_set_prm_setup_times(struct prm_setup_times *setup_times);
+extern void omap3_set_prm_setup_vc(struct prm_setup_vc *setup_vc);
#else
#define omap3_pm_off_mode_enable(int) do {} while (0);
#define omap3_pm_get_suspend_state(pwrdm) do {} while (0);
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 80992c5..b925501 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -87,12 +87,20 @@ static struct powerdomain *mpu_pwrdm, *neon_pwrdm;
static struct powerdomain *core_pwrdm, *per_pwrdm;
static struct powerdomain *cam_pwrdm;
-static struct prm_setup_times prm_setup = {
+static struct prm_setup_vc prm_setup = {
.clksetup = 0xff,
.voltsetup_time1 = 0xfff,
.voltsetup_time2 = 0xfff,
.voltoffset = 0xff,
.voltsetup2 = 0xff,
+ .vdd0_on = 0x30,
+ .vdd0_onlp = 0x1e,
+ .vdd0_ret = 0x1e,
+ .vdd0_off = 0x30,
+ .vdd1_on = 0x2c,
+ .vdd1_onlp = 0x1e,
+ .vdd1_ret = 0x1e,
+ .vdd1_off = 0x2c,
};
static inline void omap3_per_save_context(void)
@@ -951,13 +959,21 @@ int omap3_pm_set_suspend_state(struct powerdomain *pwrdm, int state)
return -EINVAL;
}
-void omap3_set_prm_setup_times(struct prm_setup_times *setup_times)
+void omap3_set_prm_setup_vc(struct prm_setup_vc *setup_vc)
{
- prm_setup.clksetup = setup_times->clksetup;
- prm_setup.voltsetup_time1 = setup_times->voltsetup_time1;
- prm_setup.voltsetup_time2 = setup_times->voltsetup_time2;
- prm_setup.voltoffset = setup_times->voltoffset;
- prm_setup.voltsetup2 = setup_times->voltsetup2;
+ prm_setup.clksetup = setup_vc->clksetup;
+ prm_setup.voltsetup_time1 = setup_vc->voltsetup_time1;
+ prm_setup.voltsetup_time2 = setup_vc->voltsetup_time2;
+ prm_setup.voltoffset = setup_vc->voltoffset;
+ prm_setup.voltsetup2 = setup_vc->voltsetup2;
+ prm_setup.vdd0_on = setup_vc->vdd0_on;
+ prm_setup.vdd0_onlp = setup_vc->vdd0_onlp;
+ prm_setup.vdd0_ret = setup_vc->vdd0_ret;
+ prm_setup.vdd0_off = setup_vc->vdd0_off;
+ prm_setup.vdd1_on = setup_vc->vdd1_on;
+ prm_setup.vdd1_onlp = setup_vc->vdd1_onlp;
+ prm_setup.vdd1_ret = setup_vc->vdd1_ret;
+ prm_setup.vdd1_off = setup_vc->vdd1_off;
}
static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused)
@@ -1092,18 +1108,6 @@ err2:
return ret;
}
-/* PRM_VC_CMD_VAL_0 specific bits */
-#define OMAP3430_VC_CMD_VAL0_ON 0x30
-#define OMAP3430_VC_CMD_VAL0_ONLP 0x1E
-#define OMAP3430_VC_CMD_VAL0_RET 0x1E
-#define OMAP3430_VC_CMD_VAL0_OFF 0x30
-
-/* PRM_VC_CMD_VAL_1 specific bits */
-#define OMAP3430_VC_CMD_VAL1_ON 0x2C
-#define OMAP3430_VC_CMD_VAL1_ONLP 0x1E
-#define OMAP3430_VC_CMD_VAL1_RET 0x1E
-#define OMAP3430_VC_CMD_VAL1_OFF 0x2C
-
static void __init configure_vc(void)
{
@@ -1114,18 +1118,16 @@ static void __init configure_vc(void)
(R_VDD1_SR_CONTROL << OMAP3430_VOLRA0_SHIFT),
OMAP3430_GR_MOD, OMAP3_PRM_VC_SMPS_VOL_RA_OFFSET);
- prm_write_mod_reg((OMAP3430_VC_CMD_VAL0_ON <<
- OMAP3430_VC_CMD_ON_SHIFT) |
- (OMAP3430_VC_CMD_VAL0_ONLP << OMAP3430_VC_CMD_ONLP_SHIFT) |
- (OMAP3430_VC_CMD_VAL0_RET << OMAP3430_VC_CMD_RET_SHIFT) |
- (OMAP3430_VC_CMD_VAL0_OFF << OMAP3430_VC_CMD_OFF_SHIFT),
+ prm_write_mod_reg((prm_setup.vdd0_on << OMAP3430_VC_CMD_ON_SHIFT) |
+ (prm_setup.vdd0_onlp << OMAP3430_VC_CMD_ONLP_SHIFT) |
+ (prm_setup.vdd0_ret << OMAP3430_VC_CMD_RET_SHIFT) |
+ (prm_setup.vdd0_off << OMAP3430_VC_CMD_OFF_SHIFT),
OMAP3430_GR_MOD, OMAP3_PRM_VC_CMD_VAL_0_OFFSET);
- prm_write_mod_reg((OMAP3430_VC_CMD_VAL1_ON <<
- OMAP3430_VC_CMD_ON_SHIFT) |
- (OMAP3430_VC_CMD_VAL1_ONLP << OMAP3430_VC_CMD_ONLP_SHIFT) |
- (OMAP3430_VC_CMD_VAL1_RET << OMAP3430_VC_CMD_RET_SHIFT) |
- (OMAP3430_VC_CMD_VAL1_OFF << OMAP3430_VC_CMD_OFF_SHIFT),
+ prm_write_mod_reg((prm_setup.vdd1_on << OMAP3430_VC_CMD_ON_SHIFT) |
+ (prm_setup.vdd1_onlp << OMAP3430_VC_CMD_ONLP_SHIFT) |
+ (prm_setup.vdd1_ret << OMAP3430_VC_CMD_RET_SHIFT) |
+ (prm_setup.vdd1_off << OMAP3430_VC_CMD_OFF_SHIFT),
OMAP3430_GR_MOD, OMAP3_PRM_VC_CMD_VAL_1_OFFSET);
prm_write_mod_reg(OMAP3430_CMD1 | OMAP3430_RAV1,
--
1.5.4.5
next reply other threads:[~2009-05-21 23:47 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-21 23:47 Mike Chan [this message]
2009-05-28 23:17 ` [PATCH] OMAP3: PM: Add voltage levels to prm_setup_vc (previously prm_setup_time) Kevin Hilman
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=1242949631-27191-1-git-send-email-mike@android.com \
--to=mike@android.com \
--cc=inux-omap@vger.kernel.org \
--cc=linux-omap@vger.kernel.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.