1. 30 8月, 2013 1 次提交
    • B
      irqchip: sirf: move from legacy mode to linear irqdomain · 29eb51a7
      Barry Song 提交于
      the series of patches for irqdomain core in 3.11 has broken sirf
      irq which uses legacy mapping. all users fail in the new kernel
      while setupping irq.
      
      this patch moves to linear irqdomain and drop old legacy irqdomain
      codes since we don't need it any more, and at the same time, it
      also fixes the broken interrupts of sirfsoc in 3.11.
      
      on the other hand, we actually only have 64 interrupt sources for
      prima2 and atlas6, but there are 128 interrupt souces for marco
      which uses GIC. in the legacy codes, sirf gpio also uses legacy
      irqdomain, so to make gpio interrupt mapping not depend on the
      prima2/atlas6/marco an use unified marco,we enlarge prima2/atlas6
      interrupt number to 128. here we don't need this workaround any
      more as sirf gpio also moved to linear mode before. so we move
      SIRFSOC_NUM_IRQS back to 64 too.
      Signed-off-by: NBarry Song <Baohua.Song@csr.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      29eb51a7
  2. 29 8月, 2013 1 次提交
    • N
      drivers: irq-chip: irq-gic: introduce gic_cpu_if_down() · 10d9eb8a
      Nicolas Pitre 提交于
      When processors are about to hit low power states, the assertion of
      standbywfi signal, triggered by the wfi instruction, is essential to
      entering low power modes. If an IRQ is pending on the processor at the
      time wfi is issued, the wfi instruction completes and the processor
      restarts execution without asserting the standbywfi signal. Depending
      on the platform power controller HW this behaviour can be acceptable or
      not; if this behaviour must be prevented software should be provided
      with a way to disable the routing of interrupts to the core IRQ pins.
      
      On systems where raw GIC distributor interrupts are connected to the power
      controller as wake-up events (hence the power controller still senses
      IRQs and can wake up cores upon IRQ pending), the GIC CPU interface can
      be disabled on power down, so that the GIC CPU IF output is gated and wfi
      cannot complete, thereby preventing the standbywfi issue.
      
      This patch adds a simple function to the GIC driver that allows to
      disable the GIC CPU IF from power down procedures.
      Signed-off-by: NNicolas Pitre <nico@linaro.org>
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      [rewrote commit log]
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      10d9eb8a
  3. 21 8月, 2013 1 次提交
    • J
      irq-imgpdc: add ImgTec PDC irqchip driver · b6ef9161
      James Hogan 提交于
      Add irqchip driver for the ImgTec PowerDown Controller (PDC) as found in
      the TZ1090. The PDC has a number of general system wakeup (SysWake)
      interrupts (which would for example be connected to a power button or an
      external peripheral), and a number of peripheral interrupts which can
      also wake the system but are connected straight to specific low-power
      peripherals (such as RTC or Infrared). It has a single interrupt output
      for SysWakes, and individual interrupt outputs for each peripheral.
      
      The driver demuxes the SysWake interrupt line, and passes the peripheral
      interrupts straight through. It also handles the set_wake interrupt
      operation to enable/disable the appropriate wake event bits.
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Reviewed-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Grant Likely <grant.likely@linaro.org>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Rob Landley <rob@landley.net>
      Cc: linux-metag@vger.kernel.org
      Cc: linux-doc@vger.kernel.org
      Cc: devicetree-discuss@lists.ozlabs.org
      b6ef9161
  4. 16 7月, 2013 1 次提交
  5. 15 7月, 2013 1 次提交
    • P
      clocksource+irqchip: delete __cpuinit usage from all related files · 8c37bb3a
      Paul Gortmaker 提交于
      The __cpuinit type of throwaway sections might have made sense
      some time ago when RAM was more constrained, but now the savings
      do not offset the cost and complications.  For example, the fix in
      commit 5e427ec2 ("x86: Fix bit corruption at CPU resume time")
      is a good example of the nasty type of bugs that can be created
      with improper use of the various __init prefixes.
      
      After a discussion on LKML[1] it was decided that cpuinit should go
      the way of devinit and be phased out.  Once all the users are gone,
      we can then finally remove the macros themselves from linux/init.h.
      
      This removes all the drivers/clocksource and drivers/irqchip uses of
      the __cpuinit macros from all C files.
      
      [1] https://lkml.org/lkml/2013/5/20/589
      
      Cc: John Stultz <john.stultz@linaro.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Acked-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      8c37bb3a
  6. 05 7月, 2013 4 次提交
  7. 28 6月, 2013 1 次提交
  8. 26 6月, 2013 2 次提交
  9. 20 6月, 2013 1 次提交
    • S
      irqchip: gic: call gic_cpu_init() as well in CPU_STARTING_FROZEN case · 8b6fd652
      Shawn Guo 提交于
      Commit c0114709 (irqchip: gic: Perform the gic_secondary_init() call via
      CPU notifier) moves gic_secondary_init() that used to be called in
      .smp_secondary_init hook into a notifier call.  But it changes the
      system behavior a little bit.  Before the commit, gic_cpu_init()
      is called not only when kernel brings up the secondary cores but also
      when system resuming procedure hot-plugs the cores back to kernel.
      While after the commit, the function will not be called in the latter
      case, where the 'action' will not be CPU_STARTING but
      CPU_STARTING_FROZEN.  This behavior difference at least causes the
      following suspend/resume regression on imx6q.
      
      $ echo mem > /sys/power/state
      PM: Syncing filesystems ... done.
      PM: Preparing system for mem sleep
      mmc1: card e624 removed
      Freezing user space processes ... (elapsed 0.01 seconds) done.
      Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
      PM: Entering mem sleep
      PM: suspend of devices complete after 5.930 msecs
      PM: suspend devices took 0.010 seconds
      PM: late suspend of devices complete after 0.343 msecs
      PM: noirq suspend of devices complete after 0.828 msecs
      Disabling non-boot CPUs ...
      CPU1: shutdown
      CPU2: shutdown
      CPU3: shutdown
      Enabling non-boot CPUs ...
      CPU1: Booted secondary processor
      INFO: rcu_sched detected stalls on CPUs/tasks: { 1 2 3} (detected by 0, t=2102 jiffies, g=4294967169, c=4294967168, q=17)
      Task dump for CPU 1:
      swapper/1       R running      0     0      1 0x00000000
      Backtrace:
      [<bf895ff4>] (0xbf895ff4) from [<00000000>] (  (null))
      Backtrace aborted due to bad frame pointer <8007ccdc>
      Task dump for CPU 2:
      swapper/2       R running      0     0      1 0x00000000
      Backtrace:
      [<8075dbdc>] (0x8075dbdc) from [<00000000>] (  (null))
      Backtrace aborted due to bad frame pointer <00000002>
      Task dump for CPU 3:
      swapper/3       R running      0     0      1 0x00000000
      Backtrace:
      [<8075dbdc>] (0x8075dbdc) from [<00000000>] (  (null))
      
      Fix the regression by checking 'action' being CPU_STARTING_FROZEN to
      have gic_cpu_init() called for secondary cores when system resumes.
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      Acked-by: NCatalin Marinas <catalin.marinas@arm.com>
      Tested-by: NJoseph Lo <josephl@nvidia.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      8b6fd652
  10. 19 6月, 2013 1 次提交
  11. 18 6月, 2013 1 次提交
  12. 11 6月, 2013 1 次提交
  13. 09 6月, 2013 1 次提交
    • G
      irqchip: Return -EPERM for reserved IRQs · d94ea3f6
      Grant Likely 提交于
      The irqdomain core will report a log message for any attempted map call
      that fails unless the error code is -EPERM. This patch changes the
      Versatile irq controller drivers to use -EPERM because it is normal for
      a subset of the IRQ inputs to be marked as reserved on the various
      Versatile platforms.
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      d94ea3f6
  14. 06 6月, 2013 1 次提交
  15. 03 6月, 2013 1 次提交
  16. 29 4月, 2013 1 次提交
    • A
      irqchip: s3c24xx: add missing __init annotations · bc8fd900
      Arnd Bergmann 提交于
      The s3c24xx_init_intc and s3c2412_init_irq functions are only called
      at init time, and they call functions already marked __init, so they
      should be marked in the same way. This was reported as
      
      WARNING: vmlinux.o(.text+0x19e0b4): Section mismatch in reference from the function s3c2412_init_irq() to the function .init.text:s3c24xx_init_intc.constprop.8()
      The function s3c2412_init_irq() references
      the function __init s3c24xx_init_intc.constprop.8().
      This is often because s3c2412_init_irq lacks a __init
      annotation or the annotation of s3c24xx_init_intc.constprop.8 is wrong.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NHeiko Stuebner <heiko@sntech.de>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      bc8fd900
  17. 20 4月, 2013 5 次提交
    • A
      irqchip: exynos: look up irq using irq_find_mapping · 20adee8f
      Arnd Bergmann 提交于
      Since we want to move to using the linear IRQ domain in the
      future, we cannot rely on the irq numbers to be contiguous
      and need to look up the irq from the hwirq using the domain.
      
      This also turns the bogus comparison with NR_IRQ into a
      more meaningful check to see if the number has a valid mapping.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      20adee8f
    • A
      irqchip: exynos: pass irq_base from platform · 863a08dc
      Arnd Bergmann 提交于
      The platform code knows the IRQ base, while the irqchip driver
      should really not. This is a littly hacky because we still
      hardwire the IRQ base to 160 for the combiner in the DT case,
      when we should really use -1. Removing that line will cause
      a linear IRQ domain to be use, as we should.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      863a08dc
    • A
      irqchip: exynos: localize irq lookup for ATAGS · 92c8e496
      Arnd Bergmann 提交于
      The IRQ_SPI() macro is not available in the driver when building with sparse
      IRQs or multiplatform, so let's move all users of this into one function
      that we can leave out when building DT-only.
      Signed-off-by: NArnd Bergmann <arnd@arnd.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      92c8e496
    • A
      irqchip: exynos: allocate combiner_data dynamically · d34f03d4
      Arnd Bergmann 提交于
      The number of combiners on a given SoC is a platform specific
      constant, and we cannot encode this number on a multiplatform
      kernel since the header file defining it is not available.
      
      Allocating the structure dynamically ends up cleaner anyway
      since we keep all the data local.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      d34f03d4
    • A
      irqchip: exynos: pass max combiner number to combiner_init · 6761dcfe
      Arnd Bergmann 提交于
      We can find out the number of combined IRQs from the device
      tree, but in case of ATAGS boot, the driver currently uses
      hardcoded values based on the SoC type. We can't do that
      in general for a multiplatform kernel, so let's instead pass
      this information from platform code directly in case of
      ATAGS boot.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      6761dcfe
  18. 16 4月, 2013 3 次提交
  19. 13 4月, 2013 1 次提交
  20. 09 4月, 2013 4 次提交
  21. 04 4月, 2013 7 次提交