linux - 我如何在 Linux 内核中使用 pwm-beeper 模块?

标签 linux device-tree pwm

我已经根据 Linux 设备树设置了 PWM 驱动的蜂鸣器 documentation .我看到这会在/sys/class/input 中产生一个额外的输入设备:

root:/sys/class/input/input0# ls
capabilities  device        event0        id            modalias      name          phys          power         properties    subsystem     uevent        uniq
root:/sys/class/input/input0# cat name
pwm-beeper

但是,我没有看到任何与占空比、极性等相关的内容来实际控制蜂鸣器。也许我对 pwm-beeper 有很大误解,因为它显然是作为一个输入 设备创建的。请帮忙!

[更新]

我的 dts 的变化:

pwm15: dmtimer-pwm@15 {                                                                                                                                                                                                                                                           
            compatible = "ti,omap-dmtimer-pwm";                                                                                                                                                                                                                                       
            ti,timers = <&timer15>;                                                                                                                                                                                                                                                   
            #pwm-cells = <3>;                                                                                                                                                                                                                                                         
};       
beeper: pwm-beeper {                                                                                                                                                                                                                                                              
                compatible = "pwm-beeper";                                                                                                                                                                                                                                        
                pwms = <&pwm15 0 5000>;                                                                                                                                                                                                                                           
                volume-levels = <0 8 20 40 500>;                                                                                                                                                                                                                                  
                default-volume-level = <4>;                                                                                                                                                                                                                                       
};  

相关dmesg:

[ 6.716560] OF: /pwm-beeper: arguments longer than property
[ 6.716566] of_pwm_get(): can't parse "pwms" property
[ 6.716574] pwm-beeper pwm-beeper: Failed to request PWM device: -22
[ 6.716590] pwm-beeper: probe of pwm-beeper failed with error -22

我非常困惑,因为关于这个在 Linux 中主流化的设备驱动程序的信息太少了!

最佳答案

你能发布你添加的 DT block 的片段吗? 试试这个 block

pwm-beeper {
    compatible = "pwm-beeper";
    pwms = <&pwm4 0 5000>;
    volume-levels = <0 8 20 40 500>;
    default-volume-level = <4>;
};

更新1

TLDR;要么将你的#pwm-cells 减少到 2 或者再添加一个字段,即要列出的第三个字段 喜欢 pwms = <&pwm4 0 5000 1>;

phandle1: node1 {
     #list-cells = <2>;
}   

phandle2: node2 {
     #list-cells = <1>;
}

node3 {
     list = <&phandle1 1 2 &phandle2 3>;
}

这里注意列表有#list-cells 不同

phadle1 有 2 个

phadle2 有 1

因此相应地列表有条目。

这会起作用 你的linux版本是多少?你能在最新的稳定版上测试它吗?

关于linux - 我如何在 Linux 内核中使用 pwm-beeper 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56497094/

相关文章:

c - arduino上的PWM褪色LED

python - 从 linux 上的符号链接(symbolic link)执行时如何查找正在运行的脚本的文件名

与连接到 vulnserver.exe 的尖峰模糊器相关的 python 脚本

c - gtk 3 新应用程序使用旧命令行参数

使用 PIC 18 PWM 控制直流电机

avr-gcc - ATtiny85 PWM 频率低于预期

mysql - 无法在 debian 上安装 libmysql++-dev

linux-kernel - 嵌入式 Linux 新手问题

linux-kernel - 当用作设备树节点名称时,phandle 的含义是什么?

linux-kernel - Linux 的 'timebase-frequency' 和 'clock-frequency' 有什么区别