Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'leds-next-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds

Pull LED updates from Lee Jones:
"Removed Drivers:
- HTC ASIC3 LED

New Functionality:
- Provide generic led_get() which can be used by both DT and !DT
platforms

Fix-ups:
- Convert a bunch of I2C subsystem users to the new probing API
- Explicitly provide missing include files
- Make use of led_init_default_state_get() and rid the custom
variants
- Use simplified fwnode_device_is_compatible() API
- Provide some Device Tree additions / adaptions
- Fix some trivial spelling issues

Bug Fixes:
- Prevent device refcount leak during led_put() and of_led_get()
- Clear previous data from temporary led_pwm structure before
processing next child
- Fix Clang's warning about incompatible function types when using
devm_add_action*()"

* tag 'leds-next-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds: (41 commits)
leds: Remove ide-disk trigger
dt-bindings: leds: Add disk write/read and usb-host/usb-gadget
Documentation: leds: Correct spelling
dt-bindings: leds: Document Bluetooth and WLAN triggers
leds: Remove asic3 driver
leds: simatic-ipc-leds-gpio: Make sure we have the GPIO providing driver
leds: tca6507: Convert to use fwnode_device_is_compatible()
leds: syscon: Get rid of custom led_init_default_state_get()
leds: pm8058: Get rid of custom led_init_default_state_get()
leds: pca955x: Get rid of custom led_init_default_state_get()
leds: mt6360: Get rid of custom led_init_default_state_get()
leds: mt6323: Get rid of custom led_init_default_state_get()
leds: bcm6358: Get rid of custom led_init_default_state_get()
leds: bcm6328: Get rid of custom led_init_default_state_get()
leds: an30259a: Get rid of custom led_init_default_state_get()
leds: Move led_init_default_state_get() to the global header
leds: Add missing includes and forward declarations in leds.h
leds: is31fl319x: Wrap mutex_destroy() for devm_add_action_or_rest()
leds: turris-omnia: Convert to i2c's .probe_new()
leds: tlc591xx: Convert to i2c's .probe_new()
...

