设备树配置

首先需要在设备树将对应的pwm引脚pinmux设置为pwm_out,

        pinctrl_pwm1: pwm1grp {
                fsl,pins = <
                        MX6QDL_PAD_GPIO_9__PWM1_OUT             0x1b0b1
                >;
        }; 

然后在设备树中使能该pwm输出

&pwm1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pwm1>;
        status = "okay";
}; 

以上例子定义的pwm在mx6 开发板的设备树中被引用为backlight, 如果要使用该pwm进行以下章节的sysfs接口测试, 需要先将设备树中backlight的状态改为disabled.

sysfs应用

使能设备树pwm配置之后, 文件系统就有该pwm的sysfs接口/sys/class/pwm/pwmchipN.

pwm的sysfs接口具体说明可参考kernel文档:

https://www.kernel.org/doc/Documentation/pwm.txt

在/sys/class/pwm/pwmchipN目录下有npwm, export, unexport文件,属性说明如下

先注册该pwm通道:

root@phyboard-mira-imx6-3:~# cat /sys/class/pwm/pwmchip0/npwm 
1
root@phyboard-mira-imx6-3:~# echo 0 > /sys/class/pwm/pwmchip0/export

注册该pwm通道后, 就会在/sys/class/pwm/pwmchipN目录下生成对应的pwmX目录, 该目录下有以下pwm属性文件

先配置pwm的属性, 然后使能该pwm输出

root@phyboard-mira-imx6-3:~# cat /sys/class/pwm/pwmchip0/pwm0/polarity 
normal
root@phyboard-mira-imx6-3:~# echo 5000 > /sys/class/pwm/pwmchip0/pwm0/period 
root@phyboard-mira-imx6-3:~# echo 4000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle 
root@phyboard-mira-imx6-3:~# echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable

此时在pwm的debugfs文件, 可以查看到pwm的输出信息

root@phyboard-mira-imx6-3:~# cat /sys/kernel/debug/pwm 
platform/2080000.pwm, 1 PWM device
 pwm-0   (sysfs               ): requested enabled period: 5000 ns duty: 4000 ns polarity: normal
  • No labels