isl6405
struct isl6405 *isl6405 = kmalloc_obj(struct isl6405);
if (!isl6405)
isl6405->config = ISL6405_ISEL2;
isl6405->config = ISL6405_ISEL1;
isl6405->i2c = i2c;
isl6405->i2c_addr = i2c_addr;
fe->sec_priv = isl6405;
isl6405->override_or = override_set;
isl6405->override_and = ~override_clear;
kfree(isl6405);
struct isl6405 *isl6405 = (struct isl6405 *) fe->sec_priv;
struct i2c_msg msg = { .addr = isl6405->i2c_addr, .flags = 0,
.buf = &isl6405->config,
.len = sizeof(isl6405->config) };
if (isl6405->override_or & 0x80) {
isl6405->config &= ~(ISL6405_VSEL2 | ISL6405_EN2);
isl6405->config |= ISL6405_EN2;
isl6405->config |= (ISL6405_EN2 | ISL6405_VSEL2);
isl6405->config &= ~(ISL6405_VSEL1 | ISL6405_EN1);
isl6405->config |= ISL6405_EN1;
isl6405->config |= (ISL6405_EN1 | ISL6405_VSEL1);
isl6405->config |= isl6405->override_or;
isl6405->config &= isl6405->override_and;
return (i2c_transfer(isl6405->i2c, &msg, 1) == 1) ? 0 : -EIO;
struct isl6405 *isl6405 = (struct isl6405 *) fe->sec_priv;
struct i2c_msg msg = { .addr = isl6405->i2c_addr, .flags = 0,
.buf = &isl6405->config,
.len = sizeof(isl6405->config) };
if (isl6405->override_or & 0x80) {
isl6405->config |= ISL6405_LLC2;
isl6405->config &= ~ISL6405_LLC2;
isl6405->config |= ISL6405_LLC1;
isl6405->config &= ~ISL6405_LLC1;
isl6405->config |= isl6405->override_or;
isl6405->config &= isl6405->override_and;
return (i2c_transfer(isl6405->i2c, &msg, 1) == 1) ? 0 : -EIO;