diff options
Diffstat (limited to 'drivers/gpu/nvgpu/perf/perf.c')
-rw-r--r-- | drivers/gpu/nvgpu/perf/perf.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/perf/perf.c b/drivers/gpu/nvgpu/perf/perf.c index 3821a8dc..41ebb315 100644 --- a/drivers/gpu/nvgpu/perf/perf.c +++ b/drivers/gpu/nvgpu/perf/perf.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include "pmuif/gpmuifperf.h" | 16 | #include "pmuif/gpmuifperf.h" |
17 | #include "pmuif/gpmuifperfvfe.h" | 17 | #include "pmuif/gpmuifperfvfe.h" |
18 | #include "gk20a/pmu_gk20a.h" | 18 | #include "gk20a/pmu_gk20a.h" |
19 | #include "clk/clk_arb.h" | ||
19 | 20 | ||
20 | struct perfrpc_pmucmdhandler_params { | 21 | struct perfrpc_pmucmdhandler_params { |
21 | struct nv_pmu_perf_rpc *prpccall; | 22 | struct nv_pmu_perf_rpc *prpccall; |
@@ -41,6 +42,22 @@ static void perfrpc_pmucmdhandler(struct gk20a *g, struct pmu_msg *msg, | |||
41 | phandlerparams->success = 1; | 42 | phandlerparams->success = 1; |
42 | } | 43 | } |
43 | 44 | ||
45 | static int pmu_handle_perf_event(struct gk20a *g, void *pmu_msg) | ||
46 | { | ||
47 | struct nv_pmu_perf_msg *msg = (struct nv_pmu_perf_msg *)pmu_msg; | ||
48 | |||
49 | gk20a_dbg_fn(""); | ||
50 | switch (msg->msg_type) { | ||
51 | case NV_PMU_PERF_MSG_ID_VFE_CALLBACK: | ||
52 | nvgpu_clk_arb_schedule_vf_table_update(g); | ||
53 | break; | ||
54 | default: | ||
55 | WARN_ON(1); | ||
56 | break; | ||
57 | } | ||
58 | return 0; | ||
59 | } | ||
60 | |||
44 | u32 perf_pmu_vfe_load(struct gk20a *g) | 61 | u32 perf_pmu_vfe_load(struct gk20a *g) |
45 | { | 62 | { |
46 | struct pmu_cmd cmd; | 63 | struct pmu_cmd cmd; |
@@ -51,6 +68,9 @@ u32 perf_pmu_vfe_load(struct gk20a *g) | |||
51 | struct nv_pmu_perf_rpc rpccall = {0}; | 68 | struct nv_pmu_perf_rpc rpccall = {0}; |
52 | struct perfrpc_pmucmdhandler_params handler = {0}; | 69 | struct perfrpc_pmucmdhandler_params handler = {0}; |
53 | 70 | ||
71 | /*register call back for future VFE updates*/ | ||
72 | g->ops.perf.handle_pmu_perf_event = pmu_handle_perf_event; | ||
73 | |||
54 | rpccall.function = NV_PMU_PERF_RPC_ID_VFE_LOAD; | 74 | rpccall.function = NV_PMU_PERF_RPC_ID_VFE_LOAD; |
55 | rpccall.params.vfe_load.b_load = true; | 75 | rpccall.params.vfe_load.b_load = true; |
56 | cmd.hdr.unit_id = PMU_UNIT_PERF; | 76 | cmd.hdr.unit_id = PMU_UNIT_PERF; |