Merge branch 'for-4.7/pwm-regulator' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm into regulator-pwm
diff --git a/drivers/regulator/pwm-regulator.c b/drivers/regulator/pwm-regulator.c
index 8e928f2..fafa348 100644
--- a/drivers/regulator/pwm-regulator.c
+++ b/drivers/regulator/pwm-regulator.c
@@ -59,16 +59,16 @@
 					 unsigned selector)
 {
 	struct pwm_regulator_data *drvdata = rdev_get_drvdata(rdev);
-	unsigned int pwm_reg_period;
+	struct pwm_args pargs;
 	int dutycycle;
 	int ret;
 
-	pwm_reg_period = pwm_get_period(drvdata->pwm);
+	pwm_get_args(drvdata->pwm, &pargs);
 
-	dutycycle = (pwm_reg_period *
+	dutycycle = (pargs.period *
 		    drvdata->duty_cycle_table[selector].dutycycle) / 100;
 
-	ret = pwm_config(drvdata->pwm, dutycycle, pwm_reg_period);
+	ret = pwm_config(drvdata->pwm, dutycycle, pargs.period);
 	if (ret) {
 		dev_err(&rdev->dev, "Failed to configure PWM: %d\n", ret);
 		return ret;
@@ -126,7 +126,7 @@
 {
 	struct pwm_regulator_data *drvdata = rdev_get_drvdata(rdev);
 	unsigned int ramp_delay = rdev->constraints->ramp_delay;
-	unsigned int period = pwm_get_period(drvdata->pwm);
+	struct pwm_args pargs;
 	unsigned int req_diff = min_uV - rdev->constraints->min_uV;
 	unsigned int diff;
 	unsigned int duty_pulse;
@@ -134,6 +134,7 @@
 	u32 rem;
 	int ret;
 
+	pwm_get_args(drvdata->pwm, &pargs);
 	diff = rdev->constraints->max_uV - rdev->constraints->min_uV;
 
 	/* First try to find out if we get the iduty cycle time which is
@@ -143,16 +144,16 @@
 	 * to get output voltage nearer to requested value as there is no
 	 * calculation loss.
 	 */
-	req_period = req_diff * period;
+	req_period = req_diff * pargs.period;
 	div_u64_rem(req_period, diff, &rem);
 	if (!rem) {
 		do_div(req_period, diff);
 		duty_pulse = (unsigned int)req_period;
 	} else {
-		duty_pulse = (period / 100) * ((req_diff * 100) / diff);
+		duty_pulse = (pargs.period / 100) * ((req_diff * 100) / diff);
 	}
 
-	ret = pwm_config(drvdata->pwm, duty_pulse, period);
+	ret = pwm_config(drvdata->pwm, duty_pulse, pargs.period);
 	if (ret) {
 		dev_err(&rdev->dev, "Failed to configure PWM: %d\n", ret);
 		return ret;
@@ -289,6 +290,12 @@
 		return ret;
 	}
 
+	/*
+	 * FIXME: pwm_apply_args() should be removed when switching to the
+	 * atomic PWM API.
+	 */
+	pwm_apply_args(drvdata->pwm);
+
 	regulator = devm_regulator_register(&pdev->dev,
 					    &drvdata->desc, &config);
 	if (IS_ERR(regulator)) {