diff options
Diffstat (limited to 'drivers/regulator/bd718x7-regulator.c')
| -rw-r--r-- | drivers/regulator/bd718x7-regulator.c | 60 | 
1 files changed, 27 insertions, 33 deletions
| diff --git a/drivers/regulator/bd718x7-regulator.c b/drivers/regulator/bd718x7-regulator.c index 8ff47ea522d6..e61295b30503 100644 --- a/drivers/regulator/bd718x7-regulator.c +++ b/drivers/regulator/bd718x7-regulator.c @@ -86,37 +86,7 @@ static const struct regulator_ops BD718XX_HWOPNAME(name) = {	\   * 10: 2.50mV/usec	10mV 4uS   * 11: 1.25mV/usec	10mV 8uS   */ -static int bd718xx_buck1234_set_ramp_delay(struct regulator_dev *rdev, -					   int ramp_delay) -{ -	int id = rdev_get_id(rdev); -	unsigned int ramp_value; - -	dev_dbg(&rdev->dev, "Buck[%d] Set Ramp = %d\n", id + 1, -		ramp_delay); -	switch (ramp_delay) { -	case 1 ... 1250: -		ramp_value = BUCK_RAMPRATE_1P25MV; -		break; -	case 1251 ... 2500: -		ramp_value = BUCK_RAMPRATE_2P50MV; -		break; -	case 2501 ... 5000: -		ramp_value = BUCK_RAMPRATE_5P00MV; -		break; -	case 5001 ... 10000: -		ramp_value = BUCK_RAMPRATE_10P00MV; -		break; -	default: -		ramp_value = BUCK_RAMPRATE_10P00MV; -		dev_err(&rdev->dev, -			"%s: ramp_delay: %d not supported, setting 10000mV//us\n", -			rdev->desc->name, ramp_delay); -	} - -	return regmap_update_bits(rdev->regmap, BD718XX_REG_BUCK1_CTRL + id, -				  BUCK_RAMPRATE_MASK, ramp_value << 6); -} +static const unsigned int bd718xx_ramp_delay[] = { 10000, 5000, 2500, 1250 };  /* These functions are used when regulators are under HW state machine control.   * We assume PMIC is in RUN state because SW running and able to query the @@ -378,7 +348,7 @@ static const struct regulator_ops bd71837_buck34_ops_hwctrl = {  	.set_voltage_sel = regulator_set_voltage_sel_regmap,  	.get_voltage_sel = regulator_get_voltage_sel_regmap,  	.set_voltage_time_sel = regulator_set_voltage_time_sel, -	.set_ramp_delay = bd718xx_buck1234_set_ramp_delay, +	.set_ramp_delay = regulator_set_ramp_delay_regmap,  };  /* @@ -387,7 +357,7 @@ static const struct regulator_ops bd71837_buck34_ops_hwctrl = {  BD718XX_OPS(bd718xx_dvs_buck_regulator_ops, regulator_list_voltage_linear_range,  	    NULL, regulator_set_voltage_sel_regmap,  	    regulator_get_voltage_sel_regmap, regulator_set_voltage_time_sel, -	    bd718xx_buck1234_set_ramp_delay); +	    /* bd718xx_buck1234_set_ramp_delay */ regulator_set_ramp_delay_regmap);  /*   * BD71837 BUCK1/2/3/4 @@ -645,6 +615,10 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {  			.enable_mask = BD718XX_BUCK_EN,  			.enable_time = BD71847_BUCK1_STARTUP_TIME,  			.owner = THIS_MODULE, +			.ramp_delay_table = bd718xx_ramp_delay, +			.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay), +			.ramp_reg = BD718XX_REG_BUCK1_CTRL, +			.ramp_mask = BUCK_RAMPRATE_MASK,  			.of_parse_cb = buck_set_hw_dvs_levels,  		},  		.dvs = { @@ -678,6 +652,10 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {  			.enable_reg = BD718XX_REG_BUCK2_CTRL,  			.enable_mask = BD718XX_BUCK_EN,  			.enable_time = BD71847_BUCK2_STARTUP_TIME, +			.ramp_delay_table = bd718xx_ramp_delay, +			.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay), +			.ramp_reg = BD718XX_REG_BUCK2_CTRL, +			.ramp_mask = BUCK_RAMPRATE_MASK,  			.owner = THIS_MODULE,  			.of_parse_cb = buck_set_hw_dvs_levels,  		}, @@ -985,6 +963,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {  			.enable_reg = BD718XX_REG_BUCK1_CTRL,  			.enable_mask = BD718XX_BUCK_EN,  			.enable_time = BD71837_BUCK1_STARTUP_TIME, +			.ramp_delay_table = bd718xx_ramp_delay, +			.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay), +			.ramp_reg = BD718XX_REG_BUCK1_CTRL, +			.ramp_mask = BUCK_RAMPRATE_MASK,  			.owner = THIS_MODULE,  			.of_parse_cb = buck_set_hw_dvs_levels,  		}, @@ -1019,6 +1001,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {  			.enable_reg = BD718XX_REG_BUCK2_CTRL,  			.enable_mask = BD718XX_BUCK_EN,  			.enable_time = BD71837_BUCK2_STARTUP_TIME, +			.ramp_delay_table = bd718xx_ramp_delay, +			.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay), +			.ramp_reg = BD718XX_REG_BUCK2_CTRL, +			.ramp_mask = BUCK_RAMPRATE_MASK,  			.owner = THIS_MODULE,  			.of_parse_cb = buck_set_hw_dvs_levels,  		}, @@ -1050,6 +1036,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {  			.enable_reg = BD71837_REG_BUCK3_CTRL,  			.enable_mask = BD718XX_BUCK_EN,  			.enable_time = BD71837_BUCK3_STARTUP_TIME, +			.ramp_delay_table = bd718xx_ramp_delay, +			.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay), +			.ramp_reg = BD71837_REG_BUCK3_CTRL, +			.ramp_mask = BUCK_RAMPRATE_MASK,  			.owner = THIS_MODULE,  			.of_parse_cb = buck_set_hw_dvs_levels,  		}, @@ -1079,6 +1069,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {  			.enable_reg = BD71837_REG_BUCK4_CTRL,  			.enable_mask = BD718XX_BUCK_EN,  			.enable_time = BD71837_BUCK4_STARTUP_TIME, +			.ramp_delay_table = bd718xx_ramp_delay, +			.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay), +			.ramp_reg = BD71837_REG_BUCK4_CTRL, +			.ramp_mask = BUCK_RAMPRATE_MASK,  			.owner = THIS_MODULE,  			.of_parse_cb = buck_set_hw_dvs_levels,  		}, | 
