From: Nishanth Menon <nm@ti.com>
To: linux-omap <linux-omap@vger.kernel.org>
Cc: Nishanth Menon <nm@ti.com>, Benoit Cousson <b-cousson@ti.com>,
Jon Hunter <jon-hunter@ti.com>,
Kevin Hilman <khilman@deeprootsystems.com>,
Madhusudhan Chikkature Rajashekar <madhu.cr@ti.com>,
Paul Walmsley <paul@pwsan.com>, Romit Dasgupta <romit@ti.com>,
Sanjeev Premi <premi@ti.com>,
Santosh Shilimkar <santosh.shilimkar@ti.com>,
Sergio Alberto Aguirre Rodriguez <saaguirre@ti.com>,
SuiLun Lam <s-lam@ti.com>, Thara Gopinath <thara@ti.com>,
Vishwanath Sripathy <vishwanath.bs@ti.com>
Subject: [PATCH 9/9 v2] omap3: pm: introduce 3630 opps
Date: Fri, 13 Nov 2009 00:05:22 -0600 [thread overview]
Message-ID: <1258092322-30833-10-git-send-email-nm@ti.com> (raw)
In-Reply-To: <1258092322-30833-9-git-send-email-nm@ti.com>
Introduce the OMAP3630 OPPs including the defined OPP tuples.
Further information on OMAP3630 can be found here:
http://focus.ti.com/general/docs/wtbu/wtbuproductcontent.tsp?templateId=6123&navigationId=12836&contentId=52606
OMAP36xx family introduces:
VDD1 with 4 OPPs, of which OPP3 & 4 are available only on devices yet
to be introduced in 36xx family. Meanwhile, VDD2 has 2 opps.
Range of OPPs supported by Devices(tentative)->
|<-3630-600->| (default)
|<- 3630-800 ->| (device: TBD)
|<- 3630-1000 ->| (device: TBD)
H/w OPP-> OPP50 OPP100 OPP-Turbo OPP1G-SB
VDD1 OPP1 OPP2 OPP3 OPP4
VDD2 OPP1 OPP2 OPP2 OPP2
Note:
a) TI h/w naming for OPPs are now standardized in terms of OPP50, 100,
Turbo and SB. This maps as shown above to the opp IDs (s/w term).
b) For boards which need custom VDD1/2 OPPs, the opp table can be
updated by the board file on a need basis after the
omap3_pm_init_opp_table call. The OPPs introduced here are the
official OPP table at this point in time.
Tested on: SDP3430, SDP3630
Cc: Benoit Cousson <b-cousson@ti.com>
Cc: Jon Hunter <jon-hunter@ti.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Madhusudhan Chikkature Rajashekar <madhu.cr@ti.com>
Cc: Paul Walmsley <paul@pwsan.com>
Cc: Romit Dasgupta <romit@ti.com>
Cc: Sanjeev Premi <premi@ti.com>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
Cc: Sergio Alberto Aguirre Rodriguez <saaguirre@ti.com>
Cc: SuiLun Lam <s-lam@ti.com>
Cc: Thara Gopinath <thara@ti.com>
Cc: Vishwanath Sripathy <vishwanath.bs@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
---
arch/arm/mach-omap2/omap3-opp.h | 9 ++++
arch/arm/mach-omap2/pm34xx.c | 87 +++++++++++++++++++++++++++++++-------
2 files changed, 80 insertions(+), 16 deletions(-)
diff --git a/arch/arm/mach-omap2/omap3-opp.h b/arch/arm/mach-omap2/omap3-opp.h
index 7f27f44..a5880b8 100644
--- a/arch/arm/mach-omap2/omap3-opp.h
+++ b/arch/arm/mach-omap2/omap3-opp.h
@@ -4,22 +4,31 @@
#include <plat/omap-pm.h>
/* MPU speeds */
+#define S1000M 1000000000
+#define S800M 800000000
#define S600M 600000000
#define S550M 550000000
#define S500M 500000000
+#define S300M 300000000
#define S250M 250000000
#define S125M 125000000
/* DSP speeds */
+#define S875M 875000000
+#define S660M 660000000
+#define S520M 520000000
#define S430M 430000000
#define S400M 400000000
#define S360M 360000000
+#define S260M 260000000
#define S180M 180000000
#define S90M 90000000
/* L3 speeds */
#define S83M 83000000
+#define S100M 100000000
#define S166M 166000000
+#define S200M 200000000
extern struct omap_opp *omap3_mpu_rate_table;
extern struct omap_opp *omap3_dsp_rate_table;
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 14131f8..86137bb 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -141,6 +141,41 @@ static __initdata struct omap_opp omap34xx_dsp_rate_table[] = {
{0, 0, 0, 0},
};
+static __initdata struct omap_opp omap36xx_mpu_rate_table[] = {
+ {0, 0, 0, 0},
+ /*OPP1 - 930mV - OPP50*/
+ {true, S300M, VDD1_OPP1, 0x1a},
+ /*OPP2 - 1.100V - OPP100*/
+ {true, S600M, VDD1_OPP2, 0x28},
+ /*OPP3 - 1.260V - OPP-Turbo*/
+ {false, S800M, VDD1_OPP3, 0x34},
+ /*OPP4 - 1.310V - OPP-SB*/
+ {false, S1000M, VDD1_OPP4, 0x38},
+ {0, 0, 0, 0},
+};
+
+static __initdata struct omap_opp omap36xx_l3_rate_table[] = {
+ {0, 0, 0, 0},
+ /*OPP1 - 930mV - OPP50 */
+ {true, S100M, VDD2_OPP1, 0x1a},
+ /*OPP2 - 1.375V - OPP100, OPP-Turbo, OPP-SB*/
+ {true, S200M, VDD2_OPP2, 0x2b},
+ {0, 0, 0, 0},
+};
+
+static __initdata struct omap_opp omap36xx_dsp_rate_table[] = {
+ {0, 0, 0, 0},
+ /*OPP1 - OPP50*/
+ {true, S260M, VDD1_OPP1, 0x1a},
+ /*OPP2 - OPP100*/
+ {true, S520M, VDD1_OPP2, 0x28},
+ /*OPP3 - OPP-Turbo*/
+ {false, S660M, VDD1_OPP3, 0x34},
+ /*OPP4 - OPP-SB*/
+ {false, S875M, VDD1_OPP4, 0x38},
+ {0, 0, 0, 0},
+};
+
struct omap_opp *omap3_mpu_rate_table;
struct omap_opp *omap3_dsp_rate_table;
struct omap_opp *omap3_l3_rate_table;
@@ -1287,22 +1322,42 @@ static void __init configure_vc(void)
void __init omap3_pm_init_opp_table(void)
{
/* Populate the base CPU rate tables here */
- omap3_mpu_rate_table = kmalloc(sizeof(omap34xx_mpu_rate_table),
- GFP_KERNEL);
- omap3_dsp_rate_table = kmalloc(sizeof(omap34xx_dsp_rate_table),
- GFP_KERNEL);
- omap3_l3_rate_table = kmalloc(sizeof(omap34xx_l3_rate_table),
- GFP_KERNEL);
-
- BUG_ON(!omap3_mpu_rate_table || !omap3_dsp_rate_table ||
- !omap3_l3_rate_table);
-
- memcpy(omap3_mpu_rate_table, omap34xx_mpu_rate_table,
- sizeof(omap34xx_mpu_rate_table));
- memcpy(omap3_dsp_rate_table, omap34xx_dsp_rate_table,
- sizeof(omap34xx_dsp_rate_table));
- memcpy(omap3_l3_rate_table, omap34xx_l3_rate_table,
- sizeof(omap34xx_l3_rate_table));
+ if (cpu_is_omap3630()) {
+ omap3_mpu_rate_table = kmalloc(sizeof(omap36xx_mpu_rate_table),
+ GFP_KERNEL);
+ omap3_dsp_rate_table = kmalloc(sizeof(omap36xx_dsp_rate_table),
+ GFP_KERNEL);
+ omap3_l3_rate_table = kmalloc(sizeof(omap36xx_l3_rate_table),
+ GFP_KERNEL);
+
+ BUG_ON(!omap3_mpu_rate_table || !omap3_dsp_rate_table ||
+ !omap3_l3_rate_table);
+
+ memcpy(omap3_mpu_rate_table, omap36xx_mpu_rate_table,
+ sizeof(omap36xx_mpu_rate_table));
+ memcpy(omap3_dsp_rate_table, omap36xx_dsp_rate_table,
+ sizeof(omap36xx_dsp_rate_table));
+ memcpy(omap3_l3_rate_table, omap36xx_l3_rate_table,
+ sizeof(omap36xx_l3_rate_table));
+ } else {
+ /* Default to 34xx devices */
+ omap3_mpu_rate_table = kmalloc(sizeof(omap34xx_mpu_rate_table),
+ GFP_KERNEL);
+ omap3_dsp_rate_table = kmalloc(sizeof(omap34xx_dsp_rate_table),
+ GFP_KERNEL);
+ omap3_l3_rate_table = kmalloc(sizeof(omap34xx_l3_rate_table),
+ GFP_KERNEL);
+
+ BUG_ON(!omap3_mpu_rate_table || !omap3_dsp_rate_table ||
+ !omap3_l3_rate_table);
+
+ memcpy(omap3_mpu_rate_table, omap34xx_mpu_rate_table,
+ sizeof(omap34xx_mpu_rate_table));
+ memcpy(omap3_dsp_rate_table, omap34xx_dsp_rate_table,
+ sizeof(omap34xx_dsp_rate_table));
+ memcpy(omap3_l3_rate_table, omap34xx_l3_rate_table,
+ sizeof(omap34xx_l3_rate_table));
+ }
}
static int __init omap3_pm_early_init(void)
--
1.6.3.3
next prev parent reply other threads:[~2009-11-13 6:05 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-13 6:05 [PATCH 0/9 v2] omap3: pm: introduce support for 3630 OPPs Nishanth Menon
2009-11-13 6:05 ` [PATCH 1/9] omap3: pm: introduce enabled flag to omap_opp Nishanth Menon
2009-11-13 6:05 ` [PATCH 2/9 v2] omap3: pm: introduce opp accessor functions Nishanth Menon
2009-11-13 6:05 ` [PATCH 3/9] omap3: pm: srf: use opp accessor function Nishanth Menon
2009-11-13 6:05 ` [PATCH 4/9] omap3: pm: use opp accessor functions for omap-target Nishanth Menon
2009-11-13 6:05 ` [PATCH 5/9] omap3: pm: sr: replace get_opp with freq_to_opp Nishanth Menon
2009-11-13 6:05 ` [PATCH 6/9] omap3: clk: use pm accessor functions for cpufreq table Nishanth Menon
2009-11-13 6:05 ` [PATCH 7/9] omap3: pm: remove VDDx_MIN/MAX macros Nishanth Menon
2009-11-13 6:05 ` [PATCH 8/9 v2] omap3: pm: introduce dynamic OPP Nishanth Menon
2009-11-13 6:05 ` Nishanth Menon [this message]
2009-11-18 20:07 ` [PATCH 9/9 v2] omap3: pm: introduce 3630 opps Jon Hunter
2009-11-19 14:00 ` Sripathy, Vishwanath
2009-11-14 1:31 ` [PATCH 8/9 v2] omap3: pm: introduce dynamic OPP Kevin Hilman
2009-11-15 14:20 ` Menon, Nishanth
2009-11-14 0:58 ` [PATCH 2/9 v2] omap3: pm: introduce opp accessor functions Kevin Hilman
2009-11-15 14:54 ` Menon, Nishanth
2009-11-18 3:08 ` Nishanth Menon
2009-11-20 1:31 ` Kevin Hilman
2009-11-20 2:16 ` Nishanth Menon
2009-11-21 3:00 ` Nishanth Menon
2009-11-21 16:07 ` Cousson, Benoit
2009-11-21 19:08 ` Menon, Nishanth
2009-11-21 22:22 ` Cousson, Benoit
2009-11-22 3:35 ` Menon, Nishanth
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=1258092322-30833-10-git-send-email-nm@ti.com \
--to=nm@ti.com \
--cc=b-cousson@ti.com \
--cc=jon-hunter@ti.com \
--cc=khilman@deeprootsystems.com \
--cc=linux-omap@vger.kernel.org \
--cc=madhu.cr@ti.com \
--cc=paul@pwsan.com \
--cc=premi@ti.com \
--cc=romit@ti.com \
--cc=s-lam@ti.com \
--cc=saaguirre@ti.com \
--cc=santosh.shilimkar@ti.com \
--cc=thara@ti.com \
--cc=vishwanath.bs@ti.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox