summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/imx/dpu/dpu-fetchunit.c14
-rw-r--r--include/video/dpu.h3
2 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpu/imx/dpu/dpu-fetchunit.c b/drivers/gpu/imx/dpu/dpu-fetchunit.c
index a002c603836d..2b131071e0a4 100644
--- a/drivers/gpu/imx/dpu/dpu-fetchunit.c
+++ b/drivers/gpu/imx/dpu/dpu-fetchunit.c
@@ -39,6 +39,20 @@ unsigned int fetchunit_burst_size_fixup_tkt343664(dma_addr_t baddr)
}
EXPORT_SYMBOL_GPL(fetchunit_burst_size_fixup_tkt343664);
+/* fixup for burst size vs stride mismatch */
+unsigned int
+fetchunit_stride_fixup_tkt339017(unsigned int stride, unsigned int burst_size,
+ dma_addr_t baddr, bool nonzero_mod)
+{
+ if (nonzero_mod)
+ stride = round_up(stride + round_up(baddr % 8, 8), burst_size);
+ else
+ stride = round_up(stride, burst_size);
+
+ return stride;
+}
+EXPORT_SYMBOL_GPL(fetchunit_stride_fixup_tkt339017);
+
void fetchunit_shden(struct dpu_fetchunit *fu, bool enable)
{
u32 val;
diff --git a/include/video/dpu.h b/include/video/dpu.h
index 83b3ca63b058..87eb233ad770 100644
--- a/include/video/dpu.h
+++ b/include/video/dpu.h
@@ -568,6 +568,9 @@ u32 dpu_vproc_get_hscale_cap(u32 cap_mask);
u32 dpu_vproc_get_vscale_cap(u32 cap_mask);
unsigned int fetchunit_burst_size_fixup_tkt343664(dma_addr_t baddr);
+unsigned int
+fetchunit_stride_fixup_tkt339017(unsigned int stride, unsigned int burst_size,
+ dma_addr_t baddr, bool nonzero_mod);
void fetchunit_shden(struct dpu_fetchunit *fu, bool enable);
void fetchunit_baddr_autoupdate(struct dpu_fetchunit *fu, u8 layer_mask);
void fetchunit_shdldreq_sticky(struct dpu_fetchunit *fu, u8 layer_mask);