disp: msm: sde: Validate transaction counts for LUTDMA abs writes

Existing LUTDMA hardware runs into issues when an odd number of
LUTDMA absolute address writes are executed before a GDSC power
collapse. Update LUTDMA logic to force absolute write payloads to
always contain an even number of writes.

Change-Id: I476feeab550f4b176d0adccaa5f2d38041e87657
Signed-off-by: Christopher Braga <cbraga@codeaurora.org>
This commit is contained in:
Christopher Braga
2021-08-12 13:47:13 -04:00
parent 8f51420d29
commit 43bfd9f435
5 changed files with 42 additions and 2 deletions

View File

@@ -4556,7 +4556,9 @@ static int _sde_kms_hw_init_ioremap(struct sde_kms *sde_kms,
sde_kms->reg_dma = NULL;
SDE_DEBUG("REG_DMA is not defined");
} else {
unsigned long mdp_addr = msm_get_phys_addr(platformdev, "mdp_phys");
sde_kms->reg_dma_len = msm_iomap_size(platformdev, "regdma_phys");
sde_kms->reg_dma_off = msm_get_phys_addr(platformdev, "regdma_phys") - mdp_addr;
rc = sde_dbg_reg_register_base("reg_dma", sde_kms->reg_dma,
sde_kms->reg_dma_len,
msm_get_phys_addr(platformdev, "regdma_phys"),
@@ -4650,6 +4652,7 @@ static int _sde_kms_hw_init_blocks(struct sde_kms *sde_kms,
}
/* Initialize reg dma block which is a singleton */
sde_kms->catalog->dma_cfg.base_off = sde_kms->reg_dma_off;
rc = sde_reg_dma_init(sde_kms->reg_dma, sde_kms->catalog,
sde_kms->dev);
if (rc) {