From: Mark Brown Date: Fri, 28 Mar 2014 11:50:43 +0000 (+0000) Subject: Merge remote-tracking branches 'regmap/topic/cache', 'regmap/topic/irq', 'regmap... X-Git-Tag: v3.15-rc1~149^2 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=6012b1f3424c4dc36369697845a9ca699887b0c7;p=linux.git Merge remote-tracking branches 'regmap/topic/cache', 'regmap/topic/irq', 'regmap/topic/lock', 'regmap/topic/mmio', 'regmap/topic/nodev', 'regmap/topic/parse-val' and 'regmap/topic/patch' into regmap-next --- 6012b1f3424c4dc36369697845a9ca699887b0c7 diff --cc drivers/base/regmap/regmap.c index 92d9b79ff93e,6a19515f8a45,6a19515f8a45,35077374f38b,6a19515f8a45,43065ceff90f,4b2ed0c9e80d,c69bbc06dfbb..d0a072463a04 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@@@@@@@@ -2188,34 -2185,34 -2185,34 -2189,34 -2185,34 -2200,34 -2185,34 -2390,28 +2412,28 @@@@@@@@@ int regmap_register_patch(struct regma num_regs)) return 0; --- --- map->lock(map->lock_arg); --- --- --- --- bypass = map->cache_bypass; --- --- --- --- map->cache_bypass = true; --- --- map->async = true; --- --- --- --- /* Write out first; it's useful to apply even if we fail later. */ --- --- for (i = 0; i < num_regs; i++) { --- --- ret = _regmap_write(map, regs[i].reg, regs[i].def); --- --- if (ret != 0) { --- --- dev_err(map->dev, "Failed to write %x = %x: %d\n", --- --- regs[i].reg, regs[i].def, ret); --- --- goto out; --- --- } --- --- } --- --- + p = krealloc(map->patch, + sizeof(struct reg_default) * (map->patch_regs + num_regs), + GFP_KERNEL); + if (p) { + memcpy(p + map->patch_regs, regs, num_regs * sizeof(*regs)); + map->patch = p; + map->patch_regs += num_regs; + } else { --- --- ret = -ENOMEM; +++ ++++ return -ENOMEM; + } + +++ +++ map->lock(map->lock_arg); +++ +++ +++ +++ bypass = map->cache_bypass; +++ +++ +++ +++ map->cache_bypass = true; +++ +++ map->async = true; +++ +++ - /* Write out first; it's useful to apply even if we fail later. */ - for (i = 0; i < num_regs; i++) { - ret = _regmap_write(map, regs[i].reg, regs[i].def); - if (ret != 0) { - dev_err(map->dev, "Failed to write %x = %x: %d\n", - regs[i].reg, regs[i].def, ret); - goto out; - } - } +++++++ ret = _regmap_multi_reg_write(map, regs, num_regs); +++++++ if (ret != 0) +++++++ goto out; +++ +++ - p = krealloc(map->patch, - sizeof(struct reg_default) * (map->patch_regs + num_regs), - GFP_KERNEL); - if (p) { - memcpy(p + map->patch_regs, regs, num_regs * sizeof(*regs)); - map->patch = p; - map->patch_regs += num_regs; - } else { - ret = -ENOMEM; - } - out: map->async = false; map->cache_bypass = bypass;