Merge tag 'efi-2019-07-rc2' of git://git.denx.de/u-boot-efi
[oweals/u-boot.git] / drivers / video / pwm_backlight.c
index c13a90770909651f12d1c7bbbd5446f144b2d040..a587977c225045599aafe6b5c0b782ae3495041d 100644 (file)
@@ -39,6 +39,12 @@ struct pwm_backlight_priv {
        struct udevice *pwm;
        uint channel;
        uint period_ns;
+       /*
+        * the polarity of one PWM
+        * 0: normal polarity
+        * 1: inverted polarity
+        */
+       bool polarity;
        u32 *levels;
        int num_levels;
        uint default_level;
@@ -57,7 +63,10 @@ static int set_pwm(struct pwm_backlight_priv *priv)
                (priv->max_level - priv->min_level + 1);
        ret = pwm_set_config(priv->pwm, priv->channel, priv->period_ns,
                             duty_cycle);
+       if (ret)
+               return log_ret(ret);
 
+       ret = pwm_set_invert(priv->pwm, priv->channel, priv->polarity);
        return log_ret(ret);
 }
 
@@ -78,7 +87,7 @@ static int enable_sequence(struct udevice *dev, int seq)
                        ret = regulator_set_enable(priv->reg, true);
                        if (ret) {
                                log_debug("Cannot enable regulator for PWM '%s'\n",
-                                         __func__, dev->name);
+                                         dev->name);
                                return log_ret(ret);
                        }
                        mdelay(120);
@@ -202,6 +211,8 @@ static int pwm_backlight_ofdata_to_platdata(struct udevice *dev)
                return log_msg_ret("Not enough arguments to pwm\n", -EINVAL);
        priv->channel = args.args[0];
        priv->period_ns = args.args[1];
+       if (args.args_count > 2)
+               priv->polarity = args.args[2];
 
        index = dev_read_u32_default(dev, "default-brightness-level", 255);
        cell = dev_read_prop(dev, "brightness-levels", &len);