1. 09 11月, 2010 1 次提交
  2. 26 10月, 2010 1 次提交
  3. 05 10月, 2010 4 次提交
    • P
      sh: intc: Split up the INTC code. · 2be6bb0c
      Paul Mundt 提交于
      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: NPaul Mundt <lethal@linux-sh.org>
      2be6bb0c
    • P
      sh: intc: Handle early lookups of subgroup IRQs. · d74310d3
      Paul Mundt 提交于
      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: NPaul Mundt <lethal@linux-sh.org>
      d74310d3
    • P
      sh: intc: Support virtual mappings for IRQ subgroups. · c1e30ad9
      Paul Mundt 提交于
      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: NPaul Mundt <lethal@linux-sh.org>
      c1e30ad9
    • P
      sh: intc: Implement reverse mapping for IRQs to per-controller IDs. · 44629f57
      Paul Mundt 提交于
      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: NPaul Mundt <lethal@linux-sh.org>
      44629f57
  4. 02 10月, 2010 1 次提交
  5. 15 4月, 2010 1 次提交
    • P
      sh: intc: IRQ auto-distribution support. · dc825b17
      Paul Mundt 提交于
      This implements support for hardware-managed IRQ balancing as implemented
      by SH-X3 cores (presently only hooked up for SH7786, but can probably be
      carried over to other SH-X3 cores, too).
      
      CPUs need to specify their distribution register along with the mask
      definitions, as these follow the same format. Peripheral IRQs that don't
      opt out of balancing will be automatically distributed at the whim of the
      hardware block, while each CPU needs to verify whether it is handling the
      IRQ or not, especially before clearing the mask.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      dc825b17
  6. 13 4月, 2010 1 次提交
    • P
      sh: intc: userimask support. · 43b8774d
      Paul Mundt 提交于
      This adds support for hardware-assisted userspace irq masking for
      special priority levels. Due to the SR.IMASK interactivity, only some
      platforms implement this in hardware (including but not limited to
      SH-4A interrupt controllers, and ARM-based SH-Mobile CPUs). Each CPU
      needs to wire this up on its own, for now only SH7786 is wired up as an
      example.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      43b8774d
  7. 19 3月, 2010 2 次提交
  8. 16 2月, 2010 1 次提交
  9. 09 2月, 2010 2 次提交
  10. 02 11月, 2009 1 次提交
    • P
      sh: intc: Handle legacy IRQ reservation in vector map. · 45b9deaf
      Paul Mundt 提交于
      Different CPUs will have different starting vectors, with varying
      amounts of reserved or unusable vector space prior to the first slot.
      This introduces a legacy vector reservation system that inserts itself in
      between the CPU vector map registration and the platform specific IRQ
      setup. This works fine in practice as the only new vectors that boards
      need to establish on their own should be dynamically allocated rather
      than arbitrarily assigned. As a plus, this also makes all of the
      converted platforms sparseirq ready.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      45b9deaf
  11. 27 10月, 2009 1 次提交
    • P
      sh: intc: Make ack_regs generally available. · 9b798d50
      Paul Mundt 提交于
      Currently this is ifdef'ed under SH-3 and SH-4A, but there are other CPUs
      that will need this as well. Given the size of the existing data
      structures, this doesn't cause any additional cacheline utilization for
      the existing users, so has no direct impact on the data structures.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      9b798d50
  12. 24 8月, 2009 1 次提交
  13. 27 2月, 2009 1 次提交
    • M
      sh: multiple vectors per irq - base · bdaa6e80
      Magnus Damm 提交于
      Instead of keeping the single vector -> single linux irq mapping
      we extend the intc code to support merging of vectors to a single
      linux irq. This helps processors such as sh7750, sh7780 and sh7785
      which have more vectors than masking ability. With this patch in
      place we can modify the intc tables to use one irq per maskable
      irq source. Please note the following:
      
       - If multiple vectors share the same enum then only the
         first vector will be available as a linux irq.
      
       - Drivers may need to be rewritten to get pending irq
         source from the hardware block instead of irq number.
      
      This patch together with the sh7785 specific intc tables solves
      DMA controller irq issues related to buggy interrupt masking.
      Reported-by: NYoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
      Signed-off-by: NMagnus Damm <damm@igel.co.jp>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      bdaa6e80
  14. 01 10月, 2008 1 次提交
  15. 29 7月, 2008 1 次提交
  16. 28 7月, 2008 1 次提交
  17. 08 5月, 2008 2 次提交
  18. 28 1月, 2008 1 次提交
  19. 21 9月, 2007 10 次提交
  20. 20 7月, 2007 5 次提交
    • M
      sh: intc - add support for SH7750 and its variants · 56386f64
      Magnus Damm 提交于
      This patch converts the cpu specific 7750 setup code to use the
      new intc controller. Many new vectors are added and multiple
      processor variants including 7091, 7750, 7750s, 7750r, 7751 and
      7751r should all have the correct vectors hooked up.
      
      IRLM interrupts can be enabled using ipr_irq_enable_irlm() which
      now is marked as __init.
      Signed-off-by: NMagnus Damm <damm@igel.co.jp>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      56386f64
    • M
      sh: intc - add support for 7780 · 39c7aa9e
      Magnus Damm 提交于
      This patch converts the cpu specific 7780 setup code to use the
      new intc controller. Many new vectors are added and also support for
      external interrupt sense configuration. So with this patch it is now
      possible to configure external interrupt pins as edge or level
      triggered using set_irq_type().
      
      No external interrupts are registered by default.
      Use plat_irq_setup_pins() to select between IRQ or IRL mode.
      
      This patch also fixes the Alarm IRQ for the RTC.
      Signed-off-by: NMagnus Damm <damm@igel.co.jp>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      39c7aa9e
    • M
      sh: IPR/INTC2 IRQ setup consolidation. · 90015c89
      Magnus Damm 提交于
      This patch unifies the cpu specific interrupt setup functions for
      interrupt controller blocks such as ipr, intc2 and intc. There is no
      point in having separate functions for each interrupt controller, so
      let's clean this up.
      Signed-off-by: NMagnus Damm <damm@igel.co.jp>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      90015c89
    • M
      sh: intc - add support for 7722 processor · 1b06428e
      Magnus Damm 提交于
      This patch converts the cpu specific 7722 setup code to use the
      new intc controller. Many new vectors are added and also support
      for external interrupt sense configuration. So with this patch
      it is now possible to configure external interrupt pins as edge
      or level triggered using set_irq_type().
      Signed-off-by: NMagnus Damm <damm@igel.co.jp>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      1b06428e
    • M
      sh: intc - shared IPR and INTC2 controller · 02ab3f70
      Magnus Damm 提交于
      This is the second version of the shared interrupt controller patch
      for the sh architecture, fixing up handling of intc_reg_fns[].
      
      The three main advantages with this controller over the existing
      ones are:
      
      	- Both priority (ipr) and bitmap (intc2) registers are
      	  supported
      	- External pin sense configuration is supported, ie edge
      	  vs level triggered
      	- CPU/Board specific code maps 1:1 with datasheet for
      	  easy verification
      
      This controller can easily coexist with the current IPR and INTC2
      controllers, but the idea is that CPUs/Boards should be moved over
      to this controller over time so we have a single code base to
      maintain.
      Signed-off-by: NMagnus Damm <damm@igel.co.jp>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      02ab3f70
  21. 15 6月, 2007 1 次提交
    • M
      sh: rework ipr code · 68abdbbb
      Magnus Damm 提交于
      This patch reworks the ipr code by grouping the offset array together
      with the ipr_data structure in a new data structure called ipr_desc.
      This new structure also contains the name of the controller in struct
      irq_chip. The idea behind putting struct irq_chip in there is that we
      can use offsetof() to locate the base addresses in the irq_chip
      callbacks. This strategy has much in common with the recently merged
      intc2 code.
      
      One logic change has been made - the original ipr code enabled the
      interrupts by default but with this patch they are all disabled by
      default.
      Signed-off-by: NMagnus Damm <damm@igel.co.jp>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      68abdbbb