@@ -467,35 +467,64 @@ static inline void spitz_keys_init(void) {}
467
467
* LEDs
468
468
******************************************************************************/
469
469
#if defined(CONFIG_LEDS_GPIO ) || defined(CONFIG_LEDS_GPIO_MODULE )
470
- static struct gpio_led spitz_gpio_leds [] = {
471
- {
472
- .name = "spitz:amber:charge" ,
473
- .default_trigger = "sharpsl-charge" ,
474
- .gpio = SPITZ_GPIO_LED_ORANGE ,
475
- },
476
- {
477
- .name = "spitz:green:hddactivity" ,
478
- .default_trigger = "disk-activity" ,
479
- .gpio = SPITZ_GPIO_LED_GREEN ,
480
- },
470
+ static const struct software_node spitz_gpio_leds_node = {
471
+ .name = "spitz-leds" ,
481
472
};
482
473
483
- static struct gpio_led_platform_data spitz_gpio_leds_info = {
484
- .leds = spitz_gpio_leds ,
485
- .num_leds = ARRAY_SIZE (spitz_gpio_leds ),
474
+ static const struct property_entry spitz_orange_led_props [] = {
475
+ PROPERTY_ENTRY_STRING ("linux,default-trigger" , "sharpsl-charge" ),
476
+ PROPERTY_ENTRY_GPIO ("gpios" ,
477
+ & spitz_scoop_1_gpiochip_node , 6 , GPIO_ACTIVE_HIGH ),
478
+ { }
486
479
};
487
480
488
- static struct platform_device spitz_led_device = {
489
- .name = "leds-gpio" ,
490
- .id = -1 ,
491
- .dev = {
492
- .platform_data = & spitz_gpio_leds_info ,
493
- },
481
+ static const struct software_node spitz_orange_led_node = {
482
+ .name = "spitz:amber:charge" ,
483
+ .parent = & spitz_gpio_leds_node ,
484
+ .properties = spitz_orange_led_props ,
485
+ };
486
+
487
+ static const struct property_entry spitz_green_led_props [] = {
488
+ PROPERTY_ENTRY_STRING ("linux,default-trigger" , "disk-activity" ),
489
+ PROPERTY_ENTRY_GPIO ("gpios" ,
490
+ & spitz_scoop_1_gpiochip_node , 0 , GPIO_ACTIVE_HIGH ),
491
+ { }
492
+ };
493
+
494
+ static const struct software_node spitz_green_led_node = {
495
+ .name = "spitz:green:hddactivity" ,
496
+ .parent = & spitz_gpio_leds_node ,
497
+ .properties = spitz_green_led_props ,
498
+ };
499
+
500
+ static const struct software_node * spitz_gpio_leds_swnodes [] = {
501
+ & spitz_gpio_leds_node ,
502
+ & spitz_orange_led_node ,
503
+ & spitz_green_led_node ,
504
+ NULL
494
505
};
495
506
496
507
static void __init spitz_leds_init (void )
497
508
{
498
- platform_device_register (& spitz_led_device );
509
+ struct platform_device_info led_info = {
510
+ .name = "leds-gpio" ,
511
+ .id = PLATFORM_DEVID_NONE ,
512
+ };
513
+ struct platform_device * led_dev ;
514
+ int err ;
515
+
516
+ err = software_node_register_node_group (spitz_gpio_leds_swnodes );
517
+ if (err ) {
518
+ pr_err ("failed to register LED software nodes: %d\n" , err );
519
+ return ;
520
+ }
521
+
522
+ led_info .fwnode = software_node_fwnode (& spitz_gpio_leds_node );
523
+
524
+ led_dev = platform_device_register_full (& led_info );
525
+ err = PTR_ERR_OR_ZERO (led_dev );
526
+ if (err )
527
+ pr_err ("failed to create LED device: %d\n" , err );
499
528
}
500
529
#else
501
530
static inline void spitz_leds_init (void ) {}
0 commit comments