Hi Alexander,

On 8/9/23 17:16, Alexander Dahl wrote:
Copied dts pieces from Linux Kernel.  Support is optional for now, to
make it work the following options have to be enabled: CONFIG_LED,
CONFIG_LED_GPIO, CONFIG_CMD_LED.

Signed-off-by: Alexander Dahl <a...@thorsis.com>
---
  .../dts/at91-sam9x60_curiosity-u-boot.dtsi    | 18 +++++++++++
  arch/arm/dts/at91-sam9x60_curiosity.dts       | 30 +++++++++++++++++++
  .../sam9x60_curiosity/sam9x60_curiosity.c     | 18 +++++++++++

Can you please split the DT changes from the C file changes, namely if you bring changes from Linux, add them in a sync commit indicating the commit from Linux, and the changes to the board in a separate patch.

Thanks !

  3 files changed, 66 insertions(+)

diff --git a/arch/arm/dts/at91-sam9x60_curiosity-u-boot.dtsi 
b/arch/arm/dts/at91-sam9x60_curiosity-u-boot.dtsi
index a1b76e94d1..dd4623311c 100644
--- a/arch/arm/dts/at91-sam9x60_curiosity-u-boot.dtsi
+++ b/arch/arm/dts/at91-sam9x60_curiosity-u-boot.dtsi
@@ -20,6 +20,24 @@
        chosen {
                bootph-all;
        };
+
+       config {
+               u-boot,boot-led = "blue";
+       };
+
+       leds {
+               led-red {
+                       default-state = "off";
+               };
+
+               led-green {
+                       default-state = "off";
+               };
+
+               led-blue {
+                       default-state = "off";
+               };
+       };
  };
&clk32 {
diff --git a/arch/arm/dts/at91-sam9x60_curiosity.dts 
b/arch/arm/dts/at91-sam9x60_curiosity.dts
index 2547b4527c..244cacfe1b 100644
--- a/arch/arm/dts/at91-sam9x60_curiosity.dts
+++ b/arch/arm/dts/at91-sam9x60_curiosity.dts
@@ -33,6 +33,28 @@
                };
        };
+ leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_leds>;
+
+               led-red {
+                       label = "red";
+                       gpios = <&pioD 17 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-green {
+                       label = "green";
+                       gpios = <&pioD 19 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-blue {
+                       label = "blue";
+                       gpios = <&pioD 21 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
        onewire_tm: onewire {
                gpios = <&pioD 14 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "default";
@@ -167,6 +189,14 @@
                };
        };
+ leds {
+               pinctrl_gpio_leds: gpio-leds {
+                       atmel,pins = <AT91_PIOD 17 AT91_PERIPH_GPIO 
AT91_PINCTRL_NONE
+                                     AT91_PIOD 19 AT91_PERIPH_GPIO 
AT91_PINCTRL_NONE
+                                     AT91_PIOD 21 AT91_PERIPH_GPIO 
AT91_PINCTRL_NONE>;
+               };
+       };
+
        nand {
                pinctrl_nand_oe_we: nand-oe-we-0 {
                        atmel,pins =
diff --git a/board/atmel/sam9x60_curiosity/sam9x60_curiosity.c 
b/board/atmel/sam9x60_curiosity/sam9x60_curiosity.c
index 0fe0de9fde..f53d359404 100644
--- a/board/atmel/sam9x60_curiosity/sam9x60_curiosity.c
+++ b/board/atmel/sam9x60_curiosity/sam9x60_curiosity.c
@@ -9,6 +9,7 @@
  #include <debug_uart.h>
  #include <fdtdec.h>
  #include <init.h>
+#include <led.h>
  #include <asm/arch/at91_common.h>
  #include <asm/arch/at91_rstc.h>
  #include <asm/arch/at91_sfr.h>
@@ -18,6 +19,7 @@
  #include <asm/global_data.h>
  #include <asm/io.h>
  #include <asm/mach-types.h>
+#include <dm/ofnode.h>
extern void at91_pda_detect(void); @@ -27,9 +29,25 @@ void at91_prepare_cpu_var(void); static void board_leds_init(void)
  {
+#if CONFIG_IS_ENABLED(LED)
+       const char *led_name;
+       struct udevice *dev;
+       int ret;
+
+       led_name = ofnode_conf_read_str("u-boot,boot-led");
+       if (!led_name)
+               return;
+
+       ret = led_get_by_label(led_name, &dev);
+       if (ret)
+               return;
+
+       led_set_state(dev, LEDST_ON);
+#else
        at91_set_pio_output(AT91_PIO_PORTD, 17, 0);     /* LED RED */
        at91_set_pio_output(AT91_PIO_PORTD, 19, 0);     /* LED GREEN */
        at91_set_pio_output(AT91_PIO_PORTD, 21, 1);     /* LED BLUE */
+#endif
  }
int board_late_init(void)

Reply via email to