本Howtoは参考情報です。
HDMIのシンク機器は、表示できるディスプレイモードをEDIDに格納しています。ソース機器はこれを読み出すことにより、シンク機器が表示可能なディスプレイモードのリストを生成します。従って、通常は/sys/class/graphics/fb*/modesに格納されているビデオモードを設定します。
fbset
を使用する事で実現できます。
fbset - show and modify frame buffer device settings
例えば 1440×480iの信号を設定するコマンドは以下のようになります。
[armadillo ~]# fbset -xres 1440 -yres 480 -t 37037 114 38 30 8 124 6
タイミングを指定している -t
オプションの意味は、以下の通りです。
-t <pixclock> <left margin> <right margin> <upper margin> <lower margin> <horizontal sync length> <vertical sync length>
正しく値が設定されているかについてもfbsetコマンドで確認できます。
[armadillo ~]# fbset
mode "1440x480-30"
# D: 27.000 MHz, H: 15.734 kHz, V: 30.027 Hz
geometry 1440 480 1920 1920 32
timings 37037 114 38 30 8 124 6
accel false
rgba 8/16,8/8,8/0,8/24
endmode
ArmadilloがHDMIに出力する事ができるピクセルクロックは、594MHzを分周したクロックとなります。
fbsetのオプション-t
で指定する<pixclock>
に、594MHzから生成できない値を指定すると、内部的には
近似値が使われます。その場合、HDMIディスプレイが正しく表示できない可能性がありますので、注意してください。
また、当然ですが HDMIディスプレイがサポートしていないモードでは、表示されません。
設定する値は、modedb.c
に登録されているものを使用しました。
(この modedb.c
は
Patch: Armadillo-840 HDMI接続したモニタが正常に表示できない問題の改善
のパッチが当ったものです)
/* #6/7: 720(1440)x480iH@59.94/60Hz */
[6] = {
NULL, 60, 1440, 480, 37037, 114, 38, 30, 8, 124, 6, 0,
FB_VMODE_INTERLACED, 0,
},
fbset
のオプションの詳細は fbset の man page を参照してください。