Linux 7.4がApple Silicon音響を改善 共有GPIO活用
Linux 7.4でApple Siliconの音響対応を改善。共有GPIO基盤で電源管理の課題を解消する変更を解説。
Linux 7.4の開発周期に向けて、Apple Silicon向け音響対応の改善が進んでいる。 Phoronix の Michael Larabel の報道では、共有GPIO基盤を活用する変更がApple SoC用分岐に取り込まれたと伝えている。 対象はM系列SoCを搭載するMacのスピーカー用符号復号器である。 本記事は Phoronix に基づく(All Rights Reserved)。日本国著作権法32条の公正な引用に依拠する。
今回の変更は、Asahi Linuxの下流での回避策を上流の機構に置き換えるものである。 開発を主導したのは、Apple Silicon対応に携わるJames Calligerosである。 同氏は今週、音響対応で共有GPIOを使うための一連のパッチを投稿した。 変更はtas2764とtas2770のASoC駆動部とARCH_APPLE側の設定に及ぶ。 Linux 7.4の統合対象として、すでにApple SoC用分岐に列挙されている。
同一GPIO線を共有する音響構造
Apple Silicon搭載Macでは、複数のスピーカー用符号復号器が存在する。 各符号復号器のソフトウエア停止端子は、同一のGPIO線に接続されている。 この線はいずれかの符号復号器が要求する限り、高位に引き上げる必要がある。 全ての符号復号器が停止を要求して初めて、低位への遷移が許される。 この配線は、個別制御を前提とした通常のGPIO運用とは異なる。 複数の利用者が一本の線の状態を合議で決める必要がある。 従来のGPIO基盤は、単一の占有者による排他制御を想定していた。 そのため、音響駆動部は電源管理の面で特殊な対応を強いられた。 カーネルに共有GPIO基盤が整備されたことで、状況が変わった。 複数の駆動部や構成要素が同一線を安全に共有できるようになった。
電源管理が困難だった理由と背景
問題の核心は、一時停止と再開の順序にある。 カーネルは符号復号器の一覧をたどり、順にsuspendとresumeを呼ぶ。 最初の符号復号器がGPIO線を低位に倒すと、他の符号復号器も停止する。 後続の符号復号器は、既に停止した状態で状態退避を求められる。 レジスター状態の退避が正しく行えず、不整合が生じる。 再開時も同様で、全ての符号復号器が要求するまで線は戻らない。 Calligerosはこの状態を「不可能な」電源管理と表現した。 同氏の説明は、配線と制御順序の衝突を直接示している。
On Apple Silicon Macs, every speaker codec’s software shutdown pin is connected to the same GPIO line. This line must be pulled high whenever any codec asserts it so. This makes power management impossible. When we [go] through the list of codecs and call each suspend/resume, the GPIO line is asserted low or high by the first suspended/resumed codec.
上記引用が示すとおり、最初の状態変化が全体に波及する。 個別の符号復号器は独立して電源を制御できない。 停止端子を共有する設計は、省電力動作と相性が悪い。 特に携帯機器では待機時の消費電力が重要になる。 誤った順序での遮断は、雑音や初期化失敗の原因になる。 音響機能の安定には、線の状態管理の厳密さが欠かせない。 この制約が、上流への統合を長く阻んできた。 今回の共有GPIO対応は、その隘路を開く試みである。
仮想レギュレーターによる回避策
下流のAsahi Linuxカーネルでは、独自の回避策が使われてきた。 調整器APIを代理として流用し、仮想の調整器を設けた。 符号復号器の機器記述にあるshutdown-gpios属性を置き換えた。 仮想調整器がGPIO線の代理人として振る舞う仕組みである。 いずれか一つの利用者が要求すれば、端子は高位に保たれる。 全ての利用者が停止を求めて初めて、低位への遷移が許される。 参照計数に近い動作で、線の早すぎる遮断を防いだ。 実用上は安全に動作し、音響出力を支えてきた。 一方で、調整器の本来用途からは外れた使い方であった。 構成の可読性や保守性の面で負債になる側面があった。 機器記述と駆動部の対応関係も直感的ではなかった。 上流の審査では、こうした流用は受け入れが難しい。 共有GPIO基盤の登場が、この回避策を不要にした。 より正統な機構で同一の合議動作を実現できるようになった。
カーネル側の最適化の流れでは、Linux Cache Aware Scheduling拡張、MySQL最大360%高速化でも上流統合の効果が示された。 下流の独自改善を上流の共通基盤に移す動きと重なる。 個別対応の集積ではなく、基盤の改良で全体を底上げする方向である。
Linux7.4に向けた変更の内容
今回の一連の変更は、3件の構成物から成る。 第一の変更は、ARCH_APPLEで共有GPIOを有効にするものである。 新しい基盤を利用するための土台を整える内容である。 第二と第三の変更は、tas2764とtas2770駆動部の修正である。 Texas Instruments製の増幅器用符号復号器が対象になる。 従来、両駆動部は停止用GPIOを高位で初期化していた。 共有GPIO基盤は、最初の状態変化を既定状態とみなす。 高位始まりでは、最初の変化は高位から低位になる。 この場合、再開時に全符号復号器の要求がそろうまで線は戻らない。 両駆動部は検査時に明示的に線を高位に引き上げる。 そのため初期値を低位にすれば、最初の変化は低位から高位になる。 代理機構は意図どおりに振る舞い、要求があれば即座に高位を保つ。 Calligerosの説明は、この初期値の反転が要点だと示す。
The shared GPIO infrastructure considers the first state change of a line to be the “default” state, which is the state that it will allow to be asserted without all consumers agreeing. Since both drivers explicitly pull the line high on codec probe, we can initialise it low, causing the first state change to be from low to high.
初期化順序と合議条件の相互作用を突いた修正である。 駆動部の検査処理と電源管理処理の整合性が高まる。 機器記述の書き換えや仮想調整器の維持が不要になる。 符号復号器ごとの個別対応ではなく、基盤の合議に委ねる形である。 パッチはApple SoC用分岐に取り込まれ、7.4周期への提出を待つ。 通常の開発過程を経れば、次期統合窓で上流に進む。 対象利用者は、M系列MacでLinuxを使う開発者や検証者である。 音響の安定や待機復帰の信頼性に直結する改善になる。
上流統合がもたらす保守性の向上
下流と上流の差分縮小は、保守の観点で意味が大きい。 Asahi LinuxはApple Silicon対応を先行して切り開いてきた。 独自の工夫は早期の動作実現に不可欠だった。 一方で、下流独自の層は長期的な維持費を生む。 上流の共通機構に置き換えれば、検証の重複が減る。 他のSoC用駆動部との知識共有も進みやすくなる。 共有GPIO基盤自体の利用例が増え、品質が高まる効果もある。 音響以外の機器で線を共有する設計への応用も考えられる。 電源管理とGPIOの境界領域の設計指針にも影響する。 機器記述の正統性が高まり、新規参入者の理解が助けられる。 上流審査の過程で、角の取れた実装に磨かれる利点もある。 今回の変更は規模こそ小さいが、構造の転換を含む。 暫定策から基盤活用への移行として位置づけられる。
編集部の見解
短期的影響について見る。今後3か月から6か月では、M系列Mac上のLinuxで音響周りの不具合報告が減ると見る。待機と復帰を繰り返す検証で、雑音や無音化の再現性が改善する可能性がある。仮想調整器の削除により、機器記述の見通しが良くなると評価する。下流の追従作業も軽くなり、7.4以降の追跡が容易になると見る。開発者は音響以外の未対応機能に資源を振り向けられると評価する。 長期的視点で見る。1年から3年では、共有資源の合議管理が他の駆動部にも広がると見る。電源領域と信号線の共有は、集積度の高いSoCで増える傾向にある。共通基盤への集約は、機種ごとの個別回避策を減らすと評価する。上流優先の開発文化が定着し、新規SoCの立ち上げが速くなると見る。利用者の立場では、対応機種の拡大と安定性の底上げにつながると評価する。 編集部からの問いを記す。共有GPIOの既定状態の定義は、他の共有線にもそのまま適用できるのかが問われている。初期値の反転という手法は、検査順序の変更で破綻しないのか検証が必要と見る。複数供給元の符号復号器が混在する場合、合議条件は維持できるのかも論点と評価する。
参考
- 「Linux 7.4 To Improve Apple Silicon Audio Support & Its “Impossible” Power Management」, by Michael Larabel — Phoronix, 2026-09-04T12:13:01.000Z (ARR)
- 元記事URL: https://www.phoronix.com/news/Linux-Apple-Audio-Shared-GPIO
よくある質問
- Linux 7.4でのApple Silicon音響改善の要点は何か
- 同一GPIO線を共有する複数のスピーカー用符号復号器を、共有GPIO基盤で合議管理する点である。仮想調整器による代理をやめ、上流の共通機構で電源管理の不整合を解消する。tas2764とtas2770駆動部の初期値を低位に変える工夫を含む。
- 従来のAsahi Linuxの回避策と何が違うのか
- 従来は調整器APIを流用し、仮想調整器でGPIO線を代理制御していた。参照計数に近い動作で安全性は確保できたが、本来用途から外れていた。今回は共有GPIO基盤を使い、機器記述と駆動部の対応を正統な形に戻す。
- 利用者にとっての利点は何か
- M系列MacでLinuxを使う場合、音響の安定や待機復帰の信頼性が高まる見込みである。下流と上流の差分が減り、将来のカーネル更新への追従が容易になる。開発資源を他の未対応機能に振り向けやすくなる効果もある。
コメント