Armadilloフォーラム

DotClock(PixcelClock)が37MHzのまま変化しない

linbro_emb

2018年1月12日 12時00分

お世話になります、小林と申します。

表題の件ですが、独自の拡張ボードでLCDを接続しております。
下記のサイトを参考にLCD出力設定は変更していますが、Dotclockが37MHzから変わりません。
CN1の12pinを計測しています。LCDからは画は出力されております。

linux-3.4-atxx/arch/arm/mach-shmobile/board-armadillo840.c内、
Line1345行
static struct fb_videomode lcdc0_mode = {

上記の構造体でDotclockが変更されるという認識ですが、
他にも設定箇所がありますでしょうか?

参考サイト:
https://users.atmark-techno.com/blog/750/2419

fbsetの結果:
[root@armadillo840-0 (ttySC2) ~]# fbset -fb /dev/fb0

mode "1280x720-60"
# D: 67.499 MHz, H: 44.999 kHz, V: 59.999 Hz
geometry 1280 720 1280 2880 32
timings 14815 0 0 0 0 220 30
accel false
rgba 8/16,8/8,8/0,8/24
endmode

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

コメント

> 上記の構造体でDotclockが変更されるという認識ですが、
> 他にも設定箇所がありますでしょうか?

ここでは変更されません。分りづらいかと思います。

a840_lcdc0_init()の中でSCF0500というパネル向けに
設定変更している箇所があり、そこにコメントされております。

以下抜粋

    if (IS_ENABLED(CONFIG_ARMADILLO840_LCDC0_DEVICE_SCF0500)) {
        /* SCF0500: dotclk: 37.125MHz (M3:148.5MHz / 4) */
        lcdc0_info.ch[0].clock_divider = 4;
 
        /* Adjust the drive strength of LCDC signals. The
         * register value was determined based on the
         * experiment results with SCF0500133GFR03. If the
         * initial register value after reset is used, noises
         * will be observed on the display. */
        __raw_writew(0x00a3, VCCQ1LCDCR);
    }

この例は、コンフィグによって換える例なので、特定のLCD専用に設定するには
同ソースコード内のstruct sh_mobile_lcdc_info lcdc0_info 構造体の
.clock_divider に148.5MHz / N = "期待する値" になるような整数値 N をセットしてください。

早急なご回答ありがとうございました、無事Dotclockが変わることが確認できました。

また、148.5MHz / N = "期待する値"になるような整数値 Nしかできないようですね、
ハードウェアリミテーションだと理解いたしました。

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

> また、148.5MHz / N = "期待する値"になるような整数値 Nしかできないようですね、
> ハードウェアリミテーションだと理解いたしました。
他の機能で利用しているクロックだと制約はありますが、
148.5以外も選択できる可能性があります。
期待値は67.499 MHzかと思いますが、許容範囲はどの程度でしょうか。