summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/include
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/include')
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/ptimer.h18
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/utils.h52
2 files changed, 69 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/ptimer.h b/drivers/gpu/nvgpu/include/nvgpu/ptimer.h
index 54c6b20c..598e064f 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/ptimer.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/ptimer.h
@@ -31,8 +31,24 @@ struct nvgpu_cpu_time_correlation_sample {
31 u64 gpu_timestamp; 31 u64 gpu_timestamp;
32}; 32};
33 33
34/* PTIMER_REF_FREQ_HZ corresponds to a period of 32 nanoseconds.
35 32 ns is the resolution of ptimer. */
36#define PTIMER_REF_FREQ_HZ 31250000
37
38static inline u32 ptimer_scalingfactor10x(u32 ptimer_src_freq)
39{
40 return (u32)(((u64)(PTIMER_REF_FREQ_HZ * 10)) / ptimer_src_freq);
41}
42
43static inline u32 scale_ptimer(u32 timeout , u32 scale10x)
44{
45 if (((timeout*10) % scale10x) >= (scale10x/2))
46 return ((timeout * 10) / scale10x) + 1;
47 else
48 return (timeout * 10) / scale10x;
49}
50
34int nvgpu_get_timestamps_zipper(struct gk20a *g, 51int nvgpu_get_timestamps_zipper(struct gk20a *g,
35 u32 source_id, u32 count, 52 u32 source_id, u32 count,
36 struct nvgpu_cpu_time_correlation_sample *samples); 53 struct nvgpu_cpu_time_correlation_sample *samples);
37
38#endif 54#endif
diff --git a/drivers/gpu/nvgpu/include/nvgpu/utils.h b/drivers/gpu/nvgpu/include/nvgpu/utils.h
new file mode 100644
index 00000000..22102fa3
--- /dev/null
+++ b/drivers/gpu/nvgpu/include/nvgpu/utils.h
@@ -0,0 +1,52 @@
1/*
2 * Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 * DEALINGS IN THE SOFTWARE.
21 */
22
23#ifndef NVGPU_UTILS_H
24#define NVGPU_UTILS_H
25
26#include <nvgpu/types.h>
27
28static inline u32 u64_hi32(u64 n)
29{
30 return (u32)((n >> 32) & ~(u32)0);
31}
32
33static inline u32 u64_lo32(u64 n)
34{
35 return (u32)(n & ~(u32)0);
36}
37
38static inline u64 hi32_lo32_to_u64(u32 hi, u32 lo)
39{
40 return (((u64)hi) << 32) | (u64)lo;
41}
42
43static inline u32 set_field(u32 val, u32 mask, u32 field)
44{
45 return ((val & ~mask) | field);
46}
47
48static inline u32 get_field(u32 reg, u32 mask)
49{
50 return (reg & mask);
51}
52#endif /* NVGPU_UTILS_H */