Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 10 Dec 2014 16:38:57 +0000 (08:38 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 10 Dec 2014 16:38:57 +0000 (08:38 -0800)
Pull irq core updates from Thomas Gleixner:
 "This is the first (boring) part of irq updates:

   - support for big endian I/O accessors in the generic irq chip

   - cleanup of brcmstb/bcm7120 drivers so they can be reused for non
     ARM SoCs

   - the usual pile of fixes and updates for the various ARM irq chips"

* 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (25 commits)
  irqchip: dw-apb-ictl: Add PM support
  irqchip: dw-apb-ictl: Enable IRQ_GC_MASK_CACHE_PER_TYPE
  irqchip: dw-apb-ictl: Always use use {readl|writel}_relaxed
  ARM: orion: convert the irq_reg_{readl,writel} calls to the new API
  irqchip: atmel-aic: Add missing entry for rm9200 irq fixups
  irqchip: atmel-aic: Rename at91sam9_aic_irq_fixup for naming consistency
  irqchip: atmel-aic: Add specific irq fixup function for sam9g45 and sam9rl
  irqchip: atmel-aic: Add irq fixups for at91sam926x SoCs
  irqchip: atmel-aic: Add irq fixup for RTT block
  irqchip: brcmstb-l2: Convert driver to use irq_reg_{readl,writel}
  irqchip: bcm7120-l2: Convert driver to use irq_reg_{readl,writel}
  irqchip: bcm7120-l2: Decouple driver from brcmstb-l2
  irqchip: bcm7120-l2: Extend driver to support 64+ bit controllers
  irqchip: bcm7120-l2: Use gc->mask_cache to simplify suspend/resume functions
  irqchip: bcm7120-l2: Fix missing nibble in gc->unused mask
  irqchip: bcm7120-l2: Make sure all register accesses use base+offset
  irqchip: bcm7120-l2, brcmstb-l2: Remove ARM Kconfig dependency
  irqchip: bcm7120-l2: Eliminate bad IRQ check
  irqchip: brcmstb-l2: Eliminate dependency on ARM code
  genirq: Generic chip: Add big endian I/O accessors
  ...

1  2 
arch/arm/mach-bcm/Kconfig
drivers/irqchip/irq-armada-370-xp.c
drivers/irqchip/irq-atmel-aic-common.c
drivers/irqchip/irq-bcm7120-l2.c
drivers/irqchip/irq-brcmstb-l2.c

Simple merge
Simple merge
index 5fb38a2ac2261ca06c5bb338ae044a9ed61dc361,e7c6155b23b814048de958f7a7b338c3cb604a32..8eec8e1201d9dfd349cc7bcb557a0001cdda13c0
@@@ -99,14 -99,20 +99,20 @@@ static int bcm7120_l2_intc_init_one(str
                                        int irq, const __be32 *map_mask)
  {
        int parent_irq;
+       unsigned int idx;
  
        parent_irq = irq_of_parse_and_map(dn, irq);
 -      if (parent_irq < 0) {
 +      if (!parent_irq) {
                pr_err("failed to map interrupt %d\n", irq);
 -              return parent_irq;
 +              return -EINVAL;
        }
  
-       data->irq_map_mask |= be32_to_cpup(map_mask + irq);
+       /* For multiple parent IRQs with multiple words, this looks like:
+        * <irq0_w0 irq0_w1 irq1_w0 irq1_w1 ...>
+        */
+       for (idx = 0; idx < data->n_words; idx++)
+               data->irq_map_mask[idx] |=
+                       be32_to_cpup(map_mask + irq * data->n_words + idx);
  
        irq_set_handler_data(parent_irq, data);
        irq_set_chained_handler(parent_irq, bcm7120_l2_intc_irq_handle);
index 14691a4cb84cdf82fb38eefc0081a07460efae7b,4aa653a0ac72205788f6be0f83b20000d0a7faaa..313c2c64498a2753ff0340ae5e5905ac2bca8ce8
@@@ -131,13 -135,13 +135,13 @@@ int __init brcmstb_l2_intc_of_init(stru
        }
  
        /* Disable all interrupts by default */
-       __raw_writel(0xffffffff, data->base + CPU_MASK_SET);
-       __raw_writel(0xffffffff, data->base + CPU_CLEAR);
+       writel(0xffffffff, data->base + CPU_MASK_SET);
+       writel(0xffffffff, data->base + CPU_CLEAR);
  
        data->parent_irq = irq_of_parse_and_map(np, 0);
 -      if (data->parent_irq < 0) {
 +      if (!data->parent_irq) {
                pr_err("failed to find parent interrupt\n");
 -              ret = data->parent_irq;
 +              ret = -EINVAL;
                goto out_unmap;
        }