struct backlight_device *bl;
        struct gpio_backlight *gbl;
        struct device_node *np = pdev->dev.of_node;
+       unsigned long flags = GPIOF_DIR_OUT;
        int ret;
 
        if (!pdata && !np) {
                gbl->def_value = pdata->def_value;
        }
 
-       ret = devm_gpio_request_one(gbl->dev, gbl->gpio, GPIOF_DIR_OUT |
-                                   (gbl->active ? GPIOF_INIT_LOW
-                                                : GPIOF_INIT_HIGH),
+       if (gbl->active)
+               flags |= gbl->def_value ? GPIOF_INIT_HIGH : GPIOF_INIT_LOW;
+       else
+               flags |= gbl->def_value ? GPIOF_INIT_LOW : GPIOF_INIT_HIGH;
+
+       ret = devm_gpio_request_one(gbl->dev, gbl->gpio, flags,
                                    pdata ? pdata->name : "backlight");
        if (ret < 0) {
                dev_err(&pdev->dev, "unable to request GPIO\n");