static void bq24157_i2c_write_array(struct i2c_client *client, u8 *buf, int size) { int i; for (i = 0; i < size; i += 3) bq24157_i2c_write(client, (u8) (*(buf + i)), (buf + i) + 1); }
static void bq24157_set_command(struct i2c_client *client, int reg, int datum) { int val; u8 data = 0; val = bq24157_i2c_read(client, reg, &data); if (val >= 0) { dev_dbg(&client->dev, "%s : reg(0x%02x): 0x%02x(0x%02x)", __func__, reg, data, datum); if (data != datum) { data = datum; if (bq24157_i2c_write(client, reg, &data) < 0) dev_err(&client->dev, "%s : error!\n", __func__); val = bq24157_i2c_read(client, reg, &data); if (val >= 0) dev_dbg(&client->dev, " => 0x%02x\n", data); } } }
static int bq24157_set_bit(unsigned int reg_num, unsigned char mask, unsigned char bit) { unsigned char data = 0; int ret = 0; ret = bq24157_i2c_read(1, reg_num, &data); if(ret < 0) { printk("%s bq24157_i2c_read failed %d\n", __func__, ret); return ret; } data &= ~mask; data |= (mask & bit); ret = bq24157_i2c_write(1, reg_num, &data); if(ret < 0) { printk("%s bq24157_i2c_read failed %d\n", __func__, ret); return ret; } return 0; }