regmap: irq: Only update mask bits when doing initial mask
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 1 Aug 2012 19:29:14 +0000 (20:29 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sat, 4 Aug 2012 11:13:53 +0000 (12:13 +0100)
Don't write the full register, it's possible there's bits other than the
masks in the same register which we shouldn't be changing.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Tested-by: Stephen Warren <swarren@wwwdotorg.org>
drivers/base/regmap/regmap-irq.c

index c7e5b18f4edc9484d65e62fc1c613e6dd1760a7d..4a52743b60cd89e04d5c3fc19ae6a580493f0f20 100644 (file)
@@ -306,7 +306,8 @@ int regmap_add_irq_chip(struct regmap *map, int irq, int irq_flags,
                d->mask_buf[i] = d->mask_buf_def[i];
                reg = chip->mask_base +
                        (i * map->reg_stride * d->irq_reg_stride);
-               ret = regmap_write(map, reg, d->mask_buf[i]);
+               ret = regmap_update_bits(map, reg,
+                                        d->mask_buf[i], d->mask_buf[i]);
                if (ret != 0) {
                        dev_err(map->dev, "Failed to set masks in 0x%x: %d\n",
                                reg, ret);
This page took 0.025312 seconds and 5 git commands to generate.