Как использовать модуль pwm-beeper в ядре Linux? - PullRequest
2 голосов
/ 07 июня 2019

Я установил свой звуковой сигнал, управляемый ШИМ, согласно дереву устройств Linux Документация . Я вижу, что это приводит к дополнительному устройству ввода в / 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 , поскольку он явно создан как устройство input . Пожалуйста, помогите!

[обновление]

Изменения в моем 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: аргументы длиннее свойства
[6.716566] of_pwm_get (): невозможно проанализировать свойство «pwms»
[6.716574] pwm-beeper pwm-beeper: Не удалось запросить устройство PWM: -22
[6.716590] pwm-beeper: сбой зонда pwm-beeper с ошибкой -22

Я в замешательстве, потому что в Linux так мало информации об этом драйвере устройства!

1 Ответ

0 голосов
/ 18 июня 2019

вы можете опубликовать фрагмент добавленного вами блока DT? попробуйте этот блок

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

Обновление 1

TLDR; либо уменьшите # шим-клеток до 2 Или добавьте еще одно поле, т.е. третье поле в список лайк pwms = <& pwm4 0 5000 1>;

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

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

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

здесь список уведомлений имеет # список-ячеек

phadle1 имеет 2

phadle2 имеет 1

соответственно, в списке есть записи.

Это будет работать какая у тебя версия linux? Можете ли вы проверить это на последней стабильной?

...