From c7fc432124d84cf05a675c559b479c27c9be59a6 Mon Sep 17 00:00:00 2001 From: August Date: Thu, 13 Dec 2018 00:52:49 +0800 Subject: [PATCH] Update hwc for 10" panel support, get default_mode from bsp configuration and set --- .../hardware/aw/hwc2/de2family/DisplayOpr.cpp | 17 +++++++++++++---- android/hardware/aw/hwc2/hwc.cpp | 2 ++ .../include/hardware/sunxi_display2.h | 2 ++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/android/hardware/aw/hwc2/de2family/DisplayOpr.cpp b/android/hardware/aw/hwc2/de2family/DisplayOpr.cpp index 863813bee8..a4bd438b6d 100755 --- a/android/hardware/aw/hwc2/de2family/DisplayOpr.cpp +++ b/android/hardware/aw/hwc2/de2family/DisplayOpr.cpp @@ -118,8 +118,10 @@ char displayName[5][10] = { tv_para_t hdmi_support[]= { /* 1'st is default */ - {DISP_TV_MOD_1080P_60HZ, 1920, 1080, 60, 0}, + {DISP_TV_MOD_1024_600P, 1024, 600, 60, 0}, + {DISP_TV_MOD_1280_800P, 1280, 800, 60, 0}, {DISP_TV_MOD_720P_60HZ, 1280, 720, 60, 0}, + {DISP_TV_MOD_1080P_60HZ, 1920, 1080, 60, 0}, {DISP_TV_MOD_480I, 720, 480, 60, 0}, {DISP_TV_MOD_576I, 720, 576, 60, 0}, @@ -1935,16 +1937,19 @@ loop: ret = ioctl(dispFd, DISP_HDMI_SUPPORT_MODE, arg); } if((ret > 0) || all_support - || (numbconfig && hdmi_support[i].mode == DISP_TV_MOD_1080P_24HZ_3D_FP)) + || (numbconfig && hdmi_support[i].mode == DISP_TV_MOD_1080P_24HZ_3D_FP)) { hdmi_support[i].support = 1; - + ALOGE("hdmi_support[%d] resolution support\n", i); + } else { hdmi_support[i].support = 0; + ALOGE("hdmi_support[%d] resolution not support\n", i); continue; } if (hdmi_support[i].mode == display->default_mode) { fix = numbconfig; + ALOGE("hdmi_support[%d] fix resolution\n", i); } numbconfig++; } @@ -2311,7 +2316,6 @@ int displayDeviceInit(Display_t ***display) hwdisplay = toHwDisplay(disp); disp->displayOpration = &sunxiDisplayOpr; disp->displayId = i; - disp->default_mode = DISP_TV_MOD_1080P_60HZ; arg[0] = i; arg[1] = (unsigned long)&hwdisplay->type; @@ -2321,6 +2325,11 @@ int displayDeviceInit(Display_t ***display) else ALOGE("get [Disp%d] output type is NONE!\n", i); + ALOGE("get [Disp%d] output type %d output mode %d \n", i, hwdisplay->type.type, hwdisplay->type.mode); + + //bpi, get default mode from bsp + disp->default_mode = hwdisplay->type.mode; + if (hwdisplay->type.type == DISP_OUTPUT_TYPE_LCD) { ALOGD("find Permanent display:%d", i); fixdiplay = i + 1; diff --git a/android/hardware/aw/hwc2/hwc.cpp b/android/hardware/aw/hwc2/hwc.cpp index 576e241718..eecd187cce 100755 --- a/android/hardware/aw/hwc2/hwc.cpp +++ b/android/hardware/aw/hwc2/hwc.cpp @@ -1154,6 +1154,8 @@ int hwc_setBlank(int display) tv_para_t tv_mode[]= { /* 1'st is default */ + {DISP_TV_MOD_1024_600P, 1024, 600, 60, 0}, + {DISP_TV_MOD_1280_800P, 1280, 800, 60, 0}, {DISP_TV_MOD_1080P_60HZ, 1920, 1080, 60, 0}, {DISP_TV_MOD_720P_60HZ, 1280, 720, 60, 0}, diff --git a/android/hardware/libhardware/include/hardware/sunxi_display2.h b/android/hardware/libhardware/include/hardware/sunxi_display2.h index ea72f4e916..ee51961131 100755 --- a/android/hardware/libhardware/include/hardware/sunxi_display2.h +++ b/android/hardware/libhardware/include/hardware/sunxi_display2.h @@ -212,6 +212,8 @@ enum disp_tv_mode DISP_TV_MOD_4096_2160P_60HZ = 0x23, DISP_TV_MOD_3840_2160P_50HZ = 0x24, DISP_TV_MOD_4096_2160P_50HZ = 0x25, + DISP_TV_MOD_1024_600P = 0x45, + DISP_TV_MOD_1280_800P = 0x46, /* * vga * NOTE:macro'value of new solution must between