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

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Backlight driver for the Kinetic KTD253
4 * Based on code and know-how from the Samsung GT-S7710
7 #include <linux/backlight.h>
11 #include <linux/gpio/consumer.h>
42 u16 current_ratio = ktd253->ratio; in ktd253_backlight_update_status()
45 dev_dbg(ktd253->dev, "new brightness/ratio: %d/32\n", brightness); in ktd253_backlight_update_status()
54 gpiod_set_value_cansleep(ktd253->gpiod, 0); in ktd253_backlight_update_status()
56 * We need to keep the GPIO low for at least this long in ktd253_backlight_update_status()
60 ktd253->ratio = 0; in ktd253_backlight_update_status()
65 gpiod_set_value_cansleep(ktd253->gpiod, 1); in ktd253_backlight_update_status()
81 * These GPIO operations absolutely can NOT sleep so no in ktd253_backlight_update_status()
82 * _cansleep suffixes, and no using GPIO expanders on in ktd253_backlight_update_status()
85 gpiod_set_value(ktd253->gpiod, 0); in ktd253_backlight_update_status()
87 gpiod_set_value(ktd253->gpiod, 1); in ktd253_backlight_update_status()
93 current_ratio--; in ktd253_backlight_update_status()
96 ktd253->ratio = current_ratio; in ktd253_backlight_update_status()
98 dev_dbg(ktd253->dev, "new ratio set to %d/32\n", target_ratio); in ktd253_backlight_update_status()
110 struct device *dev = &pdev->dev; in ktd253_backlight_probe()
119 return -ENOMEM; in ktd253_backlight_probe()
120 ktd253->dev = dev; in ktd253_backlight_probe()
122 ret = device_property_read_u32(dev, "max-brightness", &max_brightness); in ktd253_backlight_probe()
131 ret = device_property_read_u32(dev, "default-brightness", &brightness); in ktd253_backlight_probe()
142 ktd253->ratio = KTD253_MAX_RATIO; in ktd253_backlight_probe()
144 ktd253->ratio = 0; in ktd253_backlight_probe()
146 ktd253->gpiod = devm_gpiod_get(dev, "enable", in ktd253_backlight_probe()
149 if (IS_ERR(ktd253->gpiod)) { in ktd253_backlight_probe()
150 ret = PTR_ERR(ktd253->gpiod); in ktd253_backlight_probe()
151 if (ret != -EPROBE_DEFER) in ktd253_backlight_probe()
152 dev_err(dev, "gpio line missing or invalid.\n"); in ktd253_backlight_probe()
155 gpiod_set_consumer_name(ktd253->gpiod, dev_name(dev)); in ktd253_backlight_probe()
160 dev_err(dev, "failed to register backlight\n"); in ktd253_backlight_probe()
163 bl->props.max_brightness = max_brightness; in ktd253_backlight_probe()
164 /* When we just enable the GPIO line we set max brightness */ in ktd253_backlight_probe()
166 bl->props.brightness = brightness; in ktd253_backlight_probe()
167 bl->props.power = FB_BLANK_UNBLANK; in ktd253_backlight_probe()
169 bl->props.brightness = 0; in ktd253_backlight_probe()
170 bl->props.power = FB_BLANK_POWERDOWN; in ktd253_backlight_probe()
173 ktd253->bl = bl; in ktd253_backlight_probe()
188 .name = "ktd253-backlight",
196 MODULE_DESCRIPTION("Kinetic KTD253 Backlight Driver");
198 MODULE_ALIAS("platform:ktd253-backlight");