2017-01-09

わかった!

よーく他と比較したら…

iqaudio-dac.c に対して、iqaudio-dacplus-overlay.dtsと、同じレベルのdtsが作られていた。

今回やってるのは

bcm2835-i2s.c(alsaドライバ)→rpi-dac.c(dacドライバ)

の形式で、sampling_rateとかがbcm2835-i2s.cで簡単に拾えているので、そちらに改造を行っていた(よその改造記事でもそこに手を入れていたので)…

これが、失敗だった…

実際修正していたdtsファイルはrpi-dac-overlay.dtsだったので、rpi-dac.c側にgpioの制御を持たせないといけなかった。
#もしくはbcm2835-i2sに対応したdtsファイルを作らないといけなかった(これが正しいやり方かは、微妙な気がするが)

というわけで、bcm2835-i2s.cに乗せていた修正を、全部rpi-dac.c側にうつしたら、あっさり動きました。
(1) probe で、dtsファイルのgpioポートを探して、静的変数に保持する。
(2) hw_paramsで、sampling_rateを識別し、それに合わせて gpioポートの値を変える。

ようやく、linuxのデバイスツリー周りの初歩が理解できました。長かった…日本語のWeb上の解説がほとんど無くて苦戦しました。

0 件のコメント: