私はオレンジパイワンH3に関連するプロジェクトのための小さなLinuxディストリビューションを作成しましたが、HDMI出力は機能しません。
Linuxカーネルがこのデバイスをサポートしていることを確認するために別のディストリビューション(armbian)をテストしましたが、うまくいきました。これを念頭に置いて、それに応じてカーネル設定を変更し、関連する機能をすべて追加してみましたが、私のバージョンはまだ機能しません。
毎回試した後、dmesgを調べることにしましたが、削除できないエラーがあることがわかりました。
[ 0.827899] sun4i-drm display-engine: bound 1100000.mixer (ops 0xc0851c2c)
[ 0.835081] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc084e2dc)
[ 0.842821] sun8i-dw-hdmi 1ee0000.hdmi: supply hvcc not found, using dummy regulator
[ 0.851453] sun8i-dw-hdmi 1ee0000.hdmi: Detected HDMI TX controller v1.32a with HDCP (sun8i_dw_hdmi_phy)
[ 0.861330] sun8i-dw-hdmi 1ee0000.hdmi: registered DesignWare HDMI I2C bus driver
[ 0.869108] sun4i-drm display-engine: bound 1ee0000.hdmi (ops 0xc0851228)
[ 0.875927] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 0.882941] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0
[ 0.995934] random: fast init done
[ 1.001697] sun4i-drm display-engine: [drm] *ERROR* fbdev: Failed to setup generic emulation (ret=-12)
[ 1.013330] lima 1c40000.gpu: gp - mali400 version major 1 minor 1
インターネット上でこの特定のエラーに関する有用な情報が見つからず、カーネルソースから戻りコードの説明が見つかりません。問題を解決するにはどうすればよいですか?
私はそれを使用しています
- Linux version 5.8.13 (arm-linux-musleabihf-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35)
- No modules, no initrd/initramfs
- Machine model: Xunlong Orange Pi One
- U-boot (orangepi_one_defconfig)
答え1
このエラーはメモリ不足エラー(ENOMEM)です。 CMAサイズは、モニターが使用する解像度の元のフレームよりも1つ大きい必要があるためです。
1920x1080 32bppは8MB程度必要で、デフォルトは16MBなので動作しますが、3840x2160 32bppは32MBより少し必要です。
Armbianは次のようにカーネル構成のデフォルトサイズを128Mに変更しました。CONFIG_CMA_SIZE_MBYTES=128
ただし、bootargを使用してCMAサイズを64Mに設定すると、パッチやcma=64M
設定を変更せずに機能します。