Hi, Yongqiang:
Yongqiang Niu yongqiang.niu@mediatek.com 於 2020年12月11日 週五 上午8:45寫道:
On Thu, 2020-12-10 at 23:50 +0800, Chun-Kuang Hu wrote:
Hi, Yongqiang:
Yongqiang Niu yongqiang.niu@mediatek.com 於 2020年12月10日 週四 下午5:08寫道:
This patch add RDMA fifo size error handle rdma fifo size will not always bigger than the calculated threshold if that case happened, we need set fifo size as the threshold
Signed-off-by: Yongqiang Niu yongqiang.niu@mediatek.com
drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c index 794acc5..0508392 100644 --- a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c +++ b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c @@ -151,6 +151,10 @@ static void mtk_rdma_config(struct mtk_ddp_comp *comp, unsigned int width, * account for blanking, and with a pixel depth of 4 bytes: */ threshold = width * height * vrefresh * 4 * 7 / 1000000;
if (threshold > rdma_fifo_size)
threshold = rdma_fifo_size;
If the formula is not correct, you should fix the formula not work around.
Regards, Chun-Kuang.
how about this: threshold = max(width * height * vrefresh * 4 * 7 / 1000000, rdma_fifo_size);
When I use width = 1920, height = 1080, vrefresh = 60 to calculate, I get threshold = 2985. So I think set threshold to half of fifo size is OK for MAX_WIDTH, MAX_HEIGHT, MAX_VREFRESH (these three may be different in each SoC)
threshold = RDMA_FIFO_PSEUDO_SIZE(rdma_fifo_size) / 2;
But I worry half fifo size is too big for small resolution and let small resolution too easy to trigger burst read DRAM. So let the formula to be this:
threshold = RDMA_FIFO_PSEUDO_SIZE(rdma_fifo_size) * width * height * vrefresh / 2 / MAX_WIDTH / MAX_HEIGHT / MAX_VREFRESH;
How do you think about this?
Regards, Chun-Kuang.
reg = RDMA_FIFO_UNDERFLOW_EN | RDMA_FIFO_PSEUDO_SIZE(rdma_fifo_size) | RDMA_OUTPUT_VALID_FIFO_THRESHOLD(threshold);
-- 1.8.1.1.dirty _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek