Armadilloフォーラム

Armadillo840 の画面解像度

tsuchiya

2014年5月15日 14時09分

いつもお世話になっております。
土屋です。

Armadillo840 のHDMI接続で 1280x1024のモニタを接続したのですが 1152x864としてしか認識しません。
モニタ自体は Windowsに接続すると 1280x1024で認識します。他の1280x1024で表示可能なモニタを接続しても同様でした。

modedb.c にあるパラメーター何か追加すれば何とかなりますでしょうか。
あと、/sys/class/graphices/fb0/modes で出力される D:1920x1024p-60 などの見方を教えていただけると助かります。

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

コメント

at_yashi

2014年5月21日 13時55分

a840は、モニターが対応している解像度を取得した後、a840の内部クロックか
ら5%の誤差以内で生成できる解像度を集めます。その中で一番適切だと思うも
ので表示します。

linux-3.4-at/drivers/video/sh_mobile_lcdcfb.c::sh_mobile_lcdc_update_modelist()

            /* delete the mode if we can't generate its pixcel-clock
             * with in 5% diff */
            if (abs(100 - ((hdmi_rate / div) / (pixclock / 100))) > 5) {
                sh_delete_videomode_one(mode, &info->modelist);
                dev_dbg(info->dev, "%dx%d@%d (pixclock=%u) "
                    "is not support mode.\n",
                    mode->xres, mode->yres, mode->refresh,
                    mode->pixclock);
            }

「1280x1024のときに、モニターがいくつの pixclock を要求しているのか」に
よると思います。モニターのマニュアルに記載されていますか? もしなければ、
linux-3.4-at/drivers/video/sh_mobile_lcdcfb.c の1行目に

#define DEBUG 1

と追記して、カーネルを再コンパイルすると、上記の dev_dbg() が有効になり、
pixclock が確認できます。

> /sys/class/graphices/fb0/modes で出力される D:1920x1024p-60 などの見
> 方を教えていただけると助かります。

実際にその文字列を作成しているのは

linux-3.4-at/drivers/video/fbsysfs.c::mode_string() です。

D: FB_MODE_IS_DETAILED フラグが付いている mode。他には、
fb.h で定義されている以下のものがある

#define FB_MODE_IS_UNKNOWN    0
#define FB_MODE_IS_DETAILED    1
#define FB_MODE_IS_STANDARD    2
#define FB_MODE_IS_VESA        4
#define FB_MODE_IS_CALCULATED    8
#define FB_MODE_IS_FIRST    16
#define FB_MODE_IS_FROM_VAR     32

1920x1024: 幅x高 pixcel 数

p: プログレッシブ。他には、インターレースとダブルがある

60: リフレッシュレート

tsuchiya

2014年5月22日 10時48分

at_yashi様
お世話になっております。
土屋です。

頂戴したDEBUG 1 で試したところ

graphics fb0: 1280x1024@60 (pixclock=9259) is not support mode.
graphics fb0: 1024x768@75 (pixclock=12690) is not support mode.
graphics fb0: 1280x1024@75 (pixclock=7407) is not support mode.
graphics fb0: 1152x864@75 (pixclock=9259) is not support mode.
graphics fb0: 1280x1024@60 (pixclock=9259) is not support mode.
graphics fb0: 1280x960@60 (pixclock=9259) is not support mode.

のようになっていましたので、クロックレートがあっていないという結論なのですが
誤差を計算したところ8.3%で、最大でも10%だったのでダメもとで誤差範囲を
無視して設定するようにしたら表示できました。
1週間程度連続稼働させて問題なければ、この状態で行きたいのですが、誤差が8.3%で
問題になりそうな部分がお分かりになるようでしたらば教えていただけると助かります。

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

at_yashi

2014年5月27日 14時17分

> 1週間程度連続稼働させて問題なければ、この状態で行きたいのですが、誤差が8.3%で
> 問題になりそうな部分がお分かりになるようでしたらば教えていただけると助かります。

8.3%の誤差で表示されているのであれば、それほど変な数字になっていないと
思うので、多分問題ないと思います。なんの根拠もないのですが...。5% とい
うのも、保護のために当社で独自に決めた範囲です。お客様の判断で変更して
頂いてかまいません。

もしかすると windows が 1280x1024 で表示しているときの pixel clock は分
りますか? (NVidia のドライバーなどは表示できるようですが、ふつうの
Windows ドライバーでどう調べるのか、ごめんなさい、知らないです)

tsuchiya

2014年5月29日 10時26分

at_yashi様
お世話になっております。
土屋です。

下記有難うございます。今のところディスプレイ側も問題ありませんので、これで顧客に提案できそうです。
夏場の高温下が怖いですが・・・

> 8.3%の誤差で表示されているのであれば、それほど変な数字になっていないと
> 思うので、多分問題ないと思います。なんの根拠もないのですが...。5% とい
> うのも、保護のために当社で独自に決めた範囲です。お客様の判断で変更して
> 頂いてかまいません。

> もしかすると windows が 1280x1024 で表示しているときの pixel clock は分
> りますか? (NVidia のドライバーなどは表示できるようですが、ふつうの
> Windows ドライバーでどう調べるのか、ごめんなさい、知らないです)

は下記のようになっていました。

アクティブピクセル 1280 1024
フロントポーチ(ピクセル) 48 1
同期幅(ピクセル) 112 3
合計ピクセル 1688 1066

1280x1024p@60の時
リフレッシュレート H 63.96KHz V 60Hz
ピクセルクロック 107.9645MHz

1280x1024p@75の時
リフレッシュレート H 79.95KHz V 75Hz
ピクセルクロック 134.9556MHz

何かお分かりでしたらば教えていただけとうれしいです。