1. 18 Aug, 2009 3 commits
    • Matt Fleming's avatar
      sh: Add a few missing irqflags tracing markers. · f3a83088
      Matt Fleming authored
      save_regs contains an SR modification without an irqflags annotation,
      which resulted in a missing TRACE_IRQS_OFF in the interrupt exception
      path on SH-3/SH4.
      
      I've also moved the TRACE_IRQS_OFF/ON annotation when returning from the
      interrupt to just before we call __restore_all. This seems like the most
      logical place to put this because the annotation is for when we restore
      the SR register so we should delay the annotation until as last as
      possible.
      
      We were also missing a TRACE_IRQS_OFF in resume_kernel when
      CONFIG_PREEMPT is enabled.
      
      The end result is that this fixes up the lockdep engine debugging support
      with CONFIG_PREEMPT enabled on all SH-3/4 parts.
      Signed-off-by: default avatarMatt Fleming <matt@console-pimps.org>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      f3a83088
    • Magnus Damm's avatar
      sh: SuperH Mobile Software Standby support for cpuidle · 63cd91df
      Magnus Damm authored
      This patch adds "SuperH Mobile Standby Mode [SF]" to the list
      of cpuidle sleep modes. If the software latency requirements
      from cpuidle are met together with fulfilled hardware
      requirements then deep sleep modes can be entered.
      
      Tested on sh7722 and sh7724 with "Sleep Mode", "Sleep Mode + SF"
      and "Software Standby Mode + SF" together with a multimedia
      work load and flood ping without packet drop.
      Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      63cd91df
    • Magnus Damm's avatar
      sh: rework SuperH Mobile sleep code exception handling · 309214af
      Magnus Damm authored
      This patch updates the exception handling in the sleep code
      for SuperH Mobile. With the patch applied the sleep code
      always rewrites the VBR and resumes from the exception vector,
      re-initializes hardware and jumps straight to the original
      interrupt vector.
      
      Tested on sh7722 and sh7724 with "Sleep Mode", "Sleep Mode + SF"
      and "Software Standby Mode + SF" with CONFIG_SUSPEND.
      Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      309214af
  2. 16 Aug, 2009 2 commits
    • Matt Fleming's avatar
      sh: Add support for DWARF GNU extensions · cd7246f0
      Matt Fleming authored
      Also, remove the "fix" to DW_CFA_def_cfa_register where we reset the
      frame's cfa_offset to 0. This action is incorrect when handling
      DW_CFA_def_cfa_register as the DWARF spec specifically states that the
      previous contents of cfa_offset should be used with the new
      register. The reason that I thought cfa_offset should be reset to 0 was
      because it was being assigned a bogus value prior to executing the
      DW_CFA_def_cfa_register op. It turns out that the bogus cfa_offset value
      came from interpreting .cfi_escape pseudo-ops (those used by the GNU
      extensions) as CFA_DW_def_cfa ops.
      Signed-off-by: default avatarMatt Fleming <matt@console-pimps.org>
      cd7246f0
    • Matt Fleming's avatar
      sh: Try again at getting the initial return address for an unwind · b955873b
      Matt Fleming authored
      The previous hack for calculating the return address for the first frame
      we unwind (dwarf_unwinder_dump) didn't always work. The problem was that
      it assumed once it read the rule for calculating the return address,
      there would be no new rules for calculating it. This isn't true because
      the way in which the CFA is calculated can change as you progress
      through a function and the return address is figured out using the
      CFA. Therefore, the way to calculate the return address can change.
      
      So, instead of using some offset from the beginning of
      dwarf_unwind_stack which is just a flakey approach, and instead of
      executing instructions from the FDE until the return address is setup,
      we now figure out the pc in dwarf_unwind_stack() just before we call
      dwarf_cfa_execute_insns().
      Signed-off-by: default avatarMatt Fleming <matt@console-pimps.org>
      b955873b
  3. 15 Aug, 2009 6 commits
    • Paul Mundt's avatar
      sh: Merge the _32/_64 variants of arch/sh/kernel/Makefile. · 38f9ddf4
      Paul Mundt authored
      This uses the BITS export as per x86 in order to allow the same Makefile
      to be used.
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      38f9ddf4
    • Paul Mundt's avatar
      Merge branch 'sh/stable-updates' · 60e0a4c7
      Paul Mundt authored
      60e0a4c7
    • Magnus Damm's avatar
      sh: sh7724 ddr self-refresh changes · 237674e0
      Magnus Damm authored
      This patch updates the SuperH Mobile sleep assembly code with
      support for DBSC memory controller found in the sh7724 processor.
      
      Without this fix the memory hooked up to the sh7724 processor
      will never enter self-refresh mode before suspending to ram. The
      effect of this is that the memory contents most likeley will be
      lost upon resume which may or may not be what you want.
      Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      237674e0
    • Magnus Damm's avatar
      sh: use in-soc KEYSC on se7724 · 9747e78b
      Magnus Damm authored
      This patch updates the Solution Engine 7724 board code to use
      in-SoC KEYSC resources for the keyboard platform device. Using
      the in-SoC key scan controller fixes a crash-during-resume issue.
      
      Without this patch the KEYSC hardware block located in the board
      specific FPGA is used together with an external IRQ which is
      routed through the FPGA and handled by some board specific demux
      code. This board specific FPGA interrupt code does not implement
      desc->set_wake() so the enable_irq_wake() call in the sh_keysc
      driver will fail at suspend-to-ram time and the disable_irq_wake()
      will bomb out when resuming.
      
      Changing the platform data to use the in-SoC KEYSC hardware makes
      the se7724 board support code less special which is a good thing.
      Also, the board specific KEYSC pin setup code selects in-SoC pin
      functions already which makes the current FPGA platform device data
      look like a typo.
      Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      9747e78b
    • Magnus Damm's avatar
      sh: CMT suspend/resume · f6431732
      Magnus Damm authored
      This patch updates the SuperH CMT driver with suspend and resume
      callbacks for the suspend-to-ram case. This patch stops the CMT
      channel at suspend time to avoid unwanted wake up events.
      Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      f6431732
    • Magnus Damm's avatar
      sh: skip disabled LCDC channels · 21bc1f02
      Magnus Damm authored
      This patch updates the SuperH Mobile LCDC driver to skip
      over disabled channels. Without this patch suspend-to-ram
      operation will crash if deferred io is enabled.
      Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      21bc1f02
  4. 14 Aug, 2009 7 commits
  5. 13 Aug, 2009 22 commits