Message ID | 20240914-c3-pwm-v2-2-ac1f34c68ac2@amlogic.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for Amlogic C3 PWM | expand |
On 14/09/2024 07:48, Kelvin Zhang via B4 Relay wrote: > From: Kelvin Zhang <kelvin.zhang@amlogic.com> > > Add device nodes for PWM_AB, PWM_CD, PWM_EF, PWM_GH, PWM_IJ, PWM_KL > and PWM_MN, along with the GPIO pin configurations for each channel. > > Signed-off-by: Kelvin Zhang <kelvin.zhang@amlogic.com> > --- > arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi | 364 ++++++++++++++++++++++++++++ > 1 file changed, 364 insertions(+) > > diff --git a/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi > index d0cda759c25d..fd0e557eba06 100644 > --- a/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi > +++ b/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi > @@ -410,6 +410,300 @@ mux { > drive-strength-microamp = <4000>; > }; > }; > + > + pwm_a_pins1: pwm-a-pins1 { > + mux { > + groups = "pwm_a"; > + function = "pwm_a"; > + }; > + }; > + > + pwm_b_pins1: pwm-b-pins1 { > + mux { > + groups = "pwm_b"; > + function = "pwm_b"; > + }; > + }; > + > + pwm_c_pins1: pwm-c-pins1 { > + mux { > + groups = "pwm_c"; > + function = "pwm_c"; > + }; > + }; > + > + pwm_d_pins1: pwm-d-pins1 { > + mux { > + groups = "pwm_d"; > + function = "pwm_d"; > + }; > + }; > + > + pwm_e_pins1: pwm-e-pins1 { > + mux { > + groups = "pwm_e"; > + function = "pwm_e"; > + }; > + }; > + > + pwm_f_pins1: pwm-f-pins1 { > + mux { > + groups = "pwm_f"; > + function = "pwm_f"; > + }; > + }; > + > + pwm_g_pins1: pwm-g-pins1 { > + mux { > + groups = "pwm_g_b"; > + function = "pwm_g"; > + }; > + }; > + > + pwm_g_pins2: pwm-g-pins2 { > + mux { > + groups = "pwm_g_c"; > + function = "pwm_g"; > + }; > + }; > + > + pwm_g_pins3: pwm-g-pins3 { > + mux { > + groups = "pwm_g_d"; > + function = "pwm_g"; > + }; > + }; > + > + pwm_g_pins4: pwm-g-pins4 { > + mux { > + groups = "pwm_g_x0"; > + function = "pwm_g"; > + }; > + }; > + > + pwm_g_pins5: pwm-g-pins5 { > + mux { > + groups = "pwm_g_x8"; > + function = "pwm_g"; > + }; > + }; > + > + pwm_h_pins1: pwm-h-pins1 { > + mux { > + groups = "pwm_h_b"; > + function = "pwm_h"; > + }; > + }; > + > + pwm_h_pins2: pwm-h-pins2 { > + mux { > + groups = "pwm_h_c"; > + function = "pwm_h"; > + }; > + }; > + > + pwm_h_pins3: pwm-h-pins3 { > + mux { > + groups = "pwm_h_d"; > + function = "pwm_h"; > + }; > + }; > + > + pwm_h_pins4: pwm-h-pins4 { > + mux { > + groups = "pwm_h_x1"; > + function = "pwm_h"; > + }; > + }; > + > + pwm_h_pins5: pwm-h-pins5 { > + mux { > + groups = "pwm_h_x9"; > + function = "pwm_h"; > + }; > + }; > + > + pwm_i_pins1: pwm-i-pins1 { > + mux { > + groups = "pwm_i_b"; > + function = "pwm_i"; > + }; > + }; > + > + pwm_i_pins2: pwm-i-pins2 { > + mux { > + groups = "pwm_i_c"; > + function = "pwm_i"; > + }; > + }; > + > + pwm_i_pins3: pwm-i-pins3 { > + mux { > + groups = "pwm_i_d"; > + function = "pwm_i"; > + }; > + }; > + > + pwm_i_pins4: pwm-i-pins4 { > + mux { > + groups = "pwm_i_x2"; > + function = "pwm_i"; > + }; > + }; > + > + pwm_i_pins5: pwm-i-pins5 { > + mux { > + groups = "pwm_i_x10"; > + function = "pwm_i"; > + }; > + }; > + > + pwm_j_pins1: pwm-j-pins1 { > + mux { > + groups = "pwm_j_c"; > + function = "pwm_j"; > + }; > + }; > + > + pwm_j_pins2: pwm-j-pins2 { > + mux { > + groups = "pwm_j_d"; > + function = "pwm_j"; > + }; > + }; > + > + pwm_j_pins3: pwm-j-pins3 { > + mux { > + groups = "pwm_j_b"; > + function = "pwm_j"; > + }; > + }; > + > + pwm_j_pins4: pwm-j-pins4 { > + mux { > + groups = "pwm_j_x3"; > + function = "pwm_j"; > + }; > + }; > + > + pwm_j_pins5: pwm-j-pins5 { > + mux { > + groups = "pwm_j_x12"; > + function = "pwm_j"; > + }; > + }; > + > + pwm_k_pins1: pwm-k-pins1 { > + mux { > + groups = "pwm_k_c"; > + function = "pwm_k"; > + }; > + }; > + > + pwm_k_pins2: pwm-k-pins2 { > + mux { > + groups = "pwm_k_d"; > + function = "pwm_k"; > + }; > + }; > + > + pwm_k_pins3: pwm-k-pins3 { > + mux { > + groups = "pwm_k_b"; > + function = "pwm_k"; > + }; > + }; > + > + pwm_k_pins4: pwm-k-pins4 { > + mux { > + groups = "pwm_k_x4"; > + function = "pwm_k"; > + }; > + }; > + > + pwm_k_pins5: pwm-k-pins5 { > + mux { > + groups = "pwm_k_x13"; > + function = "pwm_k"; > + }; > + }; > + > + pwm_l_pins1: pwm-l-pins1 { > + mux { > + groups = "pwm_l_c"; > + function = "pwm_l"; > + }; > + }; > + > + pwm_l_pins2: pwm-l-pins2 { > + mux { > + groups = "pwm_l_x"; > + function = "pwm_l"; > + }; > + }; > + > + pwm_l_pins3: pwm-l-pins3 { > + mux { > + groups = "pwm_l_b"; > + function = "pwm_l"; > + }; > + }; > + > + pwm_l_pins4: pwm-l-pins4 { > + mux { > + groups = "pwm_l_a"; > + function = "pwm_l"; > + }; > + }; > + > + pwm_m_pins1: pwm-m-pins1 { > + mux { > + groups = "pwm_m_c"; > + function = "pwm_m"; > + }; > + }; > + > + pwm_m_pins2: pwm-m-pins2 { > + mux { > + groups = "pwm_m_x"; > + function = "pwm_m"; > + }; > + }; > + > + pwm_m_pins3: pwm-m-pins3 { > + mux { > + groups = "pwm_m_a"; > + function = "pwm_m"; > + }; > + }; > + > + pwm_m_pins4: pwm-m-pins4 { > + mux { > + groups = "pwm_m_b"; > + function = "pwm_m"; > + }; > + }; > + > + pwm_n_pins1: pwm-n-pins1 { > + mux { > + groups = "pwm_n_x"; > + function = "pwm_n"; > + }; > + }; > + > + pwm_n_pins2: pwm-n-pins2 { > + mux { > + groups = "pwm_n_a"; > + function = "pwm_n"; > + }; > + }; > + > + pwm_n_pins3: pwm-n-pins3 { > + mux { > + groups = "pwm_n_b"; > + function = "pwm_n"; > + }; > + }; > }; > > gpio_intc: interrupt-controller@4080 { > @@ -490,6 +784,16 @@ spicc1: spi@52000 { > status = "disabled"; > }; > > + pwm_mn: pwm@54000 { > + compatible = "amlogic,c3-pwm", > + "amlogic,meson-s4-pwm"; > + reg = <0x0 54000 0x0 0x24>; > + clocks = <&clkc_periphs CLKID_PWM_M>, > + <&clkc_periphs CLKID_PWM_N>; > + #pwm-cells = <3>; > + status = "disabled"; > + }; > + > spifc: spi@56000 { > compatible = "amlogic,a1-spifc"; > reg = <0x0 0x56000 0x0 0x290>; > @@ -499,6 +803,66 @@ spifc: spi@56000 { > status = "disabled"; > }; > > + pwm_ab: pwm@58000 { > + compatible = "amlogic,c3-pwm", > + "amlogic,meson-s4-pwm"; > + reg = <0x0 0x58000 0x0 0x24>; > + clocks = <&clkc_periphs CLKID_PWM_A>, > + <&clkc_periphs CLKID_PWM_B>; > + #pwm-cells = <3>; > + status = "disabled"; > + }; > + > + pwm_cd: pwm@5a000 { > + compatible = "amlogic,c3-pwm", > + "amlogic,meson-s4-pwm"; > + reg = <0x0 0x5a000 0x0 0x24>; > + clocks = <&clkc_periphs CLKID_PWM_C>, > + <&clkc_periphs CLKID_PWM_D>; > + #pwm-cells = <3>; > + status = "disabled"; > + }; > + > + pwm_ef: pwm@5c000 { > + compatible = "amlogic,c3-pwm", > + "amlogic,meson-s4-pwm"; > + reg = <0x0 0x5c000 0x0 0x24>; > + clocks = <&clkc_periphs CLKID_PWM_E>, > + <&clkc_periphs CLKID_PWM_F>; > + #pwm-cells = <3>; > + status = "disabled"; > + }; > + > + pwm_gh: pwm@5e000 { > + compatible = "amlogic,c3-pwm", > + "amlogic,meson-s4-pwm"; > + reg = <0x0 0x5e000 0x0 0x24>; > + clocks = <&clkc_periphs CLKID_PWM_G>, > + <&clkc_periphs CLKID_PWM_H>; > + #pwm-cells = <3>; > + status = "disabled"; > + }; > + > + pwm_ij: pwm@60000 { > + compatible = "amlogic,c3-pwm", > + "amlogic,meson-s4-pwm"; > + reg = <0x0 0x60000 0x0 0x24>; > + clocks = <&clkc_periphs CLKID_PWM_I>, > + <&clkc_periphs CLKID_PWM_J>; > + #pwm-cells = <3>; > + status = "disabled"; > + }; > + > + pwm_kl: pwm@62000 { > + compatible = "amlogic,c3-pwm", > + "amlogic,meson-s4-pwm"; > + reg = <0x0 0x62000 0x0 0x24>; > + clocks = <&clkc_periphs CLKID_PWM_K>, > + <&clkc_periphs CLKID_PWM_L>; > + #pwm-cells = <3>; > + status = "disabled"; > + }; > + > i2c0: i2c@66000 { > compatible = "amlogic,meson-axg-i2c"; > reg = <0x0 0x66000 0x0 0x24>; > Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
diff --git a/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi index d0cda759c25d..fd0e557eba06 100644 --- a/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi +++ b/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi @@ -410,6 +410,300 @@ mux { drive-strength-microamp = <4000>; }; }; + + pwm_a_pins1: pwm-a-pins1 { + mux { + groups = "pwm_a"; + function = "pwm_a"; + }; + }; + + pwm_b_pins1: pwm-b-pins1 { + mux { + groups = "pwm_b"; + function = "pwm_b"; + }; + }; + + pwm_c_pins1: pwm-c-pins1 { + mux { + groups = "pwm_c"; + function = "pwm_c"; + }; + }; + + pwm_d_pins1: pwm-d-pins1 { + mux { + groups = "pwm_d"; + function = "pwm_d"; + }; + }; + + pwm_e_pins1: pwm-e-pins1 { + mux { + groups = "pwm_e"; + function = "pwm_e"; + }; + }; + + pwm_f_pins1: pwm-f-pins1 { + mux { + groups = "pwm_f"; + function = "pwm_f"; + }; + }; + + pwm_g_pins1: pwm-g-pins1 { + mux { + groups = "pwm_g_b"; + function = "pwm_g"; + }; + }; + + pwm_g_pins2: pwm-g-pins2 { + mux { + groups = "pwm_g_c"; + function = "pwm_g"; + }; + }; + + pwm_g_pins3: pwm-g-pins3 { + mux { + groups = "pwm_g_d"; + function = "pwm_g"; + }; + }; + + pwm_g_pins4: pwm-g-pins4 { + mux { + groups = "pwm_g_x0"; + function = "pwm_g"; + }; + }; + + pwm_g_pins5: pwm-g-pins5 { + mux { + groups = "pwm_g_x8"; + function = "pwm_g"; + }; + }; + + pwm_h_pins1: pwm-h-pins1 { + mux { + groups = "pwm_h_b"; + function = "pwm_h"; + }; + }; + + pwm_h_pins2: pwm-h-pins2 { + mux { + groups = "pwm_h_c"; + function = "pwm_h"; + }; + }; + + pwm_h_pins3: pwm-h-pins3 { + mux { + groups = "pwm_h_d"; + function = "pwm_h"; + }; + }; + + pwm_h_pins4: pwm-h-pins4 { + mux { + groups = "pwm_h_x1"; + function = "pwm_h"; + }; + }; + + pwm_h_pins5: pwm-h-pins5 { + mux { + groups = "pwm_h_x9"; + function = "pwm_h"; + }; + }; + + pwm_i_pins1: pwm-i-pins1 { + mux { + groups = "pwm_i_b"; + function = "pwm_i"; + }; + }; + + pwm_i_pins2: pwm-i-pins2 { + mux { + groups = "pwm_i_c"; + function = "pwm_i"; + }; + }; + + pwm_i_pins3: pwm-i-pins3 { + mux { + groups = "pwm_i_d"; + function = "pwm_i"; + }; + }; + + pwm_i_pins4: pwm-i-pins4 { + mux { + groups = "pwm_i_x2"; + function = "pwm_i"; + }; + }; + + pwm_i_pins5: pwm-i-pins5 { + mux { + groups = "pwm_i_x10"; + function = "pwm_i"; + }; + }; + + pwm_j_pins1: pwm-j-pins1 { + mux { + groups = "pwm_j_c"; + function = "pwm_j"; + }; + }; + + pwm_j_pins2: pwm-j-pins2 { + mux { + groups = "pwm_j_d"; + function = "pwm_j"; + }; + }; + + pwm_j_pins3: pwm-j-pins3 { + mux { + groups = "pwm_j_b"; + function = "pwm_j"; + }; + }; + + pwm_j_pins4: pwm-j-pins4 { + mux { + groups = "pwm_j_x3"; + function = "pwm_j"; + }; + }; + + pwm_j_pins5: pwm-j-pins5 { + mux { + groups = "pwm_j_x12"; + function = "pwm_j"; + }; + }; + + pwm_k_pins1: pwm-k-pins1 { + mux { + groups = "pwm_k_c"; + function = "pwm_k"; + }; + }; + + pwm_k_pins2: pwm-k-pins2 { + mux { + groups = "pwm_k_d"; + function = "pwm_k"; + }; + }; + + pwm_k_pins3: pwm-k-pins3 { + mux { + groups = "pwm_k_b"; + function = "pwm_k"; + }; + }; + + pwm_k_pins4: pwm-k-pins4 { + mux { + groups = "pwm_k_x4"; + function = "pwm_k"; + }; + }; + + pwm_k_pins5: pwm-k-pins5 { + mux { + groups = "pwm_k_x13"; + function = "pwm_k"; + }; + }; + + pwm_l_pins1: pwm-l-pins1 { + mux { + groups = "pwm_l_c"; + function = "pwm_l"; + }; + }; + + pwm_l_pins2: pwm-l-pins2 { + mux { + groups = "pwm_l_x"; + function = "pwm_l"; + }; + }; + + pwm_l_pins3: pwm-l-pins3 { + mux { + groups = "pwm_l_b"; + function = "pwm_l"; + }; + }; + + pwm_l_pins4: pwm-l-pins4 { + mux { + groups = "pwm_l_a"; + function = "pwm_l"; + }; + }; + + pwm_m_pins1: pwm-m-pins1 { + mux { + groups = "pwm_m_c"; + function = "pwm_m"; + }; + }; + + pwm_m_pins2: pwm-m-pins2 { + mux { + groups = "pwm_m_x"; + function = "pwm_m"; + }; + }; + + pwm_m_pins3: pwm-m-pins3 { + mux { + groups = "pwm_m_a"; + function = "pwm_m"; + }; + }; + + pwm_m_pins4: pwm-m-pins4 { + mux { + groups = "pwm_m_b"; + function = "pwm_m"; + }; + }; + + pwm_n_pins1: pwm-n-pins1 { + mux { + groups = "pwm_n_x"; + function = "pwm_n"; + }; + }; + + pwm_n_pins2: pwm-n-pins2 { + mux { + groups = "pwm_n_a"; + function = "pwm_n"; + }; + }; + + pwm_n_pins3: pwm-n-pins3 { + mux { + groups = "pwm_n_b"; + function = "pwm_n"; + }; + }; }; gpio_intc: interrupt-controller@4080 { @@ -490,6 +784,16 @@ spicc1: spi@52000 { status = "disabled"; }; + pwm_mn: pwm@54000 { + compatible = "amlogic,c3-pwm", + "amlogic,meson-s4-pwm"; + reg = <0x0 54000 0x0 0x24>; + clocks = <&clkc_periphs CLKID_PWM_M>, + <&clkc_periphs CLKID_PWM_N>; + #pwm-cells = <3>; + status = "disabled"; + }; + spifc: spi@56000 { compatible = "amlogic,a1-spifc"; reg = <0x0 0x56000 0x0 0x290>; @@ -499,6 +803,66 @@ spifc: spi@56000 { status = "disabled"; }; + pwm_ab: pwm@58000 { + compatible = "amlogic,c3-pwm", + "amlogic,meson-s4-pwm"; + reg = <0x0 0x58000 0x0 0x24>; + clocks = <&clkc_periphs CLKID_PWM_A>, + <&clkc_periphs CLKID_PWM_B>; + #pwm-cells = <3>; + status = "disabled"; + }; + + pwm_cd: pwm@5a000 { + compatible = "amlogic,c3-pwm", + "amlogic,meson-s4-pwm"; + reg = <0x0 0x5a000 0x0 0x24>; + clocks = <&clkc_periphs CLKID_PWM_C>, + <&clkc_periphs CLKID_PWM_D>; + #pwm-cells = <3>; + status = "disabled"; + }; + + pwm_ef: pwm@5c000 { + compatible = "amlogic,c3-pwm", + "amlogic,meson-s4-pwm"; + reg = <0x0 0x5c000 0x0 0x24>; + clocks = <&clkc_periphs CLKID_PWM_E>, + <&clkc_periphs CLKID_PWM_F>; + #pwm-cells = <3>; + status = "disabled"; + }; + + pwm_gh: pwm@5e000 { + compatible = "amlogic,c3-pwm", + "amlogic,meson-s4-pwm"; + reg = <0x0 0x5e000 0x0 0x24>; + clocks = <&clkc_periphs CLKID_PWM_G>, + <&clkc_periphs CLKID_PWM_H>; + #pwm-cells = <3>; + status = "disabled"; + }; + + pwm_ij: pwm@60000 { + compatible = "amlogic,c3-pwm", + "amlogic,meson-s4-pwm"; + reg = <0x0 0x60000 0x0 0x24>; + clocks = <&clkc_periphs CLKID_PWM_I>, + <&clkc_periphs CLKID_PWM_J>; + #pwm-cells = <3>; + status = "disabled"; + }; + + pwm_kl: pwm@62000 { + compatible = "amlogic,c3-pwm", + "amlogic,meson-s4-pwm"; + reg = <0x0 0x62000 0x0 0x24>; + clocks = <&clkc_periphs CLKID_PWM_K>, + <&clkc_periphs CLKID_PWM_L>; + #pwm-cells = <3>; + status = "disabled"; + }; + i2c0: i2c@66000 { compatible = "amlogic,meson-axg-i2c"; reg = <0x0 0x66000 0x0 0x24>;