brcm63xx: fix external IRQs
[openwrt/staging/yousong.git] / target / linux / brcm63xx / patches-4.4 / 321-irqchip-add-support-for-bcm6345-style-external-inter.patch
index 4f4d7bd2ea821d32c2e13b1fc843787501ced876..252645695ffd8df2ba9405d7d055566baa60e40e 100644 (file)
@@ -148,7 +148,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +
 +      raw_spin_lock(&priv->lock);
 +      reg = __raw_readl(priv->reg);
-+      reg |= hwirq << (EXTIRQ_CFG_CLEAR * priv->shift);
++      reg |= 1 << (hwirq + EXTIRQ_CFG_CLEAR * priv->shift);
 +      __raw_writel(reg, priv->reg);
 +      raw_spin_unlock(&priv->lock);
 +}
@@ -161,7 +161,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +
 +      raw_spin_lock(&priv->lock);
 +      reg = __raw_readl(priv->reg);
-+      reg &= ~(hwirq << (EXTIRQ_CFG_MASK * priv->shift));
++      reg &= ~(1 << (hwirq + EXTIRQ_CFG_MASK * priv->shift));
 +      __raw_writel(reg, priv->reg);
 +      raw_spin_unlock(&priv->lock);
 +}
@@ -174,7 +174,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +
 +      raw_spin_lock(&priv->lock);
 +      reg = __raw_readl(priv->reg);
-+      reg |= hwirq << (EXTIRQ_CFG_MASK * priv->shift);
++      reg |= 1 << (hwirq + EXTIRQ_CFG_MASK * priv->shift);
 +      __raw_writel(reg, priv->reg);
 +      raw_spin_unlock(&priv->lock);
 +}
@@ -222,17 +222,17 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +      reg = __raw_readl(priv->reg);
 +
 +      if (levelsense)
-+              reg |= hwirq << (EXTIRQ_CFG_LEVELSENSE * priv->shift);
++              reg |= 1 << (hwirq + EXTIRQ_CFG_LEVELSENSE * priv->shift);
 +      else
-+              reg &= ~(hwirq << (EXTIRQ_CFG_LEVELSENSE * priv->shift));
++              reg &= ~(1 << (hwirq + EXTIRQ_CFG_LEVELSENSE * priv->shift));
 +      if (sense)
-+              reg |= hwirq << (EXTIRQ_CFG_SENSE * priv->shift);
++              reg |= 1 << (hwirq + EXTIRQ_CFG_SENSE * priv->shift);
 +      else
-+              reg &= ~(hwirq << (EXTIRQ_CFG_SENSE * priv->shift));
++              reg &= ~(1 << (hwirq + EXTIRQ_CFG_SENSE * priv->shift));
 +      if (bothedge)
-+              reg |= hwirq << (EXTIRQ_CFG_BOTHEDGE * priv->shift);
++              reg |= 1 << (hwirq + EXTIRQ_CFG_BOTHEDGE * priv->shift);
 +      else
-+              reg &= ~(hwirq << (EXTIRQ_CFG_BOTHEDGE * priv->shift));
++              reg &= ~(1 << (hwirq + EXTIRQ_CFG_BOTHEDGE * priv->shift));
 +
 +      __raw_writel(reg, priv->reg);
 +      raw_spin_unlock(&priv->lock);