Linux kernel sama5d3 pwm拒绝工作

Linux kernel sama5d3 pwm拒绝工作,linux-kernel,linux-device-driver,pwm,Linux Kernel,Linux Device Driver,Pwm,我使用的是SAMA5D31-EK板,我试图让SAMA5D31内部PWM控制器通过PIO引脚输出信号:特别是PE31。该板正在运行Linux 3.10.0+,我正在使用sysfs接口管理PWM。这个界面似乎运行正常:我可以创建设备(写入“导出”文件),激活它,更改时段和占空比文件的内容(当读回时,它们包含写入它们的最新值)。 至于PIO PE31的配置,我已经更改了arch/arm/boot/dts/sama5d3.dtsi文件,以包括 pwm0 { pinctrl_pwml1: pwml

我使用的是SAMA5D31-EK板,我试图让SAMA5D31内部PWM控制器通过PIO引脚输出信号:特别是PE31。该板正在运行Linux 3.10.0+,我正在使用sysfs接口管理PWM。这个界面似乎运行正常:我可以创建设备(写入“导出”文件),激活它,更改时段和占空比文件的内容(当读回时,它们包含写入它们的最新值)。 至于PIO PE31的配置,我已经更改了arch/arm/boot/dts/sama5d3.dtsi文件,以包括

pwm0 {
    pinctrl_pwml1: pwml1-0 {
    atmel,pins =
        <AT91_PIOE 31 AT91_PERIPH_B AT91_PINCTRL_NONE>;  /*PE31*/
    };
};
                pwm0: pwm@f002c000 {
                        compatible = "atmel,sama5d3-pwm";
                        reg = <0xf002c000 0x300>;
                        interrupts = <28 IRQ_TYPE_LEVEL_HIGH 4>;
                        #pwm-cells = <3>;
                        status = "disabled";
                };
pwm0{
pinctrl_pwml1:pwml1-0{
阿特梅尔,别针=
/*PE31*/
};
};
pwm0:pwm@f002c000 {
compatible=“atmel,sama5d3 pwm”;
reg=;
中断=;
#pwm单元=;
status=“disabled”;
};
在sama5d31.dts文件中,pwm0的状态也从“禁用”更改为“正常”

在互联网上的某个地方,我了解到这种行为可能与那些dts文件中缺少时钟定义有关。在其他地方我读到我需要升级到3.11或3.12内核

任何帮助都将不胜感激

谢谢,
琼。

最后我设法让PWM工作起来;或者更准确地说:通过GPIO引脚获得PWM输出信号

上面的dts代码有两个问题。首先,PE31(选择的GPIO引脚)被另一个进程使用。但更重要的是:PWM控制器节点缺少一些pinctrl定义和正确数量的PWM单元(5)。应改为:

                pwm0: pwm@f002c000 {
                        compatible = "atmel,sama5d3-pwm";
                        reg = <0xf002c000 0x300>;
                        interrupts = <28 IRQ_TYPE_LEVEL_HIGH 4>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&pinctrl_pwmh1>;
                        #pwm-cells = <5>;
                        status = "disabled";
                };
pwm0:pwm@f002c000 {
compatible=“atmel,sama5d3 pwm”;
reg=;
中断=;
pinctrl names=“默认”;
pinctrl-0=;
#pwm单元=;
status=“disabled”;
};
比尔,

我终于成功地让PWM工作了;或者更准确地说:通过PIO引脚获得PWM输出信号。