blob: 55586ffc3c9bbf73e63d4e69b38e49e6d68a4b90 [file] [log] [blame]
/*
* Copyright (c) 2023 Microchip Technology Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/dt-bindings/pwm/pwm.h>
/* MEC152x EVB
* BBLED controller 0 uses GPIO156/LED0 connected to JP31-13
* BBLED controller 1 uses GPIO157/LED1 connected to JP31-15
* BBLED controller 2 uses GPIO153/LED2 connected to JP31-17
*
* BBLED hardware divides input clock (32KHz or 48MHz) by (256 * (prescalar+1)
* and implements duty cycle for blink mode as an 8-bit value where 0 is off and
* 255 full on. BBLED PWM is 8-bit.
* BBLED-PWM driver get cycles API reports 32KHz/256 or 48M/256.
* Due to all the above we use 50 ms for DT PWM period.
*/
/* PWM_SEC(1) PWM_USEC(7812) */
/ {
pwmleds {
compatible = "pwm-leds";
/* struct pwm_dt_spec: phandle channel period(ns) flags */
bbled_pwm0: bbled_pwm0 {
pwms = <&bbled0 0 PWM_MSEC(50) PWM_POLARITY_NORMAL>;
};
bbled_pwm1: bbled_pwm1 {
pwms = <&bbled1 0 PWM_MSEC(50) PWM_POLARITY_NORMAL>;
};
bbled_pwm2: bbled_pwm2 {
pwms = <&bbled2 0 PWM_MSEC(50) PWM_POLARITY_NORMAL>;
};
};
};
&pinctrl {
led0_gpio156_invert: led0_gpio156_invert {
pinmux = <MCHP_XEC_PINMUX(0156, MCHP_AF1)>;
microchip,output-func-invert;
};
led1_gpio157_invert: led1_gpio157_invert {
pinmux = <MCHP_XEC_PINMUX(0157, MCHP_AF1)>;
microchip,output-func-invert;
};
led2_gpio153_invert: led2_gpio153_invert {
pinmux = <MCHP_XEC_PINMUX(0153, MCHP_AF1)>;
microchip,output-func-invert;
};
};
&bbled0 {
compatible = "microchip,xec-pwmbbled";
clock-select = "PWM_BBLED_CLK_32K";
pinctrl-0 = <&led0_gpio156>;
pinctrl-1 = <&led0_gpio156_sleep>;
pinctrl-names = "default", "sleep";
status = "okay";
#pwm-cells = <3>;
};
&bbled1 {
compatible = "microchip,xec-pwmbbled";
clock-select = "PWM_BBLED_CLK_32K";
pinctrl-0 = <&led1_gpio157>;
pinctrl-1 = <&led1_gpio157_sleep>;
pinctrl-names = "default", "sleep";
status = "okay";
#pwm-cells = <3>;
};
&bbled2 {
compatible = "microchip,xec-pwmbbled";
clock-select = "PWM_BBLED_CLK_32K";
pinctrl-0 = <&led2_gpio153>;
pinctrl-1 = <&led2_gpio153_sleep>;
pinctrl-names = "default", "sleep";
status = "okay";
#pwm-cells = <3>;
};