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; }