From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Wed, 10 Dec 2014 16:38:57 +0000 (-0800)
Subject: Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git... 
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=ecb50f0afd35a51ef487e8a54b976052eb03d729;p=openwrt%2Fstaging%2Fblogic.git

Merge branch 'irq-core-for-linus' of git://git./linux/kernel/git/tip/tip

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
  ...
---

ecb50f0afd35a51ef487e8a54b976052eb03d729
diff --cc drivers/irqchip/irq-bcm7120-l2.c
index 5fb38a2ac226,e7c6155b23b8..8eec8e1201d9
--- a/drivers/irqchip/irq-bcm7120-l2.c
+++ b/drivers/irqchip/irq-bcm7120-l2.c
@@@ -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);
diff --cc drivers/irqchip/irq-brcmstb-l2.c
index 14691a4cb84c,4aa653a0ac72..313c2c64498a
--- a/drivers/irqchip/irq-brcmstb-l2.c
+++ b/drivers/irqchip/irq-brcmstb-l2.c
@@@ -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;
  	}