Lines Matching +full:gpio +full:- +full:backlight

1 // SPDX-License-Identifier: GPL-2.0-only
3 * gpio_backlight.c - Simple GPIO-controlled backlight
6 #include <linux/backlight.h>
9 #include <linux/gpio/consumer.h>
28 gpiod_set_value_cansleep(gbl->gpiod, backlight_get_brightness(bl)); in gpio_backlight_update_status()
38 return gbl->fbdev == NULL || gbl->fbdev == info->dev; in gpio_backlight_check_fb()
49 struct device *dev = &pdev->dev; in gpio_backlight_probe()
51 struct device_node *of_node = dev->of_node; in gpio_backlight_probe()
59 return -ENOMEM; in gpio_backlight_probe()
62 gbl->fbdev = pdata->fbdev; in gpio_backlight_probe()
64 def_value = device_property_read_bool(dev, "default-on"); in gpio_backlight_probe()
66 gbl->gpiod = devm_gpiod_get(dev, NULL, GPIOD_ASIS); in gpio_backlight_probe()
67 if (IS_ERR(gbl->gpiod)) { in gpio_backlight_probe()
68 ret = PTR_ERR(gbl->gpiod); in gpio_backlight_probe()
69 if (ret != -EPROBE_DEFER) in gpio_backlight_probe()
81 dev_err(dev, "failed to register backlight\n"); in gpio_backlight_probe()
86 if (!of_node || !of_node->phandle) in gpio_backlight_probe()
88 bl->props.power = def_value ? FB_BLANK_UNBLANK in gpio_backlight_probe()
90 else if (gpiod_get_direction(gbl->gpiod) == 0 && in gpio_backlight_probe()
91 gpiod_get_value_cansleep(gbl->gpiod) == 0) in gpio_backlight_probe()
92 bl->props.power = FB_BLANK_POWERDOWN; in gpio_backlight_probe()
94 bl->props.power = FB_BLANK_UNBLANK; in gpio_backlight_probe()
96 bl->props.brightness = 1; in gpio_backlight_probe()
99 ret = gpiod_direction_output(gbl->gpiod, init_brightness); in gpio_backlight_probe()
110 { .compatible = "gpio-backlight" },
118 .name = "gpio-backlight",
127 MODULE_DESCRIPTION("GPIO-based Backlight Driver");
129 MODULE_ALIAS("platform:gpio-backlight");