libdrm_meson: Provide Get CrtcId ConnectorId PropName interface [1/1]
PD#SWPL-144567
Problem:
Get CrtcId ConnectorId PropName interface.
Solution:
Provide Get CrtcId ConnectorId PropName interface.
Verify:
AP222
Change-Id: Ib8015205c343414d4b4b2813054bfad25d57a2be
Signed-off-by: chen.wang1 <chen.wang1@amlogic.com>
diff --git a/meson/meson_drm_settings.c b/meson/meson_drm_settings.c
index 909bf03..4193c50 100644
--- a/meson/meson_drm_settings.c
+++ b/meson/meson_drm_settings.c
@@ -724,7 +724,7 @@
}
int meson_drm_setHDCPEnable(int drmFd, drmModeAtomicReq *req,
- bool enable, MESON_CONNECTOR_TYPE connType)
+ int enable, MESON_CONNECTOR_TYPE connType)
{
int ret = -1;
int rc = -1;
@@ -1094,4 +1094,108 @@
return ret;
}
+int meson_drm_GetCrtcId(MESON_CONNECTOR_TYPE connType) {
+ int drmFd = -1;
+ int crtcId = -1;
+ struct mesonConnector* conn = NULL;
+ drmFd = meson_open_drm();
+ conn = get_current_connector(drmFd, connType);
+ if ( conn == NULL || drmFd < 0) {
+ ERROR("%s %d invalid parameter return",__FUNCTION__,__LINE__);
+ goto out;
+ }
+ crtcId = mesonConnectorGetCRTCId(conn);
+out:
+ if (conn) {
+ mesonConnectorDestroy(drmFd,conn);
+ }
+ meson_close_drm(drmFd);
+ return crtcId;
+}
+
+int meson_drm_GetConnectorId(MESON_CONNECTOR_TYPE connType) {
+ int drmFd = -1;
+ int connId = -1;
+ struct mesonConnector* conn = NULL;
+ drmFd = meson_open_drm();
+ conn = get_current_connector(drmFd, connType);
+ if ( conn == NULL || drmFd < 0) {
+ ERROR("%s %d invalid parameter return",__FUNCTION__,__LINE__);
+ goto out;
+ }
+ connId = mesonConnectorGetId(conn);
+out:
+ if (conn) {
+ mesonConnectorDestroy(drmFd,conn);
+ }
+ meson_close_drm(drmFd);
+ return connId;
+}
+
+char* meson_drm_GetPropName( ENUM_MESON_DRM_PROP_NAME enProp) {
+ char* propName = NULL;
+ propName = (char*)malloc(sizeof(char)*50);
+ if (propName == NULL) {
+ ERROR("%s %d malloc fail",__FUNCTION__,__LINE__);
+ return propName;
+ } else {
+ switch (enProp)
+ {
+ case ENUM_MESON_DRM_PROP_CONTENT_PROTECTION:
+ {
+ strcpy( propName, DRM_CONNECTOR_PROP_CONTENT_PROTECTION);
+ break;
+ }
+ case ENUM_MESON_DRM_PROP_HDR_POLICY:
+ {
+ strcpy(propName,DRM_CONNECTOR_PROP_TX_HDR_POLICY);
+ break;
+ }
+ case ENUM_MESON_DRM_PROP_HDMI_ENABLE:
+ {
+ strcpy(propName,MESON_DRM_HDMITX_PROP_AVMUTE);
+ break;
+ }
+ case ENUM_MESON_DRM_PROP_COLOR_SPACE:
+ {
+ strcpy(propName,DRM_CONNECTOR_PROP_COLOR_SPACE);
+ break;
+ }
+ case ENUM_MESON_DRM_PROP_COLOR_DEPTH:
+ {
+ strcpy(propName,DRM_CONNECTOR_PROP_COLOR_DEPTH);
+ break;
+ }
+ case ENUM_MESON_DRM_PROP_HDCP_VERSION:
+ {
+ strcpy(propName,DRM_CONNECTOR_PROP_CONTENT_TYPE);
+ break;
+ }
+ case ENUM_MESON_DRM_PROP_DOLBY_VISION_ENABLE:
+ {
+ strcpy(propName,DRM_CONNECTOR_PROP_DV_ENABLE);
+ break;
+ }
+ case ENUM_MESON_DRM_PROP_ACTIVE:
+ {
+ strcpy(propName,DRM_CONNECTOR_PROP_ACTIVE);
+ break;
+ }
+ case ENUM_MESON_DRM_PROP_VRR_ENABLED:
+ {
+ strcpy(propName,DRM_CONNECTOR_VRR_ENABLED);
+ break;
+ }
+ case ENUM_MESON_DRM_PROP_ASPECT_RATIO:
+ {
+ strcpy(propName,DRM_CONNECTOR_PROP_TX_ASPECT_RATIO);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ DEBUG("%s %d meson_drm_getprop_nameļ¼%s",__FUNCTION__,__LINE__, propName);
+ return propName;
+}
diff --git a/meson/meson_drm_settings.h b/meson/meson_drm_settings.h
index 959f543..f0d52e8 100644
--- a/meson/meson_drm_settings.h
+++ b/meson/meson_drm_settings.h
@@ -19,6 +19,19 @@
#endif
#define DRM_DISPLAY_MODE_LEN 32
+typedef enum _ENUM_MESON_DRM_PROP_NAME {
+ ENUM_MESON_DRM_PROP_CONTENT_PROTECTION = 0,
+ ENUM_MESON_DRM_PROP_HDR_POLICY,
+ ENUM_MESON_DRM_PROP_HDMI_ENABLE,
+ ENUM_MESON_DRM_PROP_COLOR_SPACE,
+ ENUM_MESON_DRM_PROP_COLOR_DEPTH,
+ ENUM_MESON_DRM_PROP_HDCP_VERSION,
+ ENUM_MESON_DRM_PROP_DOLBY_VISION_ENABLE,
+ ENUM_MESON_DRM_PROP_ACTIVE,
+ ENUM_MESON_DRM_PROP_VRR_ENABLED,
+ ENUM_MESON_DRM_PROP_ASPECT_RATIO
+} ENUM_MESON_DRM_PROP_NAME;
+
struct video_zpos {
unsigned int index;//<--Representing video index Index 0 corresponds to modifying video 0;Index 1 corresponds to modifying video 1-->//
unsigned int zpos; //<--Represents the zorder value set-->//
@@ -152,7 +165,7 @@
ENUM_MESON_HDCPAUTH_STATUS meson_drm_getHdcpAuthStatus( int drmFd, MESON_CONNECTOR_TYPE connType );
int meson_drm_setHDCPEnable(int drmFd, drmModeAtomicReq *req,
- bool enable, MESON_CONNECTOR_TYPE connType);
+ int enable, MESON_CONNECTOR_TYPE connType);
int meson_drm_getsupportedModesList(int drmFd, DisplayMode** modeInfo, int* modeCount ,MESON_CONNECTOR_TYPE connType);
int meson_drm_getPreferredMode( DisplayMode* mode, MESON_CONNECTOR_TYPE connType);
@@ -171,6 +184,10 @@
ENUM_MESON_ASPECT_RATIO meson_drm_getAspectRatioValue( int drmFd, MESON_CONNECTOR_TYPE connType );
int meson_drm_setAspectRatioValue(int drmFd, drmModeAtomicReq *req,
ENUM_MESON_ASPECT_RATIO ASPECTRATIO, MESON_CONNECTOR_TYPE connType);
+
+int meson_drm_GetCrtcId(MESON_CONNECTOR_TYPE connType);
+int meson_drm_GetConnectorId(MESON_CONNECTOR_TYPE connType);
+char* meson_drm_GetPropName( ENUM_MESON_DRM_PROP_NAME enProp);
int meson_open_drm();
void meson_close_drm(int drmFd);