@@ -330,7 +330,9 @@ static int bcm6328_led(struct device *dev, struct device_node *nc, u32 reg,
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 );
@@ -346,39 +348,36 @@ static int bcm6328_led(struct device *dev, struct device_node *nc, u32 reg,
346
348
if (of_property_read_bool (nc , "active-low" ))
347
349
led -> active_low = true;
348
350
349
- if (!of_property_read_string (nc , "default-state" , & state )) {
350
- if (!strcmp (state , "on" )) {
351
+ init_data .fwnode = of_fwnode_handle (nc );
352
+
353
+ state = led_init_default_state_get (init_data .fwnode );
354
+ switch (state ) {
355
+ case LEDS_DEFSTATE_ON :
356
+ led -> cdev .brightness = LED_FULL ;
357
+ break ;
358
+ case LEDS_DEFSTATE_KEEP :
359
+ shift = bcm6328_pin2shift (led -> pin );
360
+ if (shift / 16 )
361
+ mode = mem + BCM6328_REG_MODE_HI ;
362
+ else
363
+ mode = mem + BCM6328_REG_MODE_LO ;
364
+
365
+ val = bcm6328_led_read (mode ) >> 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 ))
351
369
led -> cdev .brightness = LED_FULL ;
352
- } else if (!strcmp (state , "keep" )) {
353
- void __iomem * mode ;
354
- unsigned long val , shift ;
355
-
356
- shift = bcm6328_pin2shift (led -> pin );
357
- if (shift / 16 )
358
- mode = mem + BCM6328_REG_MODE_HI ;
359
- else
360
- mode = mem + BCM6328_REG_MODE_LO ;
361
-
362
- val = bcm6328_led_read (mode ) >>
363
- 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 ))
367
- led -> cdev .brightness = LED_FULL ;
368
- else
369
- led -> cdev .brightness = LED_OFF ;
370
- } else {
370
+ else
371
371
led -> cdev .brightness = LED_OFF ;
372
- }
373
- } else {
372
+ break ;
373
+ default :
374
374
led -> cdev .brightness = LED_OFF ;
375
375
}
376
376
377
377
bcm6328_led_set (& led -> cdev , led -> cdev .brightness );
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 )
0 commit comments