boards: arm: twr_ke18f: add PWM LEDs

Add support for driving the on-board LEDs present on the NXP TWR-KE18F
development board using FlexTimer (FTM) PWM modulation.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
This commit is contained in:
Henrik Brix Andersen 2019-05-19 16:06:06 +02:00 committed by Maureen Helm
commit 9fae4b0310
5 changed files with 81 additions and 3 deletions

View file

@ -89,4 +89,14 @@ config ADC_0
endif # ADC endif # ADC
if PWM
config PWM_0
default y
config PWM_3
default y
endif # PWM
endif # BOARD_TWR_KE18F endif # BOARD_TWR_KE18F

View file

@ -82,6 +82,8 @@ features:
+-----------+------------+-------------------------------------+ +-----------+------------+-------------------------------------+
| WDT | on-chip | watchdog | | WDT | on-chip | watchdog |
+-----------+------------+-------------------------------------+ +-----------+------------+-------------------------------------+
| PWM | on-chip | pwm |
+-----------+------------+-------------------------------------+
The default configuration can be found in the defconfig file: The default configuration can be found in the defconfig file:
``boards/arm/twr_ke18f/twr_ke18f_defconfig``. ``boards/arm/twr_ke18f/twr_ke18f_defconfig``.

View file

@ -34,14 +34,31 @@ static int twr_ke18f_pinmux_init(struct device *dev)
device_get_binding(CONFIG_PINMUX_MCUX_PORTE_NAME); device_get_binding(CONFIG_PINMUX_MCUX_PORTE_NAME);
#endif #endif
/* LEDs */ #ifdef CONFIG_PWM_0
/* Tri-color LED as PWM */
pinmux_pin_set(portb, 5, PORT_PCR_MUX(kPORT_MuxAlt2));
pinmux_pin_set(portd, 15, PORT_PCR_MUX(kPORT_MuxAlt2));
pinmux_pin_set(portd, 16, PORT_PCR_MUX(kPORT_MuxAlt2));
#else /* !CONFIG_PWM_0 */
/* Tri-color LED as GPIO */
pinmux_pin_set(portb, 5, PORT_PCR_MUX(kPORT_MuxAsGpio)); pinmux_pin_set(portb, 5, PORT_PCR_MUX(kPORT_MuxAsGpio));
pinmux_pin_set(portd, 15, PORT_PCR_MUX(kPORT_MuxAsGpio));
pinmux_pin_set(portd, 16, PORT_PCR_MUX(kPORT_MuxAsGpio));
#endif /* !CONFIG_PWM_0 */
#ifdef CONFIG_PWM_3
/* User LEDs as PWM */
pinmux_pin_set(portc, 10, PORT_PCR_MUX(kPORT_MuxAlt2));
pinmux_pin_set(portc, 11, PORT_PCR_MUX(kPORT_MuxAlt2));
pinmux_pin_set(portc, 12, PORT_PCR_MUX(kPORT_MuxAlt2));
pinmux_pin_set(portc, 13, PORT_PCR_MUX(kPORT_MuxAlt2));
#else /* !CONFIG_PWM_3 */
/* User LEDs as GPIO */
pinmux_pin_set(portc, 10, PORT_PCR_MUX(kPORT_MuxAsGpio)); pinmux_pin_set(portc, 10, PORT_PCR_MUX(kPORT_MuxAsGpio));
pinmux_pin_set(portc, 11, PORT_PCR_MUX(kPORT_MuxAsGpio)); pinmux_pin_set(portc, 11, PORT_PCR_MUX(kPORT_MuxAsGpio));
pinmux_pin_set(portc, 12, PORT_PCR_MUX(kPORT_MuxAsGpio)); pinmux_pin_set(portc, 12, PORT_PCR_MUX(kPORT_MuxAsGpio));
pinmux_pin_set(portc, 13, PORT_PCR_MUX(kPORT_MuxAsGpio)); pinmux_pin_set(portc, 13, PORT_PCR_MUX(kPORT_MuxAsGpio));
pinmux_pin_set(portd, 15, PORT_PCR_MUX(kPORT_MuxAsGpio)); #endif /* !CONFIG_PWM_3 */
pinmux_pin_set(portd, 16, PORT_PCR_MUX(kPORT_MuxAsGpio));
/* Buttons */ /* Buttons */
pinmux_pin_set(portd, 3, PORT_PCR_MUX(kPORT_MuxAsGpio)); pinmux_pin_set(portd, 3, PORT_PCR_MUX(kPORT_MuxAsGpio));

View file

@ -21,6 +21,13 @@
led4 = &tri_red_led; led4 = &tri_red_led;
led5 = &tri_green_led; led5 = &tri_green_led;
led6 = &tri_blue_led; led6 = &tri_blue_led;
pwm-led0 = &orange_pwm_led;
pwm-led1 = &yellow_pwm_led;
pwm-led2 = &green_pwm_led;
pwm-led3 = &red_pwm_led;
red-pwm-led = &tri_red_pwm_led;
green-pwm-led = &tri_green_pwm_led;
blue-pwm-led = &tri_blue_pwm_led;
sw0 = &user_button_3; sw0 = &user_button_3;
sw1 = &user_button_2; sw1 = &user_button_2;
}; };
@ -67,6 +74,39 @@
}; };
}; };
pwmleds {
compatible = "pwm-leds";
orange_pwm_led: led_pwm_0 {
pwms = <&ftm3 7 60000>;
label = "User PWM LED D9";
};
yellow_pwm_led: led_pwm_1 {
pwms = <&ftm3 6 60000>;
label = "User PWM LED D8";
};
green_pwm_led: led_pwm_2 {
pwms = <&ftm3 5 60000>;
label = "User PWM LED D7";
};
red_pwm_led: led_pwm_3 {
pwms = <&ftm3 4 60000>;
label = "User PWM LED D6";
};
tri_red_pwm_led: led_pwm_4 {
pwms = <&ftm0 1 60000>;
label = "User Tricolor PWM LED D5 (Red)";
};
tri_green_pwm_led: led_pwm_5 {
pwms = <&ftm0 0 60000>;
label = "User Tricolor PWM LED D5 (Green)";
};
tri_blue_pwm_led: led_pwm_6 {
pwms = <&ftm0 5 60000>;
label = "User Tricolor PWM LED D5 (Blue)";
};
};
gpio_keys { gpio_keys {
compatible = "gpio-keys"; compatible = "gpio-keys";
user_button_2: button_0 { user_button_2: button_0 {
@ -118,6 +158,14 @@
current-speed = <115200>; current-speed = <115200>;
}; };
&ftm0 {
status = "okay";
};
&ftm3 {
status = "okay";
};
&i2c0 { &i2c0 {
status = "okay"; status = "okay";

View file

@ -17,3 +17,4 @@ supported:
- adc - adc
- can - can
- watchdog - watchdog
- pwm