October 2017
Intermediate to advanced
586 pages
14h 8m
English
regmap_update_bits is a three-in-one function. Its prototype is as follows:
int regmap_update_bits(struct regmap *map, unsigned int reg,
unsigned int mask, unsigned int val)
It performs a read/modify/write cycle on the register map. It is a wrapper of _regmap_update_bits, which looks as follows:
static int _regmap_update_bits(struct regmap *map,
unsigned int reg, unsigned int mask,
unsigned int val, bool *change)
{
int ret;
unsigned int tmp, orig;
ret = _regmap_read(map, reg, &orig);
if (ret != 0)
return ret;
tmp = orig& ~mask;
tmp |= val & mask;
if (tmp != orig) {
ret = _regmap_write(map, reg, tmp);
*change = true;
} else {
*change = false;
}
return ret;
}
This way, bits you need to update must be set to