Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


products:sbc:common:applications:gpio:pwm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
products:sbc:common:applications:gpio:pwm [2023/03/30 23:56]
nick
products:sbc:common:applications:gpio:pwm [2024/08/22 02:40] (current)
nick
Line 7: Line 7:
 ===== PWM Reference Table ===== ===== PWM Reference Table =====
  
-|          PWM            PIN  ^  GPIO name      ^  GPIO num  ^  DT overlay node  ^  Device node              ^ +|          PWM            PIN  ^  GPIO name      ^  DT overlay node  ^  Device node              ^ 
-^  VIM1    ''PWM_AO_A''  |  35    ''GPIOAO_3''   |  504       |  ''pwm_ao_a''      /sys/class/pwm/pwmchip4 +^  VIM1    ''PWM_AO_A''  |  35    ''GPIOAO_3''    ''pwm_ao_a''      /sys/class/pwm/pwmchip4 
-^  VIM2    ''PWM_D''      35    ''GPIODV_28''  |  478       |  ''pwm_d''        |  /sys/class/pwm/pwmchip1 +^  VIM2    ''PWM_D''      35    ''GPIODV_28''  |  ''pwm_d''        |  /sys/class/pwm/pwmchip1 
-^  VIM3    ''PWM_F''      35    ''GPIOH_5''    |  432       |  ''pwm_f''        |  /sys/class/pwm/pwmchip4 +^  VIM3    ''PWM_F''      35    ''GPIOH_5''    |  ''pwm_f''        |  /sys/class/pwm/pwmchip4 
-^  VIM3L  |  ''PWM_F''      35    ''GPIOH_5''    |  432       |  ''pwm_f''        | /sys/class/pwm/pwmchip0   | +^  VIM3L  |  ''PWM_F''      35    ''GPIOH_5''    |  ''pwm_f''        | /sys/class/pwm/pwmchip0   | 
-^  VIM4    ''PWM_F''      35    ''GPIOY_8''    |  482       |  ''pwm_f''        |  /sys/class/pwm/pwmchip4 +^  VIM4    ''PWM_F''      35    ''GPIOY_8''    |  ''pwm_f''        |  /sys/class/pwm/pwmchip4 
-^  VIM1S  |  ''PWM_F''      35    ''GPIOZ_6''    |  503       |  ''pwm_f''        |  /sys/class/pwm/pwmchip0  |+^  VIM1S  |  ''PWM_F''      35    ''GPIOZ_6''    |  ''pwm_f''        |  /sys/class/pwm/pwmchip0  |
  
  
 ===== Enable PWM ===== ===== Enable PWM =====
 +
 +==== Linux ====
 +
  
 In order to use the PWM, you need to enable the PWM function via [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]]. In order to use the PWM, you need to enable the PWM function via [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]].
Line 53: Line 56:
 device  export  npwm  power  subsystem  uevent  unexport device  export  npwm  power  subsystem  uevent  unexport
 ``` ```
 +
 +
 +<tabbox VIM3 with 5.15 kernel>
 +
 +Edit ''/boot/dtb/amlogic/kvim3.dtb.overlay.env'' to add pwm node to ''fdt_overlays'' node if it doesn't exist.
 +
 +
 +You need to add ''pwm_f'' to node ''fdt_overlays'' if it doesn't exist to enable ''PWM_F''.
 +
 +```shell
 +fdt_overlays=pwm_f
 +
 +```
 +
 +After reboot, you will see the pwm device node.
 +
 +<tabbox VIM3L with 5.15 kernel>
 +
 +Edit ''/boot/dtb/amlogic/kvim3l.dtb.overlay.env'' to add pwm node to ''fdt_overlays'' node if it doesn't exist.
 +
 +
 +You need to add ''pwm_f'' to node ''fdt_overlays'' if it doesn't exist to enable ''PWM_F''.
 +
 +```shell
 +fdt_overlays=pwm_f
 +
 +```
 +
 +After reboot, you will see the pwm device node.
  
 <tabbox VIM4> <tabbox VIM4>
Line 93: Line 125:
 </tabbox> </tabbox>
  
