diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2018-02-20 10:08:00 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-02-20 10:08:00 -0800 |
commit | b17ae4faf42ceb15d5aa438b96e6bf795b63bf42 (patch) | |
tree | 780cd88489cf3cb5b38b79fa91b72889cabf5191 /sdm/libs/core | |
parent | 71ca61b4628f970d0dae10f6a3c105c91233db04 (diff) | |
parent | b2bb692cc9c663d3cf5dba223d58c5a9abfebdf8 (diff) | |
download | display-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.cpp | 27 | ||||
-rw-r--r-- | sdm/libs/core/drm/hw_tv_drm.h | 1 |
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); |