From b70d9c0c26d35f2533c5db3600fe44465a958d11 Mon Sep 17 00:00:00 2001 From: Abdul Salam Date: Mon, 15 Apr 2019 16:17:06 +0530 Subject: [PATCH] gpu: nvgpu: Remove dependency between volt and pmu This patch does the following 1. Use function pointers to access volt event handler from pmu. 2. Remove volt.h header include. 3. Assign the pointer during SW setup of volt. Jira NVGPU-1956 Change-Id: I87e207c0f4e05f4d25158da276d1fad389a6354d Signed-off-by: Abdul Salam Reviewed-on: https://git-master.nvidia.com/r/2097739 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/pmu/ipc/pmu_msg.c | 5 +++-- drivers/gpu/nvgpu/common/pmu/volt/volt_dev.c | 2 ++ drivers/gpu/nvgpu/include/nvgpu/pmu.h | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/nvgpu/common/pmu/ipc/pmu_msg.c b/drivers/gpu/nvgpu/common/pmu/ipc/pmu_msg.c index 36234322b..9c5b23bc4 100644 --- a/drivers/gpu/nvgpu/common/pmu/ipc/pmu_msg.c +++ b/drivers/gpu/nvgpu/common/pmu/ipc/pmu_msg.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include @@ -561,7 +560,9 @@ void nvgpu_pmu_rpc_handler(struct gk20a *g, struct pmu_msg *msg, nvgpu_pmu_perfmon_rpc_handler(g, pmu, &rpc, rpc_payload); break; case PMU_UNIT_VOLT: - nvgpu_pmu_volt_rpc_handler(g, &rpc); + if (pmu->volt_rpc_handler != NULL) { + pmu->volt_rpc_handler(g, &rpc); + } break; case PMU_UNIT_CLK: nvgpu_pmu_dbg(g, "reply PMU_UNIT_CLK"); diff --git a/drivers/gpu/nvgpu/common/pmu/volt/volt_dev.c b/drivers/gpu/nvgpu/common/pmu/volt/volt_dev.c index 31550b127..ff2613198 100644 --- a/drivers/gpu/nvgpu/common/pmu/volt/volt_dev.c +++ b/drivers/gpu/nvgpu/common/pmu/volt/volt_dev.c @@ -592,6 +592,8 @@ int nvgpu_volt_dev_sw_setup(struct gk20a *g) } } + g->pmu.volt_rpc_handler = nvgpu_pmu_volt_rpc_handler; + done: nvgpu_log_info(g, " done status %x", status); return status; diff --git a/drivers/gpu/nvgpu/include/nvgpu/pmu.h b/drivers/gpu/nvgpu/include/nvgpu/pmu.h index 1f08490b4..07d6b685c 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/pmu.h +++ b/drivers/gpu/nvgpu/include/nvgpu/pmu.h @@ -243,6 +243,8 @@ struct nvgpu_pmu { void (*remove_support)(struct nvgpu_pmu *pmu); void (*therm_rpc_handler)(struct gk20a *g, struct nv_pmu_rpc_header *rpc); + void (*volt_rpc_handler)(struct gk20a *g, + struct nv_pmu_rpc_header *rpc); bool sw_ready; struct nvgpu_mutex isr_mutex;