From: Nishanth Menon <nm@ti.com>
To: linux-omap <linux-omap@vger.kernel.org>
Cc: Nishanth Menon <nm@ti.com>
Subject: [PATCH 0/9 v2] omap3: pm: introduce support for 3630 OPPs
Date: Fri, 13 Nov 2009 00:05:13 -0600 [thread overview]
Message-ID: <1258092322-30833-1-git-send-email-nm@ti.com> (raw)
Hi,
V2 of the patch series.
What changed in V2:
* Rebased to latest pm branch as of today (with zoom3 and SDP3630
support -thanks kevin and Vikram in getting it done) 8/9 changed
* Jon Hunter pointed me to errors in vdd2 opp2 voltage that I made
a mistake-9/9 changed
* Lam pointed me to an error in OPP enable for 3630OPP I made-
vdd1 opp3 was disabled by default in DSP but I missed MPU :( -
9/9 changed
* Accepted Kevin's recommendation that I rename opp_onoff to
opp_enable 2/9 changed
* I realized that macro paramaters usage in IS_OPP_TERMINATOR,
so made them mess up safe (2/9 changed)
* Few of the patch subjects got renamed from "introduce opp accessor
functions" to "use accessor function" to better reflect what was
being done.
Finally,
This series has been tested on SDP3430 and SDP3630 :) - though
not stress tested for various drivers - basic OPP changes on VDD1 &
VDD2, and cpufreq tests only. Requesting more thorough testing from
as many folks as possible. (omap3_pm_defconfig used)
NOTE: SDP3630 needs the patch for 8250 as discussed here:
http://marc.info/?l=linux-omap&m=125795354108797&w=2
I am reposting the complete rebased set as v2 to maintain continuity
on the new baseline
====
This patch series is based on previous discussions:
http://www.mail-archive.com/linux-omap@vger.kernel.org/msg17632.html
I have modified the initial patch From Sanjeev:
http://patchwork.kernel.org/patch/50998/
Other than these, we cannot use the old VDDx_MAX based usage
anymore as 3630 OPPs are now different and runtime handling
is a must-have, hence introducing these accessor functions is not
avoidable.
The changes are incremental and tries to avoid intrusive change
as much as possible.
The OPP accessor functions introduced in this series is hopefully
a start for us to optimize this heavily used path.
Finally, I have only done limited testing of SR, as it is still in
my TODO list to revamp SR in the form of a v5 patch next time I get
some bandwidth.
An alternate approach for detecting 3630 OPP is using FEATURES
instead of detecting the cpu_type as I have implemented in this series.
Nishanth Menon (9):
omap3: pm: introduce enabled flag to omap_opp
omap3: pm: introduce opp accessor functions
omap3: pm: srf: use opp accessor function
omap3: pm: use opp accessor functions for omap-target
omap3: pm: sr: replace get_opp with freq_to_opp
omap3: clk: use pm accessor functions for cpufreq table
omap3: pm: remove VDDx_MIN/MAX macros
omap3: pm: introduce dynamic OPP
omap3: pm: introduce 3630 opps
arch/arm/mach-omap2/board-3430sdp.c | 1 +
arch/arm/mach-omap2/board-3630sdp.c | 6 +-
arch/arm/mach-omap2/board-omap3beagle.c | 1 +
arch/arm/mach-omap2/board-omap3evm.c | 1 +
arch/arm/mach-omap2/board-rx51.c | 1 +
arch/arm/mach-omap2/board-zoom2.c | 7 +-
arch/arm/mach-omap2/board-zoom3.c | 6 +-
arch/arm/mach-omap2/clock34xx.c | 46 +++++---
arch/arm/mach-omap2/omap3-opp.h | 49 ++------
arch/arm/mach-omap2/pm.c | 160 +++++++++++++++++++++++++
arch/arm/mach-omap2/pm.h | 7 +
arch/arm/mach-omap2/pm34xx.c | 122 +++++++++++++++++++
arch/arm/mach-omap2/resource34xx.c | 174 +++++++++++++++++----------
arch/arm/mach-omap2/smartreflex.c | 36 ++-----
arch/arm/plat-omap/cpu-omap.c | 12 +--
arch/arm/plat-omap/include/plat/omap-pm.h | 111 ++++++++++++++++++
arch/arm/plat-omap/include/plat/omap34xx.h | 5 -
17 files changed, 584 insertions(+), 161 deletions(-)
Regards,
Nishanth Menon
PS: Sample log from 3630SDP:
3630SDP cpufreq results:
# head /sys/devices/system/cpu/cpu0/cpu
/sys/devices/system/cpu/cpu0/cpufreq/ /sys/devices/system/cpu/cpu0/cpuidle/
/tests/pm-test-scripts # head /sys/devices/system/cpu/cpu0/cpufreq/*
==> /sys/devices/system/cpu/cpu0/cpufreq/affected_cpus <==
0
==> /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq <==
300000
==> /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq <==
600000
==> /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq <==
300000
==> /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency <==
300000
==> /sys/devices/system/cpu/cpu0/cpufreq/related_cpus <==
0
==> /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies <==
600000 300000
==> /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors <==
userspace
==> /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq <==
300000
==> /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver <==
omap
==> /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor <==
userspace
==> /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq <==
600000
==> /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq <==
300000
==> /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed <==
300000
# head /sys/devices/system/cpu/cpu0/cpufreq/stats/*
==> /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state <==
600000 9246
300000 159753
==> /sys/devices/system/cpu/cpu0/cpufreq/stats/total_trans <==
13
[..]
/dbg/pm_debug# cat voltage_off_while_idle
0
/dbg/pm_debug # cat enable_off_mode
0
/dbg/pm_debug # echo -n '1' >enable_off_mode
Unable to Changelevel for resource dsp_freq to 0
Error: could not refresh resources
/dbg/pm_debug # echo -n '1' >voltage_off_while_idle
/dbg/pm_debug # cat enable_off_mode
1
/dbg/pm_debug # echo 'mem' >/sys/power/state
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.00 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
Successfully put all powerdomains to target state
Restarting tasks ... done.
/dbg/pm_debug #
/dbg/pm_debug # echo 'mem' >/sys/power/state
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.00 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
Successfully put all powerdomains to target state
Restarting tasks ... done.
/dbg/pm_debug #
/dbg/pm_debug #
/dbg/pm_debug # ls
cam_pwrdm iva2_pwrdm sleep_while_idle
core_pwrdm mpu_pwrdm time
count neon_pwrdm usbhost_pwrdm
dss_pwrdm per_pwrdm voltage_off_while_idle
emu_pwrdm registers wakeup_timer_seconds
enable_off_mode sgx_pwrdm wkup_pwrdm
/dbg/pm_debug # cat count time
usbhost_pwrdm (OFF),OFF:1,RET:1,INA:0,ON:1
sgx_pwrdm (OFF),OFF:1,RET:0,INA:0,ON:1
per_pwrdm (ON),OFF:2,RET:143,INA:0,ON:146
dss_pwrdm (OFF),OFF:1,RET:1,INA:0,ON:1
cam_pwrdm (OFF),OFF:1,RET:1,INA:0,ON:1
core_pwrdm (ON),OFF:2,RET:1,INA:0,ON:4
neon_pwrdm (ON),OFF:2,RET:1,INA:190,ON:194
mpu_pwrdm (ON),OFF:2,RET:1,INA:190,ON:194
iva2_pwrdm (OFF),OFF:1,RET:1,INA:0,ON:1
per_clkdm->per_pwrdm (9)
usbhost_clkdm->usbhost_pwrdm (0)
cam_clkdm->cam_pwrdm (0)
dss_clkdm->dss_pwrdm (0)
core_l4_clkdm->core_pwrdm (5)
core_l3_clkdm->core_pwrdm (4)
d2d_clkdm->core_pwrdm (0)
sgx_clkdm->sgx_pwrdm (0)
iva2_clkdm->iva2_pwrdm (0)
neon_clkdm->neon_pwrdm (0)
mpu_clkdm->mpu_pwrdm (0)
prm_clkdm->wkup_pwrdm (0)
cm_clkdm->core_pwrdm (0)
usbhost_pwrdm (OFF),OFF:47586242676,RET:150255279541,INA:0,ON:22111267089
sgx_pwrdm (OFF),OFF:197841491699,RET:0,INA:0,ON:22111297607
per_pwrdm (ON),OFF:4080291748,RET:5557220473,INA:0,ON:210315277085
dss_pwrdm (OFF),OFF:47586303711,RET:150255249024,INA:0,ON:22111267089
cam_pwrdm (OFF),OFF:47586303711,RET:150255249024,INA:0,ON:22111267089
core_pwrdm (ON),OFF:4080291748,RET:2764923095,INA:0,ON:213107604981
neon_pwrdm (ON),OFF:4080291748,RET:2764923095,INA:5508361840,ON:207599273658
mpu_pwrdm (ON),OFF:4080291748,RET:2764923095,INA:5508972194,ON:207598663304
iva2_pwrdm (OFF),OFF:47586364746,RET:150255187988,INA:0,ON:22111297607
/dbg/pm_debug #
next 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 Nishanth Menon [this message]
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 ` [PATCH 9/9 v2] omap3: pm: introduce 3630 opps Nishanth Menon
2009-11-18 20:07 ` 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-1-git-send-email-nm@ti.com \
--to=nm@ti.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox