Armadilloフォーラム

HDMIの初期解像度設定

l-l

2015年9月14日 9時41分

お世話になります、西村と申します。

Armadillo-840とシーズウェア製タッチパネルTMG-310-AC00を使用して開発を進めております。
接続はHDMI→DVI変換ケーブルにて行っています。

Armadillo-840とタッチパネルの電源を同時に入れた際、一度1920x1080の解像度に合わさった後、800x600に変更されます。
これは最初にディスプレイとの接続が確立されておらずデフォルトのFullHDの解像度が設定された後、
自動調整機能にて800x600に設定されているのでしょうか?

また、そうであるなら、このデフォルト解像度を800x600に変更して、画面表示させたいのですが、どのようにすればいいのでしょうか?

理由としましては稀にEDIDの受信ができていないのか、自動調整機能が効かず、解像度が1920x1080のままになり、
うまく画面表示が行えない時があり、それを解消したいが為です。

ご教示頂けると幸いです。

以上よろしくお願いします。

コメント

at_daisuke.sasaki

2015年9月16日 21時54分

佐々木大輔です。

> これは最初にディスプレイとの接続が確立されておらずデフォルトのFullHDの解像度が設定された後、
> 自動調整機能にて800x600に設定されているのでしょうか?

ご認識の通りです。

> また、そうであるなら、このデフォルト解像度を800x600に変更して、画面表示させたいのですが、どのようにすればいいのでしょうか?

初期の解像度は、以下のファイルで設定されています。

{linux-3.4-at}/arch/arm/mach-shmobile/board-armadillo840.c

このソースコードの中に
初期設定したい、解像度を定義します。
修正箇所は以下の3箇所です。

1611行 enumの定義
1622行 lcdc1_modesの定義
1728行 lcdc1_mode_hintsの定義

一番簡単なのは、LCDC1_VMODE_1080I_60の定義を書き換えてしまう方法です。
期待となる解像度の情報を、LCDC1_VMODE_1080I_60に上書きしてみてください。

> 理由としましては稀にEDIDの受信ができていないのか、自動調整機能が効かず、解像度が1920x1080のままになり、
> うまく画面表示が行えない時があり、それを解消したいが為です。

稀にEDIDが取れないという事ですが、どのバージョンのカーネルを使っていますか?
linux-3.4-at14で、HDMIディスプレイとの接続時の割り込み処理に関し修正を行なっています。
もしも、古いカーネルを使用している場合には、新しいカーネルもお試しください。

以上です。

佐々木様

ご返信ありがとうございます。

> 一番簡単なのは、LCDC1_VMODE_1080I_60の定義を書き換えてしまう方法です。
> 期待となる解像度の情報を、LCDC1_VMODE_1080I_60に上書きしてみてください。

LCDC1_VMODE_1080I_60の定義を書き換えて解像度を変更し、期待通りとなる解像度に設定できました。
ご教示ありがとうございました。