video: backlight: fix pwm's duty cycle calculation
For levels equal to the maximum value, the duty cycle must be equal to the period. Signed-off-by: Dario Binacchi <dariobin@libero.it> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
		
							parent
							
								
									f9b94055bd
								
							
						
					
					
						commit
						76c2ff3e5f
					
				|  | @ -63,7 +63,7 @@ static int set_pwm(struct pwm_backlight_priv *priv) | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	duty_cycle = priv->period_ns * (priv->cur_level - priv->min_level) / | 	duty_cycle = priv->period_ns * (priv->cur_level - priv->min_level) / | ||||||
| 		(priv->max_level - priv->min_level + 1); | 		(priv->max_level - priv->min_level); | ||||||
| 	ret = pwm_set_config(priv->pwm, priv->channel, priv->period_ns, | 	ret = pwm_set_config(priv->pwm, priv->channel, priv->period_ns, | ||||||
| 			     duty_cycle); | 			     duty_cycle); | ||||||
| 	if (ret) | 	if (ret) | ||||||
|  |  | ||||||
|  | @ -40,7 +40,7 @@ static int dm_test_panel(struct unit_test_state *uts) | ||||||
| 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | ||||||
| 					   &enable, &polarity)); | 					   &enable, &polarity)); | ||||||
| 	ut_asserteq(1000, period_ns); | 	ut_asserteq(1000, period_ns); | ||||||
| 	ut_asserteq(170 * 1000 / 256, duty_ns); | 	ut_asserteq(170 * 1000 / 255, duty_ns); | ||||||
| 	ut_asserteq(true, enable); | 	ut_asserteq(true, enable); | ||||||
| 	ut_asserteq(false, polarity); | 	ut_asserteq(false, polarity); | ||||||
| 	ut_asserteq(1, sandbox_gpio_get_value(gpio, 1)); | 	ut_asserteq(1, sandbox_gpio_get_value(gpio, 1)); | ||||||
|  | @ -49,29 +49,29 @@ static int dm_test_panel(struct unit_test_state *uts) | ||||||
| 	ut_assertok(panel_set_backlight(dev, 40)); | 	ut_assertok(panel_set_backlight(dev, 40)); | ||||||
| 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | ||||||
| 					   &enable, &polarity)); | 					   &enable, &polarity)); | ||||||
| 	ut_asserteq(64 * 1000 / 256, duty_ns); | 	ut_asserteq(64 * 1000 / 255, duty_ns); | ||||||
| 
 | 
 | ||||||
| 	ut_assertok(panel_set_backlight(dev, BACKLIGHT_MAX)); | 	ut_assertok(panel_set_backlight(dev, BACKLIGHT_MAX)); | ||||||
| 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | ||||||
| 					   &enable, &polarity)); | 					   &enable, &polarity)); | ||||||
| 	ut_asserteq(255 * 1000 / 256, duty_ns); | 	ut_asserteq(255 * 1000 / 255, duty_ns); | ||||||
| 
 | 
 | ||||||
| 	ut_assertok(panel_set_backlight(dev, BACKLIGHT_MIN)); | 	ut_assertok(panel_set_backlight(dev, BACKLIGHT_MIN)); | ||||||
| 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | ||||||
| 					   &enable, &polarity)); | 					   &enable, &polarity)); | ||||||
| 	ut_asserteq(0 * 1000 / 256, duty_ns); | 	ut_asserteq(0 * 1000 / 255, duty_ns); | ||||||
| 	ut_asserteq(1, sandbox_gpio_get_value(gpio, 1)); | 	ut_asserteq(1, sandbox_gpio_get_value(gpio, 1)); | ||||||
| 
 | 
 | ||||||
| 	ut_assertok(panel_set_backlight(dev, BACKLIGHT_DEFAULT)); | 	ut_assertok(panel_set_backlight(dev, BACKLIGHT_DEFAULT)); | ||||||
| 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | ||||||
| 					   &enable, &polarity)); | 					   &enable, &polarity)); | ||||||
| 	ut_asserteq(true, enable); | 	ut_asserteq(true, enable); | ||||||
| 	ut_asserteq(170 * 1000 / 256, duty_ns); | 	ut_asserteq(170 * 1000 / 255, duty_ns); | ||||||
| 
 | 
 | ||||||
| 	ut_assertok(panel_set_backlight(dev, BACKLIGHT_OFF)); | 	ut_assertok(panel_set_backlight(dev, BACKLIGHT_OFF)); | ||||||
| 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | 	ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, | ||||||
| 					   &enable, &polarity)); | 					   &enable, &polarity)); | ||||||
| 	ut_asserteq(0 * 1000 / 256, duty_ns); | 	ut_asserteq(0 * 1000 / 255, duty_ns); | ||||||
| 	ut_asserteq(0, sandbox_gpio_get_value(gpio, 1)); | 	ut_asserteq(0, sandbox_gpio_get_value(gpio, 1)); | ||||||
| 	ut_asserteq(false, regulator_get_enable(reg)); | 	ut_asserteq(false, regulator_get_enable(reg)); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue