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 <mryttylainen@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3199341
Reviewed-by: Akihiro Mizusawa <amizusawa@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Semi Malinen <smalinen@nvidia.com>
Reviewed-by: Frank Chen <frankc@nvidia.com>
This commit is contained in:
Matti Ryttylainen
2024-08-23 15:51:03 +00:00
committed by Jon Hunter
parent 21a95b938b
commit 5f010bd073

View File

@@ -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)));