static int max17135_display_disable(struct regulator_dev *reg) { struct max17135 *max17135 = rdev_get_drvdata(reg); if (max17135->pass_num == 1) gpio_set_value(max17135->gpio_pmic_wakeup, 0); else { unsigned int reg_val; max17135_reg_read(REG_MAX17135_ENABLE, ®_val); reg_val &= ~BITFMASK(ENABLE); max17135_reg_write(REG_MAX17135_ENABLE, reg_val); } msleep(max17135->max_wait); return 0; }
static void max17135_setup_timings(struct max17135 *max17135) { unsigned int reg_val; int timing1, timing2, timing3, timing4, timing5, timing6, timing7, timing8; max17135_reg_read(REG_MAX17135_TIMING1, &timing1); max17135_reg_read(REG_MAX17135_TIMING2, &timing2); max17135_reg_read(REG_MAX17135_TIMING3, &timing3); max17135_reg_read(REG_MAX17135_TIMING4, &timing4); max17135_reg_read(REG_MAX17135_TIMING5, &timing5); max17135_reg_read(REG_MAX17135_TIMING6, &timing6); max17135_reg_read(REG_MAX17135_TIMING7, &timing7); max17135_reg_read(REG_MAX17135_TIMING8, &timing8); if ((timing1 != max17135->gvee_pwrup) || (timing2 != max17135->vneg_pwrup) || (timing3 != max17135->vpos_pwrup) || (timing4 != max17135->gvdd_pwrup) || (timing5 != max17135->gvdd_pwrdn) || (timing6 != max17135->vpos_pwrdn) || (timing7 != max17135->vneg_pwrdn) || (timing8 != max17135->gvee_pwrdn)) { max17135_reg_write(REG_MAX17135_TIMING1, max17135->gvee_pwrup); max17135_reg_write(REG_MAX17135_TIMING2, max17135->vneg_pwrup); max17135_reg_write(REG_MAX17135_TIMING3, max17135->vpos_pwrup); max17135_reg_write(REG_MAX17135_TIMING4, max17135->gvdd_pwrup); max17135_reg_write(REG_MAX17135_TIMING5, max17135->gvdd_pwrdn); max17135_reg_write(REG_MAX17135_TIMING6, max17135->vpos_pwrdn); max17135_reg_write(REG_MAX17135_TIMING7, max17135->vneg_pwrdn); max17135_reg_write(REG_MAX17135_TIMING8, max17135->gvee_pwrdn); reg_val = BITFVAL(CTRL_TIMING, true); /* shift to correct bit */ max17135_reg_write(REG_MAX17135_PRGM_CTRL, reg_val); } }
static int max17135_display_enable(struct regulator_dev *reg) { struct max17135 *max17135 = rdev_get_drvdata(reg); /* The Pass 1 parts cannot turn on the PMIC via I2C. */ if (max17135->pass_num == 1) gpio_set_value(max17135->gpio_pmic_wakeup, 1); else { unsigned int reg_val; max17135_reg_read(REG_MAX17135_ENABLE, ®_val); reg_val &= ~BITFMASK(ENABLE); reg_val |= BITFVAL(ENABLE, 1); max17135_reg_write(REG_MAX17135_ENABLE, reg_val); } return max17135_wait_power_good(max17135); }
/* * Regulator operations */ static int max17135_hvinp_set_voltage(struct regulator_dev *reg, int minuV, int uV, unsigned *selector) { unsigned int reg_val; unsigned int fld_val; if ((uV >= MAX17135_HVINP_MIN_uV) && (uV <= MAX17135_HVINP_MAX_uV)) fld_val = (uV - MAX17135_HVINP_MIN_uV) / MAX17135_HVINP_STEP_uV; else return -EINVAL; max17135_reg_read(REG_MAX17135_HVINP, ®_val); reg_val &= ~BITFMASK(HVINP); reg_val |= BITFVAL(HVINP, fld_val); /* shift to correct bit */ return max17135_reg_write(REG_MAX17135_HVINP, reg_val); }