Kernel
ドライバの実装仕様 Linux KernelのCommon Clk Frameworkに則り実装 Si5351シリーズに対応。最大8ch出力できる。 今回はSi5351A 10-MSOP品を制御対象としているの3chでの使い方に絞ってます 8ch出力時のclkout6/7のDivider制約にも対応していそう dtsでクロ…
外部クロックがらみでいろいろ調べていたところ、秋月電子通商でSilicon Labsの3CHクロックジェネレータSi5351Aモジュールを見つけたので、これでI2Sマスタを作ってみた。 クロック出力をちょうど3系統持っているので、MCLK/BCLK/LRCLKの3種を生成してみる。…
必要なスペック DAI(I2Sコントローラ)側 高いBCLK入力に対応可能であること NEO2(H5)では98.304MHzでも動いてた。ただし、12.288MHzより高い周波数はスペック範囲外となる。 RPi Zero(BCM2835)では24.576MHzまで確認。それ以上は未確認。 CBM_CFS動作が可能…
旭化成のDAC AK449Xシリーズにて、複雑なクロック生成回路ではなく単純な発振器を用いて外部クロック化する手法の紹介。 前回(BCLK/LRCLK出力しかないRaspberry Piで旭化成のDAC IC(AK449xシリーズ)を鳴らす実験 - _tkz_ memo])は外部回路追加無しでしたが…
外部クロックを使う場合 外部クロックを使うときのクロック制御はDAI LINKに組み込むか、CODECに組み込むか。どちらでも良さそう。 PCM5122のGPIOとDividerを利用しているHiFiBerry DAC+PROではdai link (sound/soc/bcm/hifiberry-dacpro.c)でやっている PCM…
ALSA SoCドライバ開発でいちいちgrepするのが面倒な情報をメモしておく Callbackシーケンスのメモ 制御でよく使いそうなhw_paramsとshutdownのみ ポイントは開始時はdai_link->codecs->cpudai。終了時はcpudai->codecs->dai_linkとなること codecsが複数ある…
ALSA SoCドライバ開発でいちいちgrepするのが面倒な情報をメモしておく それぞれのドライバでprivate dataをどこに置くのか? dai link snd_soc_cardが自分の持ち物 設定方法 (probe時にsnd_soc_register_card前にやる) snd_soc_card_set_drvdata(&hoge_card…
ALSA SoCドライバの構成 ファイルの説明 DAI LINKドライバ 例: sound/soc/bcm/hifiberry-dac.c 関連するドライバをまとめ(dai link)て登録(snd_soc_register_card)するドライバ hifiberry-dac.cではほとんど制御は行わず、登録のみを行っている。 hifiberry-…
Raspberry PiでDAI/ASRC/CPLDなどのクロック生成周辺回路を用いず、旭化成のDAC AK449Xシリーズを使用する方法についてメモ。 Raspberry PiのDACにAK449xシリーズの採用が少ない原因のひとつとして、AK449xの要求するMCLKをRaspberry Piから供給できない点が…
旭化成エレクトロニクス製 AK4490/AK4495/AK4497/AK4493向けLinux Driverの紹介です。NanoPi NEO2でAK449xシリーズを鳴らすために作成しました。 ALSA SoC Codecドライバとして実装しています。NanoPi NEO2/Raspberry Pi Zeroで動作確認済み。そのほかのSBC…
概要 ALSA SoCドライバで電子ボリュームを利用する方法を調べてみた。 今回は電子ボリューム内蔵ヘッドフォンアンプIC TPA6130A2ドライバをhifiberry-dacドライバに登録してみる。 仕組み TPA6130A2のドライバはsound/soc/codecs/tpa6130a2.cを使用する TPA6…
概要 NosPiDAC Zeroなどで音楽を楽しんでいるときに気になるポップノイズについて調べたこと・やったことをメモ。 その2はCodecドライバを修正し、外部MUTE制御との連動を試してみます。 外部MUTE制御用のサンプルコード付。 MUTE機能つきのHPA IC(MAX9722…
概要 TDA1545AやTDA1543AなどRJフォーマットを採用しているDACをRaspberry Piで鳴らす方法のメモです。 NosPiDACでTDA1545Aを鳴らしたかったので、調査・検証してみました。 仕組み 通常ALSAのSoCドライバではdai linkを設定するdriverでPCMフォーマットを設…
概要 NosPiDAC Zeroなどで音楽を楽しんでいるときに気になるポップノイズについて調べたこと・やったことをメモ。 ポップノイズは再生・停止・曲間で発生します。 発生メカニズムが確定では無いですが、RPi ZeroのI2SドライバがI2Sのクロックを止めることか…
概要 過去記事でNEO2用のビルド環境構築を解説したけど、MediafireからToolchainを持ってきたりでちょっと怪しい感じだったので、Linaroから直接Toolchainをとってきてビルドする手順を確認したのでメモします。 Ubuntu 18.04LTS AMD64環境で確認しました。3…
moode audioで使用しているRaspbianのカーネルイメージをクロスビルドするにあたっていろいろハマったのでメモして置きます。 Ubuntu 18.04LTS AMD64環境で確認 ターゲットはRaspberry Pi Zero用。RPi3とか64bitの奴はツールチェインやビルドオプションが変…
これは何? NanoPi Neo2用のカーネルにI2Sオーディオ関連のパッチを当てたものになります。 カーネルのみのリリースとなります。音を出すにはSoXやmpdなどを自力で導入する必要があります。 手軽に音を出したい方は、本カーネルを適用したVolumio2を作成予定…
HiFiBerry DAC+ PRO対応のβ版リリース HiFiBerry DAC+ PROに対応しました。 twitterには書いてましたがこっちにも簡単にまとめます。 HiFiBerry DAC+ PROにて動作確認しています。クローンもたぶん動くはず。 HiFiBerry DAC+(外部クロックなし)は未検証で…
HiFiBerry DACとはなんぞ? RaspberryPi向けの高音質DAC いくつか種類があり、RPiのクロックで動くものと、DACに乗っけたクロックで動くものがある。 RPi向けAudio用のディストロで対応したカーネルが配られている で? NanoPi NEO2でDAC側にマスタークロッ…
前提 Allwinner H5ではMCLKの出力が可能 PA6にアサイン可能 NanoPi Neo2でもこのPin(PA6)は出てる 作業内容とか dtsのi2s0 pinctrlにPA6を追加するもエラー PA6にi2s0のfunction設定が無いっぽい functionはpinctrlのdrivers/pinctrl/sunxi/pinctrl-sun50i-h…
現象 16/32bitは再生OK 24bit再生はホワイトノイズ(かすかに音楽が聞こえる)となる 発生環境 20170909版のオフィシャルイメージ npi-configでPCM5102Aを選択 play(sox)で24/96,24/192フォーマットのFlacデータを再生 原因 24/32bit再生時の下記2レジスタの…
概要 NanoPi NEO2用の4.11.xカーネルビルド方法のメモ。 公式イメージ20170909版のカーネルは本手順で生成できます。 公式ページの手順は3.10のころのものが混ざってる模様。 Ubuntu 16.04.3で確認 2018/07/21追記 Mediafireではなく、Linaroから直接Toolcha…