EDIDバイナリを作る
1360x768の解像度のEDIDバイナリを作りました。以下はUbuntu12.04LTSで行いました。
カーネルのソースをダウンロードする
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
Documentation/EDID の中の Makefile以外を /usr/src/linux-headers-3.11.0-15/Documentation/EDID/ にコピーします。
その中の1280x1024.Sなどの、解像度がファイル名であるファイルのうちの一つをコピーして設定ファイルを作ります。今回は1360x768.Sを作りました。
.Sファイルの編集
$ cvt 1360 768 60 -r # 1360x768 59.96 Hz (CVT) hsync: 47.37kHz; pclk: 72.00MHz Modeline "1360x768R" 72.00 1360 1408 1440 1520 768 771 781 790 +hsync -vsync (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11)
cvtコマンドの結果を参照しながら1360x768.Sを編集します。
/* Display */
#define CLOCK 72000 /* (1)を1000倍した値 */
#define XPIX 1360 /* (2) */
#define YPIX 768 /* (6) */
#define XY_RATIO XY_RATIO_16_9 /* XY_RATIO_16_10、XY_RATIO_4_3、XY_RATIO_5_4、XY_RATIO_16_9のいずれか */
#define XBLANK 160 /* (5)-(2) */
#define YBLANK 22 /* (9)-(6) */
#define XOFFSET 48 /* (3)-(2) */
#define XPULSE 32 /* (4)-(3) */
#define YOFFSET (63+1) /* 63+((7)-(6)) */
#define YPULSE (63+3) /* 63+((8)-(7)) */
#define DPI 72 /* 72 */
#define VFREQ 60 /* 60 */
#define TIMING_NAME "Linux WXGA" /* お好きに? */
#define ESTABLISHED_TIMINGS_BITS 0x00 /* 0x00に */
#define HSYNC_POL 1 /* (10)が+なら1、-なら0 */
#define VSYNC_POL 0 /* (10)が+なら1、-なら0 */
#define CRC 0xa0 /* ここは後で編集する */
編集が終わったらmake。
$ sudo make
1360x768.binが出来上がってます。CRCを調べるためにバイナリをedid-decodeにかけます。edid-decodeはapt-getでインストール可能です。(yumは調べてないので知りません)
$ edid-decode 1360x768.bin
(略)
Checksum: 0x1b (should be 0x7)
should beの後に書かれている値をCRCの所に記入してもう一度makeします。
#define CRC 0x7
$ sudo make
これでEDIDバイナリが完成しました。1360x768.binは /lib/firmware/edid に移動またはコピーします。
余談
本当は1366x768を作りたかったのですが、水平解像度は1360の次は1368でしか作れませんでした。1368版も作って使ってみましたが文字がにじむので、1360版を使うことにしました。