aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Stein <alexander.stein@systec-electronic.com>2017-01-30 06:35:28 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-02-09 02:08:25 -0500
commit20658b3df8b98cbdc433c824730471160a087afb (patch)
treeef85c2d2a6f6d9795d014a36101dd2b1d2c69c5d
parent7396685a1bca323b96fd79b836ae22b7569d7068 (diff)
pinctrl: baytrail: Add missing spinlock usage in byt_gpio_irq_handler
commit cdca06e4e85974d8a3503ab15709dbbaf90d3dd1 upstream. According to VLI64 Intel Atom E3800 Specification Update (#329901) concurrent read accesses may result in returning 0xffffffff and write accesses may be dropped silently. To workaround all accesses must be protected by locks. Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/pinctrl/intel/pinctrl-baytrail.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c
index 079015385fd8..7f2263d61063 100644
--- a/drivers/pinctrl/intel/pinctrl-baytrail.c
+++ b/drivers/pinctrl/intel/pinctrl-baytrail.c
@@ -1612,7 +1612,9 @@ static void byt_gpio_irq_handler(struct irq_desc *desc)
1612 continue; 1612 continue;
1613 } 1613 }
1614 1614
1615 raw_spin_lock(&vg->lock);
1615 pending = readl(reg); 1616 pending = readl(reg);
1617 raw_spin_unlock(&vg->lock);
1616 for_each_set_bit(pin, &pending, 32) { 1618 for_each_set_bit(pin, &pending, 32) {
1617 virq = irq_find_mapping(vg->chip.irqdomain, base + pin); 1619 virq = irq_find_mapping(vg->chip.irqdomain, base + pin);
1618 generic_handle_irq(virq); 1620 generic_handle_irq(virq);