From 4c4d0e6eb29fab7c1fb54cb7a7f5e3e41e245991 Mon Sep 17 00:00:00 2001 From: Haley Teng Date: Thu, 21 Apr 2016 21:02:14 +0800 Subject: nvgpu: vgpu: create fifo.force_reset_ch in gpu_ops gk20a_fifo_force_reset_ch() does not support vgpu now, so we need to create a function pointer in gpu_ops and assign it differently for vgpu and non-vgpu. Bug 200184349 Change-Id: I5f8f4f731b4b970c4ff8de65531f25568e7691b6 Signed-off-by: Haley Teng Reviewed-on: http://git-master/r/1130420 Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index 0d7a6bec..189ec330 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c @@ -3114,10 +3114,10 @@ long gk20a_channel_ioctl(struct file *filp, __func__, cmd); break; } - /* enable channel */ - gk20a_writel(ch->g, ccsr_channel_r(ch->hw_chid), - gk20a_readl(ch->g, ccsr_channel_r(ch->hw_chid)) | - ccsr_channel_enable_set_true_f()); + if (ch->g->ops.fifo.enable_channel) + ch->g->ops.fifo.enable_channel(ch); + else + err = -ENOSYS; gk20a_idle(dev); break; case NVGPU_IOCTL_CHANNEL_DISABLE: @@ -3128,10 +3128,10 @@ long gk20a_channel_ioctl(struct file *filp, __func__, cmd); break; } - /* disable channel */ - gk20a_writel(ch->g, ccsr_channel_r(ch->hw_chid), - gk20a_readl(ch->g, ccsr_channel_r(ch->hw_chid)) | - ccsr_channel_enable_clr_true_f()); + if (ch->g->ops.fifo.disable_channel) + ch->g->ops.fifo.disable_channel(ch); + else + err = -ENOSYS; gk20a_idle(dev); break; case NVGPU_IOCTL_CHANNEL_PREEMPT: @@ -3153,7 +3153,7 @@ long gk20a_channel_ioctl(struct file *filp, __func__, cmd); break; } - err = gk20a_fifo_force_reset_ch(ch, true); + err = ch->g->ops.fifo.force_reset_ch(ch, true); gk20a_idle(dev); break; case NVGPU_IOCTL_CHANNEL_EVENT_ID_CTRL: -- cgit v1.2.2