フレームバッファドライバ(altfb)が24ビットモニタで動作しません。

フレームバッファドライバ(altfb)が24ビットモニタで動作しません。

私は24ビットLCDディスプレイを備えた組み込みLinuxシステムを開発しています。 terasic linux-socfgaを使用してカーネルをコンパイルし、altfbドライバを使用してデスクトップをLCDに表示しようとしています。これを行うには、Linuxドライバ(https://github.com/coliby/terasic_MTL/blob/master/drivers/video/altfb.c)を私のカーネルコードに追加し、コードを正常にコンパイルしました。ところで、モニターが正常に動作しません。

数日間試したところ、デスクトップは正常に表示されましたが、ピクセル値が正しく表示されませんでした。最後に、下の画像のような内容を正常に表示しました。そのためにコードを次のように変更しました。

writel(fbdev->info->var.xres * fbdev->info->var.yres/(fbdev->mem_word_width/32)

到着

writel(fbdev->info->var.xres * fbdev->info->var.yres/(fbdev->mem_word_width/24)

ただし、ディスプレイは添付の図のように表示されます。トラブルシューティングにご協力いただきありがとうございます。 ここに画像の説明を入力してください。

https://rocketboards.org/foswiki/Projects/TouchScreenLCDForAlteraSoC

https://github.com/coliby/terasic_MTL/blob/master/drivers/video/altfb.c

関連情報