From: Mark Brown Date: Wed, 1 Aug 2012 19:29:14 +0000 (+0100) Subject: regmap: irq: Only update mask bits when doing initial mask X-Git-Tag: upstream/snapshot3+hdmi~6625^2^3~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0eb46ad0c8d60943c1f46cef795fc537fbffd177;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git regmap: irq: Only update mask bits when doing initial mask 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 Tested-by: Stephen Warren --- diff --git a/drivers/base/regmap/regmap-irq.c b/drivers/base/regmap/regmap-irq.c index c7e5b18..4a52743 100644 --- a/drivers/base/regmap/regmap-irq.c +++ b/drivers/base/regmap/regmap-irq.c @@ -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);