[PATCH v3] Cubieboard2:SUN7I:Add LED BOOT support

Javad Rahimi javad321javad at gmail.com
Wed Dec 8 15:36:01 CET 2021


This feature makes it possible to assign one of
LED1(PH20) and LED2(PH21) to BOOT process LED.
User should activates the "Enable status LED API" in
"Device Drivers -> LED Support"

Signed-off-by: Javad Rahimi <javad321javad at gmail.com>
---
This is my first contributation in open source world.
I'm sorry if I have mistakes in my commits and versioning.
I do my best to learn fast.

Changes in v3:
- Maintainers  email added

Changes in v2:
- Missed braces added
- Unnecessary debug removed
- Some typo fixed

 board/sunxi/board.c | 49 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index 4f5747c34a..5e2f6ae902 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -1002,3 +1002,52 @@ int board_fit_config_name_match(const char *name)
 	return ret;
 }
 #endif
+
+#if defined(CONFIG_LED_STATUS) && defined(CONFIG_LED_STATUS_BOOT) && defined(CONFIG_LED_STATUS_BOARD_SPECIFIC)
+
+#define CUBIE2_LED_BOOT_GPIO  "PH20"
+static int gpio_boot_led;
+
+void __led_init(led_id_t mask, int state)
+{
+	int ret;
+
+	if (mask != CONFIG_LED_STATUS_BOOT)
+		return;
+
+	ret = gpio_lookup_name(CUBIE2_LED_BOOT_GPIO, NULL, NULL, &gpio_boot_led);
+
+	if (ret)
+		return;
+
+	ret = gpio_request(gpio_boot_led, "boot_led");
+	if (ret == -1) {
+		debug("[gpio_request] Error:%d\n", ret);
+		return;
+	}
+
+	ret = gpio_direction_output(gpio_boot_led, 1);
+	if (ret == -1) {
+		debug("[gpio_direction_output] Error:%d\n", ret);
+		return;
+	}
+	__led_set(mask, state);
+}
+
+void __led_set(led_id_t mask, int state)
+{
+	if (mask != CONFIG_LED_STATUS_BOOT)
+		return;
+
+	gpio_set_value(gpio_boot_led, state);
+}
+
+void __led_toggle(led_id_t mask)
+{
+	if (mask != CONFIG_LED_STATUS_BOOT)
+		return;
+
+	gpio_set_value(gpio_boot_led, !gpio_get_value(gpio_boot_led));
+}
+
+#endif
-- 
2.25.1



More information about the U-Boot mailing list