static int pwm_regulator_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV, unsigned *selector) { 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); int duty_cycle; int ret; duty_cycle = pwm_voltage_to_duty_cycle_percentage(rdev, min_uV); ret = pwm_config(drvdata->pwm, (period / 100) * duty_cycle, period); if (ret) { dev_err(&rdev->dev, "Failed to configure PWM\n"); return ret; } ret = pwm_enable(drvdata->pwm); if (ret) { dev_err(&rdev->dev, "Failed to enable PWM\n"); return ret; } drvdata->volt_uV = min_uV; /* Delay required by PWM regulator to settle to the new voltage */ usleep_range(ramp_delay, ramp_delay + 1000); return 0; }
static int pwm_regulator_set_voltage(struct udevice *dev, int uvolt) { struct pwm_regulator_info *priv = dev_get_priv(dev); int duty_cycle; int ret = 0; duty_cycle = pwm_voltage_to_duty_cycle_percentage(dev, uvolt); ret = pwm_set_invert(priv->pwm, priv->pwm_id, priv->polarity); if (ret) { dev_err(dev, "Failed to init PWM\n"); return ret; } ret = pwm_set_config(priv->pwm, priv->pwm_id, priv->period_ns, (priv->period_ns / 100) * duty_cycle); if (ret) { dev_err(dev, "Failed to configure PWM\n"); return ret; } priv->volt_uV = uvolt; return ret; }