RAMIPS SoC とPWM IR TX カーネル モジュールを使用して、pwm 出力ピンを IR トランスミッタとして使用しようとしています。Linux 4.14.37 を実行しており、次のエントリを dts ファイルに追加しました。
pwm_ir_tx1: pwm-ir-transmitter1 {
compatible = "pwm-ir-tx";
pwms = <&pwm 1 100>;
};
rc-core および pwm-ir-tx カーネル モジュールをロードしています。
lsmod | grep pwm
pwm_ir_tx 2032 0
pwm_mediatek_ramips 1744 1
rc_core 19348 2 pwm_ir_tx
pwm-ir-tx モジュールが読み込まれると、カーネルは次のログを記録します。
[ 3754.108259] rc rc0: PWM IR Transmitter as /devices/platform/pwm-ir-transmitter1/rc/rc0
sysfs ノードは正しくロードされているようです。
ls -la /sys/class/rc/
drwxr-xr-x 2 root root 0 May 29 00:18 .
drwxr-xr-x 23 root root 0 Jan 1 1970 ..
lrwxrwxrwx 1 root root 0 May 29 01:16 rc0 -> ../../devices/platform/pwm-ir-transmitter1/rc/rc0
しかし、ユーザー空間 (chardev) の lirc デバイスが /dev にリストされていないため、デバイスとどのようにやり取りすればよいかわかりません。理想的にはリモート コントローラー APIを使用したいのですが、これには chardev が /dev に存在する必要があります。
ls /dev
autofs mtd2ro network_throughput
console mtd3 null
cpu_dma_latency mtd3ro port
full mtd4 ptmx
gpiochip0 mtd4ro pts
gpiochip1 mtd5 random
gpiochip2 mtd5ro shm
gpiochip3 mtd6 tty
i2c-0 mtd6ro ttyS0
kmsg mtdblock0 ttyS1
log mtdblock1 ttyS2
memory_bandwidth mtdblock2 urandom
mtd0 mtdblock3 watchdog
mtd0ro mtdblock4 watchdog0
mtd1 mtdblock5 zero
mtd1ro mtdblock6
mtd2 network_latency
pwm-ir-tx モジュールの前後に lirc_dev モジュールをロードしようとしましたが、まだ /dev には何も表示されません。lirc_dev モジュールをロードすると、次の出力が表示されます。
[ 4775.367966] lirc_dev: IR Remote Control driver registered, major 251
しかし、まだ /dev に lirc ユーザー空間デバイスがありません... lirc ユーザー空間 API を提供するので、lirc_dev モジュールが必要だと思いますが、それと pwm-ir-tx モジュールの間に接続がないように見えます。 /devにlirc chardevを作成していません。