Kernel

為什麼 hdmi 輸出在橙色 pi 上不起作用?

  • November 1, 2020

我製作了一個小型 linux 發行版,用於涉及橙色 pi one H3 的項目,但 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)

此錯誤是 ENOMEM(記憶體不足錯誤),因為 CMA 大小需要大於顯示器將使用的解析度的一個原始幀

1920x1080 32bpp 大約需要 8MB,預設是 16MB,所以它可以工作,但是 3840x2160 32bpp 需要多一點 32MB

Armbian 在核心配置上將預設大小更改為 128M,使用CONFIG_CMA_SIZE_MBYTES=128

但是使用 bootarg 將 CMA 大小設置為 64M cma=64M,使其無需任何更新檔或配置更改即可工作

引用自:https://unix.stackexchange.com/questions/616407