summaryrefslogtreecommitdiff
path: root/sdm/libs/core
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-02-20 10:08:00 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-02-20 10:08:00 -0800
commitb17ae4faf42ceb15d5aa438b96e6bf795b63bf42 (patch)
tree780cd88489cf3cb5b38b79fa91b72889cabf5191 /sdm/libs/core
parent71ca61b4628f970d0dae10f6a3c105c91233db04 (diff)
parentb2bb692cc9c663d3cf5dba223d58c5a9abfebdf8 (diff)
downloaddisplay-b17ae4faf42ceb15d5aa438b96e6bf795b63bf42.tar.gz
Merge "sdm: Add support to change minimum encription level for hdcp"
Diffstat (limited to 'sdm/libs/core')
-rw-r--r--sdm/libs/core/drm/hw_tv_drm.cpp27
-rw-r--r--sdm/libs/core/drm/hw_tv_drm.h1
2 files changed, 28 insertions, 0 deletions
diff --git a/sdm/libs/core/drm/hw_tv_drm.cpp b/sdm/libs/core/drm/hw_tv_drm.cpp
index a43ac2cc..adf1f1ea 100644
--- a/sdm/libs/core/drm/hw_tv_drm.cpp
+++ b/sdm/libs/core/drm/hw_tv_drm.cpp
@@ -37,6 +37,7 @@
#include <drm_res_mgr.h>
#include <stdio.h>
#include <unistd.h>
+#include <fcntl.h>
#include <string>
#include <vector>
#include <map>
@@ -290,5 +291,31 @@ void HWTVDRM::DumpHDRMetaData(HWHDRLayerInfo::HDROperation operation) {
hdr_metadata_.white_point_x, hdr_metadata_.white_point_y, hdr_metadata_.eotf);
}
+DisplayError HWTVDRM::OnMinHdcpEncryptionLevelChange(uint32_t min_enc_level) {
+ DisplayError error = kErrorNone;
+ int fd = -1;
+ char data[kMaxStringLength] = {'\0'};
+
+ snprintf(data, sizeof(data), "/sys/devices/virtual/hdcp/msm_hdcp/min_level_change");
+
+ fd = Sys::open_(data, O_WRONLY);
+ if (fd < 0) {
+ DLOGE("File '%s' could not be opened. errno = %d, desc = %s", data, errno, strerror(errno));
+ return kErrorHardware;
+ }
+
+ snprintf(data, sizeof(data), "%d", min_enc_level);
+
+ ssize_t err = Sys::pwrite_(fd, data, strlen(data), 0);
+ if (err <= 0) {
+ DLOGE("Write failed, Error = %s", strerror(errno));
+ error = kErrorHardware;
+ }
+
+ Sys::close_(fd);
+
+ return error;
+}
+
} // namespace sdm
diff --git a/sdm/libs/core/drm/hw_tv_drm.h b/sdm/libs/core/drm/hw_tv_drm.h
index a87f33d9..3e592f97 100644
--- a/sdm/libs/core/drm/hw_tv_drm.h
+++ b/sdm/libs/core/drm/hw_tv_drm.h
@@ -48,6 +48,7 @@ class HWTVDRM : public HWDeviceDRM {
virtual DisplayError Standby();
virtual DisplayError Commit(HWLayers *hw_layers);
virtual void PopulateHWPanelInfo();
+ virtual DisplayError OnMinHdcpEncryptionLevelChange(uint32_t min_enc_level);
private:
DisplayError UpdateHDRMetaData(HWLayers *hw_layers);