regulator: Convert lp3971 to set_voltage_sel
PATCH 1/2 regulator: Convert lp3971 to set_voltage_sel
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/lp3971.c | 58 +++++++++++-------------------------------- 1 files changed, 15 insertions(+), 43 deletions(-)
drivers/regulator/lp3971.c +15 -43
@@ -124,6 +124,10 @@ static const int *ldo_voltage_map[] = {static int lp3971_ldo_list_voltage (struct regulator_dev *dev,unsigned index) {int ldo =rdev_get_id (dev) -LP3971_LDO1 ; + +if (index >LDO_VOL_MAX_IDX ) +return -EINVAL ; +return 1000 *LDO_VOL_VALUE_MAP (ldo)[index]; }
@@ -168,32 +172,15 @@ static int lp3971_ldo_get_voltage(struct regulator_dev *dev)return 1000 *LDO_VOL_VALUE_MAP (ldo)[val]; } -static int lp3971_ldo_set_voltage (struct regulator_dev *dev, -int min_uV,int max_uV, -unsigned int *selector) +static int lp3971_ldo_set_voltage_sel (struct regulator_dev *dev, +unsigned int selector) {struct lp3971 *lp3971 =rdev_get_drvdata (dev);int ldo =rdev_get_id (dev) -LP3971_LDO1 ; -int min_vol = min_uV /1000 , max_vol = max_uV /1000 ; -const int *vol_map =LDO_VOL_VALUE_MAP (ldo); -u16 val; - -if (min_vol < vol_map[LDO_VOL_MIN_IDX ] || - min_vol > vol_map[LDO_VOL_MAX_IDX ]) -return -EINVAL ; - -for (val =LDO_VOL_MIN_IDX ; val <=LDO_VOL_MAX_IDX ; val++) -if (vol_map[val] >= min_vol) -break ; - -if (val >LDO_VOL_MAX_IDX || vol_map[val] > max_vol) -return -EINVAL ; - - *selector = val;return lp3971_set_bits (lp3971,LP3971_LDO_VOL_CONTR_REG (ldo),LDO_VOL_CONTR_MASK <<LDO_VOL_CONTR_SHIFT (ldo), - val <<LDO_VOL_CONTR_SHIFT (ldo)); + selector <<LDO_VOL_CONTR_SHIFT (ldo)); }static struct regulator_ops lp3971_ldo_ops = {
@@ -202,11 +189,14 @@ static struct regulator_ops lp3971_ldo_ops = { .enable = lp3971_ldo_enable, .disable = lp3971_ldo_disable, .get_voltage = lp3971_ldo_get_voltage, - .set_voltage = lp3971_ldo_set_voltage, + .set_voltage_sel = lp3971_ldo_set_voltage_sel, };static int lp3971_dcdc_list_voltage (struct regulator_dev *dev,unsigned index) { +if (index <BUCK_TARGET_VOL_MIN_IDX || index >BUCK_TARGET_VOL_MAX_IDX ) +return -EINVAL ; +return 1000 * buck_voltage_map[index]; }
@@ -259,33 +249,15 @@ static int lp3971_dcdc_get_voltage(struct regulator_dev *dev)return val; } -static int lp3971_dcdc_set_voltage (struct regulator_dev *dev, -int min_uV,int max_uV, -unsigned int *selector) +static int lp3971_dcdc_set_voltage_sel (struct regulator_dev *dev, +unsigned int selector) {struct lp3971 *lp3971 =rdev_get_drvdata (dev);int buck =rdev_get_id (dev) -LP3971_DCDC1 ; -int min_vol = min_uV /1000 , max_vol = max_uV /1000 ; -const int *vol_map = buck_voltage_map; -u16 val;int ret; -if (min_vol < vol_map[BUCK_TARGET_VOL_MIN_IDX ] || - min_vol > vol_map[BUCK_TARGET_VOL_MAX_IDX ]) -return -EINVAL ; - -for (val =BUCK_TARGET_VOL_MIN_IDX ; val <=BUCK_TARGET_VOL_MAX_IDX ; - val++) -if (vol_map[val] >= min_vol) -break ; - -if (val >BUCK_TARGET_VOL_MAX_IDX || vol_map[val] > max_vol) -return -EINVAL ; - - *selector = val; - ret =lp3971_set_bits (lp3971,LP3971_BUCK_TARGET_VOL1_REG (buck), -BUCK_TARGET_VOL_MASK , val); +BUCK_TARGET_VOL_MASK , selector);if (ret)return ret;
@@ -306,7 +278,7 @@ static struct regulator_ops lp3971_dcdc_ops = { .enable = lp3971_dcdc_enable, .disable = lp3971_dcdc_disable, .get_voltage = lp3971_dcdc_get_voltage, - .set_voltage = lp3971_dcdc_set_voltage, + .set_voltage_sel = lp3971_dcdc_set_voltage_sel, };static struct regulator_desc regulators[] = {
Signature · 1 line
1.7.5.4
PATCH 2/2 regulator: Convert lp3972 to set_voltage_sel
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/lp3972.c | 63 ++++++++++++------------------------------- 1 files changed, 18 insertions(+), 45 deletions(-)
drivers/regulator/lp3972.c +18 -45
@@ -245,6 +245,11 @@ static int lp3972_set_bits(struct lp3972 *lp3972, u8 reg, u16 mask, u16 val)static int lp3972_ldo_list_voltage (struct regulator_dev *dev,unsigned index) {int ldo =rdev_get_id (dev) -LP3972_LDO1 ; + +if (index <LP3972_LDO_VOL_MIN_IDX (ldo) || + index >LP3972_LDO_VOL_MAX_IDX (ldo)) +return -EINVAL ; +return 1000 *LP3972_LDO_VOL_VALUE_MAP (ldo)[index]; }
@@ -292,34 +297,16 @@ static int lp3972_ldo_get_voltage(struct regulator_dev *dev)return 1000 *LP3972_LDO_VOL_VALUE_MAP (ldo)[val]; } -static int lp3972_ldo_set_voltage (struct regulator_dev *dev, -int min_uV,int max_uV, -unsigned int *selector) +static int lp3972_ldo_set_voltage_sel (struct regulator_dev *dev, +unsigned int selector) {struct lp3972 *lp3972 =rdev_get_drvdata (dev);int ldo =rdev_get_id (dev) -LP3972_LDO1 ; -int min_vol = min_uV /1000 , max_vol = max_uV /1000 ; -const int *vol_map =LP3972_LDO_VOL_VALUE_MAP (ldo); -u16 val;int shift, ret; -if (min_vol < vol_map[LP3972_LDO_VOL_MIN_IDX (ldo)] || - min_vol > vol_map[LP3972_LDO_VOL_MAX_IDX (ldo)]) -return -EINVAL ; - -for (val =LP3972_LDO_VOL_MIN_IDX (ldo); - val <=LP3972_LDO_VOL_MAX_IDX (ldo); val++) -if (vol_map[val] >= min_vol) -break ; - -if (val >LP3972_LDO_VOL_MAX_IDX (ldo) || vol_map[val] > max_vol) -return -EINVAL ; - - *selector = val; - shift =LP3972_LDO_VOL_CONTR_SHIFT (ldo); ret =lp3972_set_bits (lp3972,LP3972_LDO_VOL_CONTR_REG (ldo), -LP3972_LDO_VOL_MASK (ldo) << shift, val << shift); +LP3972_LDO_VOL_MASK (ldo) << shift, selector << shift);if (ret)return ret;
@@ -355,12 +342,17 @@ static struct regulator_ops lp3972_ldo_ops = { .enable = lp3972_ldo_enable, .disable = lp3972_ldo_disable, .get_voltage = lp3972_ldo_get_voltage, - .set_voltage = lp3972_ldo_set_voltage, + .set_voltage_sel = lp3972_ldo_set_voltage_sel, };static int lp3972_dcdc_list_voltage (struct regulator_dev *dev,unsigned index) {int buck =rdev_get_id (dev) -LP3972_DCDC1 ; + +if (index <LP3972_BUCK_VOL_MIN_IDX (buck) || + index >LP3972_BUCK_VOL_MAX_IDX (buck)) +return -EINVAL ; +return 1000 * buck_voltage_map[buck][index]; }
@@ -419,34 +411,15 @@ static int lp3972_dcdc_get_voltage(struct regulator_dev *dev)return val; } -static int lp3972_dcdc_set_voltage (struct regulator_dev *dev, -int min_uV,int max_uV, -unsigned int *selector) +static int lp3972_dcdc_set_voltage_sel (struct regulator_dev *dev, +unsigned int selector) {struct lp3972 *lp3972 =rdev_get_drvdata (dev);int buck =rdev_get_id (dev) -LP3972_DCDC1 ; -int min_vol = min_uV /1000 , max_vol = max_uV /1000 ; -const int *vol_map = buck_voltage_map[buck]; -u16 val;int ret; -if (min_vol < vol_map[LP3972_BUCK_VOL_MIN_IDX (buck)] || - min_vol > vol_map[LP3972_BUCK_VOL_MAX_IDX (buck)]) -return -EINVAL ; - -for (val =LP3972_BUCK_VOL_MIN_IDX (buck); - val <=LP3972_BUCK_VOL_MAX_IDX (buck); val++) -if (vol_map[val] >= min_vol) -break ; - -if (val >LP3972_BUCK_VOL_MAX_IDX (buck) || - vol_map[val] > max_vol) -return -EINVAL ; - - *selector = val; - ret =lp3972_set_bits (lp3972,LP3972_BUCK_VOL1_REG (buck), -LP3972_BUCK_VOL_MASK , val); +LP3972_BUCK_VOL_MASK , selector);if (ret)return ret;
@@ -468,7 +441,7 @@ static struct regulator_ops lp3972_dcdc_ops = { .enable = lp3972_dcdc_enable, .disable = lp3972_dcdc_disable, .get_voltage = lp3972_dcdc_get_voltage, - .set_voltage = lp3972_dcdc_set_voltage, + .set_voltage_sel = lp3972_dcdc_set_voltage_sel, };static struct regulator_desc regulators[] = {
Signature · 1 line
1.7.5.4
Hello,
Quoted 1 line · Axel Lin
Signed-off-by Axel Lin <[email protected]>
The patch looks good, but I don't have access to the hardware to test it.
Acked-by Marek Szyprowski <[email protected]>
Quoted 118 lines
--- drivers/regulator/lp3971.c | 58 +++++++++++-------------------------------- 1 files changed, 15 insertions(+), 43 deletions(-)drivers/regulator/lp3971.c +15
-44@@ -124,6 +124,10 @@ static const int *ldo_voltage_map[] = {static int lp3971_ldo_list_voltage (struct regulator_dev *dev,unsigned index) {int ldo =rdev_get_id (dev) -LP3971_LDO1 ; + +if (index >LDO_VOL_MAX_IDX ) +return -EINVAL ; +return 1000 *LDO_VOL_VALUE_MAP (ldo)[index]; }@@ -168,32 +172,15 @@ static int lp3971_ldo_get_voltage(struct regulator_dev *dev)return 1000 *LDO_VOL_VALUE_MAP (ldo)[val]; } -static int lp3971_ldo_set_voltage (struct regulator_dev *dev, -int min_uV,int max_uV, -unsigned int *selector) +static int lp3971_ldo_set_voltage_sel (struct regulator_dev *dev, +unsigned int selector) {struct lp3971 *lp3971 =rdev_get_drvdata (dev);int ldo =rdev_get_id (dev) -LP3971_LDO1 ; -int min_vol = min_uV /1000 , max_vol = max_uV /1000 ; -const int *vol_map =LDO_VOL_VALUE_MAP (ldo); -u16 val; - -if (min_vol < vol_map[LDO_VOL_MIN_IDX ] || - min_vol > vol_map[LDO_VOL_MAX_IDX ]) -return -EINVAL ; - -for (val =LDO_VOL_MIN_IDX ; val <=LDO_VOL_MAX_IDX ; val++) -if (vol_map[val] >= min_vol) -break ; - -if (val >LDO_VOL_MAX_IDX || vol_map[val] > max_vol) -return -EINVAL ; - - *selector = val;return lp3971_set_bits (lp3971,LP3971_LDO_VOL_CONTR_REG (ldo),LDO_VOL_CONTR_MASK <<LDO_VOL_CONTR_SHIFT (ldo), - val <<LDO_VOL_CONTR_SHIFT (ldo)); + selector <<LDO_VOL_CONTR_SHIFT (ldo)); }static struct regulator_ops lp3971_ldo_ops = {@@ -202,11 +189,14 @@ static struct regulator_ops lp3971_ldo_ops = { .enable = lp3971_ldo_enable, .disable = lp3971_ldo_disable, .get_voltage = lp3971_ldo_get_voltage, - .set_voltage = lp3971_ldo_set_voltage, + .set_voltage_sel = lp3971_ldo_set_voltage_sel, };static int lp3971_dcdc_list_voltage (struct regulator_dev *dev,unsigned index) { +if (index <BUCK_TARGET_VOL_MIN_IDX || index >BUCK_TARGET_VOL_MAX_IDX ) +return -EINVAL ; +return 1000 * buck_voltage_map[index]; }@@ -259,33 +249,15 @@ static int lp3971_dcdc_get_voltage(struct regulator_dev *dev)return val; } -static int lp3971_dcdc_set_voltage (struct regulator_dev *dev, -int min_uV,int max_uV, -unsigned int *selector) +static int lp3971_dcdc_set_voltage_sel (struct regulator_dev *dev, +unsigned int selector) {struct lp3971 *lp3971 =rdev_get_drvdata (dev);int buck =rdev_get_id (dev) -LP3971_DCDC1 ; -int min_vol = min_uV /1000 , max_vol = max_uV /1000 ; -const int *vol_map = buck_voltage_map; -u16 val;int ret; -if (min_vol < vol_map[BUCK_TARGET_VOL_MIN_IDX ] || - min_vol > vol_map[BUCK_TARGET_VOL_MAX_IDX ]) -return -EINVAL ; - -for (val =BUCK_TARGET_VOL_MIN_IDX ; val <=BUCK_TARGET_VOL_MAX_IDX ; - val++) -if (vol_map[val] >= min_vol) -break ; - -if (val >BUCK_TARGET_VOL_MAX_IDX || vol_map[val] > max_vol) -return -EINVAL ; - - *selector = val; - ret =lp3971_set_bits (lp3971,LP3971_BUCK_TARGET_VOL1_REG (buck), -BUCK_TARGET_VOL_MASK , val); +BUCK_TARGET_VOL_MASK , selector);if (ret)return ret;@@ -306,7 +278,7 @@ static struct regulator_ops lp3971_dcdc_ops = { .enable = lp3971_dcdc_enable, .disable = lp3971_dcdc_disable, .get_voltage = lp3971_dcdc_get_voltage, - .set_voltage = lp3971_dcdc_set_voltage, + .set_voltage_sel = lp3971_dcdc_set_voltage_sel, };static struct regulator_desc regulators[] = { --
Quoted 2 lines
1.7.5.4
Best regards
Signature · 2 lines
Marek Szyprowski Samsung Poland R&D Center