1. 02 11月, 2009 2 次提交
    • 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
    • P
      sh: intc: dynamic IRQ support. · 1ce7b039
      Paul Mundt 提交于
      This adds support for dynamic IRQ allocation/deallocation for all parts
      using the SH-style vectored IRQs. While this is not inherently
      INTC-specific, the INTC code is the main tie-in for vectored IRQ
      registration, and is the only place that a full view of the utilized
      vector map is possible.
      
      The implementation is fairly straightforward, implementing a flat IRQ map
      where each registered vector is reserved, allowing us to scan for holes
      and dynamically wire up IRQs lazily later on in the boot stage. This
      piggybacks on top of sparseirq in order to make the best use of the
      available vector space.
      
      Dynamic IRQs can be used for any number of things, ranging from MSI in
      the SH-X3 PCIe case down to demux vectors for board FPGAs and system
      controllers that presently allocate an arbitrary range. In the latter
      case, this also allows those platforms to use sparseirq without blowing
      up, which brings us one step closer to enabling sparseirq as the default
      for all platform and CPU combinations.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      1ce7b039
  2. 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
  3. 31 8月, 2009 1 次提交
  4. 24 8月, 2009 2 次提交
  5. 12 6月, 2009 1 次提交
  6. 11 6月, 2009 1 次提交
    • P
      sh: Tie sparseirq in to Kconfig. · 54ff328b
      Paul Mundt 提交于
      Now that the dependent patches are merged, we are ready to enable
      sparseirq support. This simply adds the Kconfig option, and then converts
      from the _cpu to the _node allocation routines to follow the upstream
      sparseirq API changes.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      54ff328b
  7. 22 5月, 2009 2 次提交
    • P
      sh: Wrap irq_to_desc_alloc_cpu() around CONFIG_SPARSE_IRQ temporarily. · 2f3ed17e
      Paul Mundt 提交于
      irq_to_desc_alloc_cpu() has been renamed to irq_to_desc_alloc_node() in
      -next, but as we can not presently enable SPARSE_IRQ without the early
      irq_desc alloc patch, protect it with an ifdef until the interface has
      settled and we are ready to enable it system-wide.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      2f3ed17e
    • P
      sh: irq: Teach ipr and intc about dynamically allocating irq_descs. · 05ff3004
      Paul Mundt 提交于
      This hooks in irq_to_desc_alloc_cpu() to the necessary code paths in the
      intc and ipr controller registration paths. As these are the primary call
      paths for all SH CPUs, this alone will make all CPUs sparse IRQ ready.
      
      There is the added benefit now that each CPU contains specific IPR and
      INTC tables, so only the vectors with interrupt sources backing them will
      ever see an irq_desc instantiation. This effectively packs irq_desc
      down to match the CPU, rather than padding NR_IRQS out to cover the valid
      vector range.
      
      Boards with extra sources will still have to fiddle with the nr_irqs
      setting, but they can continue doing so through the machvec as before.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      05ff3004
  8. 06 4月, 2009 1 次提交
  9. 02 4月, 2009 2 次提交
  10. 06 3月, 2009 1 次提交
  11. 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
  12. 01 10月, 2008 2 次提交
  13. 10 9月, 2008 1 次提交
  14. 28 7月, 2008 1 次提交
  15. 08 5月, 2008 3 次提交
  16. 28 1月, 2008 1 次提交
  17. 21 9月, 2007 6 次提交
  18. 20 7月, 2007 2 次提交
    • M
      sh: intc - improve group support · 680c4598
      Magnus Damm 提交于
      This patch improves intc group support, ie it makes it possible to
      group interrupts together and mask / unmask the entire group. This
      also works with priorities, so setting a priority for an entire group
      is also possible. This patch is needed to properly support certain
      processors such as the 7780.
      
      Fixes for NULL pointers in DECLARE_INTC_DESC() are also included.
      Signed-off-by: NMagnus Damm <damm@igel.co.jp>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      680c4598
    • 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