mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
regulator: use linear_ranges helper
Change the regulator helpers to use common linear_ranges code. Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> Reviewed-by: Mark Brown <broonie@kernel.org> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> Acked-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Link: https://lore.kernel.org/r/64f01d5e381b8631a271616b7790f9d5640974fb.1588944082.git.matti.vaittinen@fi.rohmeurope.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
@@ -11,13 +11,13 @@ static const struct regulator_ops pg86x_ops = {
|
||||
.list_voltage = regulator_list_voltage_linear_range,
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range pg86x_buck1_ranges[] = {
|
||||
static const struct linear_range pg86x_buck1_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE( 0, 0, 10, 0),
|
||||
REGULATOR_LINEAR_RANGE(1000000, 11, 34, 25000),
|
||||
REGULATOR_LINEAR_RANGE(1600000, 35, 47, 50000),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range pg86x_buck2_ranges[] = {
|
||||
static const struct linear_range pg86x_buck2_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE( 0, 0, 15, 0),
|
||||
REGULATOR_LINEAR_RANGE(1000000, 16, 39, 25000),
|
||||
REGULATOR_LINEAR_RANGE(1600000, 40, 52, 50000),
|
||||
|
||||
@@ -134,13 +134,13 @@ struct pm800_regulator_info {
|
||||
}
|
||||
|
||||
/* Ranges are sorted in ascending order. */
|
||||
static const struct regulator_linear_range buck1_volt_range[] = {
|
||||
static const struct linear_range buck1_volt_range[] = {
|
||||
REGULATOR_LINEAR_RANGE(600000, 0, 0x4f, 12500),
|
||||
REGULATOR_LINEAR_RANGE(1600000, 0x50, 0x54, 50000),
|
||||
};
|
||||
|
||||
/* BUCK 2~5 have same ranges. */
|
||||
static const struct regulator_linear_range buck2_5_volt_range[] = {
|
||||
static const struct linear_range buck2_5_volt_range[] = {
|
||||
REGULATOR_LINEAR_RANGE(600000, 0, 0x4f, 12500),
|
||||
REGULATOR_LINEAR_RANGE(1600000, 0x50, 0x72, 50000),
|
||||
};
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
menuconfig REGULATOR
|
||||
bool "Voltage and Current Regulator Support"
|
||||
select LINEAR_RANGES
|
||||
help
|
||||
Generic Voltage and Current Regulator support.
|
||||
|
||||
|
||||
@@ -220,13 +220,13 @@ static const struct regmap_config act8865_regmap_config = {
|
||||
.val_bits = 8,
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range act8865_voltage_ranges[] = {
|
||||
static const struct linear_range act8865_voltage_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(600000, 0, 23, 25000),
|
||||
REGULATOR_LINEAR_RANGE(1200000, 24, 47, 50000),
|
||||
REGULATOR_LINEAR_RANGE(2400000, 48, 63, 100000),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range act8600_sudcdc_voltage_ranges[] = {
|
||||
static const struct linear_range act8600_sudcdc_voltage_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(3000000, 0, 63, 0),
|
||||
REGULATOR_LINEAR_RANGE(3000000, 64, 159, 100000),
|
||||
REGULATOR_LINEAR_RANGE(12600000, 160, 191, 200000),
|
||||
|
||||
@@ -73,7 +73,7 @@ struct act8945a_pmic {
|
||||
u32 op_mode[ACT8945A_ID_MAX];
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range act8945a_voltage_ranges[] = {
|
||||
static const struct linear_range act8945a_voltage_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(600000, 0, 23, 25000),
|
||||
REGULATOR_LINEAR_RANGE(1200000, 24, 47, 50000),
|
||||
REGULATOR_LINEAR_RANGE(2400000, 48, 63, 100000),
|
||||
|
||||
@@ -87,7 +87,7 @@ static const struct regulator_ops arizona_ldo1_hc_ops = {
|
||||
.set_bypass = regulator_set_bypass_regmap,
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range arizona_ldo1_hc_ranges[] = {
|
||||
static const struct linear_range arizona_ldo1_hc_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(900000, 0, 0x6, 50000),
|
||||
REGULATOR_LINEAR_RANGE(1800000, 0x7, 0x7, 0),
|
||||
};
|
||||
|
||||
@@ -125,7 +125,7 @@ static const struct regulator_ops arizona_micsupp_ops = {
|
||||
.set_bypass = arizona_micsupp_set_bypass,
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range arizona_micsupp_ranges[] = {
|
||||
static const struct linear_range arizona_micsupp_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(1700000, 0, 0x1e, 50000),
|
||||
REGULATOR_LINEAR_RANGE(3300000, 0x1f, 0x1f, 0),
|
||||
};
|
||||
@@ -152,7 +152,7 @@ static const struct regulator_desc arizona_micsupp = {
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range arizona_micsupp_ext_ranges[] = {
|
||||
static const struct linear_range arizona_micsupp_ext_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(900000, 0, 0x14, 25000),
|
||||
REGULATOR_LINEAR_RANGE(1500000, 0x15, 0x27, 100000),
|
||||
};
|
||||
|
||||
@@ -103,18 +103,18 @@ static const struct regulator_ops as3711_dldo_ops = {
|
||||
.map_voltage = regulator_map_voltage_linear_range,
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range as3711_sd_ranges[] = {
|
||||
static const struct linear_range as3711_sd_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(612500, 0x1, 0x40, 12500),
|
||||
REGULATOR_LINEAR_RANGE(1425000, 0x41, 0x70, 25000),
|
||||
REGULATOR_LINEAR_RANGE(2650000, 0x71, 0x7f, 50000),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range as3711_aldo_ranges[] = {
|
||||
static const struct linear_range as3711_aldo_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(1200000, 0, 0xf, 50000),
|
||||
REGULATOR_LINEAR_RANGE(1800000, 0x10, 0x1f, 100000),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range as3711_dldo_ranges[] = {
|
||||
static const struct linear_range as3711_dldo_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(900000, 0, 0x10, 50000),
|
||||
REGULATOR_LINEAR_RANGE(1750000, 0x20, 0x3f, 50000),
|
||||
};
|
||||
|
||||
@@ -389,7 +389,7 @@ static const struct regulator_ops as3722_ldo6_extcntrl_ops = {
|
||||
.set_bypass = regulator_set_bypass_regmap,
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range as3722_ldo_ranges[] = {
|
||||
static const struct linear_range as3722_ldo_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(0, 0x00, 0x00, 0),
|
||||
REGULATOR_LINEAR_RANGE(825000, 0x01, 0x24, 25000),
|
||||
REGULATOR_LINEAR_RANGE(1725000, 0x40, 0x7F, 25000),
|
||||
@@ -487,7 +487,7 @@ static bool as3722_sd0_is_low_voltage(struct as3722_regulators *as3722_regs)
|
||||
return false;
|
||||
}
|
||||
|
||||
static const struct regulator_linear_range as3722_sd2345_ranges[] = {
|
||||
static const struct linear_range as3722_sd2345_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(0, 0x00, 0x00, 0),
|
||||
REGULATOR_LINEAR_RANGE(612500, 0x01, 0x40, 12500),
|
||||
REGULATOR_LINEAR_RANGE(1425000, 0x41, 0x70, 25000),
|
||||
|
||||
@@ -510,7 +510,7 @@ static const struct regulator_ops axp20x_ops_sw = {
|
||||
.is_enabled = regulator_is_enabled_regmap,
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range axp20x_ldo4_ranges[] = {
|
||||
static const struct linear_range axp20x_ldo4_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(1250000,
|
||||
AXP20X_LDO4_V_OUT_1250mV_START,
|
||||
AXP20X_LDO4_V_OUT_1250mV_END,
|
||||
@@ -638,7 +638,7 @@ static const struct regulator_desc axp22x_drivevbus_regulator = {
|
||||
};
|
||||
|
||||
/* DCDC ranges shared with AXP813 */
|
||||
static const struct regulator_linear_range axp803_dcdc234_ranges[] = {
|
||||
static const struct linear_range axp803_dcdc234_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(500000,
|
||||
AXP803_DCDC234_500mV_START,
|
||||
AXP803_DCDC234_500mV_END,
|
||||
@@ -649,7 +649,7 @@ static const struct regulator_linear_range axp803_dcdc234_ranges[] = {
|
||||
20000),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range axp803_dcdc5_ranges[] = {
|
||||
static const struct linear_range axp803_dcdc5_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(800000,
|
||||
AXP803_DCDC5_800mV_START,
|
||||
AXP803_DCDC5_800mV_END,
|
||||
@@ -660,7 +660,7 @@ static const struct regulator_linear_range axp803_dcdc5_ranges[] = {
|
||||
20000),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range axp803_dcdc6_ranges[] = {
|
||||
static const struct linear_range axp803_dcdc6_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(600000,
|
||||
AXP803_DCDC6_600mV_START,
|
||||
AXP803_DCDC6_600mV_END,
|
||||
@@ -672,7 +672,7 @@ static const struct regulator_linear_range axp803_dcdc6_ranges[] = {
|
||||
};
|
||||
|
||||
/* AXP806's CLDO2 and AXP809's DLDO1 share the same range */
|
||||
static const struct regulator_linear_range axp803_dldo2_ranges[] = {
|
||||
static const struct linear_range axp803_dldo2_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(700000,
|
||||
AXP803_DLDO2_700mV_START,
|
||||
AXP803_DLDO2_700mV_END,
|
||||
@@ -758,7 +758,7 @@ static const struct regulator_desc axp803_regulators[] = {
|
||||
AXP_DESC_FIXED(AXP803, RTC_LDO, "rtc-ldo", "ips", 3000),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range axp806_dcdca_ranges[] = {
|
||||
static const struct linear_range axp806_dcdca_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(600000,
|
||||
AXP806_DCDCA_600mV_START,
|
||||
AXP806_DCDCA_600mV_END,
|
||||
@@ -769,7 +769,7 @@ static const struct regulator_linear_range axp806_dcdca_ranges[] = {
|
||||
20000),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range axp806_dcdcd_ranges[] = {
|
||||
static const struct linear_range axp806_dcdcd_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(600000,
|
||||
AXP806_DCDCD_600mV_START,
|
||||
AXP806_DCDCD_600mV_END,
|
||||
@@ -834,7 +834,7 @@ static const struct regulator_desc axp806_regulators[] = {
|
||||
AXP806_PWR_OUT_CTRL2, AXP806_PWR_OUT_SW_MASK),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range axp809_dcdc4_ranges[] = {
|
||||
static const struct linear_range axp809_dcdc4_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(600000,
|
||||
AXP809_DCDC4_600mV_START,
|
||||
AXP809_DCDC4_600mV_END,
|
||||
|
||||
@@ -116,14 +116,14 @@ static const unsigned int ldo_vbus[] = {
|
||||
};
|
||||
|
||||
/* DCDC group CSR: supported voltages in microvolts */
|
||||
static const struct regulator_linear_range dcdc_csr_ranges[] = {
|
||||
static const struct linear_range dcdc_csr_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(860000, 2, 50, 10000),
|
||||
REGULATOR_LINEAR_RANGE(1360000, 51, 55, 20000),
|
||||
REGULATOR_LINEAR_RANGE(900000, 56, 63, 0),
|
||||
};
|
||||
|
||||
/* DCDC group IOSR1: supported voltages in microvolts */
|
||||
static const struct regulator_linear_range dcdc_iosr1_ranges[] = {
|
||||
static const struct linear_range dcdc_iosr1_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(860000, 2, 51, 10000),
|
||||
REGULATOR_LINEAR_RANGE(1500000, 52, 52, 0),
|
||||
REGULATOR_LINEAR_RANGE(1800000, 53, 53, 0),
|
||||
@@ -131,7 +131,7 @@ static const struct regulator_linear_range dcdc_iosr1_ranges[] = {
|
||||
};
|
||||
|
||||
/* DCDC group SDSR1: supported voltages in microvolts */
|
||||
static const struct regulator_linear_range dcdc_sdsr1_ranges[] = {
|
||||
static const struct linear_range dcdc_sdsr1_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(860000, 2, 50, 10000),
|
||||
REGULATOR_LINEAR_RANGE(1340000, 51, 51, 0),
|
||||
REGULATOR_LINEAR_RANGE(900000, 52, 63, 0),
|
||||
@@ -143,7 +143,7 @@ struct bcm590xx_info {
|
||||
u8 n_voltages;
|
||||
const unsigned int *volt_table;
|
||||
u8 n_linear_ranges;
|
||||
const struct regulator_linear_range *linear_ranges;
|
||||
const struct linear_range *linear_ranges;
|
||||
};
|
||||
|
||||
#define BCM590XX_REG_TABLE(_name, _table) \
|
||||
|
||||
@@ -20,22 +20,22 @@
|
||||
#define BUCK_RAMPRATE_125MV 1
|
||||
#define BUCK_RAMP_MAX 250
|
||||
|
||||
static const struct regulator_linear_range bd70528_buck1_volts[] = {
|
||||
static const struct linear_range bd70528_buck1_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(1200000, 0x00, 0x1, 600000),
|
||||
REGULATOR_LINEAR_RANGE(2750000, 0x2, 0xf, 50000),
|
||||
};
|
||||
static const struct regulator_linear_range bd70528_buck2_volts[] = {
|
||||
static const struct linear_range bd70528_buck2_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(1200000, 0x00, 0x1, 300000),
|
||||
REGULATOR_LINEAR_RANGE(1550000, 0x2, 0xd, 50000),
|
||||
REGULATOR_LINEAR_RANGE(3000000, 0xe, 0xf, 300000),
|
||||
};
|
||||
static const struct regulator_linear_range bd70528_buck3_volts[] = {
|
||||
static const struct linear_range bd70528_buck3_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(800000, 0x00, 0xd, 50000),
|
||||
REGULATOR_LINEAR_RANGE(1800000, 0xe, 0xf, 0),
|
||||
};
|
||||
|
||||
/* All LDOs have same voltage ranges */
|
||||
static const struct regulator_linear_range bd70528_ldo_volts[] = {
|
||||
static const struct linear_range bd70528_ldo_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(1650000, 0x0, 0x07, 50000),
|
||||
REGULATOR_LINEAR_RANGE(2100000, 0x8, 0x0f, 100000),
|
||||
REGULATOR_LINEAR_RANGE(2850000, 0x10, 0x19, 50000),
|
||||
|
||||
@@ -65,27 +65,27 @@ static const struct reg_init buck7_inits[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range bd71828_buck1267_volts[] = {
|
||||
static const struct linear_range bd71828_buck1267_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(500000, 0x00, 0xef, 6250),
|
||||
REGULATOR_LINEAR_RANGE(2000000, 0xf0, 0xff, 0),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range bd71828_buck3_volts[] = {
|
||||
static const struct linear_range bd71828_buck3_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(1200000, 0x00, 0x0f, 50000),
|
||||
REGULATOR_LINEAR_RANGE(2000000, 0x10, 0x1f, 0),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range bd71828_buck4_volts[] = {
|
||||
static const struct linear_range bd71828_buck4_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(1000000, 0x00, 0x1f, 25000),
|
||||
REGULATOR_LINEAR_RANGE(1800000, 0x20, 0x3f, 0),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range bd71828_buck5_volts[] = {
|
||||
static const struct linear_range bd71828_buck5_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(2500000, 0x00, 0x0f, 50000),
|
||||
REGULATOR_LINEAR_RANGE(3300000, 0x10, 0x1f, 0),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range bd71828_ldo_volts[] = {
|
||||
static const struct linear_range bd71828_ldo_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(800000, 0x00, 0x31, 50000),
|
||||
REGULATOR_LINEAR_RANGE(3300000, 0x32, 0x3f, 0),
|
||||
};
|
||||
|
||||
@@ -152,7 +152,7 @@ static const struct regulator_ops bd718xx_dvs_buck_regulator_ops = {
|
||||
* BD71847 BUCK1/2
|
||||
* 0.70 to 1.30V (10mV step)
|
||||
*/
|
||||
static const struct regulator_linear_range bd718xx_dvs_buck_volts[] = {
|
||||
static const struct linear_range bd718xx_dvs_buck_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(700000, 0x00, 0x3C, 10000),
|
||||
REGULATOR_LINEAR_RANGE(1300000, 0x3D, 0x3F, 0),
|
||||
};
|
||||
@@ -163,7 +163,7 @@ static const struct regulator_linear_range bd718xx_dvs_buck_volts[] = {
|
||||
* and
|
||||
* 0.675 to 1.325 (range 1)
|
||||
*/
|
||||
static const struct regulator_linear_range bd71837_buck5_volts[] = {
|
||||
static const struct linear_range bd71837_buck5_volts[] = {
|
||||
/* Ranges when VOLT_SEL bit is 0 */
|
||||
REGULATOR_LINEAR_RANGE(700000, 0x00, 0x03, 100000),
|
||||
REGULATOR_LINEAR_RANGE(1050000, 0x04, 0x05, 50000),
|
||||
@@ -185,7 +185,7 @@ static const unsigned int bd71837_buck5_volt_range_sel[] = {
|
||||
/*
|
||||
* BD71847 BUCK3
|
||||
*/
|
||||
static const struct regulator_linear_range bd71847_buck3_volts[] = {
|
||||
static const struct linear_range bd71847_buck3_volts[] = {
|
||||
/* Ranges when VOLT_SEL bits are 00 */
|
||||
REGULATOR_LINEAR_RANGE(700000, 0x00, 0x03, 100000),
|
||||
REGULATOR_LINEAR_RANGE(1050000, 0x04, 0x05, 50000),
|
||||
@@ -202,7 +202,7 @@ static const unsigned int bd71847_buck3_volt_range_sel[] = {
|
||||
0x0, 0x0, 0x0, 0x40, 0x80, 0x80, 0x80
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range bd71847_buck4_volts[] = {
|
||||
static const struct linear_range bd71847_buck4_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(3000000, 0x00, 0x03, 100000),
|
||||
REGULATOR_LINEAR_RANGE(2600000, 0x00, 0x03, 100000),
|
||||
};
|
||||
@@ -213,7 +213,7 @@ static const unsigned int bd71847_buck4_volt_range_sel[] = { 0x0, 0x40 };
|
||||
* BUCK6
|
||||
* 3.0V to 3.3V (step 100mV)
|
||||
*/
|
||||
static const struct regulator_linear_range bd71837_buck6_volts[] = {
|
||||
static const struct linear_range bd71837_buck6_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(3000000, 0x00, 0x03, 100000),
|
||||
};
|
||||
|
||||
@@ -237,7 +237,7 @@ static const unsigned int bd718xx_3rd_nodvs_buck_volts[] = {
|
||||
* BUCK8
|
||||
* 0.8V to 1.40V (step 10mV)
|
||||
*/
|
||||
static const struct regulator_linear_range bd718xx_4th_nodvs_buck_volts[] = {
|
||||
static const struct linear_range bd718xx_4th_nodvs_buck_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(800000, 0x00, 0x3C, 10000),
|
||||
};
|
||||
|
||||
@@ -245,7 +245,7 @@ static const struct regulator_linear_range bd718xx_4th_nodvs_buck_volts[] = {
|
||||
* LDO1
|
||||
* 3.0 to 3.3V (100mV step)
|
||||
*/
|
||||
static const struct regulator_linear_range bd718xx_ldo1_volts[] = {
|
||||
static const struct linear_range bd718xx_ldo1_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(3000000, 0x00, 0x03, 100000),
|
||||
REGULATOR_LINEAR_RANGE(1600000, 0x00, 0x03, 100000),
|
||||
};
|
||||
@@ -264,7 +264,7 @@ static const unsigned int ldo_2_volts[] = {
|
||||
* LDO3
|
||||
* 1.8 to 3.3V (100mV step)
|
||||
*/
|
||||
static const struct regulator_linear_range bd718xx_ldo3_volts[] = {
|
||||
static const struct linear_range bd718xx_ldo3_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(1800000, 0x00, 0x0F, 100000),
|
||||
};
|
||||
|
||||
@@ -272,7 +272,7 @@ static const struct regulator_linear_range bd718xx_ldo3_volts[] = {
|
||||
* LDO4
|
||||
* 0.9 to 1.8V (100mV step)
|
||||
*/
|
||||
static const struct regulator_linear_range bd718xx_ldo4_volts[] = {
|
||||
static const struct linear_range bd718xx_ldo4_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(900000, 0x00, 0x09, 100000),
|
||||
};
|
||||
|
||||
@@ -280,7 +280,7 @@ static const struct regulator_linear_range bd718xx_ldo4_volts[] = {
|
||||
* LDO5 for BD71837
|
||||
* 1.8 to 3.3V (100mV step)
|
||||
*/
|
||||
static const struct regulator_linear_range bd71837_ldo5_volts[] = {
|
||||
static const struct linear_range bd71837_ldo5_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(1800000, 0x00, 0x0F, 100000),
|
||||
};
|
||||
|
||||
@@ -288,7 +288,7 @@ static const struct regulator_linear_range bd71837_ldo5_volts[] = {
|
||||
* LDO5 for BD71837
|
||||
* 1.8 to 3.3V (100mV step)
|
||||
*/
|
||||
static const struct regulator_linear_range bd71847_ldo5_volts[] = {
|
||||
static const struct linear_range bd71847_ldo5_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(1800000, 0x00, 0x0F, 100000),
|
||||
REGULATOR_LINEAR_RANGE(800000, 0x00, 0x0F, 100000),
|
||||
};
|
||||
@@ -299,7 +299,7 @@ static const unsigned int bd71847_ldo5_volt_range_sel[] = { 0x0, 0x20 };
|
||||
* LDO6
|
||||
* 0.9 to 1.8V (100mV step)
|
||||
*/
|
||||
static const struct regulator_linear_range bd718xx_ldo6_volts[] = {
|
||||
static const struct linear_range bd718xx_ldo6_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(900000, 0x00, 0x09, 100000),
|
||||
};
|
||||
|
||||
@@ -307,7 +307,7 @@ static const struct regulator_linear_range bd718xx_ldo6_volts[] = {
|
||||
* LDO7
|
||||
* 1.8 to 3.3V (100mV step)
|
||||
*/
|
||||
static const struct regulator_linear_range bd71837_ldo7_volts[] = {
|
||||
static const struct linear_range bd71837_ldo7_volts[] = {
|
||||
REGULATOR_LINEAR_RANGE(1800000, 0x00, 0x0F, 100000),
|
||||
};
|
||||
|
||||
|
||||
@@ -248,7 +248,7 @@ static int da9034_set_dvc_voltage_sel(struct regulator_dev *rdev,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct regulator_linear_range da9034_ldo12_ranges[] = {
|
||||
static const struct linear_range da9034_ldo12_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(1700000, 0, 7, 50000),
|
||||
REGULATOR_LINEAR_RANGE(2700000, 8, 15, 50000),
|
||||
};
|
||||
|
||||
+57
-73
@@ -131,10 +131,11 @@ int regulator_get_voltage_sel_pickable_regmap(struct regulator_dev *rdev)
|
||||
unsigned int r_val;
|
||||
int range;
|
||||
unsigned int val;
|
||||
int ret, i;
|
||||
unsigned int voltages_in_range = 0;
|
||||
int ret;
|
||||
unsigned int voltages = 0;
|
||||
const struct linear_range *r = rdev->desc->linear_ranges;
|
||||
|
||||
if (!rdev->desc->linear_ranges)
|
||||
if (!r)
|
||||
return -EINVAL;
|
||||
|
||||
ret = regmap_read(rdev->regmap, rdev->desc->vsel_reg, &val);
|
||||
@@ -152,11 +153,9 @@ int regulator_get_voltage_sel_pickable_regmap(struct regulator_dev *rdev)
|
||||
if (range < 0)
|
||||
return -EINVAL;
|
||||
|
||||
for (i = 0; i < range; i++)
|
||||
voltages_in_range += (rdev->desc->linear_ranges[i].max_sel -
|
||||
rdev->desc->linear_ranges[i].min_sel) + 1;
|
||||
voltages = linear_range_values_in_range_array(r, range);
|
||||
|
||||
return val + voltages_in_range;
|
||||
return val + voltages;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(regulator_get_voltage_sel_pickable_regmap);
|
||||
|
||||
@@ -179,8 +178,11 @@ int regulator_set_voltage_sel_pickable_regmap(struct regulator_dev *rdev,
|
||||
unsigned int voltages_in_range = 0;
|
||||
|
||||
for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
|
||||
voltages_in_range = (rdev->desc->linear_ranges[i].max_sel -
|
||||
rdev->desc->linear_ranges[i].min_sel) + 1;
|
||||
const struct linear_range *r;
|
||||
|
||||
r = &rdev->desc->linear_ranges[i];
|
||||
voltages_in_range = linear_range_values_in_range(r);
|
||||
|
||||
if (sel < voltages_in_range)
|
||||
break;
|
||||
sel -= voltages_in_range;
|
||||
@@ -405,8 +407,10 @@ EXPORT_SYMBOL_GPL(regulator_map_voltage_linear);
|
||||
int regulator_map_voltage_linear_range(struct regulator_dev *rdev,
|
||||
int min_uV, int max_uV)
|
||||
{
|
||||
const struct regulator_linear_range *range;
|
||||
const struct linear_range *range;
|
||||
int ret = -EINVAL;
|
||||
unsigned int sel;
|
||||
bool found;
|
||||
int voltage, i;
|
||||
|
||||
if (!rdev->desc->n_linear_ranges) {
|
||||
@@ -415,35 +419,19 @@ int regulator_map_voltage_linear_range(struct regulator_dev *rdev,
|
||||
}
|
||||
|
||||
for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
|
||||
int linear_max_uV;
|
||||
|
||||
range = &rdev->desc->linear_ranges[i];
|
||||
linear_max_uV = range->min_uV +
|
||||
(range->max_sel - range->min_sel) * range->uV_step;
|
||||
|
||||
if (!(min_uV <= linear_max_uV && max_uV >= range->min_uV))
|
||||
ret = linear_range_get_selector_high(range, min_uV, &sel,
|
||||
&found);
|
||||
if (ret)
|
||||
continue;
|
||||
|
||||
if (min_uV <= range->min_uV)
|
||||
min_uV = range->min_uV;
|
||||
|
||||
/* range->uV_step == 0 means fixed voltage range */
|
||||
if (range->uV_step == 0) {
|
||||
ret = 0;
|
||||
} else {
|
||||
ret = DIV_ROUND_UP(min_uV - range->min_uV,
|
||||
range->uV_step);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret += range->min_sel;
|
||||
ret = sel;
|
||||
|
||||
/*
|
||||
* Map back into a voltage to verify we're still in bounds.
|
||||
* If we are not, then continue checking rest of the ranges.
|
||||
*/
|
||||
voltage = rdev->desc->ops->list_voltage(rdev, ret);
|
||||
voltage = rdev->desc->ops->list_voltage(rdev, sel);
|
||||
if (voltage >= min_uV && voltage <= max_uV)
|
||||
break;
|
||||
}
|
||||
@@ -468,7 +456,7 @@ EXPORT_SYMBOL_GPL(regulator_map_voltage_linear_range);
|
||||
int regulator_map_voltage_pickable_linear_range(struct regulator_dev *rdev,
|
||||
int min_uV, int max_uV)
|
||||
{
|
||||
const struct regulator_linear_range *range;
|
||||
const struct linear_range *range;
|
||||
int ret = -EINVAL;
|
||||
int voltage, i;
|
||||
unsigned int selector = 0;
|
||||
@@ -480,30 +468,25 @@ int regulator_map_voltage_pickable_linear_range(struct regulator_dev *rdev,
|
||||
|
||||
for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
|
||||
int linear_max_uV;
|
||||
bool found;
|
||||
unsigned int sel;
|
||||
|
||||
range = &rdev->desc->linear_ranges[i];
|
||||
linear_max_uV = range->min_uV +
|
||||
(range->max_sel - range->min_sel) * range->uV_step;
|
||||
linear_max_uV = linear_range_get_max_value(range);
|
||||
|
||||
if (!(min_uV <= linear_max_uV && max_uV >= range->min_uV)) {
|
||||
selector += (range->max_sel - range->min_sel + 1);
|
||||
if (!(min_uV <= linear_max_uV && max_uV >= range->min)) {
|
||||
selector += linear_range_values_in_range(range);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (min_uV <= range->min_uV)
|
||||
min_uV = range->min_uV;
|
||||
|
||||
/* range->uV_step == 0 means fixed voltage range */
|
||||
if (range->uV_step == 0) {
|
||||
ret = 0;
|
||||
} else {
|
||||
ret = DIV_ROUND_UP(min_uV - range->min_uV,
|
||||
range->uV_step);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = linear_range_get_selector_high(range, min_uV, &sel,
|
||||
&found);
|
||||
if (ret) {
|
||||
selector += linear_range_values_in_range(range);
|
||||
continue;
|
||||
}
|
||||
|
||||
ret += selector;
|
||||
ret = selector + sel;
|
||||
|
||||
voltage = rdev->desc->ops->list_voltage(rdev, ret);
|
||||
|
||||
@@ -513,7 +496,7 @@ int regulator_map_voltage_pickable_linear_range(struct regulator_dev *rdev,
|
||||
* exit but retry until we have checked all ranges.
|
||||
*/
|
||||
if (voltage < min_uV || voltage > max_uV)
|
||||
selector += (range->max_sel - range->min_sel + 1);
|
||||
selector += linear_range_values_in_range(range);
|
||||
else
|
||||
break;
|
||||
}
|
||||
@@ -561,7 +544,7 @@ EXPORT_SYMBOL_GPL(regulator_list_voltage_linear);
|
||||
int regulator_list_voltage_pickable_linear_range(struct regulator_dev *rdev,
|
||||
unsigned int selector)
|
||||
{
|
||||
const struct regulator_linear_range *range;
|
||||
const struct linear_range *range;
|
||||
int i;
|
||||
unsigned int all_sels = 0;
|
||||
|
||||
@@ -571,18 +554,28 @@ int regulator_list_voltage_pickable_linear_range(struct regulator_dev *rdev,
|
||||
}
|
||||
|
||||
for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
|
||||
unsigned int sels_in_range;
|
||||
unsigned int sel_indexes;
|
||||
|
||||
range = &rdev->desc->linear_ranges[i];
|
||||
|
||||
sels_in_range = range->max_sel - range->min_sel;
|
||||
sel_indexes = linear_range_values_in_range(range) - 1;
|
||||
|
||||
if (all_sels + sels_in_range >= selector) {
|
||||
if (all_sels + sel_indexes >= selector) {
|
||||
selector -= all_sels;
|
||||
return range->min_uV + (range->uV_step * selector);
|
||||
/*
|
||||
* As we see here, pickable ranges work only as
|
||||
* long as the first selector for each pickable
|
||||
* range is 0, and the each subsequent range for
|
||||
* this 'pick' follow immediately at next unused
|
||||
* selector (Eg. there is no gaps between ranges).
|
||||
* I think this is fine but it probably should be
|
||||
* documented. OTOH, whole pickable range stuff
|
||||
* might benefit from some documentation
|
||||
*/
|
||||
return range->min + (range->step * selector);
|
||||
}
|
||||
|
||||
all_sels += (sels_in_range + 1);
|
||||
all_sels += (sel_indexes + 1);
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
@@ -604,27 +597,18 @@ EXPORT_SYMBOL_GPL(regulator_list_voltage_pickable_linear_range);
|
||||
int regulator_desc_list_voltage_linear_range(const struct regulator_desc *desc,
|
||||
unsigned int selector)
|
||||
{
|
||||
const struct regulator_linear_range *range;
|
||||
int i;
|
||||
unsigned int val;
|
||||
int ret;
|
||||
|
||||
if (!desc->n_linear_ranges) {
|
||||
BUG_ON(!desc->n_linear_ranges);
|
||||
return -EINVAL;
|
||||
}
|
||||
BUG_ON(!desc->n_linear_ranges);
|
||||
|
||||
for (i = 0; i < desc->n_linear_ranges; i++) {
|
||||
range = &desc->linear_ranges[i];
|
||||
ret = linear_range_get_value_array(desc->linear_ranges,
|
||||
desc->n_linear_ranges, selector,
|
||||
&val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (!(selector >= range->min_sel &&
|
||||
selector <= range->max_sel))
|
||||
continue;
|
||||
|
||||
selector -= range->min_sel;
|
||||
|
||||
return range->min_uV + (range->uV_step * selector);
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
return val;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(regulator_desc_list_voltage_linear_range);
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ static const unsigned int ldo_8_voltages[] = {
|
||||
};
|
||||
|
||||
/* Ranges are sorted in ascending order. */
|
||||
static const struct regulator_linear_range ldo_audio_volt_range[] = {
|
||||
static const struct linear_range ldo_audio_volt_range[] = {
|
||||
REGULATOR_LINEAR_RANGE(2800000, 0, 3, 50000),
|
||||
REGULATOR_LINEAR_RANGE(3000000, 4, 7, 100000),
|
||||
};
|
||||
@@ -195,7 +195,7 @@ static const struct regulator_ops hi6421_buck345_ops;
|
||||
* _id - LDO id name string
|
||||
* _match - of match name string
|
||||
* n_volt - number of votages available
|
||||
* volt_ranges - array of regulator_linear_range
|
||||
* volt_ranges - array of linear_range
|
||||
* vstep - voltage increase in each linear step in uV
|
||||
* vreg - voltage select register
|
||||
* vmask - voltage select mask
|
||||
|
||||
@@ -36,7 +36,7 @@ static const struct regulator_ops lochnagar_micvdd_ops = {
|
||||
.set_voltage_sel = regulator_set_voltage_sel_regmap,
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range lochnagar_micvdd_ranges[] = {
|
||||
static const struct linear_range lochnagar_micvdd_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(1000000, 0, 0xC, 50000),
|
||||
REGULATOR_LINEAR_RANGE(1700000, 0xD, 0x1F, 100000),
|
||||
};
|
||||
@@ -97,7 +97,7 @@ static const struct regulator_ops lochnagar_vddcore_ops = {
|
||||
.set_voltage_sel = regulator_set_voltage_sel_regmap,
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range lochnagar_vddcore_ranges[] = {
|
||||
static const struct linear_range lochnagar_vddcore_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(600000, 0x8, 0x41, 12500),
|
||||
};
|
||||
|
||||
|
||||
@@ -54,14 +54,14 @@ struct lp873x_regulator {
|
||||
|
||||
static const struct lp873x_regulator regulators[];
|
||||
|
||||
static const struct regulator_linear_range buck0_buck1_ranges[] = {
|
||||
static const struct linear_range buck0_buck1_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(0, 0x0, 0x13, 0),
|
||||
REGULATOR_LINEAR_RANGE(700000, 0x14, 0x17, 10000),
|
||||
REGULATOR_LINEAR_RANGE(735000, 0x18, 0x9d, 5000),
|
||||
REGULATOR_LINEAR_RANGE(1420000, 0x9e, 0xff, 20000),
|
||||
};
|
||||
|
||||
static const struct regulator_linear_range ldo0_ldo1_ranges[] = {
|
||||
static const struct linear_range ldo0_ldo1_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(800000, 0x0, 0x19, 100000),
|
||||
};
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ struct lp87565_regulator {
|
||||
|
||||
static const struct lp87565_regulator regulators[];
|
||||
|
||||
static const struct regulator_linear_range buck0_1_2_3_ranges[] = {
|
||||
static const struct linear_range buck0_1_2_3_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(600000, 0xA, 0x17, 10000),
|
||||
REGULATOR_LINEAR_RANGE(735000, 0x18, 0x9d, 5000),
|
||||
REGULATOR_LINEAR_RANGE(1420000, 0x9e, 0xff, 20000),
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user