NanoPi NEO2 I2S AUDIO でMCLKを出すメモ

前提

  • Allwinner H5ではMCLKの出力が可能
  • PA6にアサイン可能
  • NanoPi Neo2でもこのPin(PA6)は出てる

作業内容とか

  • dtsのi2s0 pinctrlにPA6を追加するもエラー
  • PA6にi2s0のfunction設定が無いっぽい
  • functionはpinctrlのdrivers/pinctrl/sunxi/pinctrl-sun50i-h5.cあたりにテーブルがあるが、PA6のi2s0は書いてないので追加する。
  • MCLKが出たことを確認

dtsの修正例

  • 元ネタのdts/dtsiではなく、/boot以下のdtbをdtcで変換して評価しました。
  • i2s0のpinsに"PA6"を追加
i2s0 {
    pins = "PA6", "PA18", "PA19", "PA20", "PA21";
    function = "i2s0";
    linux,phandle = <0x19>;
    phandle = <0x19>;
};
  • spiのpinsから"PA6"を削除
spi0_cs_pins {
    pins = "PC3" ;
    function = "gpio_out";
    linux,phandle = <0x15>;
    phandle = <0x15>;
};
  • 2017/10/06追記 なんかタッチパネル?の割り込みにPA6が割り当てられてるよう。ここもdisableしないとなんか反応してそう。まだ、未確認ですが。
pitft-ts@1 {
    compatible = "ti,ads7846";
    reg = <0x1>;
    status = "disable";

修正の影響範囲

  • PA6のfunctionにi2s0の選択肢を追加しただけ
  • dtsにてPA6のfunctionをi2s0に明示的に指定しなければ影響なし

パッチ

https://github.com/tkztkztkz/linux/commit/07f117214cf457e5b356730f68a5539402b9e5fc

メモ

  • CPU内蔵PLL生成のクロックなので低ジッタなどは期待できないと思う
  • defaultは24.571MHzだと書いてある。0.2%くらいのズレ?
  • Allwinner H3にはMCLK出力は無いっぽい
  • RPi系にはMCLK出力が無いっぽいので、NanoPi Neo2のちょっとしたアドバンテージ?
  • 古いMCLK必須DACを繋ぐのに良さそう
  • でも外部クロック貰った方が音が良いだろうね