diff --git a/drivers/video/pwm_backlight.c b/drivers/video/pwm_backlight.c index a124a961cb..718b2fd04b 100644 --- a/drivers/video/pwm_backlight.c +++ b/drivers/video/pwm_backlight.c @@ -20,6 +20,7 @@ struct pwm_backlight_priv { struct udevice *pwm; uint channel; uint period_ns; + bool polarity; uint default_level; uint min_level; uint max_level; @@ -45,6 +46,12 @@ static int pwm_backlight_enable(struct udevice *dev) mdelay(120); } + ret = pwm_set_invert(priv->pwm, priv->channel, priv->polarity); + if (ret) { + dev_err(dev, "Failed to invert PWM\n"); + return ret; + } + duty_cycle = priv->period_ns * (priv->default_level - priv->min_level) / (priv->max_level - priv->min_level + 1); ret = pwm_set_config(priv->pwm, priv->channel, priv->period_ns, @@ -136,6 +143,7 @@ static int pwm_backlight_ofdata_to_platdata(struct udevice *dev) } priv->channel = args.args[0]; priv->period_ns = args.args[1]; + priv->polarity = args.args[2]; index = dev_read_u32_default(dev, "default-brightness-level", 255); cell = dev_read_prop(dev, "brightness-levels", &len);