sdm: color-manger: hw interface for PA dither.
Add hardware interface call to complete the PA dither
implementation feature.
Change-Id: I5fef1697548187c177a1a56be472f0971293f23d
CRs-Fixed: 1032216
diff --git a/sdm/include/private/color_params.h b/sdm/include/private/color_params.h
index 8bca55f..1577e2a 100644
--- a/sdm/include/private/color_params.h
+++ b/sdm/include/private/color_params.h
@@ -246,7 +246,7 @@
};
struct SDEPADitherData {
- uint32_t data_flags;
+ uint64_t data_flags;
uint32_t matrix_size;
uint64_t matrix_data_addr;
uint32_t strength;
diff --git a/sdm/libs/core/fb/hw_color_manager.cpp b/sdm/libs/core/fb/hw_color_manager.cpp
index 27116a0..a6c78b0 100644
--- a/sdm/libs/core/fb/hw_color_manager.cpp
+++ b/sdm/libs/core/fb/hw_color_manager.cpp
@@ -153,9 +153,13 @@
DisplayError HWColorManager::SetPADither(const PPFeatureInfo &feature,
msmfb_mdp_pp *kernel_params) {
DisplayError ret = kErrorNone;
-
- // TODO(user): Kernel IOCTL preparation
-
+#ifdef PA_DITHER
+ kernel_params->op = mdp_op_pa_dither_cfg;
+ kernel_params->data.dither_cfg_data.version = feature.feature_version_;
+ kernel_params->data.dither_cfg_data.block = MDP_LOGICAL_BLOCK_DISP_0 + feature.disp_id_;
+ kernel_params->data.dither_cfg_data.flags = feature.enable_flags_;
+ kernel_params->data.dither_cfg_data.cfg_payload = feature.GetConfigData();
+#endif
return ret;
}
diff --git a/sdm/libs/core/fb/hw_primary.cpp b/sdm/libs/core/fb/hw_primary.cpp
index da37c04..3c3b464 100644
--- a/sdm/libs/core/fb/hw_primary.cpp
+++ b/sdm/libs/core/fb/hw_primary.cpp
@@ -587,7 +587,12 @@
DisplayError HWPrimary::GetPPFeaturesVersion(PPFeatureVersion *vers) {
mdp_pp_feature_version version = {};
+#ifdef PA_DITHER
+ uint32_t feature_id_mapping[kMaxNumPPFeatures] = { PCC, IGC, GC, GC, PA,
+ DITHER, GAMUT, PA_DITHER };
+#else
uint32_t feature_id_mapping[kMaxNumPPFeatures] = { PCC, IGC, GC, GC, PA, DITHER, GAMUT };
+#endif
for (int i(0); i < kMaxNumPPFeatures; i++) {
version.pp_feature = feature_id_mapping[i];