在 NXP i.mx8m 的平台上,支持了HDMI 2.0A TX的輸出。HDMI 2.0A的規範中,其解析度可以支持倒螢幕的最大解析度為4K@60。
由於屏幕解析度有很多種,相信許多NXP I.MX8M的使用者可能會遇到屏幕解析度被限制的問題,只能使用幾種標準的解析度,這在實際使用場景上會有相容性不足的限制在。
以下由SAC 支援團隊所提供的方式可以協助解決這項難題。
以下新增支援21:9 UltraWide螢幕解析度為例(2560x1080@60):
===================================================================
在預設模式下,i.MX8M會讀取屏幕或是顯示器的EDID,並同時在內部選擇出一個最適合的解析度做HDMI輸出。
輸出的pixal clock為: 594000; 297000; 148500; 74250; 27000 (KHz).
這些pixal clock 典型的解析度有以下幾種:
720x480@60Hz,
1280x720@60Hz,
1920x1080@60Hz,
3840x2160p@30Hz,
3840x2160p@60Hz, 等…
這時候如果需要指定不在上表的解析度時,可以依照以下方式做修改:
1. 將所需的解析度加入edid_cea_modes array中 :
./drivers/gpu/drm/imx/hdp/imx-hdp.c
2. 修改i.MX8M dts file 加入no-edid 描述.
arch/arm64/boot/dts/freescale/fsl-imx8mq-evk.dts
3. 重新compile linux-imx 產生新的dtb file 以及kernel image.
#bitbake -c compile -f linux-imx
#bitbake linux-imx
編譯完成後,更新SD card 或EMMC內的dtb 以及kernel image.
4. 開機進入u-boot 模式並指定 mmcargs 參數內的video值

5. 進入kernel 確認目前的解析度

到目前為止已經可以確認i.MX8M的解析度可以完成客製化的需求了。
若需動態修改解析度來測試屏幕的話,可以使用modetest指令:
使用modetest前必須先關閉weston功能
#killall weston
取得connector的id:
#modetest -c (得知connector id 是46)

若有新增2560x1080@60解析度到edid_cea_modes後可以看到如下的顯示:

#modetest -s 46:2560x1080-60 (此解析度必須有定義在上述edid_cea_modes中,否則不會成功)

以上為介紹如何新增客製化屏幕解析度的說明。
評論
山城
2021年6月10日
山城
2021年6月10日