isl6421
isl6421->config &= ~(ISL6421_VSEL1 | ISL6421_EN1);
ret = i2c_transfer(isl6421->i2c, msg, 1);
isl6421->is_off = true;
dev_warn(&isl6421->i2c->dev,
struct isl6421 *isl6421 = (struct isl6421 *) fe->sec_priv;
struct i2c_msg msg = { .addr = isl6421->i2c_addr, .flags = 0,
.buf = &isl6421->config,
.len = sizeof(isl6421->config) };
isl6421->config |= ISL6421_LLC1;
isl6421->config &= ~ISL6421_LLC1;
isl6421->config |= isl6421->override_or;
isl6421->config &= isl6421->override_and;
return (i2c_transfer(isl6421->i2c, &msg, 1) == 1) ? 0 : -EIO;
struct isl6421 *isl6421 = (struct isl6421 *) fe->sec_priv;
struct i2c_msg msg = { .addr = isl6421->i2c_addr, .flags = 0,
.buf = &isl6421->config,
.len = sizeof(isl6421->config) };
isl6421->config |= ISL6421_ENT1;
isl6421->config &= ~ISL6421_ENT1;
isl6421->config |= isl6421->override_or;
isl6421->config &= isl6421->override_and;
return (i2c_transfer(isl6421->i2c, &msg, 1) == 1) ? 0 : -EIO;
struct isl6421 *isl6421 = kmalloc_obj(struct isl6421);
if (!isl6421)
isl6421->config = ISL6421_ISEL1;
isl6421->i2c = i2c;
isl6421->i2c_addr = i2c_addr;
fe->sec_priv = isl6421;
isl6421->override_or = override_set;
isl6421->override_and = ~override_clear;
kfree(isl6421);
isl6421->is_off = true;
struct isl6421 *isl6421 = (struct isl6421 *) fe->sec_priv;
.addr = isl6421->i2c_addr,
.buf = &isl6421->config,
.addr = isl6421->i2c_addr,
isl6421->config &= ~(ISL6421_VSEL1 | ISL6421_EN1);
isl6421->config |= ISL6421_EN1;
isl6421->config |= (ISL6421_EN1 | ISL6421_VSEL1);
if (isl6421->is_off && !is_off)
isl6421->config |= ISL6421_DCL;
isl6421->config |= isl6421->override_or;
isl6421->config &= isl6421->override_and;
ret = i2c_transfer(isl6421->i2c, msg, 2);
isl6421->is_off = is_off;
if ((isl6421->config & ISL6421_DCL) &&
!(isl6421->override_or & ISL6421_DCL)) {
isl6421->config &= ~ISL6421_DCL;
ret = i2c_transfer(isl6421->i2c, msg, 2);