regmap: Supply ranges to the sync operations
In order to allow us to support partial sync operations add minimum and maximum register arguments to the sync operation and update the rbtree and lzo caches to use this new information. The LZO implementation is obviously not good, we could exit the iteration earlier, but there may be room for more wide reaching optimisation there. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
@@ -331,7 +331,8 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int regcache_lzo_sync(struct regmap *map)
|
||||
static int regcache_lzo_sync(struct regmap *map, unsigned int min,
|
||||
unsigned int max)
|
||||
{
|
||||
struct regcache_lzo_ctx **lzo_blocks;
|
||||
unsigned int val;
|
||||
@@ -339,7 +340,12 @@ static int regcache_lzo_sync(struct regmap *map)
|
||||
int ret;
|
||||
|
||||
lzo_blocks = map->cache;
|
||||
for_each_set_bit(i, lzo_blocks[0]->sync_bmp, lzo_blocks[0]->sync_bmp_nbits) {
|
||||
i = min;
|
||||
for_each_set_bit_from(i, lzo_blocks[0]->sync_bmp,
|
||||
lzo_blocks[0]->sync_bmp_nbits) {
|
||||
if (i > max)
|
||||
continue;
|
||||
|
||||
ret = regcache_read(map, i, &val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
Reference in New Issue
Block a user