| .. | .. |
|---|
| 8 | 8 | #include <linux/of_device.h> |
|---|
| 9 | 9 | #include <linux/spi/spi.h> |
|---|
| 10 | 10 | #include <linux/workqueue.h> |
|---|
| 11 | | -#include <uapi/linux/uleds.h> |
|---|
| 12 | 11 | |
|---|
| 13 | 12 | /* |
|---|
| 14 | 13 | * CR0014114 SPI protocol descrtiption: |
|---|
| .. | .. |
|---|
| 40 | 39 | #define CR_FW_DELAY_MSEC 10 |
|---|
| 41 | 40 | #define CR_RECOUNT_DELAY (HZ * 3600) |
|---|
| 42 | 41 | |
|---|
| 42 | +#define CR_DEV_NAME "cr0014114" |
|---|
| 43 | + |
|---|
| 43 | 44 | struct cr0014114_led { |
|---|
| 44 | | - char name[LED_MAX_NAME_SIZE]; |
|---|
| 45 | 45 | struct cr0014114 *priv; |
|---|
| 46 | 46 | struct led_classdev ldev; |
|---|
| 47 | 47 | u8 brightness; |
|---|
| .. | .. |
|---|
| 167 | 167 | struct cr0014114_led, |
|---|
| 168 | 168 | ldev); |
|---|
| 169 | 169 | |
|---|
| 170 | | - dev_dbg(led->priv->dev, "Set brightness of %s to %d\n", |
|---|
| 171 | | - led->name, brightness); |
|---|
| 170 | + dev_dbg(led->priv->dev, "Set brightness to %d\n", brightness); |
|---|
| 172 | 171 | |
|---|
| 173 | 172 | mutex_lock(&led->priv->lock); |
|---|
| 174 | 173 | led->brightness = (u8)brightness; |
|---|
| .. | .. |
|---|
| 183 | 182 | size_t i = 0; |
|---|
| 184 | 183 | struct cr0014114_led *led; |
|---|
| 185 | 184 | struct fwnode_handle *child; |
|---|
| 186 | | - struct device_node *np; |
|---|
| 185 | + struct led_init_data init_data = {}; |
|---|
| 187 | 186 | int ret; |
|---|
| 188 | | - const char *str; |
|---|
| 189 | 187 | |
|---|
| 190 | 188 | device_for_each_child_node(priv->dev, child) { |
|---|
| 191 | | - np = to_of_node(child); |
|---|
| 192 | 189 | led = &priv->leds[i]; |
|---|
| 193 | 190 | |
|---|
| 194 | | - ret = fwnode_property_read_string(child, "label", &str); |
|---|
| 195 | | - if (ret) |
|---|
| 196 | | - snprintf(led->name, sizeof(led->name), |
|---|
| 197 | | - "cr0014114::"); |
|---|
| 198 | | - else |
|---|
| 199 | | - snprintf(led->name, sizeof(led->name), |
|---|
| 200 | | - "cr0014114:%s", str); |
|---|
| 201 | | - |
|---|
| 202 | | - fwnode_property_read_string(child, "linux,default-trigger", |
|---|
| 203 | | - &led->ldev.default_trigger); |
|---|
| 204 | | - |
|---|
| 205 | 191 | led->priv = priv; |
|---|
| 206 | | - led->ldev.name = led->name; |
|---|
| 207 | 192 | led->ldev.max_brightness = CR_MAX_BRIGHTNESS; |
|---|
| 208 | 193 | led->ldev.brightness_set_blocking = cr0014114_set_sync; |
|---|
| 209 | 194 | |
|---|
| 210 | | - ret = devm_of_led_classdev_register(priv->dev, np, |
|---|
| 211 | | - &led->ldev); |
|---|
| 195 | + init_data.fwnode = child; |
|---|
| 196 | + init_data.devicename = CR_DEV_NAME; |
|---|
| 197 | + init_data.default_label = ":"; |
|---|
| 198 | + |
|---|
| 199 | + ret = devm_led_classdev_register_ext(priv->dev, &led->ldev, |
|---|
| 200 | + &init_data); |
|---|
| 212 | 201 | if (ret) { |
|---|
| 213 | 202 | dev_err(priv->dev, |
|---|
| 214 | | - "failed to register LED device %s, err %d", |
|---|
| 215 | | - led->name, ret); |
|---|
| 203 | + "failed to register LED device, err %d", ret); |
|---|
| 216 | 204 | fwnode_handle_put(child); |
|---|
| 217 | 205 | return ret; |
|---|
| 218 | 206 | } |
|---|
| 219 | | - |
|---|
| 220 | | - led->ldev.dev->of_node = np; |
|---|
| 221 | 207 | |
|---|
| 222 | 208 | i++; |
|---|
| 223 | 209 | } |
|---|