Esempio n. 1
0
static int set_reg(void *data, u64 val)
{
	struct fan53555_device_info *di = data;
	int rc;
	unsigned int temp = 0;

	temp = (unsigned int) val;
	rc = fan53555_write(di, di->peek_poke_address, temp);
	if (rc < 0)
		dev_err(di->dev, "Couldn't write 0x%02x to 0x%02x rc= %d\n",
			di->peek_poke_address, temp, rc);

	return rc;
}
static int fan53555_set_bits(struct fan53555_chip *fan, u8 reg, u8 mask, u8 val)
{
	int err;
	u8 data;

	mutex_lock(&fan->io_lock);
	data = fan->shadow[reg];
	data &= ~mask;
	val &= mask;
	data |= val;
	err = fan53555_write(fan, reg, data);
	if (err)
		dev_err(fan->dev, "write for reg 0x%x failed\n", reg);
	else
		fan->shadow[reg] = data;
	mutex_unlock(&fan->io_lock);

	return err;
}