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/11/07 04:55]
nick [Enable PWM]
products:sbc:common:applications:gpio:pwm [2026/09/15 03:25] (current)
nick [Control PWM]
Line 8: Line 8:
  
 |         ^  PWM           ^  PIN  ^  GPIO name      ^  DT overlay node  ^  Device node              ^ |         ^  PWM           ^  PIN  ^  GPIO name      ^  DT overlay node  ^  Device node              ^
-^  VIM1   |  ''PWM_AO_A''  |  35   |  ''GPIOAO_3''   |  ''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''  |  ''pwm_d''        |  /sys/class/pwm/pwmchip1  | +^  VIM2   |  ''PWM_D''     |  35   |  ''GPIODV_28''  |  ''pwm_d''        |/sys/class/pwm/pwmchip1  | 
-^  VIM3   |  ''PWM_F''     |  35   |  ''GPIOH_5''    |  ''pwm_f''        |  /sys/class/pwm/pwmchip4  | +^  VIM3   |  ''PWM_F''     |  35   |  ''GPIOH_5''    |  ''pwm_f''        |/sys/class/pwm/pwmchip4  | 
-^  VIM3L  |  ''PWM_F''     |  35   |  ''GPIOH_5''    |  ''pwm_f''        | /sys/class/pwm/pwmchip0   | +^  VIM3L  |  ''PWM_F''     |  35   |  ''GPIOH_5''    |  ''pwm_f''        |/sys/class/pwm/pwmchip0   | 
-^  VIM4   |  ''PWM_F''     |  35   |  ''GPIOY_8''    |  ''pwm_f''        |  /sys/class/pwm/pwmchip4  | +^  VIM4   |  ''PWM_F''     |  35   |  ''GPIOY_8''    |  ''pwm_f''        |/sys/class/pwm/pwmchip4  | 
-^  VIM1S  |  ''PWM_F''     |  35   |  ''GPIOZ_6''    |  ''pwm_f''        |  /sys/class/pwm/pwmchip0  |+^  VIM1S  |  ''PWM_F''     |  35   |  ''GPIOZ_6''    |  ''pwm_f''        |/sys/class/pwm/pwmchip0  | 
 +^  VIM-5  |  ''PWM_J''     |  35   |  ''GPIOY_5''    |  ''pwm_j''        |Not fixed, using the below command to detect  | 
 + 
 +**VIM 5:** 
 +```shell 
 +$ set -- /sys/bus/platform/devices/fe058400.pwm/pwm/pwmchip* 
 +$ PWM_J=$1 
 +$ echo $PWM_J 
 +``` 
  
  
 ===== 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 120: Line 132:
 device  export  npwm  power  subsystem  uevent  unexport device  export  npwm  power  subsystem  uevent  unexport
 ``` ```
 +<tabbox VIM-5>
 +
 +Edit ''/boot/dtb/amlogic/kvim-5.dtb.overlay.env'' to add pwm node to ''fdt_overlays'' node if it doesn't exist.
 +
 +You need to add ''pwm_j'' to node ''fdt_overlays'' if it doesn't exist to enable ''PWM_J''.
 +
 +```shell
 +fdt_overlays=pwm_j
 +
 +```
 +
 +After reboot, you will see the pwm device node.
 +
 +```shell
 +$ set -- /sys/bus/platform/devices/fe058400.pwm/pwm/pwmchip*
 +$ PWM_J=$1
 +$ ls $PWM_J
 +device  export  npwm  power  subsystem  uevent  unexport
 +```
 +
 </tabbox> </tabbox>
  
 +
 +==== 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 153: Line 251:
 echo 1 | sudo tee /sys/class/pwm/pwmchip0/pwm1/enable echo 1 | sudo tee /sys/class/pwm/pwmchip0/pwm1/enable
 ``` ```
 +
 +<tabbox VIM-5> 
 +
 +```shell
 +set -- /sys/bus/platform/devices/fe058400.pwm/pwm/pwmchip*
 +PWM_J=$1
 +echo 0 | sudo tee "$PWM_J"/export
 +echo 1000000 | sudo tee "$PWM_J"/pwm0/period
 +echo 500000 | sudo tee "$PWM_J"/pwm0/duty_cycle
 +echo 1 | sudo tee "$PWM_J"/pwm0/enable
 +```
 +
 </tabbox> </tabbox>
  
Line 177: Line 287:
 echo 0 | sudo tee /sys/class/pwm/pwmchip0/pwm1/enable echo 0 | sudo tee /sys/class/pwm/pwmchip0/pwm1/enable
 ``` ```
 +<tabbox VIM-5> 
 +```shell
 +set -- /sys/bus/platform/devices/fe058400.pwm/pwm/pwmchip*
 +PWM_J=$1
 +echo 0 | sudo tee "$PWM_J"/pwm0/enable
 +```
 +<tabbox VIM3L/1S> 
 +```shell
 +echo 0 | sudo tee /sys/class/pwm/pwmchip0/pwm1/enable
 +```
 +
 </tabbox> </tabbox>
  
Last modified: 2023/11/07 04:55 by nick