mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 17:25:35 +03:00
nvidia-oot: add tracing support to identify isp
This change adds the isp logging to identify which isp instance is being run in the rtcpu traces. Jira CT26X-1790 Change-Id: I87744fd15629bb9faa96f5970b5f5ecea4b59937 Signed-off-by: fraunak <fraunak@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3221517 Reviewed-by: Semi Malinen <smalinen@nvidia.com> GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com> Reviewed-by: Frank Chen <frankc@nvidia.com> Reviewed-by: Chinniah Poosapadi <cpoosapadi@nvidia.com>
This commit is contained in:
@@ -95,6 +95,7 @@ struct tegra_rtcpu_trace {
|
||||
struct platform_device *vi_platform_device;
|
||||
struct platform_device *vi1_platform_device;
|
||||
struct platform_device *isp_platform_device;
|
||||
struct platform_device *isp1_platform_device;
|
||||
|
||||
/* printk logging */
|
||||
const char *log_prefix;
|
||||
@@ -822,11 +823,20 @@ static void rtcpu_trace_isp_task_event(struct tegra_rtcpu_trace *tracer,
|
||||
struct camrtc_event_struct *event)
|
||||
{
|
||||
struct nvhost_device_data *pdata = NULL;
|
||||
struct platform_device *pdev = NULL;
|
||||
u32 isp_unit_id = event->data.data32[4];
|
||||
|
||||
if (tracer->isp_platform_device == NULL)
|
||||
if (isp_unit_id == 0U)
|
||||
pdev = tracer->isp_platform_device;
|
||||
else if (isp_unit_id == 1U)
|
||||
pdev = tracer->isp1_platform_device;
|
||||
else
|
||||
pdev = NULL;
|
||||
|
||||
if (pdev == NULL)
|
||||
return;
|
||||
|
||||
pdata = platform_get_drvdata(tracer->isp_platform_device);
|
||||
pdata = platform_get_drvdata(pdev);
|
||||
if (pdata == NULL)
|
||||
return;
|
||||
|
||||
@@ -882,11 +892,12 @@ static void rtcpu_trace_isp_falcon_event(struct camrtc_event_struct *event)
|
||||
u8 ch = (u8) ((event->data.data32[0] & 0xFF00) >> 8U);
|
||||
u8 seq = (u8) ((event->data.data32[0] & 0xFF0000) >> 16U);
|
||||
u32 tstamp = event->data.data32[1];
|
||||
u32 isp_unit_id = event->data.data32[4];
|
||||
|
||||
switch (ispfalcon_tag) {
|
||||
case TRACE_ISP_FALCON_EVENT_TS:
|
||||
trace_rtcpu_isp_falcon_tile_start(
|
||||
ch, seq, tstamp,
|
||||
ch, seq, tstamp, isp_unit_id,
|
||||
(u8) (event->data.data32[3] & 0xFF),
|
||||
(u8) ((event->data.data32[3] & 0xFF00) >> 8U),
|
||||
(u16) (event->data.data32[2] & 0xFFFF),
|
||||
@@ -894,23 +905,23 @@ static void rtcpu_trace_isp_falcon_event(struct camrtc_event_struct *event)
|
||||
break;
|
||||
case TRACE_ISP_FALCON_EVENT_TE:
|
||||
trace_rtcpu_isp_falcon_tile_end(
|
||||
ch, seq, tstamp,
|
||||
ch, seq, tstamp, isp_unit_id,
|
||||
(u8) (event->data.data32[3] & 0xFF),
|
||||
(u8) ((event->data.data32[3] & 0xFF00) >> 8U));
|
||||
break;
|
||||
case TRACE_ISP_FALCON_PROFILE_START:
|
||||
trace_rtcpu_isp_falcon_task_start(
|
||||
ch, tstamp,
|
||||
ch, tstamp, isp_unit_id,
|
||||
event->data.data32[2]);
|
||||
break;
|
||||
case TRACE_ISP_FALCON_PROFILE_END:
|
||||
trace_rtcpu_isp_falcon_task_end(
|
||||
tstamp,
|
||||
tstamp, isp_unit_id,
|
||||
event->data.data32[2]);
|
||||
break;
|
||||
default:
|
||||
trace_rtcpu_isp_falcon(
|
||||
ispfalcon_tag, ch, seq, tstamp,
|
||||
ispfalcon_tag, ch, seq, tstamp, isp_unit_id,
|
||||
event->data.data32[2],
|
||||
event->data.data32[3]);
|
||||
break;
|
||||
@@ -1430,6 +1441,13 @@ struct tegra_rtcpu_trace *tegra_rtcpu_trace_create(struct device *dev,
|
||||
tracer->isp_platform_device = NULL;
|
||||
}
|
||||
|
||||
tracer->isp1_platform_device =
|
||||
camrtc_device_get_byname(camera_devices, "isp1");
|
||||
if (IS_ERR(tracer->isp1_platform_device)) {
|
||||
dev_info(dev, "no camera-device \"%s\"\n", "isp1");
|
||||
tracer->isp1_platform_device = NULL;
|
||||
}
|
||||
|
||||
tracer->vi_platform_device =
|
||||
camrtc_device_get_byname(camera_devices, "vi0");
|
||||
if (IS_ERR(tracer->vi_platform_device)) {
|
||||
|
||||
@@ -433,13 +433,14 @@ TRACE_EVENT(rtcpu_nvcsi_intr,
|
||||
*/
|
||||
|
||||
TRACE_EVENT(rtcpu_isp_falcon,
|
||||
TP_PROTO(u8 tag, u8 ch, u8 seq, u32 tstamp, u32 data, u32 ext_data),
|
||||
TP_ARGS(tag, ch, seq, tstamp, data, ext_data),
|
||||
TP_PROTO(u8 tag, u8 ch, u8 seq, u32 tstamp, u32 isp_unit_id, u32 data, u32 ext_data),
|
||||
TP_ARGS(tag, ch, seq, tstamp, isp_unit_id, data, ext_data),
|
||||
TP_STRUCT__entry(
|
||||
__field(u8, tag)
|
||||
__field(u8, ch)
|
||||
__field(u8, seq)
|
||||
__field(u32, tstamp)
|
||||
__field(u32, isp_unit_id)
|
||||
__field(u32, data)
|
||||
__field(u32, ext_data)
|
||||
),
|
||||
@@ -448,12 +449,13 @@ TRACE_EVENT(rtcpu_isp_falcon,
|
||||
__entry->ch = ch;
|
||||
__entry->seq = seq;
|
||||
__entry->tstamp = tstamp;
|
||||
__entry->isp_unit_id = isp_unit_id;
|
||||
__entry->data = data;
|
||||
__entry->ext_data = ext_data;
|
||||
),
|
||||
TP_printk(
|
||||
"tag:0x%x tstamp:%u ch:%u seq:%u data:0x%08x ext_data:0x%08x",
|
||||
__entry->tag, __entry->tstamp, __entry->ch, __entry->seq,
|
||||
"tag:0x%x tstamp:%u ch:%u isp:%u seq:%u data:0x%08x ext_data:0x%08x",
|
||||
__entry->tag, __entry->tstamp, __entry->ch, __entry->isp_unit_id, __entry->seq,
|
||||
__entry->data, __entry->ext_data
|
||||
)
|
||||
);
|
||||
@@ -462,21 +464,23 @@ extern const char * const g_trace_isp_falcon_task_strs[];
|
||||
extern const unsigned int g_trace_isp_falcon_task_str_count;
|
||||
|
||||
TRACE_EVENT(rtcpu_isp_falcon_task_start,
|
||||
TP_PROTO(u8 ch, u32 tstamp, u32 task),
|
||||
TP_ARGS(ch, tstamp, task),
|
||||
TP_PROTO(u8 ch, u32 tstamp, u32 isp_unit_id, u32 task),
|
||||
TP_ARGS(ch, tstamp, isp_unit_id, task),
|
||||
TP_STRUCT__entry(
|
||||
__field(u8, ch)
|
||||
__field(u32, tstamp)
|
||||
__field(u32, isp_unit_id)
|
||||
__field(u32, task)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->ch = ch;
|
||||
__entry->tstamp = tstamp;
|
||||
__entry->isp_unit_id = isp_unit_id;
|
||||
__entry->task = task;
|
||||
),
|
||||
TP_printk(
|
||||
"tstamp:%u ch:%u task:%s",
|
||||
__entry->tstamp, __entry->ch,
|
||||
"tstamp:%u ch:%u isp:%u task:%s",
|
||||
__entry->tstamp, __entry->ch, __entry->isp_unit_id,
|
||||
(__entry->task < g_trace_isp_falcon_task_str_count) ?
|
||||
g_trace_isp_falcon_task_strs[__entry->task] :
|
||||
"UNKNOWN"
|
||||
@@ -484,19 +488,21 @@ TRACE_EVENT(rtcpu_isp_falcon_task_start,
|
||||
);
|
||||
|
||||
TRACE_EVENT(rtcpu_isp_falcon_task_end,
|
||||
TP_PROTO(u32 tstamp, u32 task),
|
||||
TP_ARGS(tstamp, task),
|
||||
TP_PROTO(u32 tstamp, u32 isp_unit_id, u32 task),
|
||||
TP_ARGS(tstamp, isp_unit_id, task),
|
||||
TP_STRUCT__entry(
|
||||
__field(u32, tstamp)
|
||||
__field(u32, isp_unit_id)
|
||||
__field(u32, task)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->tstamp = tstamp;
|
||||
__entry->isp_unit_id = isp_unit_id;
|
||||
__entry->task = task;
|
||||
),
|
||||
TP_printk(
|
||||
"tstamp:%u task:%s",
|
||||
__entry->tstamp,
|
||||
"tstamp:%u isp:%u task:%s",
|
||||
__entry->tstamp, __entry->isp_unit_id,
|
||||
(__entry->task < g_trace_isp_falcon_task_str_count) ?
|
||||
g_trace_isp_falcon_task_strs[__entry->task] :
|
||||
"UNKNOWN"
|
||||
@@ -506,14 +512,15 @@ TRACE_EVENT(rtcpu_isp_falcon_task_end,
|
||||
|
||||
TRACE_EVENT(rtcpu_isp_falcon_tile_start,
|
||||
TP_PROTO(
|
||||
u8 ch, u8 seq, u32 tstamp,
|
||||
u8 ch, u8 seq, u32 tstamp, u32 isp_unit_id,
|
||||
u8 tile_x, u8 tile_y,
|
||||
u16 tile_w, u16 tile_h),
|
||||
TP_ARGS(ch, seq, tstamp, tile_x, tile_y, tile_w, tile_h),
|
||||
TP_ARGS(ch, seq, tstamp, isp_unit_id, tile_x, tile_y, tile_w, tile_h),
|
||||
TP_STRUCT__entry(
|
||||
__field(u8, ch)
|
||||
__field(u8, seq)
|
||||
__field(u32, tstamp)
|
||||
__field(u32, isp_unit_id)
|
||||
__field(u8, tile_x)
|
||||
__field(u8, tile_y)
|
||||
__field(u16, tile_w)
|
||||
@@ -524,26 +531,28 @@ TRACE_EVENT(rtcpu_isp_falcon_tile_start,
|
||||
__entry->ch = ch;
|
||||
__entry->seq = seq;
|
||||
__entry->tstamp = tstamp;
|
||||
__entry->isp_unit_id = isp_unit_id;
|
||||
__entry->tile_x = tile_x;
|
||||
__entry->tile_y = tile_y;
|
||||
__entry->tile_w = tile_w;
|
||||
__entry->tile_h = tile_h;
|
||||
),
|
||||
TP_printk(
|
||||
"tstamp:%u ch:%u seq:%u tile_x:%u tile_y:%u tile_w:%u tile_h:%u",
|
||||
__entry->tstamp, __entry->ch, __entry->seq,
|
||||
"tstamp:%u ch:%u isp:%u seq:%u tile_x:%u tile_y:%u tile_w:%u tile_h:%u",
|
||||
__entry->tstamp, __entry->ch, __entry->isp_unit_id, __entry->seq,
|
||||
__entry->tile_x, __entry->tile_y,
|
||||
__entry->tile_w, __entry->tile_h
|
||||
)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rtcpu_isp_falcon_tile_end,
|
||||
TP_PROTO(u8 ch, u8 seq, u32 tstamp, u8 tile_x, u8 tile_y),
|
||||
TP_ARGS(ch, seq, tstamp, tile_x, tile_y),
|
||||
TP_PROTO(u8 ch, u8 seq, u32 tstamp, u32 isp_unit_id, u8 tile_x, u8 tile_y),
|
||||
TP_ARGS(ch, seq, tstamp, isp_unit_id, tile_x, tile_y),
|
||||
TP_STRUCT__entry(
|
||||
__field(u8, ch)
|
||||
__field(u8, seq)
|
||||
__field(u32, tstamp)
|
||||
__field(u32, isp_unit_id)
|
||||
__field(u8, tile_x)
|
||||
__field(u8, tile_y)
|
||||
|
||||
@@ -552,12 +561,13 @@ TRACE_EVENT(rtcpu_isp_falcon_tile_end,
|
||||
__entry->ch = ch;
|
||||
__entry->seq = seq;
|
||||
__entry->tstamp = tstamp;
|
||||
__entry->isp_unit_id = isp_unit_id;
|
||||
__entry->tile_x = tile_x;
|
||||
__entry->tile_y = tile_y;
|
||||
),
|
||||
TP_printk(
|
||||
"tstamp:%u ch:%u seq:%u tile_x:%u tile_y:%u",
|
||||
__entry->tstamp, __entry->ch, __entry->seq,
|
||||
"tstamp:%u ch:%u isp:%u seq:%u tile_x:%u tile_y:%u",
|
||||
__entry->tstamp, __entry->ch, __entry->isp_unit_id, __entry->seq,
|
||||
__entry->tile_x, __entry->tile_y
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user