diff options
-rw-r--r-- | drivers/gpu/imx/dpu/dpu-fetchunit.c | 14 | ||||
-rw-r--r-- | include/video/dpu.h | 3 |
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); |