[RK3288][Android7.1] 修改HDMI默认显示分辨率

[RK3288][Android7.1] 修改HDMI默认显示分辨率

Platform: Rockchip
OS: Android 7.1.2
Kernel: 4.4

需求:

在使用RK3288平台时,HDMI使用4K大屏幕做显示时,4K视频播放会受到影响,声音和视频会出现不同步的情况,因些需要屏蔽掉HDMI输出分辨率选择项中4K分辨率选项,默认输出设置到1080P。

实现:

RK平台4.4驱动上,HDMI显示放弃了原来的显示方式,从驱动3.10版本路径下
kernel\drivers\video\rockchip\hdmi\rockchip-hdmiv2部分切换到了4.4版本下的
kernel/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c文件中。

第一步:首先屏蔽掉4K以上分辨率选项

static enum drm_mode_status
dw_hdmi_rockchip_mode_valid(struct drm_connector *connector,
			    struct drm_display_mode *mode)
{
	struct drm_encoder *encoder = connector->encoder;
	enum drm_mode_status status = MODE_OK;
	struct drm_device *dev = connector->dev;
	struct rockchip_drm_private *priv = dev->dev_private;
	struct drm_crtc *crtc;
	struct rockchip_hdmi *hdmi;

	/*
	 * Pixel clocks we support are always < 2GHz and so fit in an
	 * int.  We should make sure source rate does too so we don't get
	 * overflow when we multiply by 1000.
	 */
+	if(!strcmp(mode->name, "4096x2160") || !strcmp(mode->name, "3840x2160")){
+    printk(KERN_ERR"bad mode:%s, vrefresh:%d\n",mode->name, mode->vrefresh);
+    return MODE_BAD;
+  }

第二步:修改默认输出分辨率到1920x1080
RK 7.1.2系统在./base/services/core/jni/com_android_server_rkdisplay_RkDisplayModes.cpp文件中会根据persist.sys.resolution.aux属性值来配置输出分辨率,因此在device目录下根据系统找到对应的system.prop文件,新加属性即可。

  ro.adb.secure=0
  ro.rk.displayd.enable=false
+ persist.sys.resolution.aux=1920x1080p60

参考资料:
Videostrong 嵌入式板卡RK3399修改并默认HDMI分辨率

你可能感兴趣的:(Rockchip)