Firefly开源社区

打印 上一主题 下一主题

RK3399HDMI特殊分辨率输出该怎么设置呢

26

积分

0

威望

0

贡献

游客

积分
26
发表于 2018-4-3 10:31:48      楼主
我也遇到了同样的问题,经过一个多星期的努力解决了(我的分辨率是480x800):
diff --git a/device/rockchip/rk3399/resolution_white.xml b/device/rockchip/rk3399/resolution_white.xml
index 040afe5..40f4596 100755
--- a/device/rockchip/rk3399/resolution_white.xml
+++ b/device/rockchip/rk3399/resolution_white.xml
@@ -1,6 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<resolutions>
     <resolution>
+        <clock>32000</clock>
+        <hdisplay>480</hdisplay>
+        <hsync_start>520</hsync_start>
+               <hsync_end>568</hsync_end>
+               <htotal>608</htotal>
+               <hskew>0</hskew>
+               <vdisplay>800</vdisplay>
+               <vsync_start>813</vsync_start>
+               <vsync_end>816</vsync_end>
+               <vtotal>845</vtotal>
+               <vscan>0</vscan>
+               <vrefresh>62</vrefresh>
+               <flags>a</flags>
+               <vic>1</vic>
+    </resolution>
+    <resolution>
         <clock>27000</clock>
         <hdisplay>720</hdisplay>
         <hsync_start>736</hsync_start>
diff --git a/device/rockchip/rk3399/rk3399_firefly_aio_box/system.prop b/device/rockchip/rk3399/rk3399_firefly_aio_box/system.prop
index 1214bf6..5db009d 100755
--- a/device/rockchip/rk3399/rk3399_firefly_aio_box/system.prop
+++ b/device/rockchip/rk3399/rk3399_firefly_aio_box/system.prop
@@ -47,7 +47,7 @@ ro.rk.statusbar=0
ro.rk.displayd.enable=false

# default main framebuffer resolution
-persist.sys.framebuffer.main=1920x1080
+persist.sys.framebuffer.main=480x800

# default primary display
sys.hwc.device.primary=HDMI-A

diff --git a/packages/apps/Settings/res/values/arrays.xml b/packages/apps/Settings/res/values/arrays.xml
index 005fc76..e13853a 100755
--- a/packages/apps/Settings/res/values/arrays.xml
+++ b/packages/apps/Settings/res/values/arrays.xml
@@ -1071,6 +1071,7 @@

     <!-- HDMI -->
     <string-array name="hdmi_resolution_entries">
+        <item>480x800p-62Hz </item>
         <item>1920x1080p-50Hz </item>
         <item>1920x1080p-60Hz</item>
         <item>1280x720p-50Hz</item>
@@ -1079,6 +1080,7 @@
         <item>720x480p-60Hz </item>
     </string-array>
     <string-array name="hdmi_resolution_values">
+        <item>480x800p-62\n</item>
         <item>1920x1080p-50\n</item>
         <item>1920x1080p-60\n</item>
         <item>1280x720p-50\n</item>
@@ -1125,6 +1127,7 @@

         <!-- fly.gao resolution list -->
     <string-array name="resolution_list" translatable="false">
+        <item>480x800p-62</item>
         <item>1920x1080p-60</item>
         <item>1280x720p-60</item>
         <item>720x480p-60</item>


下面文件不用修改,但可以根据打印出的mode变量的内容,修改/device/rockchip/rk3399/resolution_white.xml设置的resolution内容(我的打印内容的代码已经删了,这里只是提供打印的地方)。
--- a/kernel/drivers/gpu/drm/drm_probe_helper.c
+++ b/kernel/drivers/gpu/drm/drm_probe_helper.c
@@ -192,7 +192,7 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect
        dev->mode_config.poll_running = drm_kms_helper_poll;

        if (connector->status == connector_status_disconnected) {
-               DRM_DEBUG_KMS("[CONNECTOR:%d:%s] disconnected\n",
+               dev_err(connector->dev->dev, "[CONNECTOR:%d:%s] disconnected\n",
                        connector->base.id, connector->name);
                drm_mode_connector_update_edid_property(connector, NULL);
                verbose_prune = false;
@@ -201,6 +201,7 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect

#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE
        count = drm_load_edid_firmware(connector);
+       DRM_DEBUG_KMS("[%d] count = %d", __LINE__, count);
        if (count == 0)
#endif
        {
@@ -209,13 +210,16 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect

                        count = drm_add_edid_modes(connector, edid);
                        drm_edid_to_eld(connector, edid);
+                       dev_err(connector->dev->dev, "[%d] count = %d", __LINE__, count);
                } else
                        count = (*connector_funcs->get_modes)(connector);
        }
-
+       dev_err(connector->dev->dev, "[%d] count = %d", __LINE__, count);
        if (count == 0 && connector->status == connector_status_connected)
                count = drm_add_modes_noedid(connector, 1024, 768);
+       dev_err(connector->dev->dev, "[%d] count = %d", __LINE__, count);
        count += drm_helper_probe_add_cmdline_mode(connector);
+       dev_err(connector->dev->dev, "[%d] count = %d", __LINE__, count);
        if (count == 0)
                goto prune;

@@ -260,7 +264,7 @@ prune:
                drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
                drm_mode_debug_printmodeline(mode);
        }
-
+       dev_err(connector->dev->dev, "[%d] count = %d", __LINE__, count);
        return count;
}



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表