sdm: Add support for Qseed3Lite
1. Add version check for Qseed3Lite.
2. Program dir_weight.
Change-Id: Ibcde75c1bb7992af2b7fe8f4b496ffc5fec18e54
diff --git a/libdrmutils/drm_interface.h b/libdrmutils/drm_interface.h
index f9bd8f4..076e0a6 100644
--- a/libdrmutils/drm_interface.h
+++ b/libdrmutils/drm_interface.h
@@ -431,6 +431,7 @@
V1,
V2,
V3,
+ V3LITE,
};
/* QSEED3 Step version */
@@ -438,6 +439,8 @@
V2,
V3,
V4,
+ V3LITE_V4,
+ V3LITE_V5,
};
enum struct SmartDMARevision {
diff --git a/sdm/include/private/hw_info_types.h b/sdm/include/private/hw_info_types.h
index 220bbf3..eb60186 100644
--- a/sdm/include/private/hw_info_types.h
+++ b/sdm/include/private/hw_info_types.h
@@ -211,6 +211,8 @@
kQseed3v2,
kQseed3v3,
kQseed3v4,
+ kQseed3litev4,
+ kQseed3litev5,
};
struct HWDestScalarInfo {
@@ -504,6 +506,7 @@
} enable;
uint32_t dst_width = 0;
uint32_t dst_height = 0;
+ uint32_t dir_weight = 0;
HWPlane plane[MAX_PLANES] {};
// scale_v2_data fields
ScalingFilterConfig y_rgb_filter_cfg = kFilterEdgeDirected;
diff --git a/sdm/libs/core/drm/hw_info_drm.cpp b/sdm/libs/core/drm/hw_info_drm.cpp
index 2305088..09903b9 100644
--- a/sdm/libs/core/drm/hw_info_drm.cpp
+++ b/sdm/libs/core/drm/hw_info_drm.cpp
@@ -96,6 +96,12 @@
case sde_drm::QSEEDStepVersion::V4:
sdm_version = kQseed3v4;
break;
+ case sde_drm::QSEEDStepVersion::V3LITE_V4:
+ sdm_version = kQseed3litev4;
+ break;
+ case sde_drm::QSEEDStepVersion::V3LITE_V5:
+ sdm_version = kQseed3litev5;
+ break;
}
return sdm_version;
}
@@ -272,7 +278,7 @@
drm_mgr_intf_->GetCrtcInfo(0 /* system_info */, &info);
hw_resource->has_hdr = info.has_hdr;
hw_resource->is_src_split = info.has_src_split;
- hw_resource->has_qseed3 = (info.qseed_version == sde_drm::QSEEDVersion::V3);
+ hw_resource->has_qseed3 = (info.qseed_version >= sde_drm::QSEEDVersion::V3);
hw_resource->num_blending_stages = info.max_blend_stages;
hw_resource->num_solidfill_stages = info.max_solidfill_stages;
hw_resource->smart_dma_rev = (info.smart_dma_rev == sde_drm::SmartDMARevision::V2p5) ?
diff --git a/sdm/libs/core/drm/hw_scale_drm.cpp b/sdm/libs/core/drm/hw_scale_drm.cpp
index b2f6d3b..03e8067 100644
--- a/sdm/libs/core/drm/hw_scale_drm.cpp
+++ b/sdm/libs/core/drm/hw_scale_drm.cpp
@@ -123,6 +123,7 @@
scaler->uv_filter_cfg = GetScalingFilter(scale_data.uv_filter_cfg);
scaler->alpha_filter_cfg = GetAlphaInterpolation(scale_data.alpha_filter_cfg);
scaler->blend_cfg = scale_data.blend_cfg;
+ scaler->dir_weight = scale_data.dir_weight;
scaler->lut_flag = (scale_data.lut_flag.lut_swap ? SCALER_LUT_SWAP : 0) |
(scale_data.lut_flag.lut_dir_wr ? SCALER_LUT_DIR_WR : 0) |