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

    Paul Walmsley
     
  • 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

    Paul Walmsley
     
  • 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

    Charulatha V
     

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

    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

    Linus Torvalds
     

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

    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

    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/Zoom3

    Signed-off-by: Jean Pihet
    Reviewed-by: Kevin Hilman
    Tested-by: Kevin Hilman
    Signed-off-by: Russell King

    Jean Pihet
     

29 Jun, 2011

1 commit


24 Jun, 2011

2 commits


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

    Kevin Hilman
     

20 Jun, 2011

1 commit


20 May, 2011

2 commits


12 Mar, 2011

2 commits


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

    Jean Pihet
     

10 Mar, 2011

3 commits


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

    Paul Walmsley
     

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

    Paul Walmsley
     
  • Define the following architecture specific funtions for omap2/3/4
    .clkdm_allow_idle
    .clkdm_deny_idle

    Convert 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

    Rajendra Nayak
     
  • Define the following architecture specific funtions for omap2/3/4
    .clkdm_sleep
    .clkdm_wakeup

    Convert 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

    Rajendra Nayak
     

01 Feb, 2011

1 commit


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

    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

    Torben Hohn
     

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.h

    Also fix missed 'diabled' typo in drivers/net/bnx2x/bnx2x.h while at it.

    Linus Torvalds
     

23 Dec, 2010

1 commit


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 Shilimkar

    1. OMAP34xx Multimedia Device Silicon Revision 3.1.x [Rev. ZH] [SWPU222H]
    Section 4.11.4 "Device Off-Mode Sequences"

    Paul Walmsley
     
  • 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

    Paul Walmsley
     
  • 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

    Paul Walmsley
     
  • 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

    Paul Walmsley
     
  • 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

    Paul Walmsley
     
  • 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

    Paul Walmsley
     
  • Errata covered:
    - 1.157 & 1.185
    - i443
    - i581

    Tested 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

    Jean Pihet
     
  • 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: impacted

    This 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

    Eduardo Valentin
     
  • 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

    Nishanth Menon