Awnの日記: SPDIFが使えない on alsa-0.9.4
alsa-driverを0.9.4にしたら(というか、momongaのkernel-2.4.21-1m
にしたら)SPDIFが使えなくなった。
ちなみにサウンドチップはALC650。
alsa-driver-0.9.3の時には使えてたので、ちょっとdiffってみたら、
0.9.4のac97-patch.cのpatch_alc650()でこんな記述が。
int patch_alc650(ac97_t * ac97)
{
unsigned short val;
int spdif = 0;/* FIXME: set the above 1 if we can detect the chip rev.E correctly.
* this is used for switching mic and center/lfe, which needs
* resetting GPIO0 level on the older revision.
*/
ac97->spec.dev_flags = 0;/* check spdif */
if (ac97->spec.dev_flags) {
というわけで、デフォルトOFF(というか一生OFF)になってるのでした。
RealtekのALC650というチップは、コメント文にあるように、
rev.Dかrev.Eか(チップを見ると231Dとか231Eとか書いてある)
でSPDIF INが使えるかどうかが違う(Realtekのサイトと仕様書で確認)ので、
その判定ルーチンを新規に追加したみたいなんだけど、これってバグかな。
調べてみると、0.9.3cあたりでこの辺が書き変わってるようですが、
0.9.3cの時は、条件(rev.Eか)によってspec.dev_flagsを1にするルーチンがちゃんとあります。
自前でカーネルリビルドかぁ。最近やってないなぁ。
[追記]
CVSで確認したら、最新では直っているっぽい。やっぱりビルドかぁ。
SPDIFが使えない on alsa-0.9.4 More ログイン