Example #1
0
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;
}