static int bq2429x_update_bits(struct bq2429x *bq, u8 reg, u8 mask, u8 data) { int ret; u8 tmp; ret = bq2429x_read_byte(bq, &tmp, reg); if (ret) return ret; tmp &= ~mask; tmp |= data & mask; return bq2429x_write_byte(bq, reg, tmp); }
/********************************************************** * Function: bq2429x_write_mask * Discription: register write mask interface * Parameters: reg:register name * MASK:mask value of the function * SHIFT:shift number of the function * value:register value * return value: 0-sucess or others-fail **********************************************************/ static int bq2429x_write_mask(u8 reg, u8 MASK, u8 SHIFT, u8 value) { int ret = 0; u8 val = 0; ret = bq2429x_read_byte(reg,&val); if(ret < 0) return ret; val &= ~MASK; val |= ((value << SHIFT) & MASK); ret = bq2429x_write_byte(reg,val); return ret; }