05 Nov, 2011
1 commit
08 Oct, 2011
3 commits
-
Based on the documents that I have here, there doesn't appear to be an
equivalent to erratum i443 for OMAP3630, so restrict this one to OMAP34xx
chips.Also, explicitly restrict this erratum to EMU and HS devices.
Signed-off-by: Paul Walmsley
Signed-off-by: Kevin Hilman -
The way that we detect which OMAP3 chips support I/O wakeup and
software I/O chain clock control is broken.Currently, I/O wakeup is marked as present for all OMAP3 SoCs other
than the AM3505/3517. The TI81xx family of SoCs are at present
considered to be OMAP3 SoCs, but don't support I/O wakeup. To resolve
this, convert the existing blacklist approach to an explicit,
whitelist support, in which only SoCs which are known to support I/O
wakeup are listed. (At present, this only includes OMAP34xx,
OMAP3503, OMAP3515, OMAP3525, OMAP3530, and OMAP36xx.)Also, the current code incorrectly detects the presence of a
software-controllable I/O chain clock on several chips that don't
support it. This results in writes to reserved bitfields, unnecessary
delays, and console messages on kernels running on those chips:http://www.spinics.net/lists/linux-omap/msg58735.html
Convert this test to a feature test with a chip-by-chip whitelist.
Thanks to Dave Hylands for reporting this problem
and doing some testing to help isolate the cause. Thanks to Steve
Sakoman for catching a bug in the first version of
this patch. Thanks to Russell King for
comments.Signed-off-by: Paul Walmsley
Cc: Dave Hylands
Cc: Steve Sakoman
Tested-by: Steve Sakoman
Cc: Russell King - ARM Linux
Signed-off-by: Kevin Hilman -
The context lost count is modified in omap_sram_idle() path when
pwrdm_post_transition() is called. But pwrdm_post_transition() is called
only after omap_gpio_resume_after_idle() is called. Correct this so that
context lost count is modified before calling omap_gpio_resume_after_idle().This would be useful when OMAP GPIO save/restore context is called by
the OMAP GPIO driver itself.Signed-off-by: Charulatha V
Reviewed-by: Santosh Shilimkar
Acked-by: Tony Lindgren
Signed-off-by: Kevin Hilman
17 Sep, 2011
1 commit
-
During the idle/suspend path, we expect the console lock to be held so
that no console output is done during/after the UARTs are idled.However, when using the no_console_suspend argument on the
command-line, the console driver does not take the console lock. This
allows the possibility of console activity after UARTs have been
disabled.To fix, update the current is_suspending() to also check the
console_suspend_enabled flag.Reported-by: Abhilash Koyamangalath
Tested-by: Abhilash Koyamangalath
Signed-off-by: Kevin Hilman
26 Jul, 2011
1 commit
-
* 'next/cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc: (133 commits)
ARM: EXYNOS4: Change devname for FIMD clkdev
ARM: S3C64XX: Cleanup mach/regs-fb.h from mach-s3c64xx
ARM: S5PV210: Cleanup mach/regs-fb.h from mach-s5pv210
ARM: S5PC100: Cleanup mach/regs-fb.h from mach-s5pc100
ARM: S3C24XX: Use generic s3c_set_platdata for devices
ARM: S3C64XX: Use generic s3c_set_platdata for OneNAND
ARM: SAMSUNG: Use generic s3c_set_platdata for NAND
ARM: SAMSUNG: Use generic s3c_set_platdata for USB OHCI
ARM: SAMSUNG: Use generic s3c_set_platdata for HWMON
ARM: SAMSUNG: Use generic s3c_set_platdata for FB
ARM: SAMSUNG: Use generic s3c_set_platdata for TS
ARM: S3C64XX: Add PWM backlight support on SMDK6410
ARM: S5P64X0: Add PWM backlight support on SMDK6450
ARM: S5P64X0: Add PWM backlight support on SMDK6440
ARM: S5PC100: Add PWM backlight support on SMDKC100
ARM: S5PV210: Add PWM backlight support on SMDKV210
ARM: EXYNOS4: Add PWM backlight support on SMDKC210
ARM: EXYNOS4: Add PWM backlight support on SMDKV310
ARM: SAMSUNG: Create a common infrastructure for PWM backlight support
clocksource: convert 32-bit down counting clocksource on S5PV210/S5P64X0
...Fix up trivial conflict in arch/arm/mach-imx/mach-scb9328.c
02 Jul, 2011
1 commit
-
There are SoCs where attempting to enter a low power state is ignored,
and the CPU continues executing instructions with all state preserved.
It is over-complex at that point to disable the MMU just to call the
resume path.Instead, allow the suspend finisher to return error codes to abort
suspend in this circumstance, where the cpu_suspend internals will then
unwind the saved state on the stack. Also omit the tlb flush as no
changes to the page tables will have happened.Signed-off-by: Russell King
30 Jun, 2011
2 commits
-
Move the saving of the auxiliary control registers into C; there's
no need for this to be in assembly code. This results in less
assembly code to deal with in OMAP.Kevin tested full-chip retention and off on 3430/n900, 3530/Overo and
3630/Zoom3.Tested-by: Kevin Hilman
Signed-off-by: Russell King -
Most of the ASM sleep code (in arch/arm/mach-omap2/sleep34xx.S)
is copied to internal SRAM at boot and after wake-up from CORE OFF
mode. However only a small part of the code really needs to run from
internal SRAM.This fix lets most of the ASM idle code run from the DDR in order to
minimize the SRAM usage and the overhead in the code copy.The only pieces of code that are mandatory in SRAM are:
- the i443 erratum WA,
- the i581 erratum WA,
- the security extension code.SRAM usage:
- original code:
. 560 bytes for omap3_sram_configure_core_dpll (used by DVFS),
. 852 bytes for omap_sram_idle (used by suspend/resume in RETention),
. 124 bytes for es3_sdrc_fix (used by suspend/resume in OFF mode on ES3.x),
. 108 bytes for save_secure_ram_context (used on HS parts only).With this fix the usage for suspend/resume in RETention goes down 288
bytes, so the gain in SRAM usage for suspend/resume is 564 bytes.Also fixed the SRAM initialization sequence to avoid an unnecessary
copy to SRAM at boot time and for readability.Tested on Beagleboard (ES2.x) in idle with full RET and OFF modes.
Kevin Hilman tested retention and off on 3430/n900, 3530/Overo and
3630/Zoom3Signed-off-by: Jean Pihet
Reviewed-by: Kevin Hilman
Tested-by: Kevin Hilman
Signed-off-by: Russell King
29 Jun, 2011
1 commit
-
…khilman/linux-omap-pm into devel-cleanup
Conflicts:
arch/arm/mach-omap2/pm-debug.c
arch/arm/mach-omap2/pm.h
24 Jun, 2011
2 commits
-
The first and second arguments shouldn't concern platform code, so
hide them from each platforms caller.Tested-by: Kevin Hilman
Acked-by: Jean Pihet
Signed-off-by: Russell King -
Convert omap34xx to use the generic CPU suspend/resume support, rather
than implementing its own version. Tested on 3430 LDP.Reviewed-by: Kevin Hilman
Tested-by: Kevin Hilman
Acked-by: Jean Pihet
Signed-off-by: Russell King
21 Jun, 2011
1 commit
-
Remove the OMAP-specific PM debug 'sleep_while_idle' feature which is
currently available as an OMAP-specific debugfs entry.This duplicates existing ARM-generic functionality available as a
boot-time option using the boot cmdline option 'hohlt'.If runtime configuration of this is needed, then adding a debugfs
entry for the ARM-generic hlt/nohlt interface should be added.Tested-by: Santosh Shilimkar
Acked-by: Santosh Shilimkar
Acked-by: Jean Pihet
Signed-off-by: Kevin Hilman
20 Jun, 2011
1 commit
-
This removes the support for setting the wake-up timer for debugging.
Later on we can reserve gptimer1 for PM code only and have similar
functionality.Signed-off-by: Tony Lindgren
Reviewed-by: Kevin Hilman
20 May, 2011
2 commits
-
It shows up on the console despite using "silent" in the bootargs, and
it's really just noise in the boot log since PM init is always called.Signed-off-by: Sanjeev Premi
Cc: jhnikula@gmail.com
[khilman@ti.com: minor changelog edits]
Signed-off-by: Kevin Hilman -
The achievable power modes of the power domains in cpuidle
depends on the system wide 'enable_off_mode' knob in debugfs.
Upon changing enable_off_mode, do not change the C-states
'valid' field but instead dynamically restrict the power modes
when entering idle.The C-states 'valid' field is just used to enable/disable some
C-states at init and shall not be changed later on.Signed-off-by: Jean Pihet
Signed-off-by: Kevin Hilman
12 Mar, 2011
2 commits
-
…x/kernel/git/khilman/linux-omap-pm into omap-for-linus
-
…ion into omap-for-linus
Conflicts:
arch/arm/mach-omap2/pm34xx.c
11 Mar, 2011
1 commit
-
The patch adds the new power management trace points for
the OMAP architecture.The trace points are for:
- default idle handler. Since the cpuidle framework is
instrumented in the generic way there is no need to
add trace points in the OMAP specific cpuidle handler;
- SoC clocks changes (enable, disable, set_rate),
- power domain states: the desired target state and -if different-
the actually hit state.Because of the generic nature of the changes, OMAP3 and OMAP4 are supported.
Tested on OMAP3 with suspend/resume, cpuidle, basic DVFS.
Signed-off-by: Jean Pihet
Acked-by: Paul Walmsley
Signed-off-by: Kevin Hilman
10 Mar, 2011
3 commits
-
Remove the custom restore_control_register() and use the exported
set_cr() instead to set the system control register(SCTRL) value.No functional change.
Signed-off-by: Santosh Shilimkar
Cc: Kevin Hilman
Signed-off-by: Kevin Hilman -
The OMAP2 and OMAP3 PM code clears clockdomain wakeup and sleep
dependencies. This is unnecessary after commit
6f7f63cc9adf3192e6fcac4e8bed5cc10fd924aa ("OMAP clockdomain:
initialize clockdomain registers when the clockdomain layer starts")
which clears these dependencies during clockdomain init.Signed-off-by: Paul Walmsley
Signed-off-by: Kevin Hilman -
In case in user has a OMAP3630 < ES1.2 the kernel should warn the user
about the ERRATUM, but using pr_warn instead of WARN_ON is already
enough, as there is nothing else the user can do besides changing the
board.Signed-off-by: Ricardo Salveti de Araujo
Signed-off-by: Kevin Hilman
08 Mar, 2011
1 commit
-
These CM_AUTOIDLE bits are now set by the clock code via the common PM
code in mach-omap2/pm.c.N.B.: The pm24xx.c code that this patch removes didn't ensure that the
CM_AUTOIDLE bits were set for several 2430-only modules, such as
GPIO5, MDM_INTC, MMCHS1/2, the modem oscillator clock, and USBHS.
Similarly, the pm34xx.c code that this patch removes didn't ensure
that the CM_AUTOIDLE bits were set for USIM and the AM3517 UART4.
Those cases should now be handled.Signed-off-by: Paul Walmsley
Cc: Kevin Hilman
Tested-by: Rajendra Nayak
Reviewed-by: Kevin Hilman
26 Feb, 2011
3 commits
-
Attempt to enable autoidle for as many clocks as possible in the
OMAP2+-common CONFIG_OMAP_RESET_CLOCKS code. Currently, this only
enables DPLL autoidle for OMAP3/4 DPLLs; but future patches will
enable autoidle for other clocks and the OMAP2 DPLL/APLLs.In the long run, we should probably get rid of
CONFIG_OMAP_RESET_CLOCKS, and unconditionally run the code that it
selects. Otherwise, the state of the clock tree won't match the
hardware state - this could result in clocks being enabled or disabled
unpredictably.Based on a patch by Rajendra Nayak that did this in
the pm34xx.c/pm44xx.c code.Signed-off-by: Paul Walmsley
Cc: Rajendra Nayak -
Define the following architecture specific funtions for omap2/3/4
.clkdm_allow_idle
.clkdm_deny_idleConvert the platform-independent framework to call these functions.
Also rename the api's by removing the omap2_ preamble.
Hence call omap2_clkdm_allow_idle as clkdm_allow_idle and
omap2_clkdm_deny_idle as clkdm_deny_idle.Make the _clkdm_add_autodeps and _clkdm_del_autodeps as non-static
so they can be accessed from OMAP2/3 platform specific code.Signed-off-by: Rajendra Nayak
Signed-off-by: Paul Walmsley -
Define the following architecture specific funtions for omap2/3/4
.clkdm_sleep
.clkdm_wakeupConvert the platform-independent framework to call these functions.
Also rename the api's by removing the omap2_ preamble.
Hence call omap2_clkdm_wakeup as clkdm_wakeup and
omap2_clkdm_sleep as clkdm_sleep.Signed-off-by: Rajendra Nayak
[paul@pwsan.com: fixed omap3_clkdm_clear_all_sleepdeps() and
omap2_clkdm_clear_all_wkdeps() to test against the correct
loop termination condition; thanks to Kevin Hilman for finding and
helping fix]
Cc: Kevin Hilman
Signed-off-by: Paul Walmsley
01 Feb, 2011
1 commit
-
…el/git/khilman/linux-omap-pm into devel-fixes
27 Jan, 2011
1 commit
-
Currently, on HS/EMU devices, MPU power state forced to on during PM
init by the save secure RAM code. Rather than forcing the state of
MPU powerdomain to on, simply read the current value and restore it
after the ROM code has run.This only affects the !CPUidle case since when CPUidle is enabled, the
MPU power state is dynamically changed by CPUidle. In the !CPUidle
case, MPU power state is initialized once at init and never touched.Acked-by: Tero Kristo
Signed-off-by: Kevin Hilman
26 Jan, 2011
1 commit
-
The -rt patches change the console_semaphore to console_mutex. As a
result, a quite large chunk of the patches changes all
acquire/release_console_sem() to acquire/release_console_mutex()This commit makes things use more neutral function names which dont make
implications about the underlying lock.The only real change is the return value of console_trylock which is
inverted from try_acquire_console_sem()This patch also paves the way to switching console_sem from a semaphore to
a mutex.[akpm@linux-foundation.org: coding-style fixes]
[akpm@linux-foundation.org: make console_trylock return 1 on success, per Geert]
Signed-off-by: Torben Hohn
Cc: Thomas Gleixner
Cc: Greg KH
Cc: Ingo Molnar
Cc: Geert Uytterhoeven
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
14 Jan, 2011
1 commit
-
* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)
Documentation/trace/events.txt: Remove obsolete sched_signal_send.
writeback: fix global_dirty_limits comment runtime -> real-time
ppc: fix comment typo singal -> signal
drivers: fix comment typo diable -> disable.
m68k: fix comment typo diable -> disable.
wireless: comment typo fix diable -> disable.
media: comment typo fix diable -> disable.
remove doc for obsolete dynamic-printk kernel-parameter
remove extraneous 'is' from Documentation/iostats.txt
Fix spelling milisec -> ms in snd_ps3 module parameter description
Fix spelling mistakes in comments
Revert conflicting V4L changes
i7core_edac: fix typos in comments
mm/rmap.c: fix comment
sound, ca0106: Fix assignment to 'channel'.
hrtimer: fix a typo in comment
init/Kconfig: fix typo
anon_inodes: fix wrong function name in comment
fix comment typos concerning "consistent"
poll: fix a typo in comment
...Fix up trivial conflicts in:
- drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)
- fs/ext4/ext4.hAlso fix missed 'diabled' typo in drivers/net/bnx2x/bnx2x.h while at it.
23 Dec, 2010
1 commit
-
Conflicts:
MAINTAINERS
arch/arm/mach-omap2/pm24xx.c
drivers/scsi/bfa/bfa_fcpim.cNeeded to update to apply fixes for which the old branch was too
outdated.
22 Dec, 2010
9 commits
-
Move the padconf save code from pm34xx.c to the System Control Module
code in mach-omap2/control.c. This is part of the general push to
move direct register access from middle-layer core code to low-level
core code, so the middle-layer code can be abstracted to work on
multiple platforms and cleaned up.In the medium-to-long term, this code should be called by the mux
layer code, not the PM idle code. This is because, according to the
TRM, saving the padconf only needs to be done when the padconf
changes[1].Signed-off-by: Paul Walmsley
Cc: Kevin Hilman
Cc: Tony Lindgren
Tested-by: Rajendra Nayak
Tested-by: Santosh Shilimkar1. OMAP34xx Multimedia Device Silicon Revision 3.1.x [Rev. ZH] [SWPU222H]
Section 4.11.4 "Device Off-Mode Sequences" -
The OMAP powerdomain code and data is all OMAP2+-specific. This seems
unlikely to change any time soon. Move plat-omap/include/plat/powerdomain.h
to mach-omap2/powerdomain.h. The primary point of doing this is to remove
the temptation for unrelated upper-layer code to access powerdomain code
and data directly.As part of this process, remove the references to powerdomain data
from the GPIO "driver" and the OMAP PM no-op layer, both in plat-omap.
Change the DSPBridge code to point to the new location for the
powerdomain headers. The DSPBridge code should not be including the
powerdomain headers; these should be removed.Signed-off-by: Paul Walmsley
Cc: Kevin Hilman
Cc: Omar Ramirez Luna
Cc: Felipe Contreras
Cc: Greg Kroah-Hartman -
The OMAP clockdomain code and data is all OMAP2+-specific. This seems
unlikely to change any time soon. Move plat-omap/include/plat/clockdomain.h
to mach-omap2/clockdomain.h. The primary point of doing this is to remove
the temptation for unrelated upper-layer code to access clockdomain code
and data directly.DSPBridge also uses the clockdomain headers for some reason, so,
modify it also. The DSPBridge code should not be including the
clockdomain headers; these should be removed.Signed-off-by: Paul Walmsley
Cc: Kevin Hilman
Cc: Omar Ramirez Luna
Cc: Felipe Contreras
Cc: Greg Kroah-Hartman
Tested-by: Rajendra Nayak
Tested-by: Santosh Shilimkar -
Now that OMAP4-specific PRCM functions have been added, distinguish the
existing OMAP2/3-specific PRCM functions by prefixing them with "omap2_".This patch should not result in any functional change.
Signed-off-by: Paul Walmsley
Cc: Kevin Hilman
Cc: Jarkko Nikula
Cc: Peter Ujfalusi
Cc: Liam Girdwood
Cc: Mark Brown
Tested-by: Santosh Shilimkar
Tested-by: Rajendra Nayak -
The OMAP3 PRM module is in the WKUP powerdomain, which is always
powered when the chip is powered, so it shouldn't be necessary to save
and restore those PRM registers. Remove the PRM register save/restore
code, which should save several microseconds during off-mode
entry/exit, since PRM register accesses are relatively slow.While doing so, move the CM register save/restore code into
CM-specific code. The CM module has been distinct from the PRM module
since 2430.This patch includes some minor changes to pm34xx.c.
Signed-off-by: Paul Walmsley
Cc: Kevin Hilman
Cc: Rajendra Nayak
Cc: Tero Kristo
Cc: Kalle Jokiniemi
Reviewed-by: Kevin Hilman
Tested-by: Kevin Hilman
Tested-by: Santosh Shilimkar
Tested-by: Rajendra Nayak -
In preparation for adding OMAP4-specific PRCM accessor/mutator
functions, split the existing OMAP2/3 PRCM code into OMAP2/3-specific
files. Most of what was in mach-omap2/{cm,prm}.{c,h} has now been
moved into mach-omap2/{cm,prm}2xxx_3xxx.{c,h}, since it was
OMAP2xxx/3xxx-specific.This process also requires the #includes in each of these files to be
changed to reference the new file name. As part of doing so, add some
comments into plat-omap/sram.c and plat-omap/mcbsp.c, which use
"sideways includes", to indicate that these users of the PRM/CM includes
should not be doing so.Thanks to Felipe Contreras for comments on this
patch.Signed-off-by: Paul Walmsley
Cc: Jarkko Nikula
Cc: Peter Ujfalusi
Cc: Liam Girdwood
Cc: Omar Ramirez Luna
Acked-by: Omar Ramirez Luna
Cc: Felipe Contreras
Acked-by: Felipe Contreras
Cc: Greg Kroah-Hartman
Acked-by: Mark Brown
Reviewed-by: Kevin Hilman
Tested-by: Kevin Hilman
Tested-by: Rajendra Nayak
Tested-by: Santosh Shilimkar -
Errata covered:
- 1.157 & 1.185
- i443
- i581Tested on N900 and Beagleboard with full RET and OFF modes,
using cpuidle and suspend.Signed-off-by: Jean Pihet
Acked-by: Santosh Shilimkar
Tested-by: Nishanth Menon
Signed-off-by: Kevin Hilman -
Limitation i583: Self_Refresh Exit issue after OFF mode
Issue:
When device is waking up from OFF mode, then SDRC state machine sends
inappropriate sequence violating JEDEC standards.Impact:
OMAP3630 < ES1.2 is impacted as follows depending on the platform:
CS0: for 38.4MHz as internal sysclk, DDR content seen to be stable, while
for all other sysclk frequencies, varied levels of instability
seen based on varied parameters.
CS1: impactedThis patch takes option #3 as recommended by the Silicon erratum:
Avoid core power domain transitioning to OFF mode. Power consumption
impact is expected in this case.
To do this, we route core OFF requests to RET request on the impacted
revisions of silicon.Acked-by: Jean Pihet
[nm@ti.com: rebased the code to 2.6.37-rc2- short circuit code changed a bit]
Signed-off-by: Nishanth Menon
Signed-off-by: Eduardo Valentin
Signed-off-by: Kevin Hilman -
Currently omap3_cpuidle_update_states makes whole sale decision
on which C states to update based on enable_off_mode variable
Instead, achieve the same functionality by independently providing
mpu and core deepest states the system is allowed to achieve and
update the idle states accordingly.Acked-by: Santosh Shilimkar
Acked-by: Jean Pihet
Signed-off-by: Nishanth Menon
[khilman: fixed additional user of this API in OMAP CPUidle driver]
Signed-off-by: Kevin Hilman