2019-01-01から1年間の記事一覧

Raspberry Pi Zeroでmpd_gui改を動かす手順

拙作のVolumio2特化対応したmpd_gui改をRaspberry Pi Zeroで動かす手順の紹介です。 blue-7さんの公開されているLCDにmpd/volumioの曲名情報を表示するアプリmpd_gui(mpd or volumio対応)をカスタムしたものになります。 現時点ではWaveShare 1.3" 240x240 L…

Si5351A Linuxドライバの解析メモ

ドライバの実装仕様 Linux KernelのCommon Clk Frameworkに則り実装 Si5351シリーズに対応。最大8ch出力できる。 今回はSi5351A 10-MSOP品を制御対象としているの3chでの使い方に絞ってます 8ch出力時のclkout6/7のDivider制約にも対応していそう dtsでクロ…

Si5351Aを使って簡易I2Sマスタを作ってみる

外部クロックがらみでいろいろ調べていたところ、秋月電子通商で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動作が可能…

AK449Xの簡易外部クロック化について

旭化成のDAC AK449Xシリーズにて、複雑なクロック生成回路ではなく単純な発振器を用いて外部クロック化する手法の紹介。 前回(BCLK/LRCLK出力しかないRaspberry Piで旭化成のDAC IC(AK449xシリーズ)を鳴らす実験 - _tkz_ memo])は外部回路追加無しでしたが…

ALSA SoCドライバメモ No.004 外部クロック関連

外部クロックを使う場合 外部クロックを使うときのクロック制御はDAI LINKに組み込むか、CODECに組み込むか。どちらでも良さそう。 PCM5122のGPIOとDividerを利用しているHiFiBerry DAC+PROではdai link (sound/soc/bcm/hifiberry-dacpro.c)でやっている PCM…

ALSA SoCドライバメモ No.003 callbackシーケンス

ALSA SoCドライバ開発でいちいちgrepするのが面倒な情報をメモしておく Callbackシーケンスのメモ 制御でよく使いそうなhw_paramsとshutdownのみ ポイントは開始時はdai_link->codecs->cpudai。終了時はcpudai->codecs->dai_linkとなること codecsが複数ある…

ALSA SoCドライバメモ No.002 private data

ALSA SoCドライバ開発でいちいちgrepするのが面倒な情報をメモしておく それぞれのドライバでprivate dataをどこに置くのか? dai link snd_soc_cardが自分の持ち物 設定方法 (probe時にsnd_soc_register_card前にやる) snd_soc_card_set_drvdata(&hoge_card…

ALSA SoCドライバメモ No.001 ドライバ構成

ALSA SoCドライバの構成 ファイルの説明 DAI LINKドライバ 例: sound/soc/bcm/hifiberry-dac.c 関連するドライバをまとめ(dai link)て登録(snd_soc_register_card)するドライバ hifiberry-dac.cではほとんど制御は行わず、登録のみを行っている。 hifiberry-…

Raspberry Pi ZeroのI2S DACとポップノイズの関係 その3 MUTE制御の動き

概要 NosPiDAC Zeroなどで音楽を楽しんでいるときに気になるポップノイズについて調べたこと・やったことをメモ。 ちょっと時間が空いてしまいましたが、その3ではALSA SoCのCallbackを追っかけたメモを置いておきます。 調査 まずはsoc_pcm階層からのコー…

Volumio2のREST APIにgetqueueを追加する方法

REST APIでは再生キューのリストが取れないため調査したところ、volumio2に数行のコード追加で取得できるように改造可能とわかったのでその方法をメモ。 内部的には再生キューを生成するWeb Socket用のコードがすでに存在するため、REST APIのコードにgetque…

BCLK/LRCLK出力しかないRaspberry Piで旭化成のDAC IC(AK449xシリーズ)を鳴らす実験

Raspberry PiでDAI/ASRC/CPLDなどのクロック生成周辺回路を用いず、旭化成のDAC AK449Xシリーズを使用する方法についてメモ。 Raspberry PiのDACにAK449xシリーズの採用が少ない原因のひとつとして、AK449xの要求するMCLKをRaspberry Piから供給できない点が…

Linux向けAK449x Codec Driverの紹介

旭化成エレクトロニクス製 AK4490/AK4495/AK4497/AK4493向けLinux Driverの紹介です。NanoPi NEO2でAK449xシリーズを鳴らすために作成しました。 ALSA SoC Codecドライバとして実装しています。NanoPi NEO2/Raspberry Pi Zeroで動作確認済み。そのほかのSBC…

Raspberry Pi ZeroのI2Sオーディオドライバに非Codecドライバを追加登録する方法

概要 ALSA SoCドライバで電子ボリュームを利用する方法を調べてみた。 今回は電子ボリューム内蔵ヘッドフォンアンプIC TPA6130A2ドライバをhifiberry-dacドライバに登録してみる。 仕組み TPA6130A2のドライバはsound/soc/codecs/tpa6130a2.cを使用する TPA6…