libdrm_meson: add API to get dolby_vision_ll_policy value [1/1]
PD#SWPL-159176
Problem:
add API to get dolby vision mode
Solution:
add API to get dolby vision mode
Verify:
AH212
Change-Id: I1c2dea1ee122ab798100135049b475cea2e83db3
Signed-off-by: chen.wang1 <chen.wang1@amlogic.com>
diff --git a/meson/meson_drm_settings.c b/meson/meson_drm_settings.c
index 72ed90f..0b223b5 100644
--- a/meson/meson_drm_settings.c
+++ b/meson/meson_drm_settings.c
@@ -1329,6 +1329,21 @@
return ret;
}
+int meson_drm_getDvMode( int drmFd, MESON_CONNECTOR_TYPE connType ) {
+ char propName[PROP_NAME_MAX_LEN] = {'\0'};
+ sprintf( propName, "%s", DRM_CONNECTOR_DV_MODE);
+ uint32_t value = 0;
+ if ( drmFd < 0) {
+ ERROR("%s %d drmFd < 0",__FUNCTION__,__LINE__);
+ return -1;
+ }
+ if ( 0 != meson_drm_get_crtc_prop_value( drmFd, connType, propName, &value )) {
+ ERROR("%s %d get crtc property value fail",__FUNCTION__,__LINE__);
+ }
+ DEBUG("%s %d get dv mode value %d",__FUNCTION__,__LINE__,value);
+ return value;
+}
+
int meson_drm_getDpmsStatus( int drmFd, MESON_CONNECTOR_TYPE connType )
{
char propName[PROP_NAME_MAX_LEN] = {'\0'};
diff --git a/meson/meson_drm_settings.h b/meson/meson_drm_settings.h
index 98ab7d1..7bbe3d8 100644
--- a/meson/meson_drm_settings.h
+++ b/meson/meson_drm_settings.h
@@ -210,6 +210,7 @@
int meson_drm_setHdrForceMode(int drmFd, drmModeAtomicReq *req,ENUM_MESON_DRM_FORCE_MODE forcemode,
MESON_CONNECTOR_TYPE connType);
int meson_drm_setDvMode(int drmFd, drmModeAtomicReq *req, int dvMode, MESON_CONNECTOR_TYPE connType);
+int meson_drm_getDvMode( int drmFd, MESON_CONNECTOR_TYPE connType );
int meson_drm_getGraphicPlaneSize(int drmFd, uint32_t* width, uint32_t* height);
int meson_drm_getPhysicalSize(int drmFd, uint32_t* width, uint32_t* height, MESON_CONNECTOR_TYPE connType);
int meson_drm_getSignalTimingInfo(int drmFd, uint16_t* htotal, uint16_t* vtotal, uint16_t* hstart,
diff --git a/meson/meson_drm_settings_test.c b/meson/meson_drm_settings_test.c
index 0ebc6fa..5447404 100644
--- a/meson/meson_drm_settings_test.c
+++ b/meson/meson_drm_settings_test.c
@@ -33,7 +33,7 @@
" 11.prefer mode 12.HDCP Content Type 13.Content Type 14.Dv Enable 15.active "
" 16.vrr Enable 17.AVMute 18.Hdrcap 19.DvCap 20.default modeInfo 21.current aspect ratio value"
" 22.frac rate policy 23.hdr force mode 24.dpms status 25.plane size 26.physical size"
- " 27.Timing information\n");
+ " 27.Timing information 28.dv mode\n");
int get = 0;
int drmFd = meson_open_drm();
int len = scanf("%d", &get);
@@ -224,6 +224,13 @@
} else {
printf("\n meson_drm_getSignalTimingInfo fail\n");
}
+ } else if (get == 28 && len == 1) {
+ int value = meson_drm_getDvMode( drmFd, MESON_CONNECTOR_HDMIA );
+ if (value == -1) {
+ printf("\n get dolby vision mode Fail\n");
+ } else {
+ printf("\n get dolby vision mode %d\n",value);
+ }
}
meson_close_drm(drmFd);
} else if (select_s_g == 0 && select_len == 1) {