static inline int max8971_masked_write(struct max8971_io *io, u8 addr, u8 mask, u8 shift, u8 val) { u8 buf = 0; int rc; if (unlikely(!mask)) { /* no actual access */ rc = 0; goto out; } rc = max8971_read(io, addr, &buf); if (likely(!IS_ERR_VALUE(rc))) rc = max8971_write(io, addr, __BITS_SET(buf, mask, shift, val)); out: return rc; }
static inline int max8971_masked_read(struct max8971_io *io, u8 addr, u8 mask, u8 shift, u8 *val) { u8 buf = 0; int rc; if (unlikely(!mask)) { /* */ *val = 0; rc = 0; goto out; } rc = max8971_read(io, addr, &buf); if (likely(!IS_ERR_VALUE(rc))) *val = __BITS_GET(buf, mask, shift); out: return rc; }