+192 -440
+10 -5
Documentation/devicetree/bindings/leds/common.yaml
··· 90 90 - heartbeat 91 91 # LED indicates disk activity 92 92 - disk-activity 93 - # LED indicates IDE disk activity (deprecated), in new implementations 94 - # use "disk-activity" 95 - - ide-disk 93 + - disk-read 94 + - disk-write 96 95 # LED flashes at a fixed, configurable rate 97 96 - timer 98 97 # LED alters the brightness for the specified duration with one software 99 98 # timer (requires "led-pattern" property) 100 99 - pattern 101 - # LED is triggered by SD/MMC activity 102 - - pattern: "^mmc[0-9]+$" 100 + - usb-gadget 101 + - usb-host 103 102 - pattern: "^cpu[0-9]*$" 103 + - pattern: "^hci[0-9]+-power$" 104 + # LED is triggered by Bluetooth activity 105 + - pattern: "^mmc[0-9]+$" 106 + # LED is triggered by SD/MMC activity 107 + - pattern: "^phy[0-9]+tx$" 108 + # LED is triggered by WLAN activity 104 109 105 110 led-pattern: 106 111 description: |
+2 -2
Documentation/leds/leds-qcom-lpg.rst
··· 34 34 35 35 The pattern is a series of brightness and hold-time pairs, with the hold-time 36 36 expressed in milliseconds. The hold time is a property of the pattern and must 37 - therefor be identical for each element in the pattern (except for the pauses 37 + therefore be identical for each element in the pattern (except for the pauses 38 38 described below). As the LPG hardware is not able to perform the linear 39 39 transitions expected by the leds-trigger-pattern format, each entry in the 40 40 pattern must be followed a zero-length entry of the same brightness. ··· 66 66 +-----------------------------> 67 67 0 5 10 15 20 25 time (100ms) 68 68 69 - Similarily, the last entry can be stretched by using a higher hold-time on the 69 + Similarly, the last entry can be stretched by using a higher hold-time on the 70 70 last entry. 71 71 72 72 In order to save space in the shared lookup table the LPG supports "ping-pong"
-11
drivers/leds/Kconfig
··· 623 623 and 5Big Network v2 boards. The LEDs are wired to a CPLD and are 624 624 controlled through a GPIO extension bus. 625 625 626 - config LEDS_ASIC3 627 - bool "LED support for the HTC ASIC3" 628 - depends on LEDS_CLASS=y 629 - depends on MFD_ASIC3 630 - default y 631 - help 632 - This option enables support for the LEDs on the HTC ASIC3. The HTC 633 - ASIC3 LED GPIOs are inputs, not outputs, thus the leds-gpio driver 634 - cannot be used. This driver supports hardware blinking with an on+off 635 - period from 62ms to 125s. Say Y to enable LEDs on the HP iPAQ hx4700. 636 - 637 626 config LEDS_TCA6507 638 627 tristate "LED Support for TCA6507 I2C chip" 639 628 depends on LEDS_CLASS && I2C
-1
drivers/leds/Makefile
··· 14 14 obj-$(CONFIG_LEDS_AN30259A) += leds-an30259a.o 15 15 obj-$(CONFIG_LEDS_APU) += leds-apu.o 16 16 obj-$(CONFIG_LEDS_ARIEL) += leds-ariel.o 17 - obj-$(CONFIG_LEDS_ASIC3) += leds-asic3.o 18 17 obj-$(CONFIG_LEDS_AW2013) += leds-aw2013.o 19 18 obj-$(CONFIG_LEDS_BCM6328) += leds-bcm6328.o 20 19 obj-$(CONFIG_LEDS_BCM6358) += leds-bcm6358.o
+6 -32
drivers/leds/flash/leds-mt6360.c
··· 71 71 #define MT6360_STRBTO_STEPUS 32000 72 72 #define MT6360_STRBTO_MAXUS 2432000 73 73 74 - #define STATE_OFF 0 75 - #define STATE_KEEP 1 76 - #define STATE_ON 2 77 - 78 74 struct mt6360_led { 79 75 union { 80 76 struct led_classdev isnk; ··· 80 84 struct v4l2_flash *v4l2_flash; 81 85 struct mt6360_priv *priv; 82 86 u32 led_no; 83 - u32 default_state; 87 + enum led_default_state default_state; 84 88 }; 85 89 86 90 struct mt6360_priv { ··· 401 405 level = LED_OFF; 402 406 403 407 switch (led->default_state) { 404 - case STATE_ON: 408 + case LEDS_DEFSTATE_ON: 405 409 led->isnk.brightness = led->isnk.max_brightness; 406 410 break; 407 - case STATE_KEEP: 411 + case LEDS_DEFSTATE_KEEP: 408 412 led->isnk.brightness = min(level, led->isnk.max_brightness); 409 413 break; 410 414 default: ··· 439 443 level = LED_OFF; 440 444 441 445 switch (led->default_state) { 442 - case STATE_ON: 446 + case LEDS_DEFSTATE_ON: 443 447 flash->led_cdev.brightness = flash->led_cdev.max_brightness; 444 448 break; 445 - case STATE_KEEP: 449 + case LEDS_DEFSTATE_KEEP: 446 450 flash->led_cdev.brightness = 447 451 min(level, flash->led_cdev.max_brightness); 448 452 break; ··· 756 760 return 0; 757 761 } 758 762 759 - static int mt6360_init_common_properties(struct mt6360_led *led, 760 - struct led_init_data *init_data) 761 - { 762 - const char *const states[] = { "off", "keep", "on" }; 763 - const char *str; 764 - int ret; 765 - 766 - if (!fwnode_property_read_string(init_data->fwnode, 767 - "default-state", &str)) { 768 - ret = match_string(states, ARRAY_SIZE(states), str); 769 - if (ret < 0) 770 - ret = STATE_OFF; 771 - 772 - led->default_state = ret; 773 - } 774 - 775 - return 0; 776 - } 777 - 778 763 static void mt6360_v4l2_flash_release(struct mt6360_priv *priv) 779 764 { 780 765 int i; ··· 829 852 830 853 led->led_no = reg; 831 854 led->priv = priv; 832 - 833 - ret = mt6360_init_common_properties(led, &init_data); 834 - if (ret) 835 - goto out_flash_release; 855 + led->default_state = led_init_default_state_get(child); 836 856 837 857 if (reg == MT6360_VIRTUAL_MULTICOLOR || 838 858 reg <= MT6360_LED_ISNKML)
+1
drivers/leds/led-class.c
··· 253 253 254 254 led_dev = class_find_device_by_of_node(leds_class, led_node); 255 255 of_node_put(led_node); 256 + put_device(led_dev); 256 257 257 258 return led_module_get(led_dev); 258 259 }
+4 -17
drivers/leds/leds-an30259a.c
··· 55 55 56 56 #define AN30259A_NAME "an30259a" 57 57 58 - #define STATE_OFF 0 59 - #define STATE_KEEP 1 60 - #define STATE_ON 2 61 - 62 58 struct an30259a; 63 59 64 60 struct an30259a_led { ··· 62 66 struct fwnode_handle *fwnode; 63 67 struct led_classdev cdev; 64 68 u32 num; 65 - u32 default_state; 69 + enum led_default_state default_state; 66 70 bool sloping; 67 71 }; 68 72 ··· 201 205 struct device_node *np = dev_of_node(&client->dev), *child; 202 206 int count, ret; 203 207 int i = 0; 204 - const char *str; 205 208 struct an30259a_led *led; 206 209 207 210 count = of_get_available_child_count(np); ··· 223 228 led->num = source; 224 229 led->chip = chip; 225 230 led->fwnode = of_fwnode_handle(child); 226 - 227 - if (!of_property_read_string(child, "default-state", &str)) { 228 - if (!strcmp(str, "on")) 229 - led->default_state = STATE_ON; 230 - else if (!strcmp(str, "keep")) 231 - led->default_state = STATE_KEEP; 232 - else 233 - led->default_state = STATE_OFF; 234 - } 231 + led->default_state = led_init_default_state_get(led->fwnode); 235 232 236 233 i++; 237 234 } ··· 248 261 int led_on, err; 249 262 250 263 switch (led->default_state) { 251 - case STATE_ON: 264 + case LEDS_DEFSTATE_ON: 252 265 led->cdev.brightness = LED_FULL; 253 266 break; 254 - case STATE_KEEP: 267 + case LEDS_DEFSTATE_KEEP: 255 268 err = regmap_read(chip->regmap, AN30259A_REG_LED_ON, &led_on); 256 269 if (err) 257 270 break;
-177
drivers/leds/leds-asic3.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-only 2 - /* 3 - * Copyright (C) 2011 Paul Parsons <lost.distance@yahoo.com> 4 - */ 5 - 6 - #include <linux/kernel.h> 7 - #include <linux/platform_device.h> 8 - #include <linux/leds.h> 9 - #include <linux/slab.h> 10 - 11 - #include <linux/mfd/asic3.h> 12 - #include <linux/mfd/core.h> 13 - #include <linux/module.h> 14 - 15 - /* 16 - * The HTC ASIC3 LED GPIOs are inputs, not outputs. 17 - * Hence we turn the LEDs on/off via the TimeBase register. 18 - */ 19 - 20 - /* 21 - * When TimeBase is 4 the clock resolution is about 32Hz. 22 - * This driver supports hardware blinking with an on+off 23 - * period from 62ms (2 clocks) to 125s (4000 clocks). 24 - */ 25 - #define MS_TO_CLK(ms) DIV_ROUND_CLOSEST(((ms)*1024), 32000) 26 - #define CLK_TO_MS(clk) (((clk)*32000)/1024) 27 - #define MAX_CLK 4000 /* Fits into 12-bit Time registers */ 28 - #define MAX_MS CLK_TO_MS(MAX_CLK) 29 - 30 - static const unsigned int led_n_base[ASIC3_NUM_LEDS] = { 31 - [0] = ASIC3_LED_0_Base, 32 - [1] = ASIC3_LED_1_Base, 33 - [2] = ASIC3_LED_2_Base, 34 - }; 35 - 36 - static void brightness_set(struct led_classdev *cdev, 37 - enum led_brightness value) 38 - { 39 - struct platform_device *pdev = to_platform_device(cdev->dev->parent); 40 - const struct mfd_cell *cell = mfd_get_cell(pdev); 41 - struct asic3 *asic = dev_get_drvdata(pdev->dev.parent); 42 - u32 timebase; 43 - unsigned int base; 44 - 45 - timebase = (value == LED_OFF) ? 0 : (LED_EN|0x4); 46 - 47 - base = led_n_base[cell->id]; 48 - asic3_write_register(asic, (base + ASIC3_LED_PeriodTime), 32); 49 - asic3_write_register(asic, (base + ASIC3_LED_DutyTime), 32); 50 - asic3_write_register(asic, (base + ASIC3_LED_AutoStopCount), 0); 51 - asic3_write_register(asic, (base + ASIC3_LED_TimeBase), timebase); 52 - } 53 - 54 - static int blink_set(struct led_classdev *cdev, 55 - unsigned long *delay_on, 56 - unsigned long *delay_off) 57 - { 58 - struct platform_device *pdev = to_platform_device(cdev->dev->parent); 59 - const struct mfd_cell *cell = mfd_get_cell(pdev); 60 - struct asic3 *asic = dev_get_drvdata(pdev->dev.parent); 61 - u32 on; 62 - u32 off; 63 - unsigned int base; 64 - 65 - if (*delay_on > MAX_MS || *delay_off > MAX_MS) 66 - return -EINVAL; 67 - 68 - if (*delay_on == 0 && *delay_off == 0) { 69 - /* If both are zero then a sensible default should be chosen */ 70 - on = MS_TO_CLK(500); 71 - off = MS_TO_CLK(500); 72 - } else { 73 - on = MS_TO_CLK(*delay_on); 74 - off = MS_TO_CLK(*delay_off); 75 - if ((on + off) > MAX_CLK) 76 - return -EINVAL; 77 - } 78 - 79 - base = led_n_base[cell->id]; 80 - asic3_write_register(asic, (base + ASIC3_LED_PeriodTime), (on + off)); 81 - asic3_write_register(asic, (base + ASIC3_LED_DutyTime), on); 82 - asic3_write_register(asic, (base + ASIC3_LED_AutoStopCount), 0); 83 - asic3_write_register(asic, (base + ASIC3_LED_TimeBase), (LED_EN|0x4)); 84 - 85 - *delay_on = CLK_TO_MS(on); 86 - *delay_off = CLK_TO_MS(off); 87 - 88 - return 0; 89 - } 90 - 91 - static int asic3_led_probe(struct platform_device *pdev) 92 - { 93 - struct asic3_led *led = dev_get_platdata(&pdev->dev); 94 - int ret; 95 - 96 - ret = mfd_cell_enable(pdev); 97 - if (ret < 0) 98 - return ret; 99 - 100 - led->cdev = devm_kzalloc(&pdev->dev, sizeof(struct led_classdev), 101 - GFP_KERNEL); 102 - if (!led->cdev) { 103 - ret = -ENOMEM; 104 - goto out; 105 - } 106 - 107 - led->cdev->name = led->name; 108 - led->cdev->flags = LED_CORE_SUSPENDRESUME; 109 - led->cdev->brightness_set = brightness_set; 110 - led->cdev->blink_set = blink_set; 111 - led->cdev->default_trigger = led->default_trigger; 112 - 113 - ret = led_classdev_register(&pdev->dev, led->cdev); 114 - if (ret < 0) 115 - goto out; 116 - 117 - return 0; 118 - 119 - out: 120 - (void) mfd_cell_disable(pdev); 121 - return ret; 122 - } 123 - 124 - static int asic3_led_remove(struct platform_device *pdev) 125 - { 126 - struct asic3_led *led = dev_get_platdata(&pdev->dev); 127 - 128 - led_classdev_unregister(led->cdev); 129 - 130 - return mfd_cell_disable(pdev); 131 - } 132 - 133 - #ifdef CONFIG_PM_SLEEP 134 - static int asic3_led_suspend(struct device *dev) 135 - { 136 - struct platform_device *pdev = to_platform_device(dev); 137 - const struct mfd_cell *cell = mfd_get_cell(pdev); 138 - int ret; 139 - 140 - ret = 0; 141 - if (cell->suspend) 142 - ret = (*cell->suspend)(pdev); 143 - 144 - return ret; 145 - } 146 - 147 - static int asic3_led_resume(struct device *dev) 148 - { 149 - struct platform_device *pdev = to_platform_device(dev); 150 - const struct mfd_cell *cell = mfd_get_cell(pdev); 151 - int ret; 152 - 153 - ret = 0; 154 - if (cell->resume) 155 - ret = (*cell->resume)(pdev); 156 - 157 - return ret; 158 - } 159 - #endif 160 - 161 - static SIMPLE_DEV_PM_OPS(asic3_led_pm_ops, asic3_led_suspend, asic3_led_resume); 162 - 163 - static struct platform_driver asic3_led_driver = { 164 - .probe = asic3_led_probe, 165 - .remove = asic3_led_remove, 166 - .driver = { 167 - .name = "leds-asic3", 168 - .pm = &asic3_led_pm_ops, 169 - }, 170 - }; 171 - 172 - module_platform_driver(asic3_led_driver); 173 - 174 - MODULE_AUTHOR("Paul Parsons <lost.distance@yahoo.com>"); 175 - MODULE_DESCRIPTION("HTC ASIC3 LED driver"); 176 - MODULE_LICENSE("GPL"); 177 - MODULE_ALIAS("platform:leds-asic3");
+24 -25
drivers/leds/leds-bcm6328.c
··· 330 330 { 331 331 struct led_init_data init_data = {}; 332 332 struct bcm6328_led *led; 333 - const char *state; 333 + enum led_default_state state; 334 + unsigned long val, shift; 335 + void __iomem *mode; 334 336 int rc; 335 337 336 338 led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL); ··· 348 346 if (of_property_read_bool(nc, "active-low")) 349 347 led->active_low = true; 350 348 351 - if (!of_property_read_string(nc, "default-state", &state)) { 352 - if (!strcmp(state, "on")) { 349 + init_data.fwnode = of_fwnode_handle(nc); 350 + 351 + state = led_init_default_state_get(init_data.fwnode); 352 + switch (state) { 353 + case LEDS_DEFSTATE_ON: 354 + led->cdev.brightness = LED_FULL; 355 + break; 356 + case LEDS_DEFSTATE_KEEP: 357 + shift = bcm6328_pin2shift(led->pin); 358 + if (shift / 16) 359 + mode = mem + BCM6328_REG_MODE_HI; 360 + else 361 + mode = mem + BCM6328_REG_MODE_LO; 362 + 363 + val = bcm6328_led_read(mode) >> BCM6328_LED_SHIFT(shift % 16); 364 + val &= BCM6328_LED_MODE_MASK; 365 + if ((led->active_low && val == BCM6328_LED_MODE_OFF) || 366 + (!led->active_low && val == BCM6328_LED_MODE_ON)) 353 367 led->cdev.brightness = LED_FULL; 354 - } else if (!strcmp(state, "keep")) { 355 - void __iomem *mode; 356 - unsigned long val, shift; 357 - 358 - shift = bcm6328_pin2shift(led->pin); 359 - if (shift / 16) 360 - mode = mem + BCM6328_REG_MODE_HI; 361 - else 362 - mode = mem + BCM6328_REG_MODE_LO; 363 - 364 - val = bcm6328_led_read(mode) >> 365 - BCM6328_LED_SHIFT(shift % 16); 366 - val &= BCM6328_LED_MODE_MASK; 367 - if ((led->active_low && val == BCM6328_LED_MODE_OFF) || 368 - (!led->active_low && val == BCM6328_LED_MODE_ON)) 369 - led->cdev.brightness = LED_FULL; 370 - else 371 - led->cdev.brightness = LED_OFF; 372 - } else { 368 + else 373 369 led->cdev.brightness = LED_OFF; 374 - } 375 - } else { 370 + break; 371 + default: 376 372 led->cdev.brightness = LED_OFF; 377 373 } 378 374 ··· 378 378 379 379 led->cdev.brightness_set = bcm6328_led_set; 380 380 led->cdev.blink_set = bcm6328_blink_set; 381 - init_data.fwnode = of_fwnode_handle(nc); 382 381 383 382 rc = devm_led_classdev_register_ext(dev, &led->cdev, &init_data); 384 383 if (rc < 0)
+16 -16
drivers/leds/leds-bcm6358.c
··· 96 96 { 97 97 struct led_init_data init_data = {}; 98 98 struct bcm6358_led *led; 99 - const char *state; 99 + enum led_default_state state; 100 + unsigned long val; 100 101 int rc; 101 102 102 103 led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL); ··· 111 110 if (of_property_read_bool(nc, "active-low")) 112 111 led->active_low = true; 113 112 114 - if (!of_property_read_string(nc, "default-state", &state)) { 115 - if (!strcmp(state, "on")) { 113 + init_data.fwnode = of_fwnode_handle(nc); 114 + 115 + state = led_init_default_state_get(init_data.fwnode); 116 + switch (state) { 117 + case LEDS_DEFSTATE_ON: 118 + led->cdev.brightness = LED_FULL; 119 + break; 120 + case LEDS_DEFSTATE_KEEP: 121 + val = bcm6358_led_read(led->mem + BCM6358_REG_MODE); 122 + val &= BIT(led->pin); 123 + if ((led->active_low && !val) || (!led->active_low && val)) 116 124 led->cdev.brightness = LED_FULL; 117 - } else if (!strcmp(state, "keep")) { 118 - unsigned long val; 119 - val = bcm6358_led_read(led->mem + BCM6358_REG_MODE); 120 - val &= BIT(led->pin); 121 - if ((led->active_low && !val) || 122 - (!led->active_low && val)) 123 - led->cdev.brightness = LED_FULL; 124 - else 125 - led->cdev.brightness = LED_OFF; 126 - } else { 125 + else 127 126 led->cdev.brightness = LED_OFF; 128 - } 129 - } else { 127 + break; 128 + default: 130 129 led->cdev.brightness = LED_OFF; 131 130 } 132 131 133 132 bcm6358_led_set(&led->cdev, led->cdev.brightness); 134 133 135 134 led->cdev.brightness_set = bcm6358_led_set; 136 - init_data.fwnode = of_fwnode_handle(nc); 137 135 138 136 rc = devm_led_classdev_register_ext(dev, &led->cdev, &init_data); 139 137 if (rc < 0)
+2 -3
drivers/leds/leds-bd2802.c
··· 656 656 led_classdev_unregister(&led->cdev_led1r); 657 657 } 658 658 659 - static int bd2802_probe(struct i2c_client *client, 660 - const struct i2c_device_id *id) 659 + static int bd2802_probe(struct i2c_client *client) 661 660 { 662 661 struct bd2802_led *led; 663 662 int ret, i; ··· 786 787 .name = "BD2802", 787 788 .pm = &bd2802_pm, 788 789 }, 789 - .probe = bd2802_probe, 790 + .probe_new = bd2802_probe, 790 791 .remove = bd2802_remove, 791 792 .id_table = bd2802_id, 792 793 };
+2 -3
drivers/leds/leds-blinkm.c
··· 565 565 return 0; 566 566 } 567 567 568 - static int blinkm_probe(struct i2c_client *client, 569 - const struct i2c_device_id *id) 568 + static int blinkm_probe(struct i2c_client *client) 570 569 { 571 570 struct blinkm_data *data; 572 571 struct blinkm_led *led[3]; ··· 730 731 .driver = { 731 732 .name = "blinkm", 732 733 }, 733 - .probe = blinkm_probe, 734 + .probe_new = blinkm_probe, 734 735 .remove = blinkm_remove, 735 736 .id_table = blinkm_id, 736 737 .detect = blinkm_detect,
+6 -1
drivers/leds/leds-is31fl319x.c
··· 495 495 return dezibel / IS31FL3196_AUDIO_GAIN_DB_STEP; 496 496 } 497 497 498 + static void is31f1319x_mutex_destroy(void *lock) 499 + { 500 + mutex_destroy(lock); 501 + } 502 + 498 503 static int is31fl319x_probe(struct i2c_client *client) 499 504 { 500 505 struct is31fl319x_chip *is31; ··· 516 511 return -ENOMEM; 517 512 518 513 mutex_init(&is31->lock); 519 - err = devm_add_action(dev, (void (*)(void *))mutex_destroy, &is31->lock); 514 + err = devm_add_action_or_reset(dev, is31f1319x_mutex_destroy, &is31->lock); 520 515 if (err) 521 516 return err; 522 517
+2 -3
drivers/leds/leds-is31fl32xx.c
··· 422 422 423 423 MODULE_DEVICE_TABLE(of, of_is31fl32xx_match); 424 424 425 - static int is31fl32xx_probe(struct i2c_client *client, 426 - const struct i2c_device_id *id) 425 + static int is31fl32xx_probe(struct i2c_client *client) 427 426 { 428 427 const struct is31fl32xx_chipdef *cdef; 429 428 struct device *dev = &client->dev; ··· 488 489 .name = "is31fl32xx", 489 490 .of_match_table = of_is31fl32xx_match, 490 491 }, 491 - .probe = is31fl32xx_probe, 492 + .probe_new = is31fl32xx_probe, 492 493 .remove = is31fl32xx_remove, 493 494 .id_table = is31fl32xx_id, 494 495 };
+2 -3
drivers/leds/leds-lm3530.c
··· 405 405 }; 406 406 ATTRIBUTE_GROUPS(lm3530); 407 407 408 - static int lm3530_probe(struct i2c_client *client, 409 - const struct i2c_device_id *id) 408 + static int lm3530_probe(struct i2c_client *client) 410 409 { 411 410 struct lm3530_platform_data *pdata = dev_get_platdata(&client->dev); 412 411 struct lm3530_data *drvdata; ··· 484 485 MODULE_DEVICE_TABLE(i2c, lm3530_id); 485 486 486 487 static struct i2c_driver lm3530_i2c_driver = { 487 - .probe = lm3530_probe, 488 + .probe_new = lm3530_probe, 488 489 .remove = lm3530_remove, 489 490 .id_table = lm3530_id, 490 491 .driver = {
+2 -3
drivers/leds/leds-lm3532.c
··· 663 663 return ret; 664 664 } 665 665 666 - static int lm3532_probe(struct i2c_client *client, 667 - const struct i2c_device_id *id) 666 + static int lm3532_probe(struct i2c_client *client) 668 667 { 669 668 struct lm3532_data *drvdata; 670 669 int ret = 0; ··· 726 727 MODULE_DEVICE_TABLE(i2c, lm3532_id); 727 728 728 729 static struct i2c_driver lm3532_i2c_driver = { 729 - .probe = lm3532_probe, 730 + .probe_new = lm3532_probe, 730 731 .remove = lm3532_remove, 731 732 .id_table = lm3532_id, 732 733 .driver = {
+3 -3
drivers/leds/leds-lm355x.c
··· 396 396 }; 397 397 398 398 /* module initialize */ 399 - static int lm355x_probe(struct i2c_client *client, 400 - const struct i2c_device_id *id) 399 + static int lm355x_probe(struct i2c_client *client) 401 400 { 401 + const struct i2c_device_id *id = i2c_client_get_device_id(client); 402 402 struct lm355x_platform_data *pdata = dev_get_platdata(&client->dev); 403 403 struct lm355x_chip_data *chip; 404 404 ··· 516 516 .name = LM355x_NAME, 517 517 .pm = NULL, 518 518 }, 519 - .probe = lm355x_probe, 519 + .probe_new = lm355x_probe, 520 520 .remove = lm355x_remove, 521 521 .id_table = lm355x_id, 522 522 };
+2 -3
drivers/leds/leds-lm3642.c
··· 289 289 }; 290 290 ATTRIBUTE_GROUPS(lm3642_torch); 291 291 292 - static int lm3642_probe(struct i2c_client *client, 293 - const struct i2c_device_id *id) 292 + static int lm3642_probe(struct i2c_client *client) 294 293 { 295 294 struct lm3642_platform_data *pdata = dev_get_platdata(&client->dev); 296 295 struct lm3642_chip_data *chip; ··· 401 402 .name = LM3642_NAME, 402 403 .pm = NULL, 403 404 }, 404 - .probe = lm3642_probe, 405 + .probe_new = lm3642_probe, 405 406 .remove = lm3642_remove, 406 407 .id_table = lm3642_id, 407 408 };
+3 -3
drivers/leds/leds-lm3692x.c
··· 456 456 return ret; 457 457 } 458 458 459 - static int lm3692x_probe(struct i2c_client *client, 460 - const struct i2c_device_id *id) 459 + static int lm3692x_probe(struct i2c_client *client) 461 460 { 461 + const struct i2c_device_id *id = i2c_client_get_device_id(client); 462 462 struct lm3692x_led *led; 463 463 int ret; 464 464 ··· 518 518 .name = "lm3692x", 519 519 .of_match_table = of_lm3692x_leds_match, 520 520 }, 521 - .probe = lm3692x_probe, 521 + .probe_new = lm3692x_probe, 522 522 .remove = lm3692x_remove, 523 523 .id_table = lm3692x_id, 524 524 };
+2 -3
drivers/leds/leds-lm3697.c
··· 299 299 return ret; 300 300 } 301 301 302 - static int lm3697_probe(struct i2c_client *client, 303 - const struct i2c_device_id *id) 302 + static int lm3697_probe(struct i2c_client *client) 304 303 { 305 304 struct device *dev = &client->dev; 306 305 struct lm3697 *led; ··· 376 377 .name = "lm3697", 377 378 .of_match_table = of_lm3697_leds_match, 378 379 }, 379 - .probe = lm3697_probe, 380 + .probe_new = lm3697_probe, 380 381 .remove = lm3697_remove, 381 382 .id_table = lm3697_id, 382 383 };
+2 -3
drivers/leds/leds-lp3944.c
··· 359 359 return err; 360 360 } 361 361 362 - static int lp3944_probe(struct i2c_client *client, 363 - const struct i2c_device_id *id) 362 + static int lp3944_probe(struct i2c_client *client) 364 363 { 365 364 struct lp3944_platform_data *lp3944_pdata = 366 365 dev_get_platdata(&client->dev); ··· 427 428 .driver = { 428 429 .name = "lp3944", 429 430 }, 430 - .probe = lp3944_probe, 431 + .probe_new = lp3944_probe, 431 432 .remove = lp3944_remove, 432 433 .id_table = lp3944_id, 433 434 };
+2 -3
drivers/leds/leds-lp3952.c
··· 207 207 .cache_type = REGCACHE_RBTREE, 208 208 }; 209 209 210 - static int lp3952_probe(struct i2c_client *client, 211 - const struct i2c_device_id *id) 210 + static int lp3952_probe(struct i2c_client *client) 212 211 { 213 212 int status; 214 213 struct lp3952_led_array *priv; ··· 273 274 .driver = { 274 275 .name = LP3952_NAME, 275 276 }, 276 - .probe = lp3952_probe, 277 + .probe_new = lp3952_probe, 277 278 .remove = lp3952_remove, 278 279 .id_table = lp3952_id, 279 280 };
+3 -3
drivers/leds/leds-lp5521.c
··· 516 516 .dev_attr_group = &lp5521_group, 517 517 }; 518 518 519 - static int lp5521_probe(struct i2c_client *client, 520 - const struct i2c_device_id *id) 519 + static int lp5521_probe(struct i2c_client *client) 521 520 { 521 + const struct i2c_device_id *id = i2c_client_get_device_id(client); 522 522 int ret; 523 523 struct lp55xx_chip *chip; 524 524 struct lp55xx_led *led; ··· 608 608 .name = "lp5521", 609 609 .of_match_table = of_match_ptr(of_lp5521_leds_match), 610 610 }, 611 - .probe = lp5521_probe, 611 + .probe_new = lp5521_probe, 612 612 .remove = lp5521_remove, 613 613 .id_table = lp5521_id, 614 614 };
+3 -3
drivers/leds/leds-lp5523.c
··· 887 887 .dev_attr_group = &lp5523_group, 888 888 }; 889 889 890 - static int lp5523_probe(struct i2c_client *client, 891 - const struct i2c_device_id *id) 890 + static int lp5523_probe(struct i2c_client *client) 892 891 { 892 + const struct i2c_device_id *id = i2c_client_get_device_id(client); 893 893 int ret; 894 894 struct lp55xx_chip *chip; 895 895 struct lp55xx_led *led; ··· 983 983 .name = "lp5523x", 984 984 .of_match_table = of_match_ptr(of_lp5523_leds_match), 985 985 }, 986 - .probe = lp5523_probe, 986 + .probe_new = lp5523_probe, 987 987 .remove = lp5523_remove, 988 988 .id_table = lp5523_id, 989 989 };
+2 -3
drivers/leds/leds-lp5562.c
··· 511 511 .dev_attr_group = &lp5562_group, 512 512 }; 513 513 514 - static int lp5562_probe(struct i2c_client *client, 515 - const struct i2c_device_id *id) 514 + static int lp5562_probe(struct i2c_client *client) 516 515 { 517 516 int ret; 518 517 struct lp55xx_chip *chip; ··· 603 604 .name = "lp5562", 604 605 .of_match_table = of_match_ptr(of_lp5562_leds_match), 605 606 }, 606 - .probe = lp5562_probe, 607 + .probe_new = lp5562_probe, 607 608 .remove = lp5562_remove, 608 609 .id_table = lp5562_id, 609 610 };
+3 -3
drivers/leds/leds-lp8501.c
··· 299 299 .run_engine = lp8501_run_engine, 300 300 }; 301 301 302 - static int lp8501_probe(struct i2c_client *client, 303 - const struct i2c_device_id *id) 302 + static int lp8501_probe(struct i2c_client *client) 304 303 { 304 + const struct i2c_device_id *id = i2c_client_get_device_id(client); 305 305 int ret; 306 306 struct lp55xx_chip *chip; 307 307 struct lp55xx_led *led; ··· 392 392 .name = "lp8501", 393 393 .of_match_table = of_match_ptr(of_lp8501_leds_match), 394 394 }, 395 - .probe = lp8501_probe, 395 + .probe_new = lp8501_probe, 396 396 .remove = lp8501_remove, 397 397 .id_table = lp8501_id, 398 398 };
+2 -3
drivers/leds/leds-lp8860.c
··· 375 375 .cache_type = REGCACHE_NONE, 376 376 }; 377 377 378 - static int lp8860_probe(struct i2c_client *client, 379 - const struct i2c_device_id *id) 378 + static int lp8860_probe(struct i2c_client *client) 380 379 { 381 380 int ret; 382 381 struct lp8860_led *led; ··· 479 480 .name = "lp8860", 480 481 .of_match_table = of_lp8860_leds_match, 481 482 }, 482 - .probe = lp8860_probe, 483 + .probe_new = lp8860_probe, 483 484 .remove = lp8860_remove, 484 485 .id_table = lp8860_id, 485 486 };
+15 -15
drivers/leds/leds-mt6323.c
··· 339 339 struct device_node *np) 340 340 { 341 341 struct mt6323_led *led = container_of(cdev, struct mt6323_led, cdev); 342 - const char *state; 342 + enum led_default_state state; 343 343 int ret = 0; 344 344 345 - state = of_get_property(np, "default-state", NULL); 346 - if (state) { 347 - if (!strcmp(state, "keep")) { 348 - ret = mt6323_get_led_hw_brightness(cdev); 349 - if (ret < 0) 350 - return ret; 351 - led->current_brightness = ret; 352 - ret = 0; 353 - } else if (!strcmp(state, "on")) { 354 - ret = 355 - mt6323_led_set_brightness(cdev, cdev->max_brightness); 356 - } else { 357 - ret = mt6323_led_set_brightness(cdev, LED_OFF); 358 - } 345 + state = led_init_default_state_get(of_fwnode_handle(np)); 346 + switch (state) { 347 + case LEDS_DEFSTATE_ON: 348 + ret = mt6323_led_set_brightness(cdev, cdev->max_brightness); 349 + break; 350 + case LEDS_DEFSTATE_KEEP: 351 + ret = mt6323_get_led_hw_brightness(cdev); 352 + if (ret < 0) 353 + return ret; 354 + led->current_brightness = ret; 355 + ret = 0; 356 + break; 357 + default: 358 + ret = mt6323_led_set_brightness(cdev, LED_OFF); 359 359 } 360 360 361 361 return ret;
+4 -5
drivers/leds/leds-pca9532.c
··· 50 50 u8 psc[2]; 51 51 }; 52 52 53 - static int pca9532_probe(struct i2c_client *client, 54 - const struct i2c_device_id *id); 53 + static int pca9532_probe(struct i2c_client *client); 55 54 static void pca9532_remove(struct i2c_client *client); 56 55 57 56 enum { ··· 102 103 .name = "leds-pca953x", 103 104 .of_match_table = of_match_ptr(of_pca9532_leds_match), 104 105 }, 105 - .probe = pca9532_probe, 106 + .probe_new = pca9532_probe, 106 107 .remove = pca9532_remove, 107 108 .id_table = pca9532_id, 108 109 }; ··· 503 504 return pdata; 504 505 } 505 506 506 - static int pca9532_probe(struct i2c_client *client, 507 - const struct i2c_device_id *id) 507 + static int pca9532_probe(struct i2c_client *client) 508 508 { 509 + const struct i2c_device_id *id = i2c_client_get_device_id(client); 509 510 int devid; 510 511 struct pca9532_data *data = i2c_get_clientdata(client); 511 512 struct pca9532_platform_data *pca9532_pdata =
+6 -20
drivers/leds/leds-pca955x.c
··· 130 130 struct led_classdev led_cdev; 131 131 int led_num; /* 0 .. 15 potentially */ 132 132 u32 type; 133 - int default_state; 133 + enum led_default_state default_state; 134 134 struct fwnode_handle *fwnode; 135 135 }; 136 136 ··· 437 437 return ERR_PTR(-ENOMEM); 438 438 439 439 device_for_each_child_node(&client->dev, child) { 440 - const char *state; 441 440 u32 reg; 442 441 int res; 443 442 ··· 447 448 led = &pdata->leds[reg]; 448 449 led->type = PCA955X_TYPE_LED; 449 450 led->fwnode = child; 450 - fwnode_property_read_u32(child, "type", &led->type); 451 + led->default_state = led_init_default_state_get(child); 451 452 452 - if (!fwnode_property_read_string(child, "default-state", 453 - &state)) { 454 - if (!strcmp(state, "keep")) 455 - led->default_state = LEDS_GPIO_DEFSTATE_KEEP; 456 - else if (!strcmp(state, "on")) 457 - led->default_state = LEDS_GPIO_DEFSTATE_ON; 458 - else 459 - led->default_state = LEDS_GPIO_DEFSTATE_OFF; 460 - } else { 461 - led->default_state = LEDS_GPIO_DEFSTATE_OFF; 462 - } 453 + fwnode_property_read_u32(child, "type", &led->type); 463 454 } 464 455 465 456 pdata->num_leds = chip->bits; ··· 561 572 led->brightness_set_blocking = pca955x_led_set; 562 573 led->brightness_get = pca955x_led_get; 563 574 564 - if (pdata->leds[i].default_state == 565 - LEDS_GPIO_DEFSTATE_OFF) { 575 + if (pdata->leds[i].default_state == LEDS_DEFSTATE_OFF) { 566 576 err = pca955x_led_set(led, LED_OFF); 567 577 if (err) 568 578 return err; 569 - } else if (pdata->leds[i].default_state == 570 - LEDS_GPIO_DEFSTATE_ON) { 579 + } else if (pdata->leds[i].default_state == LEDS_DEFSTATE_ON) { 571 580 err = pca955x_led_set(led, LED_FULL); 572 581 if (err) 573 582 return err; ··· 604 617 * brightness to see if it's using PWM1. If so, PWM1 605 618 * should not be written below. 606 619 */ 607 - if (pdata->leds[i].default_state == 608 - LEDS_GPIO_DEFSTATE_KEEP) { 620 + if (pdata->leds[i].default_state == LEDS_DEFSTATE_KEEP) { 609 621 if (led->brightness != LED_FULL && 610 622 led->brightness != LED_OFF && 611 623 led->brightness != LED_HALF)
+3 -3
drivers/leds/leds-pca963x.c
··· 389 389 }; 390 390 MODULE_DEVICE_TABLE(of, of_pca963x_match); 391 391 392 - static int pca963x_probe(struct i2c_client *client, 393 - const struct i2c_device_id *id) 392 + static int pca963x_probe(struct i2c_client *client) 394 393 { 394 + const struct i2c_device_id *id = i2c_client_get_device_id(client); 395 395 struct device *dev = &client->dev; 396 396 struct pca963x_chipdef *chipdef; 397 397 struct pca963x *chip; ··· 431 431 .name = "leds-pca963x", 432 432 .of_match_table = of_pca963x_match, 433 433 }, 434 - .probe = pca963x_probe, 434 + .probe_new = pca963x_probe, 435 435 .id_table = pca963x_id, 436 436 }; 437 437
+15 -14
drivers/leds/leds-pm8058.c
··· 93 93 struct device_node *np; 94 94 int ret; 95 95 struct regmap *map; 96 - const char *state; 97 96 enum led_brightness maxbright; 97 + enum led_default_state state; 98 98 99 99 led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL); 100 100 if (!led) ··· 125 125 maxbright = 15; /* 4 bits */ 126 126 led->cdev.max_brightness = maxbright; 127 127 128 - state = of_get_property(np, "default-state", NULL); 129 - if (state) { 130 - if (!strcmp(state, "keep")) { 131 - led->cdev.brightness = pm8058_led_get(&led->cdev); 132 - } else if (!strcmp(state, "on")) { 133 - led->cdev.brightness = maxbright; 134 - pm8058_led_set(&led->cdev, maxbright); 135 - } else { 136 - led->cdev.brightness = LED_OFF; 137 - pm8058_led_set(&led->cdev, LED_OFF); 138 - } 128 + init_data.fwnode = of_fwnode_handle(np); 129 + 130 + state = led_init_default_state_get(init_data.fwnode); 131 + switch (state) { 132 + case LEDS_DEFSTATE_ON: 133 + led->cdev.brightness = maxbright; 134 + pm8058_led_set(&led->cdev, maxbright); 135 + break; 136 + case LEDS_DEFSTATE_KEEP: 137 + led->cdev.brightness = pm8058_led_get(&led->cdev); 138 + break; 139 + default: 140 + led->cdev.brightness = LED_OFF; 141 + pm8058_led_set(&led->cdev, LED_OFF); 139 142 } 140 143 141 144 if (led->ledtype == PM8058_LED_TYPE_KEYPAD || 142 145 led->ledtype == PM8058_LED_TYPE_FLASH) 143 146 led->cdev.flags = LED_CORE_SUSPENDRESUME; 144 - 145 - init_data.fwnode = of_fwnode_handle(np); 146 147 147 148 ret = devm_led_classdev_register_ext(dev, &led->cdev, &init_data); 148 149 if (ret)
+2 -2
drivers/leds/leds-pwm.c
··· 138 138 struct led_pwm led; 139 139 int ret; 140 140 141 - memset(&led, 0, sizeof(led)); 142 - 143 141 device_for_each_child_node(dev, fwnode) { 142 + memset(&led, 0, sizeof(led)); 143 + 144 144 ret = fwnode_property_read_string(fwnode, "label", &led.name); 145 145 if (ret && is_of_node(fwnode)) 146 146 led.name = to_of_node(fwnode)->name;
+22 -25
drivers/leds/leds-syscon.c
··· 61 61 struct device *parent; 62 62 struct regmap *map; 63 63 struct syscon_led *sled; 64 - const char *state; 64 + enum led_default_state state; 65 + u32 value; 65 66 int ret; 66 67 67 68 parent = dev->parent; ··· 87 86 if (of_property_read_u32(np, "mask", &sled->mask)) 88 87 return -EINVAL; 89 88 90 - state = of_get_property(np, "default-state", NULL); 91 - if (state) { 92 - if (!strcmp(state, "keep")) { 93 - u32 val; 89 + init_data.fwnode = of_fwnode_handle(np); 94 90 95 - ret = regmap_read(map, sled->offset, &val); 96 - if (ret < 0) 97 - return ret; 98 - sled->state = !!(val & sled->mask); 99 - } else if (!strcmp(state, "on")) { 100 - sled->state = true; 101 - ret = regmap_update_bits(map, sled->offset, 102 - sled->mask, 103 - sled->mask); 104 - if (ret < 0) 105 - return ret; 106 - } else { 107 - sled->state = false; 108 - ret = regmap_update_bits(map, sled->offset, 109 - sled->mask, 0); 110 - if (ret < 0) 111 - return ret; 112 - } 91 + state = led_init_default_state_get(init_data.fwnode); 92 + switch (state) { 93 + case LEDS_DEFSTATE_ON: 94 + ret = regmap_update_bits(map, sled->offset, sled->mask, sled->mask); 95 + if (ret < 0) 96 + return ret; 97 + sled->state = true; 98 + break; 99 + case LEDS_DEFSTATE_KEEP: 100 + ret = regmap_read(map, sled->offset, &value); 101 + if (ret < 0) 102 + return ret; 103 + sled->state = !!(value & sled->mask); 104 + break; 105 + default: 106 + ret = regmap_update_bits(map, sled->offset, sled->mask, 0); 107 + if (ret < 0) 108 + return ret; 109 + sled->state = false; 113 110 } 114 111 sled->cdev.brightness_set = syscon_led_set; 115 - 116 - init_data.fwnode = of_fwnode_handle(np); 117 112 118 113 ret = devm_led_classdev_register_ext(dev, &sled->cdev, &init_data); 119 114 if (ret < 0)
+3 -5
drivers/leds/leds-tca6507.c
··· 695 695 &led.default_trigger); 696 696 697 697 led.flags = 0; 698 - if (fwnode_property_match_string(child, "compatible", 699 - "gpio") >= 0) 698 + if (fwnode_device_is_compatible(child, "gpio")) 700 699 led.flags |= TCA6507_MAKE_GPIO; 701 700 702 701 ret = fwnode_property_read_u32(child, "reg", &reg); ··· 727 728 }; 728 729 MODULE_DEVICE_TABLE(of, of_tca6507_leds_match); 729 730 730 - static int tca6507_probe(struct i2c_client *client, 731 - const struct i2c_device_id *id) 731 + static int tca6507_probe(struct i2c_client *client) 732 732 { 733 733 struct device *dev = &client->dev; 734 734 struct i2c_adapter *adapter; ··· 807 809 .name = "leds-tca6507", 808 810 .of_match_table = of_match_ptr(of_tca6507_leds_match), 809 811 }, 810 - .probe = tca6507_probe, 812 + .probe_new = tca6507_probe, 811 813 .remove = tca6507_remove, 812 814 .id_table = tca6507_id, 813 815 };
+2 -3
drivers/leds/leds-tlc591xx.c
··· 145 145 MODULE_DEVICE_TABLE(of, of_tlc591xx_leds_match); 146 146 147 147 static int 148 - tlc591xx_probe(struct i2c_client *client, 149 - const struct i2c_device_id *id) 148 + tlc591xx_probe(struct i2c_client *client) 150 149 { 151 150 struct device_node *np, *child; 152 151 struct device *dev = &client->dev; ··· 230 231 .name = "tlc591xx", 231 232 .of_match_table = of_match_ptr(of_tlc591xx_leds_match), 232 233 }, 233 - .probe = tlc591xx_probe, 234 + .probe_new = tlc591xx_probe, 234 235 .id_table = tlc591xx_id, 235 236 }; 236 237
+2 -3
drivers/leds/leds-turris-omnia.c
··· 201 201 }; 202 202 ATTRIBUTE_GROUPS(omnia_led_controller); 203 203 204 - static int omnia_leds_probe(struct i2c_client *client, 205 - const struct i2c_device_id *id) 204 + static int omnia_leds_probe(struct i2c_client *client) 206 205 { 207 206 struct device *dev = &client->dev; 208 207 struct device_node *np = dev_of_node(dev), *child; ··· 271 272 MODULE_DEVICE_TABLE(i2c, omnia_id); 272 273 273 274 static struct i2c_driver omnia_leds_driver = { 274 - .probe = omnia_leds_probe, 275 + .probe_new = omnia_leds_probe, 275 276 .remove = omnia_leds_remove, 276 277 .id_table = omnia_id, 277 278 .driver = {
-1
drivers/leds/leds.h
··· 27 27 ssize_t led_trigger_write(struct file *filp, struct kobject *kobj, 28 28 struct bin_attribute *bin_attr, char *buf, 29 29 loff_t pos, size_t count); 30 - enum led_default_state led_init_default_state_get(struct fwnode_handle *fwnode); 31 30 32 31 extern struct rw_semaphore leds_list_lock; 33 32 extern struct list_head leds_list;
+2
drivers/leds/simple/simatic-ipc-leds-gpio.c
··· 77 77 78 78 switch (plat->devmode) { 79 79 case SIMATIC_IPC_DEVICE_127E: 80 + if (!IS_ENABLED(CONFIG_PINCTRL_BROXTON)) 81 + return -ENODEV; 80 82 simatic_ipc_led_gpio_table = &simatic_ipc_led_gpio_table_127e; 81 83 break; 82 84 case SIMATIC_IPC_DEVICE_227G:
-4
drivers/leds/trigger/ledtrig-disk.c
··· 16 16 DEFINE_LED_TRIGGER(ledtrig_disk); 17 17 DEFINE_LED_TRIGGER(ledtrig_disk_read); 18 18 DEFINE_LED_TRIGGER(ledtrig_disk_write); 19 - DEFINE_LED_TRIGGER(ledtrig_ide); 20 19 21 20 void ledtrig_disk_activity(bool write) 22 21 { 23 22 unsigned long blink_delay = BLINK_DELAY; 24 23 25 24 led_trigger_blink_oneshot(ledtrig_disk, 26 - &blink_delay, &blink_delay, 0); 27 - led_trigger_blink_oneshot(ledtrig_ide, 28 25 &blink_delay, &blink_delay, 0); 29 26 if (write) 30 27 led_trigger_blink_oneshot(ledtrig_disk_write, ··· 37 40 led_trigger_register_simple("disk-activity", &ledtrig_disk); 38 41 led_trigger_register_simple("disk-read", &ledtrig_disk_read); 39 42 led_trigger_register_simple("disk-write", &ledtrig_disk_write); 40 - led_trigger_register_simple("ide-disk", &ledtrig_ide); 41 43 42 44 return 0; 43 45 }
+10 -5
include/linux/leds.h
··· 10 10 11 11 #include <dt-bindings/leds/common.h> 12 12 #include <linux/device.h> 13 - #include <linux/kernfs.h> 14 - #include <linux/list.h> 15 13 #include <linux/mutex.h> 16 14 #include <linux/rwsem.h> 17 15 #include <linux/spinlock.h> 18 16 #include <linux/timer.h> 17 + #include <linux/types.h> 19 18 #include <linux/workqueue.h> 20 19 21 - struct device; 22 - struct led_pattern; 20 + struct attribute_group; 23 21 struct device_node; 22 + struct fwnode_handle; 23 + struct gpio_desc; 24 + struct kernfs_node; 25 + struct led_pattern; 26 + struct platform_device; 27 + 24 28 /* 25 29 * LED Core 26 30 */ ··· 81 77 */ 82 78 bool devname_mandatory; 83 79 }; 80 + 81 + enum led_default_state led_init_default_state_get(struct fwnode_handle *fwnode); 84 82 85 83 struct led_hw_trigger_type { 86 84 int dummy; ··· 535 529 const char *label; 536 530 }; 537 531 538 - struct gpio_desc; 539 532 typedef int (*gpio_blink_set_t)(struct gpio_desc *desc, int state, 540 533 unsigned long *delay_on, 541 534 unsigned long *delay_off);