1. 15 Oct, 2010 1 commit
    • Paul Mundt's avatar
      sh: clkfwk: support clock remapping. · 28085bc5
      Paul Mundt authored
      This implements support for ioremapping of register windows that
      encapsulate clock control registers used by a struct clk, with
      transparent sibling inheritance.
      
      Root clocks at the top of a given topology often encapsulate the entire
      register space of all of their sibling clocks, so this mapping can be
      done once and handed down. A given clock enable/disable case maps out to
      a single bit in a shared register, so this prevents creating multiple
      overlapping mappings.
      
      The mapping case breaks down in to a couple of different situations:
      
      	- Sibling clocks without a specific mapping.
      	- Root clocks without a specific mapping.
      	- Any of sibling/root clocks with a specific mapping.
      
      Sibling clocks with no specified mapping will grovel up the clock chain
      and install the root clock mapping unconditionally at registration time.
      
      Root clocks without their own mappings have a dummy BSS-initialized
      mapping inserted that is handed down the chain just like any other
      mapping. This permits all of the sibling clock ops to read/write using
      the mapping offsets without any special configuration, enabling them to
      not care whether access ultimately goes through translatable or
      untranslatable memory.
      
      Any clock with its own mapping will have the window initialized at
      registration time and be ready for use by its clock ops. Failure to
      establish the mapping will prevent registration, so no additional sanity
      checks are needed. Sibling clocks that double as parents for the moment
      will not propagate their mapping down, but this is easily tunable if the
      need arises.
      
      All clock mappings are kref refcounted, with each instance of mapping
      inheritance incrementing the refcount.
      Tested-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      28085bc5
  2. 14 Oct, 2010 3 commits
  3. 13 Oct, 2010 8 commits
  4. 12 Oct, 2010 2 commits
  5. 11 Oct, 2010 1 commit
  6. 06 Oct, 2010 5 commits
  7. 05 Oct, 2010 3 commits
    • Paul Mundt's avatar
      sh: Wire up INTC subgroup splitting for SH7786 SCIF1. · d91ddc25
      Paul Mundt authored
      SH7786 is the big user for subgroup splitting, mostly for the PCIe block,
      but those will follow later. For now we simply split up SCIF1, as used by
      the serial console on SDK7786 and others.
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      d91ddc25
    • Paul Mundt's avatar
      sh: intc: Split up the INTC code. · 2be6bb0c
      Paul Mundt authored
      This splits up the sh intc core in to something more vaguely resembling
      a subsystem. Most of the functionality was alread fairly well
      compartmentalized, and there were only a handful of interdependencies
      that needed to be resolved in the process.
      
      This also serves as future-proofing for the genirq and sparseirq rework,
      which will make some of the split out functionality wholly generic,
      allowing things to be killed off in place with minimal migration pain.
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      2be6bb0c
    • Paul Mundt's avatar
      sh: intc: Handle early lookups of subgroup IRQs. · d74310d3
      Paul Mundt authored
      If lookups happen while the radix node still points to a subgroup
      mapping, an IRQ hasn't yet been made available for the specified id, so
      error out accordingly. Once the slot is replaced with an IRQ mapping and
      the tag is discarded, lookup can commence as normal.
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      d74310d3
  8. 04 Oct, 2010 2 commits
    • Paul Mundt's avatar
      sh: intc: Support virtual mappings for IRQ subgroups. · c1e30ad9
      Paul Mundt authored
      Many interrupts that share a single mask source but are on different
      hardware vectors will have an associated register tied to an INTEVT that
      denotes the precise cause for the interrupt exception being triggered.
      
      This introduces the concept of IRQ subgroups in the intc core, where
      a virtual IRQ map is constructed for each of the pre-defined cause bits,
      and a higher level chained handler takes control of the parent INTEVT.
      This enables CPUs with heavily muxed IRQ vectors (especially across
      disjoint blocks) to break things out in to a series of managed chained
      handlers while being able to dynamically lookup and adopt the IRQs
      created for them.
      
      This is largely an opt-in interface, requiring CPUs to manually submit
      IRQs for subgroup splitting, in addition to providing identifiers in
      their enum maps that can be used for lazy lookup via the radix tree.
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      c1e30ad9
    • Paul Mundt's avatar
      sh: intc: Implement reverse mapping for IRQs to per-controller IDs. · 44629f57
      Paul Mundt authored
      This implements a scheme roughly analogous to the PowerPC virtual to
      hardware IRQ mapping, which we use for IRQ to per-controller ID mapping.
      This makes it possible for drivers to use the IDs directly for lookup
      instead of hardcoding the vector.
      
      The main motivation for this work is as a building block for dynamically
      allocating virtual IRQs for demuxing INTC events sharing a single INTEVT
      in addition to a common masking source.
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      44629f57
  9. 03 Oct, 2010 7 commits
  10. 02 Oct, 2010 4 commits
  11. 01 Oct, 2010 3 commits
  12. 30 Sep, 2010 1 commit
    • Magnus Damm's avatar
      sh: boot kernel with SR.BL set · 68a1aed7
      Magnus Damm authored
      Update the SH kernel to keep SR.BL set until the VBR
      register has been initialized. Useful to allow boot
      of the kernel even though exceptions are pending.
      
      Without this patch there is a window of time when
      exceptions such as NMI are enabled but no exception
      handlers are installed.
      
      This patch modifies both the zImage loader and the
      actual kernel to boot with BL=1, but the zImage
      loader is modfied in such a way that the init_sr
      value is unchanged to not break the zImage loader
      provided by kexec.
      
      Tested on sh7724 Ecovec and on the SH4AL-DSP core
      included in sh7372.
      Signed-off-by: default avatarMagnus Damm <damm@opensource.se>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      68a1aed7