regulator: ab8500: Use regulator_list_voltage_linear for ab8500_regulator_fixed_ops
PATCH 1/2 regulator: ab8500: Use regulator_list_voltage_linear for ab8500_regulator_fixed_ops
Also removes set_voltage_time_sel callback from ab8500_regulator_fixed_ops because the voltage won't change. ( And ab8500_regulator_fixed_ops does not implement get_voltage_sel so set_voltage_time_sel won't be called )
--- drivers/regulator/ab8500.c | 41 +++++++++-------------------------------- 1 file changed, 9 insertions(+), 32 deletions(-)
drivers/regulator/ab8500.c +9 -32
@@ -32,7 +32,6 @@* @regulator_dev: regulator device * @max_uV: maximum voltage (for variable voltage supplies) * @min_uV: minimum voltage (for variable voltage supplies) -* @fixed_uV: typical voltage (for fixed voltage supplies) * @update_bank: bank to control on/off * @update_reg: register to control on/off * @update_mask: mask to enable/disable regulator
@@ -48,7 +47,6 @@ struct ab8500_regulator_info {struct regulator_dev *regulator;int max_uV;int min_uV; -int fixed_uV;u8 update_bank;u8 update_reg;u8 update_mask;
@@ -271,29 +269,9 @@ static struct regulator_ops ab8500_regulator_ops = { .set_voltage_time_sel = ab8500_regulator_set_voltage_time_sel, }; -static int ab8500_fixed_list_voltage (struct regulator_dev *rdev, -unsigned selector) -{ -struct ab8500_regulator_info *info =rdev_get_drvdata (rdev); - -if (info ==NULL ) { -dev_err (rdev_get_dev (rdev),"regulator info null pointer\n" ); -return -EINVAL ; - } - -return info->fixed_uV; -} -static int ab8500_fixed_get_voltage (struct regulator_dev *rdev) { -struct ab8500_regulator_info *info =rdev_get_drvdata (rdev); - -if (info ==NULL ) { -dev_err (rdev_get_dev (rdev),"regulator info null pointer\n" ); -return -EINVAL ; - } - -return info->fixed_uV; +return rdev->desc->min_uV; }static struct regulator_ops ab8500_regulator_fixed_ops = {
@@ -301,9 +279,8 @@ static struct regulator_ops ab8500_regulator_fixed_ops = { .disable = ab8500_regulator_disable, .is_enabled = ab8500_regulator_is_enabled, .get_voltage = ab8500_fixed_get_voltage, - .list_voltage = ab8500_fixed_list_voltage, + .list_voltage = regulator_list_voltage_linear, .enable_time = ab8500_regulator_enable_time, - .set_voltage_time_sel = ab8500_regulator_set_voltage_time_sel, }; static struct ab8500_regulator_info
@@ -408,9 +385,9 @@ static struct ab8500_regulator_info .id = AB8500_LDO_TVOUT, .owner = THIS_MODULE, .n_voltages = 1, + .min_uV = 2000000, }, .delay = 10000, - .fixed_uV = 2000000, .update_bank = 0x03, .update_reg = 0x80, .update_mask = 0x82,
@@ -424,8 +401,8 @@ static struct ab8500_regulator_info .id = AB8500_LDO_USB, .owner = THIS_MODULE, .n_voltages = 1, + .min_uV = 3300000, }, - .fixed_uV = 3300000, .update_bank = 0x03, .update_reg = 0x82, .update_mask = 0x03,
@@ -439,8 +416,8 @@ static struct ab8500_regulator_info .id = AB8500_LDO_AUDIO, .owner = THIS_MODULE, .n_voltages = 1, + .min_uV = 2000000, }, - .fixed_uV = 2000000, .update_bank = 0x03, .update_reg = 0x83, .update_mask = 0x02,
@@ -454,8 +431,8 @@ static struct ab8500_regulator_info .id = AB8500_LDO_ANAMIC1, .owner = THIS_MODULE, .n_voltages = 1, + .min_uV = 2050000, }, - .fixed_uV = 2050000, .update_bank = 0x03, .update_reg = 0x83, .update_mask = 0x08,
@@ -469,8 +446,8 @@ static struct ab8500_regulator_info .id = AB8500_LDO_ANAMIC2, .owner = THIS_MODULE, .n_voltages = 1, + .min_uV = 2050000, }, - .fixed_uV = 2050000, .update_bank = 0x03, .update_reg = 0x83, .update_mask = 0x10,
@@ -484,8 +461,8 @@ static struct ab8500_regulator_info .id = AB8500_LDO_DMIC, .owner = THIS_MODULE, .n_voltages = 1, + .min_uV = 1800000, }, - .fixed_uV = 1800000, .update_bank = 0x03, .update_reg = 0x83, .update_mask = 0x04,
@@ -499,8 +476,8 @@ static struct ab8500_regulator_info .id = AB8500_LDO_ANA, .owner = THIS_MODULE, .n_voltages = 1, + .min_uV = 1200000, }, - .fixed_uV = 1200000, .update_bank = 0x04, .update_reg = 0x06, .update_mask = 0x0c,
Signature · 1 line
1.7.9.5
PATCH 2/2 regulator: ab8500: Remove min_uV and max_uV from struct ab8500_regulator_info
The min_uV and max_uV are not really used in the code and misleading because the min_uV and max_uV settings does not match the value in the voltage table.
For example, we have
static const unsigned int ldo_vaux3_voltages[] = {
1200000,
1500000,
1800000,
2100000,
2500000,
2750000,
2790000,
2910000,
};With below min_uV/max_uV settings for AB8500_LDO_AUX3.
.min_uV = 1100000,
.max_uV = 3300000,
The min_uV/max_uV for AB8500_LDO_AUX3 seems copy-paste from AB8500_LDO_AUX2 and is wrong.
--- drivers/regulator/ab8500.c | 12 ------------ 1 file changed, 12 deletions(-)
drivers/regulator/ab8500.c +0 -12
@@ -30,8 +30,6 @@* @dev: device pointer * @desc: regulator description * @regulator_dev: regulator device -* @max_uV: maximum voltage (for variable voltage supplies) -* @min_uV: minimum voltage (for variable voltage supplies) * @update_bank: bank to control on/off * @update_reg: register to control on/off * @update_mask: mask to enable/disable regulator
@@ -45,8 +43,6 @@ struct ab8500_regulator_info {struct device *dev;struct regulator_desc desc;struct regulator_dev *regulator; -int max_uV; -int min_uV;u8 update_bank;u8 update_reg;u8 update_mask;
@@ -301,8 +297,6 @@ static struct ab8500_regulator_info .n_voltages = ARRAY_SIZE(ldo_vauxn_voltages), .volt_table = ldo_vauxn_voltages, }, - .min_uV = 1100000, - .max_uV = 3300000, .update_bank = 0x04, .update_reg = 0x09, .update_mask = 0x03,
@@ -321,8 +315,6 @@ static struct ab8500_regulator_info .n_voltages = ARRAY_SIZE(ldo_vauxn_voltages), .volt_table = ldo_vauxn_voltages, }, - .min_uV = 1100000, - .max_uV = 3300000, .update_bank = 0x04, .update_reg = 0x09, .update_mask = 0x0c,
@@ -341,8 +333,6 @@ static struct ab8500_regulator_info .n_voltages = ARRAY_SIZE(ldo_vaux3_voltages), .volt_table = ldo_vaux3_voltages, }, - .min_uV = 1100000, - .max_uV = 3300000, .update_bank = 0x04, .update_reg = 0x0a, .update_mask = 0x03,
@@ -361,8 +351,6 @@ static struct ab8500_regulator_info .n_voltages = ARRAY_SIZE(ldo_vintcore_voltages), .volt_table = ldo_vintcore_voltages, }, - .min_uV = 1100000, - .max_uV = 3300000, .update_bank = 0x03, .update_reg = 0x80, .update_mask = 0x44,
Signature · 1 line
1.7.9.5
Quoted 5 lines · Axel Lin
Also removes
set_voltage_time_selcallback fromab8500_regulator_fixed_opsbecause the voltage won't change. ( Andab8500_regulator_fixed_opsdoes not implementget_voltage_selsoset_voltage_time_selwon't be called )Signed-off-by Axel Lin <[email protected]>
I cannot test this either, it does not apply cleanly on v3.5-rc3.
Care to respin?
Yours,
Linus Walleij
Quoted 11 lines · Linus Walleij
Quoted 5 lines · Axel Lin
Also removes
set_voltage_time_selcallback fromab8500_regulator_fixed_opsbecause the voltage won't change. ( Andab8500_regulator_fixed_opsdoes not implementget_voltage_selsoset_voltage_time_selwon't be called )Signed-off-by Axel Lin <[email protected]>I cannot test this either, it does not apply cleanly on v3.5-rc3.
Care to respin?
This is a random development patch which means it'll get applied against the regulator tree as it stands so that's what the patch should be submitted against - if you're going to test then grabbing my for-next branch is the way forward.
Quoted 9 lines · Mark Brown
Quoted 7 lines · Linus Walleij
Quoted 5 lines · Axel Lin
Also removes
set_voltage_time_selcallback fromab8500_regulator_fixed_opsbecause the voltage won't change. ( Andab8500_regulator_fixed_opsdoes not implementget_voltage_selsoset_voltage_time_selwon't be called )Signed-off-by Axel Lin <[email protected]>
Quoted 8 lines
Quoted 3 lines
I cannot test this either, it does not apply cleanly on v3.5-rc3.
Care to respin?
This is a random development patch which means it'll get applied against the regulator tree as it stands so that's what the patch should be submitted against - if you're going to test then grabbing my for-next branch is the way forward.
I was mostly reacting to the "RFT" keyword in the subject, so I tried to test rather than just ACK it, but it's applied now anyway so whatever. Acked-by.
Yours,
Linus Walleij
Quoted 3 lines · Linus Walleij
I was mostly reacting to the "RFT" keyword in the subject, so I tried to test rather than just ACK it, but it's applied now anyway so whatever. Acked-by.
Given the fact that lots of regulator drivers have no regular maintainer and that Axel so rarely gets things wrong I'm usually OK with applying things from him if I don't see a review within about a week (with things where I just don't expect a response at all I tend to apply immediately).
Mark Brown
AppliedQuoted 3 lines · Axel Lin
Also removes
set_voltage_time_selcallback fromab8500_regulator_fixed_opsbecause the voltage won't change. ( Andab8500_regulator_fixed_opsdoes not implementget_voltage_selsoset_voltage_time_selwon't be called )
Applied both, thanks.