summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/os
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2018-08-30 17:05:16 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-09-13 22:18:24 -0400
commit7ac0b046a538daa1a3532d3d5ae7cba1ef3295ba (patch)
tree79e42a4abe1e0c7d2918fa588f50061b90ee3e5f /drivers/gpu/nvgpu/os
parentbf14c2a0faf922073eaf72d490bf8bde8df1a5c7 (diff)
gpu: nvgpu: Move MC HAL to common
Move implementation of MC HAL to common/mc. Also bump gk20a implementation to gm20b. gk20a_mc_boot_0 was used via a HAL, but we have only one possible implementation. It also has to be anyway called directly to detect which HALs to assign, so make it a true common function. mc_gk20a_handle_intr_nonstall was also used only in os/linux/intr.c so move it there. JIRA NVGPU-954 Change-Id: I79aedc9158f90d578db0edc17b714617b52690ac Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1813519 Reviewed-by: svc-misra-checker <svc-misra-checker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/os')
-rw-r--r--drivers/gpu/nvgpu/os/linux/intr.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/os/linux/intr.c b/drivers/gpu/nvgpu/os/linux/intr.c
index 7ffc7e87..5ed6e35c 100644
--- a/drivers/gpu/nvgpu/os/linux/intr.c
+++ b/drivers/gpu/nvgpu/os/linux/intr.c
@@ -15,7 +15,6 @@
15#include <linux/irqreturn.h> 15#include <linux/irqreturn.h>
16 16
17#include "gk20a/gk20a.h" 17#include "gk20a/gk20a.h"
18#include "gk20a/mc_gk20a.h"
19 18
20#include <nvgpu/atomic.h> 19#include <nvgpu/atomic.h>
21#include <nvgpu/unit.h> 20#include <nvgpu/unit.h>
@@ -107,6 +106,21 @@ irqreturn_t nvgpu_intr_nonstall(struct gk20a *g)
107 return IRQ_HANDLED; 106 return IRQ_HANDLED;
108} 107}
109 108
109static void mc_gk20a_handle_intr_nonstall(struct gk20a *g, u32 ops)
110{
111 bool semaphore_wakeup, post_events;
112
113 semaphore_wakeup =
114 (((ops & GK20A_NONSTALL_OPS_WAKEUP_SEMAPHORE) != 0U) ?
115 true : false);
116 post_events = (((ops & GK20A_NONSTALL_OPS_POST_EVENTS) != 0U) ?
117 true: false);
118
119 if (semaphore_wakeup) {
120 g->ops.semaphore_wakeup(g, post_events);
121 }
122}
123
110void nvgpu_intr_nonstall_cb(struct work_struct *work) 124void nvgpu_intr_nonstall_cb(struct work_struct *work)
111{ 125{
112 struct nvgpu_os_linux *l = 126 struct nvgpu_os_linux *l =