Lines Matching +full:led +full:- +full:sources
1 // SPDX-License-Identifier: GPL-2.0-only
3 * sky81452-backlight.c SKY81452 backlight driver
40 #define SKY81452_DEFAULT_NAME "lcd-backlight"
46 * If it is not defined, default name is lcd-backlight.
71 dev_get_platdata(bd->dev.parent); in sky81452_bl_update_status()
72 const unsigned int brightness = (unsigned int)bd->props.brightness; in sky81452_bl_update_status()
77 ret = regmap_write(regmap, SKY81452_REG0, brightness - 1); in sky81452_bl_update_status()
82 pdata->enable << CTZ(SKY81452_EN)); in sky81452_bl_update_status()
119 reg = !strcmp(attr->attr.name, "open") ? SKY81452_REG5 : SKY81452_REG4; in sky81452_bl_show_open_short()
155 strcat(buf, "over-current "); in sky81452_bl_show_fault()
158 strcat(buf, "over-temperature"); in sky81452_bl_show_fault()
185 struct device_node *np = of_node_get(dev->of_node); in sky81452_bl_parse_dt()
188 unsigned int sources[6]; in sky81452_bl_parse_dt() local
193 return ERR_PTR(-ENODATA); in sky81452_bl_parse_dt()
199 return ERR_PTR(-ENOMEM); in sky81452_bl_parse_dt()
202 of_property_read_string(np, "name", &pdata->name); in sky81452_bl_parse_dt()
203 pdata->ignore_pwm = of_property_read_bool(np, "skyworks,ignore-pwm"); in sky81452_bl_parse_dt()
204 pdata->dpwm_mode = of_property_read_bool(np, "skyworks,dpwm-mode"); in sky81452_bl_parse_dt()
205 pdata->phase_shift = of_property_read_bool(np, "skyworks,phase-shift"); in sky81452_bl_parse_dt()
206 pdata->gpiod_enable = devm_gpiod_get_optional(dev, NULL, GPIOD_OUT_HIGH); in sky81452_bl_parse_dt()
208 ret = of_property_count_u32_elems(np, "led-sources"); in sky81452_bl_parse_dt()
210 pdata->enable = SKY81452_EN >> CTZ(SKY81452_EN); in sky81452_bl_parse_dt()
216 ret = of_property_read_u32_array(np, "led-sources", sources, in sky81452_bl_parse_dt()
219 dev_err(dev, "led-sources node is invalid.\n"); in sky81452_bl_parse_dt()
221 return ERR_PTR(-EINVAL); in sky81452_bl_parse_dt()
224 pdata->enable = 0; in sky81452_bl_parse_dt()
225 while (--num_entry) in sky81452_bl_parse_dt()
226 pdata->enable |= (1 << sources[num_entry]); in sky81452_bl_parse_dt()
230 "skyworks,short-detection-threshold-volt", in sky81452_bl_parse_dt()
231 &pdata->short_detection_threshold); in sky81452_bl_parse_dt()
233 pdata->short_detection_threshold = 7; in sky81452_bl_parse_dt()
235 ret = of_property_read_u32(np, "skyworks,current-limit-mA", in sky81452_bl_parse_dt()
236 &pdata->boost_current_limit); in sky81452_bl_parse_dt()
238 pdata->boost_current_limit = 2750; in sky81452_bl_parse_dt()
247 return ERR_PTR(-EINVAL); in sky81452_bl_parse_dt()
256 value = pdata->ignore_pwm ? SKY81452_IGPW : 0; in sky81452_bl_init_device()
257 value |= pdata->dpwm_mode ? SKY81452_PWMMD : 0; in sky81452_bl_init_device()
258 value |= pdata->phase_shift ? 0 : SKY81452_PHASE; in sky81452_bl_init_device()
260 if (pdata->boost_current_limit == 2300) in sky81452_bl_init_device()
262 else if (pdata->boost_current_limit != 2750) in sky81452_bl_init_device()
263 return -EINVAL; in sky81452_bl_init_device()
265 if (pdata->short_detection_threshold < 4 || in sky81452_bl_init_device()
266 pdata->short_detection_threshold > 7) in sky81452_bl_init_device()
267 return -EINVAL; in sky81452_bl_init_device()
268 value |= (7 - pdata->short_detection_threshold) << CTZ(SKY81452_VSHRT); in sky81452_bl_init_device()
275 struct device *dev = &pdev->dev; in sky81452_bl_probe()
276 struct regmap *regmap = dev_get_drvdata(dev->parent); in sky81452_bl_probe()
295 name = pdata->name ? pdata->name : SKY81452_DEFAULT_NAME; in sky81452_bl_probe()
305 ret = sysfs_create_group(&bd->dev.kobj, &sky81452_bl_attr_group); in sky81452_bl_probe()
317 dev_get_platdata(&pdev->dev); in sky81452_bl_remove()
320 sysfs_remove_group(&bd->dev.kobj, &sky81452_bl_attr_group); in sky81452_bl_remove()
322 bd->props.power = FB_BLANK_UNBLANK; in sky81452_bl_remove()
323 bd->props.brightness = 0; in sky81452_bl_remove()
326 if (pdata->gpiod_enable) in sky81452_bl_remove()
327 gpiod_set_value_cansleep(pdata->gpiod_enable, 0); in sky81452_bl_remove()
334 { .compatible = "skyworks,sky81452-backlight", },
342 .name = "sky81452-backlight",