-===== Disable PWM to Use GPIO ===== 
  
-If you want to use normal GPIO instead of PWM, you can remove the PWM node in [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]].+==== Android ==== 
 + 
 +<tabbox VIM4> 
 + 
 +The ''PWM'' function is disabled by default, you need to modify the dts to enable it. 
 + 
 +```diff 
 +diff --git a/arch/arm64/boot/dts/amlogic/kvim4.dts b/arch/arm64/boot/dts/amlogic/kvim4.dts 
 +--- a/arch/arm64/boot/dts/amlogic/kvim4.dts 
 ++++ b/arch/arm64/boot/dts/amlogic/kvim4.dts 
 + &pwm_ef { 
 ++    pinctrl-names = "default"; 
 ++    pinctrl-0 = <&pwm_f_pins>; 
 +        status = "okay"; 
 + }; 
 +  
 +diff --git a/arch/arm64/boot/dts/amlogic/kvim4n.dts b/arch/arm64/boot/dts/amlogic/kvim4n.dts 
 +--- a/arch/arm64/boot/dts/amlogic/kvim4n.dts 
 ++++ b/arch/arm64/boot/dts/amlogic/kvim4n.dts 
 + &pwm_ef { 
 ++    pinctrl-names = "default"; 
 ++    pinctrl-0 = <&pwm_f_pins>; 
 +        status = "okay"; 
 + }; 
 +  
 +diff --git a/arch/arm64/boot/dts/amlogic/mesont7_an400-panel.dtsi b/arch/arm64/boot/dts/amlogic/mesont7_an400-panel.dtsi 
 +--- a/arch/arm64/boot/dts/amlogic/mesont7_an400-panel.dtsi 
 ++++ b/arch/arm64/boot/dts/amlogic/mesont7_an400-panel.dtsi 
 +@@ -1442,13 +1442,13 @@ 
 +  
 +        backlight1{ 
 +                compatible = "amlogic, backlight-t7"; 
 +-               status = "okay"; 
 ++               status = "disabled"; 
 +                index = <1>; 
 +                key_valid = <0>; 
 +                pinctrl-names = "pwm_on", 
 +                                "pwm_off"; 
 +-               pinctrl-0 = <&pwm_f_pins>; 
 +-               pinctrl-1 = <&bl1_pwm_off_pins>; 
 +                pinctrl_version = <2>; /* for uboot */ 
 +                interrupts = <0 197 1 
 + 
 +``` 
 + 
 +<tabbox VIM1S> 
 + 
 +The ''PWM'' function is disabled by default, you need to modify the dts to enable it. 
 + 
 +```diff 
 +--- a/arch/arm64/boot/dts/amlogic/kvim1s.dts 
 ++++ b/arch/arm64/boot/dts/amlogic/kvim1s.dts 
 +@@ -1411,8 +1411,8 @@ 
 + }; 
 +  
 + &pwm_ef { 
 +-       /*pinctrl-0 = <&pwm_f_pins2>;*/ 
 +-       /*pinctrl-names = "default";*/ 
 ++       pinctrl-0 = <&pwm_f_pins2>; 
 ++       pinctrl-names = "default"; 
 +        status = "okay"; 
 + }; 
 + 
 +``` 
 +</tabbox>
  
 ===== Control PWM ===== ===== Control PWM =====
Line 127: Line 222:
 echo 1 | sudo tee /sys/class/pwm/pwmchip0/pwm1/enable echo 1 | sudo tee /sys/class/pwm/pwmchip0/pwm1/enable
 ``` ```
 +
 </tabbox> </tabbox>
  
Line 151: Line 247:
 echo 0 | sudo tee /sys/class/pwm/pwmchip0/pwm1/enable echo 0 | sudo tee /sys/class/pwm/pwmchip0/pwm1/enable
 ``` ```
 +
 </tabbox> </tabbox>
 +
 +===== Disable PWM to Use GPIO =====
 +
 +If you want to use normal GPIO instead of PWM, you can remove the PWM node in [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]].
 +
  
  
Last modified: 2023/03/30 23:56 by nick