static int wm831x_buckv_get_voltage(struct regulator_dev *rdev) { struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); if (dcdc->dvs_gpio && dcdc->dvs_gpio_state) return wm831x_buckv_list_voltage(rdev, dcdc->dvs_vsel); else return wm831x_buckv_list_voltage(rdev, dcdc->on_vsel); }
static int wm831x_buckv_select_max_voltage(struct regulator_dev *rdev, int min_uV, int max_uV) { u16 vsel; if (max_uV < 600000 || max_uV > 1800000) return -EINVAL; vsel = ((max_uV - 600000) / 12500) + 8; if (wm831x_buckv_list_voltage(rdev, vsel) < min_uV || wm831x_buckv_list_voltage(rdev, vsel) < max_uV) return -EINVAL; return vsel; }
static int wm831x_buckv_select_min_voltage(struct regulator_dev *rdev, int min_uV, int max_uV) { u16 vsel; if (min_uV < 600000) vsel = 0; else if (min_uV <= 1800000) vsel = ((min_uV - 600000) / 12500) + 8; else return -EINVAL; if (wm831x_buckv_list_voltage(rdev, vsel) > max_uV) return -EINVAL; return vsel; }