.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * LED Flash class driver for the AAT1290 |
---|
3 | 4 | * 1.5A Step-Up Current Regulator for Flash LEDs |
---|
4 | 5 | * |
---|
5 | 6 | * Copyright (C) 2015, Samsung Electronics Co., Ltd. |
---|
6 | 7 | * Author: Jacek Anaszewski <j.anaszewski@samsung.com> |
---|
7 | | - * |
---|
8 | | - * This program is free software; you can redistribute it and/or |
---|
9 | | - * modify it under the terms of the GNU General Public License |
---|
10 | | - * version 2 as published by the Free Software Foundation. |
---|
11 | 8 | */ |
---|
12 | 9 | |
---|
13 | 10 | #include <linux/delay.h> |
---|
.. | .. |
---|
45 | 42 | #define AAT1290_FLASH_TM_NUM_LEVELS 16 |
---|
46 | 43 | #define AAT1290_MM_CURRENT_SCALE_SIZE 15 |
---|
47 | 44 | |
---|
| 45 | +#define AAT1290_NAME "aat1290" |
---|
| 46 | + |
---|
48 | 47 | |
---|
49 | 48 | struct aat1290_led_config_data { |
---|
50 | 49 | /* maximum LED current in movie mode */ |
---|
.. | .. |
---|
78 | 77 | int *mm_current_scale; |
---|
79 | 78 | /* device mode */ |
---|
80 | 79 | bool movie_mode; |
---|
81 | | - |
---|
82 | 80 | /* brightness cache */ |
---|
83 | 81 | unsigned int torch_brightness; |
---|
84 | 82 | }; |
---|
.. | .. |
---|
218 | 216 | struct aat1290_led_config_data *cfg, |
---|
219 | 217 | struct device_node **sub_node) |
---|
220 | 218 | { |
---|
221 | | - struct led_classdev *led_cdev = &led->fled_cdev.led_cdev; |
---|
222 | 219 | struct device *dev = &led->pdev->dev; |
---|
223 | 220 | struct device_node *child_node; |
---|
224 | 221 | #if IS_ENABLED(CONFIG_V4L2_FLASH_LED_CLASS) |
---|
.. | .. |
---|
251 | 248 | } |
---|
252 | 249 | #endif |
---|
253 | 250 | |
---|
254 | | - child_node = of_get_next_available_child(dev->of_node, NULL); |
---|
| 251 | + child_node = of_get_next_available_child(dev_of_node(dev), NULL); |
---|
255 | 252 | if (!child_node) { |
---|
256 | 253 | dev_err(dev, "No DT child node found for connected LED.\n"); |
---|
257 | 254 | return -EINVAL; |
---|
258 | 255 | } |
---|
259 | | - |
---|
260 | | - led_cdev->name = of_get_property(child_node, "label", NULL) ? : |
---|
261 | | - child_node->name; |
---|
262 | 256 | |
---|
263 | 257 | ret = of_property_read_u32(child_node, "led-max-microamp", |
---|
264 | 258 | &cfg->max_mm_current); |
---|
.. | .. |
---|
431 | 425 | struct led_classdev *led_cdev = &led->fled_cdev.led_cdev; |
---|
432 | 426 | struct led_flash_setting *s; |
---|
433 | 427 | |
---|
434 | | - strlcpy(v4l2_sd_cfg->dev_name, led_cdev->name, |
---|
| 428 | + strlcpy(v4l2_sd_cfg->dev_name, led_cdev->dev->kobj.name, |
---|
435 | 429 | sizeof(v4l2_sd_cfg->dev_name)); |
---|
436 | 430 | |
---|
437 | 431 | s = &v4l2_sd_cfg->intensity; |
---|
.. | .. |
---|
469 | 463 | struct aat1290_led *led; |
---|
470 | 464 | struct led_classdev *led_cdev; |
---|
471 | 465 | struct led_classdev_flash *fled_cdev; |
---|
| 466 | + struct led_init_data init_data = {}; |
---|
472 | 467 | struct aat1290_led_config_data led_cfg = {}; |
---|
473 | 468 | struct v4l2_flash_config v4l2_sd_cfg = {}; |
---|
474 | 469 | int ret; |
---|
.. | .. |
---|
497 | 492 | |
---|
498 | 493 | aat1290_init_flash_timeout(led, &led_cfg); |
---|
499 | 494 | |
---|
| 495 | + init_data.fwnode = of_fwnode_handle(sub_node); |
---|
| 496 | + init_data.devicename = AAT1290_NAME; |
---|
| 497 | + |
---|
500 | 498 | /* Register LED Flash class device */ |
---|
501 | | - ret = led_classdev_flash_register(&pdev->dev, fled_cdev); |
---|
| 499 | + ret = led_classdev_flash_register_ext(&pdev->dev, fled_cdev, |
---|
| 500 | + &init_data); |
---|
502 | 501 | if (ret < 0) |
---|
503 | 502 | goto err_flash_register; |
---|
504 | 503 | |
---|