summaryrefslogtreecommitdiffstats
path: root/sdm
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-06-30 20:56:51 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-06-30 20:56:51 -0700
commit9c38bc0539a0a8dcb7a0ea500d6afd94d45e6e99 (patch)
tree72a90225d426f2b3644d496d133e7688a3e04537 /sdm
parent8775a2b5c4eba9e202e7368a556fdafeedb6a5e8 (diff)
parent3b482279ae0f0dd2adefdcd5b3c04b78979c46fa (diff)
downloadhardware_qcom_display-9c38bc0539a0a8dcb7a0ea500d6afd94d45e6e99.tar.gz
hardware_qcom_display-9c38bc0539a0a8dcb7a0ea500d6afd94d45e6e99.tar.bz2
hardware_qcom_display-9c38bc0539a0a8dcb7a0ea500d6afd94d45e6e99.zip
Merge "hdmi: Set correct S3D configuration on bootup" into dev-2.0
Diffstat (limited to 'sdm')
-rw-r--r--sdm/include/private/hw_info_types.h3
-rw-r--r--sdm/libs/core/fb/hw_hdmi.cpp23
-rw-r--r--sdm/libs/core/fb/hw_hdmi.h4
3 files changed, 16 insertions, 14 deletions
diff --git a/sdm/include/private/hw_info_types.h b/sdm/include/private/hw_info_types.h
index ec1b6e57e..97573c973 100644
--- a/sdm/include/private/hw_info_types.h
+++ b/sdm/include/private/hw_info_types.h
@@ -158,6 +158,7 @@ struct HWSplitInfo {
};
enum HWS3DMode {
+ kS3DModeInvalid = -1,
kS3DModeNone,
kS3DModeLR,
kS3DModeRL,
@@ -184,7 +185,7 @@ struct HWPanelInfo {
bool is_pluggable = false; // Panel is pluggable
HWSplitInfo split_info; // Panel split configuration
char panel_name[256] = {0}; // Panel name
- HWS3DMode s3d_mode = kS3DModeNone; // Panel's current s3d mode.
+ HWS3DMode s3d_mode = kS3DModeInvalid; // Panel's current s3d mode.
int panel_max_brightness = 0; // Max panel brightness
bool operator !=(const HWPanelInfo &panel_info) {
diff --git a/sdm/libs/core/fb/hw_hdmi.cpp b/sdm/libs/core/fb/hw_hdmi.cpp
index ec76b4170..1665d2431 100644
--- a/sdm/libs/core/fb/hw_hdmi.cpp
+++ b/sdm/libs/core/fb/hw_hdmi.cpp
@@ -220,6 +220,12 @@ DisplayError HWHDMI::ReadEDIDInfo() {
return kErrorNone;
}
+void HWHDMI::PopulateHWPanelInfo() {
+ HWDevice::PopulateHWPanelInfo();
+ hw_panel_info_.s3d_mode = active_s3d_mode_;
+ DLOGI("S3DMode = %d", hw_panel_info_.s3d_mode);
+}
+
DisplayError HWHDMI::GetDisplayAttributes(uint32_t index,
HWDisplayAttributes *display_attributes) {
DTRACE_SCOPED();
@@ -652,6 +658,10 @@ bool HWHDMI::IsSupportedS3DMode(HWS3DMode s3d_mode) {
}
DisplayError HWHDMI::SetS3DMode(HWS3DMode s3d_mode) {
+ if (active_s3d_mode_ == s3d_mode) {
+ return kErrorNone;
+ }
+
if (!IsSupportedS3DMode(s3d_mode)) {
DLOGW("S3D mode is not supported s3d_mode = %d", s3d_mode);
return kErrorNotSupported;
@@ -663,14 +673,6 @@ DisplayError HWHDMI::SetS3DMode(HWS3DMode s3d_mode) {
}
msm_hdmi_s3d_mode s3d_mdp_mode = it->second;
- if (active_mdp_s3d_mode_ == s3d_mdp_mode) {
- // HDMI_S3D_SIDE_BY_SIDE is an mdp mapping for kS3DModeLR and kS3DModeRL s3d modes. So no need
- // to update the s3d_mode node. hw_panel_info needs to be updated to differentiate these two s3d
- // modes in strategy
- hw_panel_info_.s3d_mode = s3d_mode;
- return kErrorNone;
- }
-
ssize_t length = -1;
char s3d_mode_path[kMaxStringLength] = {'\0'};
char s3d_mode_string[kMaxStringLength] = {'\0'};
@@ -690,7 +692,7 @@ DisplayError HWHDMI::SetS3DMode(HWS3DMode s3d_mode) {
return kErrorNotSupported;
}
- active_mdp_s3d_mode_ = s3d_mdp_mode;
+ active_s3d_mode_ = s3d_mode;
hw_panel_info_.s3d_mode = s3d_mode;
Sys::close_(s3d_mode_node);
@@ -845,9 +847,6 @@ DisplayError HWHDMI::SetRefreshRate(uint32_t refresh_rate) {
return error;
}
-// GetDisplayAttributes(config_index, &display_attributes_);
-// UpdateMixerAttributes();
-
frame_rate_ = refresh_rate;
active_config_index_ = config_index;
diff --git a/sdm/libs/core/fb/hw_hdmi.h b/sdm/libs/core/fb/hw_hdmi.h
index 28adc39e6..1be151d7c 100644
--- a/sdm/libs/core/fb/hw_hdmi.h
+++ b/sdm/libs/core/fb/hw_hdmi.h
@@ -106,6 +106,7 @@ class HWHDMI : public HWDevice {
DisplayError GetDynamicFrameRateMode(uint32_t refresh_rate, uint32_t*mode,
DynamicFPSData *data, uint32_t *config_index);
+ void PopulateHWPanelInfo();
uint32_t hdmi_mode_count_;
uint32_t hdmi_modes_[256];
// Holds the hdmi timing information. Ex: resolution, fps etc.,
@@ -114,7 +115,8 @@ class HWHDMI : public HWDevice {
uint32_t active_config_index_;
std::map<HWS3DMode, msm_hdmi_s3d_mode> s3d_mode_sdm_to_mdp_;
std::vector<HWS3DMode> supported_s3d_modes_;
- int active_mdp_s3d_mode_ = HDMI_S3D_NONE;
+ // Reset this variable to ensure valid S3D configuration is set.
+ HWS3DMode active_s3d_mode_ = kS3DModeInvalid;
uint32_t frame_rate_ = 0;
};