Camera: Add task_fence events for VI/ISP

Nsight needs task_fence events from camera engines.
Add task_fence event traces to be emitted during ISP task begin/end
and during VI frame end.

Jira CAMERASW-24223

Change-Id: Ia44baf73777f30abc823459f5e7dfd4d495d3ca6
Signed-off-by: Matti Ryttylainen <mryttylainen@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3141174
(cherry picked from commit ad0f0cba98173bbf055f5e69ebf175d9daf1ac3b)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3181495
Reviewed-by: Sampatlal Arjunram Jangid <sjangid@nvidia.com>
Tested-by: Devang Kubavat <dkubavat@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-by: Pushpesh Pranjal <ppranjal@nvidia.com>
Reviewed-by: Semi Malinen <smalinen@nvidia.com>
This commit is contained in:
Matti Ryttylainen
2024-05-20 10:25:54 +03:00
committed by mobile promotions
parent f327656ea3
commit 8bb21ea435
2 changed files with 89 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0
// Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// Copyright (c) 2022-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#include "soc/tegra/camrtc-trace.h"
@@ -24,7 +24,7 @@
#include <linux/platform_device.h>
#include <linux/nvhost.h>
#include <asm/cacheflush.h>
#include <uapi/linux/nvdev_fence.h>
#include "device-group.h"
#define CREATE_TRACE_POINTS
@@ -43,6 +43,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(capture_ivc_recv);
#define WORK_INTERVAL_DEFAULT 100
#define EXCEPTION_STR_LENGTH 2048
#define ISP_CLASS_ID 0x32
#define VI_CLASS_ID 0x30
/*
* Private driver data structure
*/
@@ -753,6 +756,16 @@ static void rtcpu_trace_vi_frame_event(struct tegra_rtcpu_trace *tracer,
event->data.data32[1],
pdata->class
);
trace_task_fence(
NVDEV_FENCE_KIND_POST,
VI_CLASS_ID,
event->data.data32[0],
event->data.data32[1],
NVDEV_FENCE_TYPE_SYNCPT,
event->data.data32[0],
event->data.data32[1],
0, 0, 0, 0, 0
);
break;
default:
pr_warn("%pS invalid event id %d\n",
@@ -818,6 +831,16 @@ static void rtcpu_trace_isp_task_event(struct tegra_rtcpu_trace *tracer,
event->data.data32[1],
pdata->class
);
trace_task_fence(
NVDEV_FENCE_KIND_PRE,
ISP_CLASS_ID,
event->data.data32[0],
event->data.data32[1],
NVDEV_FENCE_TYPE_SYNCPT,
event->data.data32[0],
event->data.data32[1],
0, 0, 0, 0, 0
);
break;
case camrtc_trace_isp_task_end:
trace_isp_task_end(
@@ -827,6 +850,16 @@ static void rtcpu_trace_isp_task_event(struct tegra_rtcpu_trace *tracer,
event->data.data32[1],
pdata->class
);
trace_task_fence(
NVDEV_FENCE_KIND_POST,
ISP_CLASS_ID,
event->data.data32[0],
event->data.data32[1],
NVDEV_FENCE_TYPE_SYNCPT,
event->data.data32[0],
event->data.data32[1],
0, 0, 0, 0, 0
);
break;
default:
pr_warn("%pS invalid event id %d\n",