Merge "disp: msm: sde: add support for 45deg dir & corner detection"

This commit is contained in:
qctecmdr
2022-10-27 14:20:17 -07:00
committato da Gerrit - the friendly Code Review server
4 ha cambiato i file con 15 aggiunte e 0 eliminazioni

Vedi File

@@ -268,6 +268,7 @@ struct sde_drm_de_v1 {
#define SDE_DRM_QSEED3LITE #define SDE_DRM_QSEED3LITE
#define SDE_DRM_QSEED4 #define SDE_DRM_QSEED4
#define SDE_DRM_INLINE_PREDOWNSCALE #define SDE_DRM_INLINE_PREDOWNSCALE
#define SDE_DRM_QSEED6
/** /**
* struct sde_drm_scaler_v2 - version 2 of struct sde_drm_scaler * struct sde_drm_scaler_v2 - version 2 of struct sde_drm_scaler
@@ -309,6 +310,8 @@ struct sde_drm_de_v1 {
* @de_lpf_h: Detail enhancer lpf blend high * @de_lpf_h: Detail enhancer lpf blend high
* @de_lpf_l: Detail enhancer lpf blend low * @de_lpf_l: Detail enhancer lpf blend low
* @de_lpf_m: Detail enhancer lpf blend medium * @de_lpf_m: Detail enhancer lpf blend medium
* @dir45_en: 45/-45 degree direction filtering enable
* @cor_en: corner enhancer enable
*/ */
struct sde_drm_scaler_v2 { struct sde_drm_scaler_v2 {
/* /*
@@ -379,6 +382,8 @@ struct sde_drm_scaler_v2 {
__u32 de_lpf_h; __u32 de_lpf_h;
__u32 de_lpf_l; __u32 de_lpf_l;
__u32 de_lpf_m; __u32 de_lpf_m;
__u32 dir45_en;
__u32 cor_en;
}; };
/* Number of dest scalers supported */ /* Number of dest scalers supported */

Vedi File

@@ -3392,6 +3392,8 @@ void reg_dmav1_setup_vig_qseed3(struct sde_hw_pipe *ctx,
op_mode |= (scaler3_cfg->blend_cfg & 1) << 31; op_mode |= (scaler3_cfg->blend_cfg & 1) << 31;
op_mode |= (scaler3_cfg->dir_en) ? BIT(4) : 0; op_mode |= (scaler3_cfg->dir_en) ? BIT(4) : 0;
op_mode |= (scaler3_cfg->dir_en && scaler3_cfg->cor_en) ? BIT(5) : 0;
op_mode |= (scaler3_cfg->dir_en && scaler3_cfg->dir45_en) ? BIT(6) : 0;
op_mode |= (scaler3_cfg->dyn_exp_disabled) ? BIT(13) : 0; op_mode |= (scaler3_cfg->dyn_exp_disabled) ? BIT(13) : 0;
preload = preload =

Vedi File

@@ -115,6 +115,8 @@ void sde_set_scaler_v2(struct sde_hw_scaler3_cfg *cfg,
cfg->enable = scale_v2->enable; cfg->enable = scale_v2->enable;
cfg->dir_en = scale_v2->dir_en; cfg->dir_en = scale_v2->dir_en;
cfg->dir45_en = scale_v2->dir45_en;
cfg->cor_en = scale_v2->cor_en;
for (i = 0; i < SDE_MAX_PLANES; i++) { for (i = 0; i < SDE_MAX_PLANES; i++) {
cfg->init_phase_x[i] = scale_v2->init_phase_x[i]; cfg->init_phase_x[i] = scale_v2->init_phase_x[i];
@@ -376,6 +378,8 @@ void sde_hw_setup_scaler3(struct sde_hw_blk_reg_map *c,
op_mode |= (scaler3_cfg->blend_cfg & 1) << 31; op_mode |= (scaler3_cfg->blend_cfg & 1) << 31;
op_mode |= (scaler3_cfg->dir_en) ? BIT(4) : 0; op_mode |= (scaler3_cfg->dir_en) ? BIT(4) : 0;
op_mode |= (scaler3_cfg->dir_en && scaler3_cfg->cor_en) ? BIT(5) : 0;
op_mode |= (scaler3_cfg->dir_en && scaler3_cfg->dir45_en) ? BIT(6) : 0;
op_mode |= (scaler3_cfg->dyn_exp_disabled) ? BIT(13) : 0; op_mode |= (scaler3_cfg->dyn_exp_disabled) ? BIT(13) : 0;
preload = preload =

Vedi File

@@ -78,6 +78,8 @@ struct sde_hw_scaler3_de_cfg {
* struct sde_hw_scaler3_cfg : QSEEDv3 configuration * struct sde_hw_scaler3_cfg : QSEEDv3 configuration
* @enable: scaler enable * @enable: scaler enable
* @dir_en: direction detection block enable * @dir_en: direction detection block enable
* @dir45_en: 45/-45 degree direction filtering block enable
* @cor_en: corner detection block enable
* @ init_phase_x: horizontal initial phase * @ init_phase_x: horizontal initial phase
* @ phase_step_x: horizontal phase step * @ phase_step_x: horizontal phase step
* @ init_phase_y: vertical initial phase * @ init_phase_y: vertical initial phase
@@ -118,6 +120,8 @@ struct sde_hw_scaler3_de_cfg {
struct sde_hw_scaler3_cfg { struct sde_hw_scaler3_cfg {
u32 enable; u32 enable;
u32 dir_en; u32 dir_en;
u32 dir45_en;
u32 cor_en;
int32_t init_phase_x[SDE_MAX_PLANES]; int32_t init_phase_x[SDE_MAX_PLANES];
int32_t phase_step_x[SDE_MAX_PLANES]; int32_t phase_step_x[SDE_MAX_PLANES];
int32_t init_phase_y[SDE_MAX_PLANES]; int32_t init_phase_y[SDE_MAX_PLANES];