From 0ec7af9c1742b204b88d03161e23f85d9b093655 Mon Sep 17 00:00:00 2001 From: Gerard Marull-Paretas Date: Tue, 14 Dec 2021 23:17:43 +0100 Subject: [PATCH] boards: arm: gd32f403z_eval: enable pwm support Enable timer0 and its pwm node. The board does not directly have any LED connected to a PWM output. However, following the official "TIMER_Breath_LED" example, user can bridge PA8 (TIMER0_CH0) to PF0 (LED2) to run quick samples such as samples/basic/blinky_pwm. Note that a prescaler value of 256 has been chosen so that basic PWM samples (blinky_pwm and fade_led) can be run. This value may be overriden in specific samples if needed. Signed-off-by: Gerard Marull-Paretas --- boards/arm/gd32f403z_eval/doc/index.rst | 2 ++ .../gd32f403z_eval-pinctrl.dtsi | 6 ++++++ boards/arm/gd32f403z_eval/gd32f403z_eval.dts | 21 +++++++++++++++++++ boards/arm/gd32f403z_eval/gd32f403z_eval.yaml | 2 ++ 4 files changed, 31 insertions(+) diff --git a/boards/arm/gd32f403z_eval/doc/index.rst b/boards/arm/gd32f403z_eval/doc/index.rst index 8cbac8d3582..dbf31aea513 100644 --- a/boards/arm/gd32f403z_eval/doc/index.rst +++ b/boards/arm/gd32f403z_eval/doc/index.rst @@ -66,6 +66,8 @@ The board configuration supports the following hardware features: | NVIC | on-chip | nested vectored | | | | interrupt controller | +-----------+------------+-----------------------+ +| PWM | on-chip | PWM | ++-----------+------------+-----------------------+ | SYSTICK | on-chip | system clock | +-----------+------------+-----------------------+ | UART | on-chip | serial port-polling | diff --git a/boards/arm/gd32f403z_eval/gd32f403z_eval-pinctrl.dtsi b/boards/arm/gd32f403z_eval/gd32f403z_eval-pinctrl.dtsi index bcd17d6692c..14194428177 100644 --- a/boards/arm/gd32f403z_eval/gd32f403z_eval-pinctrl.dtsi +++ b/boards/arm/gd32f403z_eval/gd32f403z_eval-pinctrl.dtsi @@ -11,4 +11,10 @@ pinmux = , ; }; }; + + pwm0_default: pwm0_default { + group1 { + pinmux = ; + }; + }; }; diff --git a/boards/arm/gd32f403z_eval/gd32f403z_eval.dts b/boards/arm/gd32f403z_eval/gd32f403z_eval.dts index c10b817f0a5..e00129e34a0 100644 --- a/boards/arm/gd32f403z_eval/gd32f403z_eval.dts +++ b/boards/arm/gd32f403z_eval/gd32f403z_eval.dts @@ -59,10 +59,20 @@ }; }; + pwmleds { + compatible = "pwm-leds"; + + /* NOTE: bridge TIMER0_CH0 (PA8) and LED2 (PF0) */ + pwm_led: pwm_led { + pwms = <&pwm0 0 PWM_POLARITY_NORMAL>; + }; + }; + aliases { led0 = &led2; led1 = &led3; sw0 = &user_key1; + pwm-led0 = &pwm_led; }; }; @@ -84,3 +94,14 @@ pinctrl-0 = <&usart0_default>; pinctrl-names = "default"; }; + +&timer0 { + status = "okay"; + prescaler = <256>; + + pwm0: pwm { + status = "okay"; + pinctrl-0 = <&pwm0_default>; + pinctrl-names = "default"; + }; +}; diff --git a/boards/arm/gd32f403z_eval/gd32f403z_eval.yaml b/boards/arm/gd32f403z_eval/gd32f403z_eval.yaml index 0066bc64218..397c3d111a8 100644 --- a/boards/arm/gd32f403z_eval/gd32f403z_eval.yaml +++ b/boards/arm/gd32f403z_eval/gd32f403z_eval.yaml @@ -11,3 +11,5 @@ toolchain: - zephyr - gnuarmemb - xtools +supported: + - pwm