From a0d604aff778c7a0bc059e74e016b0e635980f94 Mon Sep 17 00:00:00 2001 From: SrigayathryPugazhenthi <175205324+SrigayathryPugazhenthi@users.noreply.github.com> Date: Mon, 6 Oct 2025 14:52:44 +0100 Subject: [PATCH 1/3] RDKEMW-8787: Driver splash screen optimizations (#153) Reason for change: Ignore same resolution settings again Test Procedure: build and verify Risks: Medium Priority: P1 Signed-off-by: Srigayathry Pugazhenthi srigayathry.pugazhenthi@sky.uk Signed-off-by: Srigayathry Pugazhenthi srigayathry.pugazhenthi@sky.uk Co-authored-by: srigayathry-pugazhenthi_comcast --- rpc/srv/dsVideoPort.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/rpc/srv/dsVideoPort.c b/rpc/srv/dsVideoPort.c index d29966d2..21ffdcd2 100644 --- a/rpc/srv/dsVideoPort.c +++ b/rpc/srv/dsVideoPort.c @@ -921,23 +921,20 @@ IARM_Result_t _dsSetResolution(void *arg) bool IsIgnoreEdid = ignoreEdidParam.ignoreEDID; IARM_BUS_Lock(lock); INT_DEBUG("ResOverride _dsSetResolution IsIgnoreEdid:%d\n", IsIgnoreEdid); - //IsIgnoreEdid is true platform will take care of current resolution cache. - if (!IsIgnoreEdid) { - dsVideoPortResolution_t platresolution; - memset(&platresolution,'\0',sizeof(platresolution)); - dsGetResolution(param->handle,&platresolution); - INT_INFO("Resolution Requested ..%s Platform Resolution - %s\r\n",resolution.name,platresolution.name); - if ((strcmp(resolution.name,platresolution.name) == 0 )) - { + dsVideoPortResolution_t platresolution; + memset(&platresolution,'\0',sizeof(platresolution)); + dsGetResolution(param->handle,&platresolution); + INT_INFO("Resolution Requested ..%s Platform Resolution - %s\r\n",resolution.name,platresolution.name); + if ((strcmp(resolution.name,platresolution.name) == 0 )) + { - INT_INFO("Same Resolution ..Ignoring Resolution Request------\r\n"); - _dsHDMIResolution = platresolution.name; - /*!< Persist Resolution Settings */ - persistResolution(param); - param->result = ret; - IARM_BUS_Unlock(lock); - return IARM_RESULT_SUCCESS; - } + INT_INFO("Same Resolution ..Ignoring Resolution Request------\r\n"); + _dsHDMIResolution = platresolution.name; + /*!< Persist Resolution Settings */ + persistResolution(param); + param->result = ret; + IARM_BUS_Unlock(lock); + return IARM_RESULT_SUCCESS; } /*!< Resolution Pre Change Event - IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE */ _dsVideoPortPreResolutionCall(¶m->resolution); From 3823b7acdc8f32c93fd712e8ee466d8444fc2889 Mon Sep 17 00:00:00 2001 From: Yuvaramachandran Gurusamy <123441336+yuvaramachandran-gurusamy@users.noreply.github.com> Date: Tue, 7 Oct 2025 01:37:53 +0530 Subject: [PATCH 2/3] RDKEMW-8665: Init time reference for cond wait API call (#156) Signed-off-by: apatel859 Co-authored-by: apatel859 --- rpc/srv/dsAudio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rpc/srv/dsAudio.c b/rpc/srv/dsAudio.c index 90b1504a..1df63bf4 100755 --- a/rpc/srv/dsAudio.c +++ b/rpc/srv/dsAudio.c @@ -7080,11 +7080,11 @@ static void* persist_audioLevel_timer_threadFunc(void* arg) { INT_DEBUG("%s Audio level persistence update timer thread running...\n",__func__); struct timespec ts; while(1){ - clock_gettime(CLOCK_REALTIME, &ts); - ts.tv_sec += 5; pthread_mutex_lock(&audioLevelMutex); while(!audioLevel_timer_set){ + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_sec += 5; int rc = pthread_cond_timedwait(&audioLevelTimerCV, &audioLevelMutex, &ts); if (rc == ETIMEDOUT) continue; From 2b8ebe70774193326fbe3c986f82e15154178529 Mon Sep 17 00:00:00 2001 From: Yuvaramachandran Gurusamy <123441336+yuvaramachandran-gurusamy@users.noreply.github.com> Date: Tue, 7 Oct 2025 01:41:22 +0530 Subject: [PATCH 3/3] RDKEMW-8254: handled mute for ARC port (#151) * RDKEMW-8254: handled mute for ARC port Signed-off-by: apatel859 Co-authored-by: apatel859 Co-authored-by: apatel859 <48992974+apatel859@users.noreply.github.com> --- rpc/srv/dsAudio.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/rpc/srv/dsAudio.c b/rpc/srv/dsAudio.c index 1df63bf4..b41b8874 100755 --- a/rpc/srv/dsAudio.c +++ b/rpc/srv/dsAudio.c @@ -3257,6 +3257,11 @@ IARM_Result_t _dsSetAudioMute(void *arg) INT_DEBUG("%s: port: %s , persist audio mute: %s\n",__func__,"HEADPHONE0", param->mute ? "TRUE" : "FALSE"); device::HostPersistence::getInstance().persistHostProperty("HEADPHONE0.audio.mute", _mute); break; + case dsAUDIOPORT_TYPE_HDMI_ARC: + INT_DEBUG("%s: port: %s , persist audio mute: %s\n",__func__,"HDMI_ARC0", param->mute ? "TRUE" : "FALSE"); + device::HostPersistence::getInstance().persistHostProperty("HDMI_ARC0.audio.mute", _mute); + break; + default: break; } @@ -3279,15 +3284,15 @@ IARM_Result_t _dsIsAudioMute(void *arg) dsAudioSetMutedParam_t *param = (dsAudioSetMutedParam_t *)arg; bool muted = false; - + dsError_t ret = dsIsAudioMute(param->handle, &muted); - if (ret == dsERR_NONE) { + dsAudioPortType_t _APortType = _GetAudioPortType(param->handle); + if (ret == dsERR_NONE || (_APortType == dsAUDIOPORT_TYPE_HDMI_ARC)) { param->mute = muted; #ifdef DS_AUDIO_SETTINGS_PERSISTENCE std::string isMuteKey(""); std::string _mute("FALSE"); - dsAudioPortType_t _APortType = _GetAudioPortType(param->handle); switch(_APortType) { case dsAUDIOPORT_TYPE_SPDIF: isMuteKey.append("SPDIF0.audio.mute"); @@ -3301,6 +3306,9 @@ IARM_Result_t _dsIsAudioMute(void *arg) case dsAUDIOPORT_TYPE_HEADPHONE: isMuteKey.append("HEADPHONE0.audio.mute"); break; + case dsAUDIOPORT_TYPE_HDMI_ARC: + isMuteKey.append("HDMI_ARC0.audio.mute"); + break; default: break; } @@ -3312,6 +3320,7 @@ IARM_Result_t _dsIsAudioMute(void *arg) _mute = "FALSE"; } if ("TRUE" == _mute) { + INT_INFO("%s: param mute to true \n", __FUNCTION__); param->mute = true; } INT_DEBUG("%s: persist value:%s for :%s\n", __FUNCTION__, _mute.c_str(), isMuteKey.c_str());