Commit 49cc215a authored by Matthew Brost's avatar Matthew Brost

drm/xe: Add xe_gt_clock_interval_to_ms helper

Add helper to convert GT clock ticks to msec. Useful for determining if
timeouts occur by examing GT clock ticks.

v6:
- s/nom/n , s/dom/d (Jonathan)
- include math64 (CI)
Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarJonathan Cavitt <jonathan.cavitt@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240611144053.2805091-6-matthew.brost@intel.com
parent 1bf1ca4e
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
* Copyright © 2022 Intel Corporation * Copyright © 2022 Intel Corporation
*/ */
#include <linux/math64.h>
#include "xe_gt_clock.h" #include "xe_gt_clock.h"
#include "regs/xe_gt_regs.h" #include "regs/xe_gt_regs.h"
...@@ -79,3 +81,21 @@ int xe_gt_clock_init(struct xe_gt *gt) ...@@ -79,3 +81,21 @@ int xe_gt_clock_init(struct xe_gt *gt)
gt->info.reference_clock = freq; gt->info.reference_clock = freq;
return 0; return 0;
} }
static u64 div_u64_roundup(u64 n, u32 d)
{
return div_u64(n + d - 1, d);
}
/**
* xe_gt_clock_interval_to_ms - Convert sampled GT clock ticks to msec
*
* @gt: the &xe_gt
* @count: count of GT clock ticks
*
* Returns: time in msec
*/
u64 xe_gt_clock_interval_to_ms(struct xe_gt *gt, u64 count)
{
return div_u64_roundup(count * MSEC_PER_SEC, gt->info.reference_clock);
}
...@@ -11,5 +11,6 @@ ...@@ -11,5 +11,6 @@
struct xe_gt; struct xe_gt;
int xe_gt_clock_init(struct xe_gt *gt); int xe_gt_clock_init(struct xe_gt *gt);
u64 xe_gt_clock_interval_to_ms(struct xe_gt *gt, u64 count);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment