1. 10 Mar, 2012 1 commit
    • Olof Johansson's avatar
      Merge branch 'cleanup-pm' of... · e65bc891
      Olof Johansson authored
      Merge branch 'cleanup-pm' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/cleanup
      
      * 'cleanup-pm' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
        ARM: OMAP2+: PM: share some suspend-related functions across OMAP2, 3, 4
        ARM: OMAP2+: omap_device: call all suspend, resume callbacks when OMAP_DEVICE_NO_IDLE_ON_SUSPEND is set
        ARM: OMAP: omap_device: remove omap_device_parent
        ARM: OMAP2+: PM debug: fix the use of debugfs_create_* API
        ARM: OMAP2+: PM: share clkdms_setup() across OMAP2, 3, 4
        ARM: OMAP2+: PM: clean up omap_set_pwrdm_state()
        ARM: OMAP3: PM: remove superfluous calls to pwrdm_clear_all_prev_pwrst()
        ARM: OMAP: convert omap_device_build() and callers to __init
        ARM: OMAP2+: Mark omap_hsmmc_init and omap_mux related functions as __init
        ARM: OMAP2+: Split omap2_hsmmc_init() to properly support I2C GPIO pins
        ARM: OMAP: omap_device: Expose omap_device_{alloc, delete, register}
        ARM: OMAP: Fix build error when mmc_omap is built as module
        ARM: OMAP: Fix kernel panic with HSMMC when twl4030_gpio is a module
      e65bc891
  2. 08 Mar, 2012 1 commit
    • Olof Johansson's avatar
      Merge branch 'next/cleanup-s3c24xx' of... · d60d506e
      Olof Johansson authored
      Merge branch 'next/cleanup-s3c24xx' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/cleanup
      
      * 'next/cleanup-s3c24xx' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung: (24 commits)
        ARM: S3C24XX: remove call to s3c24xx_setup_clocks
        ARM: S3C24XX: add get_rate for clk_p on S3C2416/2443
        ARM: S3C24XX: add get_rate for clk_h on S3C2416/2443
        ARM: S3C24XX: remove XXX_setup_clocks method from S3C2443
        ARM: S3C24XX: remove obsolete S3C2416_DMA option
        ARM: S3C24XX: Reuse S3C2443 dma for S3C2416
        ARM: S3C24XX: Fix indentation of dma-s3c2443
        ARM: S3C24XX: Move device setup files to mach directory
        ARM: S3C24XX: Consolidate Simtec extensions
        ARM: S3C24XX: move simtec-specific code to mach directory
        ARM: S3C24XX: Move common-smdk code to mach directory
        ARM: S3C24XX: Move s3c2443-clock.c to mach-s3c24xx
        ARM: s3c2410_defconfig: update s3c2410_defconfig
        ARM: S3C2443: move mach-s3c2443/* into mach-s3c24xx/
        ARM: S3C2440: move mach-s3c2440/* into mach-s3c24xx/
        ARM: S3C2416: move mach-s3c2416/* into mach-s3c24xx/
        ARM: S3C2412: move mach-s3c2412/* into mach-s3c24xx/
        ARM: S3C2410: move mach-s3c2410/* into mach-s3c24xx/
        ARM: S3C24XX: change the ARCH_S3C2410 to ARCH_S3C24XX
        ARM: S3C2410: move s3c2410_baseclk_add to clock.h
        ...
      d60d506e
  3. 07 Mar, 2012 16 commits
  4. 06 Mar, 2012 2 commits
  5. 05 Mar, 2012 7 commits
    • Paul Walmsley's avatar
      ARM: OMAP2+: omap_device: call all suspend, resume callbacks when... · b7c39a3f
      Paul Walmsley authored
      ARM: OMAP2+: omap_device: call all suspend, resume callbacks when OMAP_DEVICE_NO_IDLE_ON_SUSPEND is set
      
      During system suspend, when OMAP_DEVICE_NO_IDLE_ON_SUSPEND is set on
      an omap_device, call the corresponding driver's ->suspend() and
      ->suspend_noirq() callbacks (if present).  Similarly, during resume,
      the driver's ->resume() and ->resume_noirq() callbacks must both be
      called, if present.  (The previous code only called ->suspend_noirq()
      and ->resume_noirq().)
      
      If all of these callbacks aren't called, some important driver
      suspend/resume code may not get executed.
      
      In current mainline, the bug fixed by this patch is only a problem
      under the following conditions:
      
      - the kernel is running on an OMAP4
      
      - an OMAP UART is used as a console
      
      - the kernel command line parameter 'no_console_suspend' is specified
      
      - and the system enters suspend ("echo mem > /sys/power/state").
      
      Under this combined circumstance, the system cannot be awakened via
      the serial port after commit be4b0281c
      ("tty: serial: OMAP: block idle while the UART is transferring data in
      PIO mode").  This is because the OMAP UART driver's ->suspend()
      callback is never called.  The ->suspend() callback would have called
      uart_suspend_port() which in turn would call enable_irq_wake().  Since
      enable_irq_wake() isn't called for the UART's IRQ, check_wakeup_irqs()
      would mask off the UART IRQ in the GIC.
      
      On v3.3 kernels prior to the above commit, serial resume from suspend
      presumably occurred via the PRCM interrupt.  The UART was in
      smart-idle mode, so it was able to send a PRCM wakeup which in turn
      would be converted into a PRCM interrupt to the GIC, waking up the
      kernel.  But after the above commit, when the system is suspended in
      the middle of a UART transmit, the UART IP block would be in no-idle
      mode.  In no-idle mode, the UART won't generate wakeups to the PRCM
      when incoming characters are received; only GIC interrupts.  But since
      the UART driver's ->suspend() callback is never called,
      uart_suspend_port() and enable_irq_wake() is never called; so the UART
      interrupt is masked by check_wakeup_irqs() and the UART can't wake up
      the MPU.
      
      The remaining mechanism that could have awakened the system would have
      been I/O chain wakeups.  These wouldn't be active because the console
      UART's clocks are never disabled when no_console_suspend is used,
      preventing the full chip from idling.  Also, current mainline doesn't
      yet support full chip idle states for OMAP4, so I/O chain wakeups are
      not enabled.
      
      This patch is the result of a collaboration.  John Stultz
      <johnstul@us.ibm.com> and Andy Green <andy.green@linaro.org> reported
      the serial wakeup problem that led to the discovery of this problem.
      Kevin Hilman <khilman@ti.com> narrowed the problem down to the use of
      no_console_suspend.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Cc: John Stultz <johnstul@us.ibm.com>
      Cc: Andy Green <andy.green@linaro.org>
      Reviewed-by: default avatarKevin Hilman <khilman@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      b7c39a3f
    • Kevin Hilman's avatar
      ARM: OMAP: omap_device: remove omap_device_parent · 3ec2decb
      Kevin Hilman authored
      Currently all omap_devices are forced to have the dummy device
      'omap_device_parent' as a parent.  This was used to distinguish
      omap_devices from "normal" platform_devices in the OMAP PM core code.
      
      Now that we implement the PM core using PM domains, this is no longer
      needed, and is removed.
      
      This also frees up omap_devices to have a more complex parent/child
      relationships that model actual device relationships.
      
      The only in-tree user of omap_device_parent was the OMAP PM layer to
      handle lost-context count for omap_devices.  That is now converted to
      use the presence of the omap_device_pm_domain instead.
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      3ec2decb
    • Jean Pihet's avatar
      ARM: OMAP2+: PM debug: fix the use of debugfs_create_* API · 401606fd
      Jean Pihet authored
      Check the return code pointer value from debugfs_create_dir for error
      or NULL.
      Also added an additional check to prevent the creation of a 'suspend'
      entry at the debugfs root in case a power domain directory cannot be
      created.
      Signed-off-by: default avatarJean Pihet <j-pihet@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      401606fd
    • Paul Walmsley's avatar
      ARM: OMAP2+: PM: share clkdms_setup() across OMAP2, 3, 4 · 92206fd2
      Paul Walmsley authored
      clkdms_setup() is identical across OMAP2, 3, and 4, so share it.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Tested-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Cc: Rajendra Nayak <rnayak@ti.com>
      Tested-by: default avatarKevin Hilman <khilman@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      92206fd2
    • Paul Walmsley's avatar
      ARM: OMAP2+: PM: clean up omap_set_pwrdm_state() · e68e8093
      Paul Walmsley authored
      Clean up a few different parts of omap_set_pwrdm_state():
      
      - Remove a superfluous call to pwrdm_state_switch().  Not needed
        unless LOWPOWERSTATECHANGE is used, because the state switch code is
        called by either clkdm_sleep() or clkdm_allow_idle().
      
      - Add code to wait for the power state transition in the OMAP4+ low
        power state change.  This is speculative, so I would particularly
        appreciate feedback on this part.
      
      - Remove a superfluous call to pwrdm_read_pwrst().
      
      - Update variable names to be more meaningful (hopefully) and precise.
      
      - Fix an error path bug that would not place the clockdomain back into
        hardware-supervised idle or sleep mode if the power state could not
        be programmed.
      
      The documentation for this function still needs major improvements;
      that's left for a later patch.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Cc: Rajendra Nayak <rnayak@ti.com>
      Tested-by: default avatarTero Kristo <t-kristo@ti.com>
      Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Tested-by: default avatarKevin Hilman <khilman@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      e68e8093
    • Paul Walmsley's avatar
      ARM: OMAP3: PM: remove superfluous calls to pwrdm_clear_all_prev_pwrst() · 506c7d79
      Paul Walmsley authored
      Remove some superfluous calls to pwrdm_clear_all_prev_pwrst().
      pwrdm_pre_transition(), which appears a few lines after these calls,
      invokes pwrdm_clear_all_prev_pwrst() on each powerdomain -- there's no
      need to do it twice.
      
      N.B.: some of us have observed that accesses to the previous
      powerstate registers seem to be quite slow.  Although the writes
      removed by this patch should be buffered by the write buffer, there is
      a read to a PRM register immediately afterwards.  That will block the
      OMAP3 MPU until all of those writes complete.  So this patch should
      result in a minor performance improvement during idle entry.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Cc: Rajendra Nayak <rnayak@ti.com>
      Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Tested-by: default avatarTero Kristo <t-kristo@ti.com>
      [khilman@ti.com: removed a couple more for OMAP4]
      Tested-by: default avatarKevin Hilman <khilman@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      506c7d79
    • Kevin Hilman's avatar
  6. 04 Mar, 2012 6 commits
  7. 02 Mar, 2012 7 commits