From 5f010bd0734af1125dc74ef8c6f93031cf6c6ab1 Mon Sep 17 00:00:00 2001 From: Matti Ryttylainen Date: Fri, 23 Aug 2024 15:51:03 +0000 Subject: [PATCH] camera: Fix ISP prefence address calculation If syncpoint_info is on page boundary the address calculation for where to write syncpoint address wraps to beginning of the page. Fix ISP prefence syncpoint address calculation on page boundary. Bug 4811006 Change-Id: I8b5b39c9ad55ff5b7c4d365588e27282258191d9 Signed-off-by: Matti Ryttylainen Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3199341 Reviewed-by: Akihiro Mizusawa GVS: buildbot_gerritrpt Reviewed-by: Semi Malinen Reviewed-by: Frank Chen --- .../media/platform/tegra/camera/fusa-capture/capture-isp.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/media/platform/tegra/camera/fusa-capture/capture-isp.c b/drivers/media/platform/tegra/camera/fusa-capture/capture-isp.c index 963968b4..d593ab4f 100644 --- a/drivers/media/platform/tegra/camera/fusa-capture/capture-isp.c +++ b/drivers/media/platform/tegra/camera/fusa-capture/capture-isp.c @@ -332,9 +332,13 @@ static int isp_capture_populate_fence_info( gos_info = ((((uint16_t)gos_offset << 16) | ((uint8_t)gos_index) << 8) & 0xFFFFFFFF); + reloc_page_addr += (((fence_offset + gos_relative) & PAGE_MASK) - (fence_offset & PAGE_MASK)); + __raw_writeq(gos_info, (void __iomem *)(reloc_page_addr + ((fence_offset + gos_relative) & ~PAGE_MASK))); + reloc_page_addr += (((fence_offset + sp_relative) & PAGE_MASK) - ((fence_offset + gos_relative) & PAGE_MASK)); + __raw_writeq((uint64_t)syncpt_addr, (void __iomem *)(reloc_page_addr + ((fence_offset + sp_relative) & ~PAGE_MASK)));