Lines Matching +full:bl +full:- +full:name
1 // SPDX-License-Identifier: GPL-2.0-or-later
26 static int adp5520_bl_set(struct backlight_device *bl, int brightness) in adp5520_bl_set() argument
28 struct adp5520_bl *data = bl_get_data(bl); in adp5520_bl_set()
29 struct device *master = data->master; in adp5520_bl_set()
32 if (data->pdata->en_ambl_sens) { in adp5520_bl_set()
41 * MAX_BRIGHTNESS -> Enable Ambient Light auto adjust in adp5520_bl_set()
45 data->cached_daylight_max); in adp5520_bl_set()
53 if (data->current_brightness && brightness == 0) in adp5520_bl_set()
56 else if (data->current_brightness == 0 && brightness) in adp5520_bl_set()
61 data->current_brightness = brightness; in adp5520_bl_set()
66 static int adp5520_bl_update_status(struct backlight_device *bl) in adp5520_bl_update_status() argument
68 return adp5520_bl_set(bl, backlight_get_brightness(bl)); in adp5520_bl_update_status()
71 static int adp5520_bl_get_brightness(struct backlight_device *bl) in adp5520_bl_get_brightness() argument
73 struct adp5520_bl *data = bl_get_data(bl); in adp5520_bl_get_brightness()
77 error = adp5520_read(data->master, ADP5520_BL_VALUE, ®_val); in adp5520_bl_get_brightness()
79 return error ? data->current_brightness : reg_val; in adp5520_bl_get_brightness()
87 static int adp5520_bl_setup(struct backlight_device *bl) in adp5520_bl_setup() argument
89 struct adp5520_bl *data = bl_get_data(bl); in adp5520_bl_setup()
90 struct device *master = data->master; in adp5520_bl_setup()
91 struct adp5520_backlight_platform_data *pdata = data->pdata; in adp5520_bl_setup()
95 pdata->l1_daylight_max); in adp5520_bl_setup()
97 pdata->l1_daylight_dim); in adp5520_bl_setup()
99 if (pdata->en_ambl_sens) { in adp5520_bl_setup()
100 data->cached_daylight_max = pdata->l1_daylight_max; in adp5520_bl_setup()
102 pdata->l2_office_max); in adp5520_bl_setup()
104 pdata->l2_office_dim); in adp5520_bl_setup()
106 pdata->l3_dark_max); in adp5520_bl_setup()
108 pdata->l3_dark_dim); in adp5520_bl_setup()
110 pdata->l2_trip); in adp5520_bl_setup()
112 pdata->l2_hyst); in adp5520_bl_setup()
114 pdata->l3_trip); in adp5520_bl_setup()
116 pdata->l3_hyst); in adp5520_bl_setup()
118 ALS_CMPR_CFG_VAL(pdata->abml_filt, in adp5520_bl_setup()
123 BL_CTRL_VAL(pdata->fade_led_law, in adp5520_bl_setup()
124 pdata->en_ambl_sens)); in adp5520_bl_setup()
126 ret |= adp5520_write(master, ADP5520_BL_FADE, FADE_VAL(pdata->fade_in, in adp5520_bl_setup()
127 pdata->fade_out)); in adp5520_bl_setup()
141 mutex_lock(&data->lock); in adp5520_show()
142 ret = adp5520_read(data->master, reg, ®_val); in adp5520_show()
143 mutex_unlock(&data->lock); in adp5520_show()
162 mutex_lock(&data->lock); in adp5520_store()
163 adp5520_write(data->master, reg, val); in adp5520_store()
164 mutex_unlock(&data->lock); in adp5520_store()
212 ret = kstrtoul(buf, 10, &data->cached_daylight_max); in adp5520_bl_daylight_max_store()
283 struct backlight_device *bl; in adp5520_bl_probe() local
287 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); in adp5520_bl_probe()
289 return -ENOMEM; in adp5520_bl_probe()
291 data->master = pdev->dev.parent; in adp5520_bl_probe()
292 data->pdata = dev_get_platdata(&pdev->dev); in adp5520_bl_probe()
294 if (data->pdata == NULL) { in adp5520_bl_probe()
295 dev_err(&pdev->dev, "missing platform data\n"); in adp5520_bl_probe()
296 return -ENODEV; in adp5520_bl_probe()
299 data->id = pdev->id; in adp5520_bl_probe()
300 data->current_brightness = 0; in adp5520_bl_probe()
302 mutex_init(&data->lock); in adp5520_bl_probe()
307 bl = devm_backlight_device_register(&pdev->dev, pdev->name, in adp5520_bl_probe()
308 data->master, data, &adp5520_bl_ops, in adp5520_bl_probe()
310 if (IS_ERR(bl)) { in adp5520_bl_probe()
311 dev_err(&pdev->dev, "failed to register backlight\n"); in adp5520_bl_probe()
312 return PTR_ERR(bl); in adp5520_bl_probe()
315 bl->props.brightness = ADP5020_MAX_BRIGHTNESS; in adp5520_bl_probe()
316 if (data->pdata->en_ambl_sens) in adp5520_bl_probe()
317 ret = sysfs_create_group(&bl->dev.kobj, in adp5520_bl_probe()
321 dev_err(&pdev->dev, "failed to register sysfs\n"); in adp5520_bl_probe()
325 platform_set_drvdata(pdev, bl); in adp5520_bl_probe()
326 ret = adp5520_bl_setup(bl); in adp5520_bl_probe()
328 dev_err(&pdev->dev, "failed to setup\n"); in adp5520_bl_probe()
329 if (data->pdata->en_ambl_sens) in adp5520_bl_probe()
330 sysfs_remove_group(&bl->dev.kobj, in adp5520_bl_probe()
335 backlight_update_status(bl); in adp5520_bl_probe()
342 struct backlight_device *bl = platform_get_drvdata(pdev); in adp5520_bl_remove() local
343 struct adp5520_bl *data = bl_get_data(bl); in adp5520_bl_remove()
345 adp5520_clr_bits(data->master, ADP5520_MODE_STATUS, ADP5520_BL_EN); in adp5520_bl_remove()
347 if (data->pdata->en_ambl_sens) in adp5520_bl_remove()
348 sysfs_remove_group(&bl->dev.kobj, in adp5520_bl_remove()
355 struct backlight_device *bl = dev_get_drvdata(dev); in adp5520_bl_suspend() local
357 return adp5520_bl_set(bl, 0); in adp5520_bl_suspend()
362 struct backlight_device *bl = dev_get_drvdata(dev); in adp5520_bl_resume() local
364 backlight_update_status(bl); in adp5520_bl_resume()
374 .name = "adp5520-backlight",
386 MODULE_ALIAS("platform:adp5520-backlight");