Commit e41ff817 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Lee Jones
Browse files

leds: bcm6358: Get rid of custom led_init_default_state_get()



LED core provides a helper to parse default state from firmware node.
Use it instead of custom implementation.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarLee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20230103131256.33894-6-andriy.shevchenko@linux.intel.com
parent 67d162e8
Loading
Loading
Loading
Loading
+16 −16
Original line number Diff line number Diff line
@@ -96,7 +96,8 @@ static int bcm6358_led(struct device *dev, struct device_node *nc, u32 reg,
{
	struct led_init_data init_data = {};
	struct bcm6358_led *led;
	const char *state;
	enum led_default_state state;
	unsigned long val;
	int rc;

	led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL);
@@ -110,29 +111,28 @@ static int bcm6358_led(struct device *dev, struct device_node *nc, u32 reg,
	if (of_property_read_bool(nc, "active-low"))
		led->active_low = true;

	if (!of_property_read_string(nc, "default-state", &state)) {
		if (!strcmp(state, "on")) {
	init_data.fwnode = of_fwnode_handle(nc);

	state = led_init_default_state_get(init_data.fwnode);
	switch (state) {
	case LEDS_DEFSTATE_ON:
		led->cdev.brightness = LED_FULL;
		} else if (!strcmp(state, "keep")) {
			unsigned long val;
		break;
	case LEDS_DEFSTATE_KEEP:
		val = bcm6358_led_read(led->mem + BCM6358_REG_MODE);
		val &= BIT(led->pin);
			if ((led->active_low && !val) ||
			    (!led->active_low && val))
		if ((led->active_low && !val) || (!led->active_low && val))
			led->cdev.brightness = LED_FULL;
		else
			led->cdev.brightness = LED_OFF;
		} else {
			led->cdev.brightness = LED_OFF;
		}
	} else {
		break;
	default:
		led->cdev.brightness = LED_OFF;
	}

	bcm6358_led_set(&led->cdev, led->cdev.brightness);

	led->cdev.brightness_set = bcm6358_led_set;
	init_data.fwnode = of_fwnode_handle(nc);

	rc = devm_led_classdev_register_ext(dev, &led->cdev, &init_data);
	if (rc < 0)