disp: msm: sde: set vlut only after ltm init
This changes add checks to make sure LTM init is set before setting VLUT. Change-Id: Ifeeeb1ff176b2c91a2c5f43928fb9621b69585f0 Signed-off-by: Anjaneya Prasad Musunuri <quic_aprasad@quicinc.com>
Dieser Commit ist enthalten in:
@@ -134,6 +134,7 @@ enum ltm_vlut_ops_bitmask {
|
||||
ltm_dither = BIT(1),
|
||||
ltm_roi = BIT(2),
|
||||
ltm_vlut = BIT(3),
|
||||
ltm_init = BIT(4),
|
||||
ltm_ops_max = BIT(31),
|
||||
};
|
||||
|
||||
@@ -4085,6 +4086,7 @@ static void ltm_initv1_disable(struct sde_hw_dspp *ctx, void *cfg,
|
||||
|
||||
ltm_vlut_ops_mask[dspp_idx[i]] &= ~ltm_dither;
|
||||
ltm_vlut_ops_mask[dspp_idx[i]] &= ~ltm_unsharp;
|
||||
ltm_vlut_ops_mask[dspp_idx[i]] &= ~ltm_init;
|
||||
REG_DMA_SETUP_OPS(dma_write_cfg, 0x04, &opmode, sizeof(opmode),
|
||||
REG_SINGLE_MODIFY, 0, 0,
|
||||
REG_DMA_LTM_INIT_DISABLE_OP_MASK);
|
||||
@@ -4215,6 +4217,8 @@ void reg_dmav1_setup_ltm_initv1(struct sde_hw_dspp *ctx, void *cfg)
|
||||
ltm_vlut_ops_mask[dspp_idx[i]] &= ~ltm_unsharp;
|
||||
}
|
||||
|
||||
ltm_vlut_ops_mask[dspp_idx[i]] |= ltm_init;
|
||||
|
||||
/* broadcast feature is not supported with REG_SINGLE_MODIFY */
|
||||
REG_DMA_SETUP_OPS(dma_write_cfg, 0x04, &opmode, sizeof(opmode),
|
||||
REG_SINGLE_MODIFY, 0, 0,
|
||||
@@ -4436,6 +4440,13 @@ static int reg_dmav1_setup_ltm_vlutv1_common(struct sde_hw_dspp *ctx, void *cfg,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* vlut is set before ltm init */
|
||||
if (!(ltm_vlut_ops_mask[dspp_idx[0]] & ltm_init)) {
|
||||
DRM_DEBUG_DRIVER("vlut is set before ltm init\n");
|
||||
SDE_EVT32(ctx->idx, 0x2222);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (hw_cfg->len != sizeof(struct drm_msm_ltm_data)) {
|
||||
DRM_ERROR("invalid size of payload len %d exp %zd\n",
|
||||
hw_cfg->len, sizeof(struct drm_msm_ltm_data));
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren