Message ID | 20240710234116.2370655-4-gnstark@salutedevices.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | pwm: meson: add pwm support for A1 | expand |
Hello Neil Please take a look at this patch. Appropriate bindings were merged recently. On 7/11/24 02:41, George Stark wrote: > The chip has 3 dual-channel PWM modules PWM_AB, PWM_CD, PWM_EF those > can be connected to various digital I/O pins. > > Each of 6 PWM is driven by individually selected clock parent and > 8-bit divider. The PWM signal is generated using two 16-bit counters. > > Signed-off-by: George Stark <gnstark@salutedevices.com> > Signed-off-by: Dmitry Rokosov <ddrokosov@salutedevices.com> > --- > arch/arm64/boot/dts/amlogic/meson-a1.dtsi | 215 ++++++++++++++++++++++ > 1 file changed, 215 insertions(+) > > diff --git a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi > index 85e56c021e99..0dc39fb8f59d 100644 > --- a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi > +++ b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi > @@ -307,6 +307,188 @@ mux { > }; > }; > > + pwm_a_pins1: pwm-a-pins1 { > + mux { > + groups = "pwm_a_x6"; > + function = "pwm_a"; > + }; > + }; > + > + pwm_a_pins2: pwm-a-pins2 { > + mux { > + groups = "pwm_a_x7"; > + function = "pwm_a"; > + }; > + }; > + > + pwm_a_pins3: pwm-a-pins3 { > + mux { > + groups = "pwm_a_f10"; > + function = "pwm_a"; > + }; > + }; > + > + pwm_a_pins4: pwm-a-pins4 { > + mux { > + groups = "pwm_a_f6"; > + function = "pwm_a"; > + }; > + }; > + > + pwm_a_pins5: pwm-a-pins5 { > + mux { > + groups = "pwm_a_a"; > + function = "pwm_a"; > + }; > + }; > + > + pwm_b_pins1: pwm-b-pins1 { > + mux { > + groups = "pwm_b_x"; > + function = "pwm_b"; > + }; > + }; > + > + pwm_b_pins2: pwm-b-pins2 { > + mux { > + groups = "pwm_b_f"; > + function = "pwm_b"; > + }; > + }; > + > + pwm_b_pins3: pwm-b-pins3 { > + mux { > + groups = "pwm_b_a"; > + function = "pwm_b"; > + }; > + }; > + > + pwm_c_pins1: pwm-c-pins1 { > + mux { > + groups = "pwm_c_x"; > + function = "pwm_c"; > + }; > + }; > + > + pwm_c_pins2: pwm-c-pins2 { > + mux { > + groups = "pwm_c_f3"; > + function = "pwm_c"; > + }; > + }; > + > + pwm_c_pins3: pwm-c-pins3 { > + mux { > + groups = "pwm_c_f8"; > + function = "pwm_c"; > + }; > + }; > + > + pwm_c_pins4: pwm-c-pins4 { > + mux { > + groups = "pwm_c_a"; > + function = "pwm_c"; > + }; > + }; > + > + pwm_d_pins1: pwm-d-pins1 { > + mux { > + groups = "pwm_d_x15"; > + function = "pwm_d"; > + }; > + }; > + > + pwm_d_pins2: pwm-d-pins2 { > + mux { > + groups = "pwm_d_x13"; > + function = "pwm_d"; > + }; > + }; > + > + pwm_d_pins3: pwm-d-pins3 { > + mux { > + groups = "pwm_d_x10"; > + function = "pwm_d"; > + }; > + }; > + > + pwm_d_pins4: pwm-d-pins4 { > + mux { > + groups = "pwm_d_f"; > + function = "pwm_d"; > + }; > + }; > + > + pwm_e_pins1: pwm-e-pins1 { > + mux { > + groups = "pwm_e_p"; > + function = "pwm_e"; > + }; > + }; > + > + pwm_e_pins2: pwm-e-pins2 { > + mux { > + groups = "pwm_e_x16"; > + function = "pwm_e"; > + }; > + }; > + > + pwm_e_pins3: pwm-e-pins3 { > + mux { > + groups = "pwm_e_x14"; > + function = "pwm_e"; > + }; > + }; > + > + pwm_e_pins4: pwm-e-pins4 { > + mux { > + groups = "pwm_e_x2"; > + function = "pwm_e"; > + }; > + }; > + > + pwm_e_pins5: pwm-e-pins5 { > + mux { > + groups = "pwm_e_f"; > + function = "pwm_e"; > + }; > + }; > + > + pwm_e_pins6: pwm-e-pins6 { > + mux { > + groups = "pwm_e_a"; > + function = "pwm_e"; > + }; > + }; > + > + pwm_f_pins1: pwm-f-pins1 { > + mux { > + groups = "pwm_f_b"; > + function = "pwm_f"; > + }; > + }; > + > + pwm_f_pins2: pwm-f-pins2 { > + mux { > + groups = "pwm_f_x"; > + function = "pwm_f"; > + }; > + }; > + > + pwm_f_pins3: pwm-f-pins3 { > + mux { > + groups = "pwm_f_f4"; > + function = "pwm_f"; > + }; > + }; > + > + pwm_f_pins4: pwm-f-pins4 { > + mux { > + groups = "pwm_f_f12"; > + function = "pwm_f"; > + }; > + }; > + > sdio_pins: sdio { > mux0 { > groups = "sdcard_d0_x", > @@ -648,6 +830,28 @@ uart_AO_B: serial@2000 { > status = "disabled"; > }; > > + pwm_ab: pwm@2400 { > + compatible = "amlogic,meson-a1-pwm", > + "amlogic,meson-s4-pwm"; > + reg = <0x0 0x2400 0x0 0x24>; > + #pwm-cells = <3>; > + clocks = <&clkc_periphs CLKID_PWM_A>, > + <&clkc_periphs CLKID_PWM_B>; > + power-domains = <&pwrc PWRC_I2C_ID>; > + status = "disabled"; > + }; > + > + pwm_cd: pwm@2800 { > + compatible = "amlogic,meson-a1-pwm", > + "amlogic,meson-s4-pwm"; > + reg = <0x0 0x2800 0x0 0x24>; > + #pwm-cells = <3>; > + clocks = <&clkc_periphs CLKID_PWM_C>, > + <&clkc_periphs CLKID_PWM_D>; > + power-domains = <&pwrc PWRC_I2C_ID>; > + status = "disabled"; > + }; > + > saradc: adc@2c00 { > compatible = "amlogic,meson-g12a-saradc", > "amlogic,meson-saradc"; > @@ -732,6 +936,17 @@ sec_AO: ao-secure@5a20 { > amlogic,has-chip-id; > }; > > + pwm_ef: pwm@5400 { > + compatible = "amlogic,meson-a1-pwm", > + "amlogic,meson-s4-pwm"; > + reg = <0x0 0x5400 0x0 0x24>; > + #pwm-cells = <3>; > + clocks = <&clkc_periphs CLKID_PWM_E>, > + <&clkc_periphs CLKID_PWM_F>; > + power-domains = <&pwrc PWRC_I2C_ID>; > + status = "disabled"; > + }; > + > clkc_pll: pll-clock-controller@7c80 { > compatible = "amlogic,a1-pll-clkc"; > reg = <0 0x7c80 0 0x18c>;
diff --git a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi index 85e56c021e99..0dc39fb8f59d 100644 --- a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi @@ -307,6 +307,188 @@ mux { }; }; + pwm_a_pins1: pwm-a-pins1 { + mux { + groups = "pwm_a_x6"; + function = "pwm_a"; + }; + }; + + pwm_a_pins2: pwm-a-pins2 { + mux { + groups = "pwm_a_x7"; + function = "pwm_a"; + }; + }; + + pwm_a_pins3: pwm-a-pins3 { + mux { + groups = "pwm_a_f10"; + function = "pwm_a"; + }; + }; + + pwm_a_pins4: pwm-a-pins4 { + mux { + groups = "pwm_a_f6"; + function = "pwm_a"; + }; + }; + + pwm_a_pins5: pwm-a-pins5 { + mux { + groups = "pwm_a_a"; + function = "pwm_a"; + }; + }; + + pwm_b_pins1: pwm-b-pins1 { + mux { + groups = "pwm_b_x"; + function = "pwm_b"; + }; + }; + + pwm_b_pins2: pwm-b-pins2 { + mux { + groups = "pwm_b_f"; + function = "pwm_b"; + }; + }; + + pwm_b_pins3: pwm-b-pins3 { + mux { + groups = "pwm_b_a"; + function = "pwm_b"; + }; + }; + + pwm_c_pins1: pwm-c-pins1 { + mux { + groups = "pwm_c_x"; + function = "pwm_c"; + }; + }; + + pwm_c_pins2: pwm-c-pins2 { + mux { + groups = "pwm_c_f3"; + function = "pwm_c"; + }; + }; + + pwm_c_pins3: pwm-c-pins3 { + mux { + groups = "pwm_c_f8"; + function = "pwm_c"; + }; + }; + + pwm_c_pins4: pwm-c-pins4 { + mux { + groups = "pwm_c_a"; + function = "pwm_c"; + }; + }; + + pwm_d_pins1: pwm-d-pins1 { + mux { + groups = "pwm_d_x15"; + function = "pwm_d"; + }; + }; + + pwm_d_pins2: pwm-d-pins2 { + mux { + groups = "pwm_d_x13"; + function = "pwm_d"; + }; + }; + + pwm_d_pins3: pwm-d-pins3 { + mux { + groups = "pwm_d_x10"; + function = "pwm_d"; + }; + }; + + pwm_d_pins4: pwm-d-pins4 { + mux { + groups = "pwm_d_f"; + function = "pwm_d"; + }; + }; + + pwm_e_pins1: pwm-e-pins1 { + mux { + groups = "pwm_e_p"; + function = "pwm_e"; + }; + }; + + pwm_e_pins2: pwm-e-pins2 { + mux { + groups = "pwm_e_x16"; + function = "pwm_e"; + }; + }; + + pwm_e_pins3: pwm-e-pins3 { + mux { + groups = "pwm_e_x14"; + function = "pwm_e"; + }; + }; + + pwm_e_pins4: pwm-e-pins4 { + mux { + groups = "pwm_e_x2"; + function = "pwm_e"; + }; + }; + + pwm_e_pins5: pwm-e-pins5 { + mux { + groups = "pwm_e_f"; + function = "pwm_e"; + }; + }; + + pwm_e_pins6: pwm-e-pins6 { + mux { + groups = "pwm_e_a"; + function = "pwm_e"; + }; + }; + + pwm_f_pins1: pwm-f-pins1 { + mux { + groups = "pwm_f_b"; + function = "pwm_f"; + }; + }; + + pwm_f_pins2: pwm-f-pins2 { + mux { + groups = "pwm_f_x"; + function = "pwm_f"; + }; + }; + + pwm_f_pins3: pwm-f-pins3 { + mux { + groups = "pwm_f_f4"; + function = "pwm_f"; + }; + }; + + pwm_f_pins4: pwm-f-pins4 { + mux { + groups = "pwm_f_f12"; + function = "pwm_f"; + }; + }; + sdio_pins: sdio { mux0 { groups = "sdcard_d0_x", @@ -648,6 +830,28 @@ uart_AO_B: serial@2000 { status = "disabled"; }; + pwm_ab: pwm@2400 { + compatible = "amlogic,meson-a1-pwm", + "amlogic,meson-s4-pwm"; + reg = <0x0 0x2400 0x0 0x24>; + #pwm-cells = <3>; + clocks = <&clkc_periphs CLKID_PWM_A>, + <&clkc_periphs CLKID_PWM_B>; + power-domains = <&pwrc PWRC_I2C_ID>; + status = "disabled"; + }; + + pwm_cd: pwm@2800 { + compatible = "amlogic,meson-a1-pwm", + "amlogic,meson-s4-pwm"; + reg = <0x0 0x2800 0x0 0x24>; + #pwm-cells = <3>; + clocks = <&clkc_periphs CLKID_PWM_C>, + <&clkc_periphs CLKID_PWM_D>; + power-domains = <&pwrc PWRC_I2C_ID>; + status = "disabled"; + }; + saradc: adc@2c00 { compatible = "amlogic,meson-g12a-saradc", "amlogic,meson-saradc"; @@ -732,6 +936,17 @@ sec_AO: ao-secure@5a20 { amlogic,has-chip-id; }; + pwm_ef: pwm@5400 { + compatible = "amlogic,meson-a1-pwm", + "amlogic,meson-s4-pwm"; + reg = <0x0 0x5400 0x0 0x24>; + #pwm-cells = <3>; + clocks = <&clkc_periphs CLKID_PWM_E>, + <&clkc_periphs CLKID_PWM_F>; + power-domains = <&pwrc PWRC_I2C_ID>; + status = "disabled"; + }; + clkc_pll: pll-clock-controller@7c80 { compatible = "amlogic,a1-pll-clkc"; reg = <0 0x7c80 0 0x18c>;