regmap_write ->_regmap_raw_write -->regcache_write first and than use map->bus->write to wirte i2c or spi But if the i2c or spi transfer failed, But the cache is updated, So if I use regmap_read will get the cache data which is not the real register value.
I think the regmap should handle that gracefully, and may be my modify is not the best way. But as I described is how to slove that problem. Elaine Zhang (1): regmap: drop cache if the bus transfer error drivers/base/regmap/regmap.c | 2 ++ 1 file changed, 2 insertions(+) -- 1.9.1