diff options
author | Sunny He <suhe@nvidia.com> | 2017-06-30 18:54:03 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-07-24 02:35:06 -0400 |
commit | 8140c51e6cd212517fc343e6f8f8694bbad98f3b (patch) | |
tree | cf453fdf283484bbbaaf22c5690550bf546c1f22 /drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | |
parent | d9f906c1e0f06f54e545727817d227a0bac46a0a (diff) |
gpu: nvgpu: gv11b: Reorg fifo HAL initialization
Reorganize HAL initialization to remove inheritance and construct
the gpu_ops struct at compile time. This patch only covers the fifo
sub-module of the gpu_ops struct.
Perform HAL function assignments in hal_gxxxx.c through the
population of a chip-specific copy of gpu_ops.
Jira NVGPU-74
Change-Id: I7c81edfa785a4ecafef41aae7b82d6b1707d294e
Signed-off-by: Sunny He <suhe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1522554
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Alex Waterman <alexw@nvidia.com>
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/fifo_gv11b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | 119 |
1 files changed, 32 insertions, 87 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c index b0270150..e210d40d 100644 --- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | |||
@@ -59,7 +59,7 @@ static inline void gv11b_usermode_writel(struct gk20a *g, u32 r, u32 v) | |||
59 | gk20a_dbg(gpu_dbg_reg, "usermode r=0x%x v=0x%x", r, v); | 59 | gk20a_dbg(gpu_dbg_reg, "usermode r=0x%x v=0x%x", r, v); |
60 | } | 60 | } |
61 | 61 | ||
62 | static void gv11b_get_tsg_runlist_entry(struct tsg_gk20a *tsg, u32 *runlist) | 62 | void gv11b_get_tsg_runlist_entry(struct tsg_gk20a *tsg, u32 *runlist) |
63 | { | 63 | { |
64 | 64 | ||
65 | u32 runlist_entry_0 = ram_rl_entry_type_tsg_v(); | 65 | u32 runlist_entry_0 = ram_rl_entry_type_tsg_v(); |
@@ -85,7 +85,7 @@ static void gv11b_get_tsg_runlist_entry(struct tsg_gk20a *tsg, u32 *runlist) | |||
85 | 85 | ||
86 | } | 86 | } |
87 | 87 | ||
88 | static void gv11b_get_ch_runlist_entry(struct channel_gk20a *c, u32 *runlist) | 88 | void gv11b_get_ch_runlist_entry(struct channel_gk20a *c, u32 *runlist) |
89 | { | 89 | { |
90 | struct gk20a *g = c->g; | 90 | struct gk20a *g = c->g; |
91 | u32 addr_lo, addr_hi; | 91 | u32 addr_lo, addr_hi; |
@@ -126,7 +126,7 @@ static void gv11b_userd_writeback_config(struct gk20a *g) | |||
126 | 126 | ||
127 | } | 127 | } |
128 | 128 | ||
129 | static int channel_gv11b_setup_ramfc(struct channel_gk20a *c, | 129 | int channel_gv11b_setup_ramfc(struct channel_gk20a *c, |
130 | u64 gpfifo_base, u32 gpfifo_entries, | 130 | u64 gpfifo_base, u32 gpfifo_entries, |
131 | unsigned long acquire_timeout, u32 flags) | 131 | unsigned long acquire_timeout, u32 flags) |
132 | { | 132 | { |
@@ -219,7 +219,7 @@ static void gv11b_ring_channel_doorbell(struct channel_gk20a *c) | |||
219 | usermode_notify_channel_pending_id_f(hw_chid)); | 219 | usermode_notify_channel_pending_id_f(hw_chid)); |
220 | } | 220 | } |
221 | 221 | ||
222 | static u32 gv11b_userd_gp_get(struct gk20a *g, struct channel_gk20a *c) | 222 | u32 gv11b_userd_gp_get(struct gk20a *g, struct channel_gk20a *c) |
223 | { | 223 | { |
224 | struct nvgpu_mem *userd_mem = &g->fifo.userd; | 224 | struct nvgpu_mem *userd_mem = &g->fifo.userd; |
225 | u32 offset = c->chid * (g->fifo.userd_entry_size / sizeof(u32)); | 225 | u32 offset = c->chid * (g->fifo.userd_entry_size / sizeof(u32)); |
@@ -228,7 +228,7 @@ static u32 gv11b_userd_gp_get(struct gk20a *g, struct channel_gk20a *c) | |||
228 | offset + ram_userd_gp_get_w()); | 228 | offset + ram_userd_gp_get_w()); |
229 | } | 229 | } |
230 | 230 | ||
231 | static u64 gv11b_userd_pb_get(struct gk20a *g, struct channel_gk20a *c) | 231 | u64 gv11b_userd_pb_get(struct gk20a *g, struct channel_gk20a *c) |
232 | { | 232 | { |
233 | struct nvgpu_mem *userd_mem = &g->fifo.userd; | 233 | struct nvgpu_mem *userd_mem = &g->fifo.userd; |
234 | u32 offset = c->chid * (g->fifo.userd_entry_size / sizeof(u32)); | 234 | u32 offset = c->chid * (g->fifo.userd_entry_size / sizeof(u32)); |
@@ -238,7 +238,7 @@ static u64 gv11b_userd_pb_get(struct gk20a *g, struct channel_gk20a *c) | |||
238 | return ((u64)hi << 32) | lo; | 238 | return ((u64)hi << 32) | lo; |
239 | } | 239 | } |
240 | 240 | ||
241 | static void gv11b_userd_gp_put(struct gk20a *g, struct channel_gk20a *c) | 241 | void gv11b_userd_gp_put(struct gk20a *g, struct channel_gk20a *c) |
242 | { | 242 | { |
243 | struct nvgpu_mem *userd_mem = &g->fifo.userd; | 243 | struct nvgpu_mem *userd_mem = &g->fifo.userd; |
244 | u32 offset = c->chid * (g->fifo.userd_entry_size / sizeof(u32)); | 244 | u32 offset = c->chid * (g->fifo.userd_entry_size / sizeof(u32)); |
@@ -251,24 +251,24 @@ static void gv11b_userd_gp_put(struct gk20a *g, struct channel_gk20a *c) | |||
251 | gv11b_ring_channel_doorbell(c); | 251 | gv11b_ring_channel_doorbell(c); |
252 | } | 252 | } |
253 | 253 | ||
254 | static void channel_gv11b_unbind(struct channel_gk20a *ch) | 254 | void channel_gv11b_unbind(struct channel_gk20a *ch) |
255 | { | 255 | { |
256 | gk20a_dbg_fn(""); | 256 | gk20a_dbg_fn(""); |
257 | 257 | ||
258 | gk20a_fifo_channel_unbind(ch); | 258 | gk20a_fifo_channel_unbind(ch); |
259 | } | 259 | } |
260 | 260 | ||
261 | static u32 gv11b_fifo_get_num_fifos(struct gk20a *g) | 261 | u32 gv11b_fifo_get_num_fifos(struct gk20a *g) |
262 | { | 262 | { |
263 | return ccsr_channel__size_1_v(); | 263 | return ccsr_channel__size_1_v(); |
264 | } | 264 | } |
265 | 265 | ||
266 | static bool gv11b_is_fault_engine_subid_gpc(struct gk20a *g, u32 engine_subid) | 266 | bool gv11b_is_fault_engine_subid_gpc(struct gk20a *g, u32 engine_subid) |
267 | { | 267 | { |
268 | return (engine_subid == gmmu_fault_client_type_gpc_v()); | 268 | return (engine_subid == gmmu_fault_client_type_gpc_v()); |
269 | } | 269 | } |
270 | 270 | ||
271 | static void gv11b_dump_channel_status_ramfc(struct gk20a *g, | 271 | void gv11b_dump_channel_status_ramfc(struct gk20a *g, |
272 | struct gk20a_debug_output *o, | 272 | struct gk20a_debug_output *o, |
273 | u32 chid, | 273 | u32 chid, |
274 | struct ch_state *ch_state) | 274 | struct ch_state *ch_state) |
@@ -322,7 +322,7 @@ static void gv11b_dump_channel_status_ramfc(struct gk20a *g, | |||
322 | gk20a_debug_output(o, "\n"); | 322 | gk20a_debug_output(o, "\n"); |
323 | } | 323 | } |
324 | 324 | ||
325 | static void gv11b_dump_eng_status(struct gk20a *g, | 325 | void gv11b_dump_eng_status(struct gk20a *g, |
326 | struct gk20a_debug_output *o) | 326 | struct gk20a_debug_output *o) |
327 | { | 327 | { |
328 | u32 i, host_num_engines; | 328 | u32 i, host_num_engines; |
@@ -355,7 +355,7 @@ static void gv11b_dump_eng_status(struct gk20a *g, | |||
355 | gk20a_debug_output(o, "\n"); | 355 | gk20a_debug_output(o, "\n"); |
356 | } | 356 | } |
357 | 357 | ||
358 | static u32 gv11b_fifo_intr_0_error_mask(struct gk20a *g) | 358 | u32 gv11b_fifo_intr_0_error_mask(struct gk20a *g) |
359 | { | 359 | { |
360 | u32 intr_0_error_mask = | 360 | u32 intr_0_error_mask = |
361 | fifo_intr_0_bind_error_pending_f() | | 361 | fifo_intr_0_bind_error_pending_f() | |
@@ -698,7 +698,7 @@ static int gv11b_fifo_poll_runlist_preempt_pending(struct gk20a *g, | |||
698 | return ret; | 698 | return ret; |
699 | } | 699 | } |
700 | 700 | ||
701 | static int gv11b_fifo_is_preempt_pending(struct gk20a *g, u32 id, | 701 | int gv11b_fifo_is_preempt_pending(struct gk20a *g, u32 id, |
702 | unsigned int id_type, unsigned int timeout_rc_type) | 702 | unsigned int id_type, unsigned int timeout_rc_type) |
703 | { | 703 | { |
704 | struct fifo_gk20a *f = &g->fifo; | 704 | struct fifo_gk20a *f = &g->fifo; |
@@ -747,7 +747,7 @@ static int gv11b_fifo_is_preempt_pending(struct gk20a *g, u32 id, | |||
747 | return ret; | 747 | return ret; |
748 | } | 748 | } |
749 | 749 | ||
750 | static int gv11b_fifo_preempt_channel(struct gk20a *g, u32 chid) | 750 | int gv11b_fifo_preempt_channel(struct gk20a *g, u32 chid) |
751 | { | 751 | { |
752 | struct fifo_gk20a *f = &g->fifo; | 752 | struct fifo_gk20a *f = &g->fifo; |
753 | u32 tsgid; | 753 | u32 tsgid; |
@@ -784,7 +784,7 @@ static int __locked_fifo_preempt_runlists(struct gk20a *g, u32 runlists_mask) | |||
784 | return ret; | 784 | return ret; |
785 | } | 785 | } |
786 | 786 | ||
787 | static int gv11b_fifo_preempt_tsg(struct gk20a *g, u32 tsgid) | 787 | int gv11b_fifo_preempt_tsg(struct gk20a *g, u32 tsgid) |
788 | { | 788 | { |
789 | struct fifo_gk20a *f = &g->fifo; | 789 | struct fifo_gk20a *f = &g->fifo; |
790 | u32 ret = 0; | 790 | u32 ret = 0; |
@@ -868,7 +868,7 @@ static int __locked_fifo_preempt_ch_tsg(struct gk20a *g, u32 id, | |||
868 | } | 868 | } |
869 | 869 | ||
870 | 870 | ||
871 | static int gv11b_fifo_preempt_ch_tsg(struct gk20a *g, u32 id, | 871 | int gv11b_fifo_preempt_ch_tsg(struct gk20a *g, u32 id, |
872 | unsigned int id_type, unsigned int timeout_rc_type) | 872 | unsigned int id_type, unsigned int timeout_rc_type) |
873 | { | 873 | { |
874 | struct fifo_gk20a *f = &g->fifo; | 874 | struct fifo_gk20a *f = &g->fifo; |
@@ -906,7 +906,7 @@ static int gv11b_fifo_preempt_ch_tsg(struct gk20a *g, u32 id, | |||
906 | 906 | ||
907 | } | 907 | } |
908 | 908 | ||
909 | static void gv11b_fifo_teardown_ch_tsg(struct gk20a *g, u32 act_eng_bitmask, | 909 | void gv11b_fifo_teardown_ch_tsg(struct gk20a *g, u32 act_eng_bitmask, |
910 | u32 id, unsigned int id_type, unsigned int rc_type, | 910 | u32 id, unsigned int id_type, unsigned int rc_type, |
911 | struct mmu_fault_info *mmfault) | 911 | struct mmu_fault_info *mmfault) |
912 | { | 912 | { |
@@ -1058,7 +1058,7 @@ static void gv11b_fifo_teardown_ch_tsg(struct gk20a *g, u32 act_eng_bitmask, | |||
1058 | nvgpu_pmu_enable_elpg(g); | 1058 | nvgpu_pmu_enable_elpg(g); |
1059 | } | 1059 | } |
1060 | 1060 | ||
1061 | static void gv11b_fifo_init_pbdma_intr_descs(struct fifo_gk20a *f) | 1061 | void gv11b_fifo_init_pbdma_intr_descs(struct fifo_gk20a *f) |
1062 | { | 1062 | { |
1063 | /* | 1063 | /* |
1064 | * These are all errors which indicate something really wrong | 1064 | * These are all errors which indicate something really wrong |
@@ -1118,7 +1118,7 @@ static u32 gv11b_fifo_intr_0_en_mask(struct gk20a *g) | |||
1118 | return intr_0_en_mask; | 1118 | return intr_0_en_mask; |
1119 | } | 1119 | } |
1120 | 1120 | ||
1121 | static int gv11b_init_fifo_reset_enable_hw(struct gk20a *g) | 1121 | int gv11b_init_fifo_reset_enable_hw(struct gk20a *g) |
1122 | { | 1122 | { |
1123 | u32 intr_stall; | 1123 | u32 intr_stall; |
1124 | u32 mask; | 1124 | u32 mask; |
@@ -1232,7 +1232,7 @@ static const char *const gv11b_sched_error_str[] = { | |||
1232 | "bad_tsg", | 1232 | "bad_tsg", |
1233 | }; | 1233 | }; |
1234 | 1234 | ||
1235 | static bool gv11b_fifo_handle_sched_error(struct gk20a *g) | 1235 | bool gv11b_fifo_handle_sched_error(struct gk20a *g) |
1236 | { | 1236 | { |
1237 | u32 sched_error; | 1237 | u32 sched_error; |
1238 | 1238 | ||
@@ -1348,7 +1348,7 @@ static u32 gv11b_fifo_ctxsw_timeout_info(struct gk20a *g, u32 active_eng_id) | |||
1348 | return tsgid; | 1348 | return tsgid; |
1349 | } | 1349 | } |
1350 | 1350 | ||
1351 | static bool gv11b_fifo_handle_ctxsw_timeout(struct gk20a *g, u32 fifo_intr) | 1351 | bool gv11b_fifo_handle_ctxsw_timeout(struct gk20a *g, u32 fifo_intr) |
1352 | { | 1352 | { |
1353 | bool ret = false; | 1353 | bool ret = false; |
1354 | u32 tsgid = FIFO_INVAL_TSG_ID; | 1354 | u32 tsgid = FIFO_INVAL_TSG_ID; |
@@ -1411,7 +1411,7 @@ static bool gv11b_fifo_handle_ctxsw_timeout(struct gk20a *g, u32 fifo_intr) | |||
1411 | return ret; | 1411 | return ret; |
1412 | } | 1412 | } |
1413 | 1413 | ||
1414 | static unsigned int gv11b_fifo_handle_pbdma_intr_0(struct gk20a *g, | 1414 | unsigned int gv11b_fifo_handle_pbdma_intr_0(struct gk20a *g, |
1415 | u32 pbdma_id, u32 pbdma_intr_0, | 1415 | u32 pbdma_id, u32 pbdma_intr_0, |
1416 | u32 *handled, u32 *error_notifier) | 1416 | u32 *handled, u32 *error_notifier) |
1417 | { | 1417 | { |
@@ -1460,7 +1460,7 @@ static unsigned int gv11b_fifo_handle_pbdma_intr_0(struct gk20a *g, | |||
1460 | * will have to be destroyed. | 1460 | * will have to be destroyed. |
1461 | */ | 1461 | */ |
1462 | 1462 | ||
1463 | static unsigned int gv11b_fifo_handle_pbdma_intr_1(struct gk20a *g, | 1463 | unsigned int gv11b_fifo_handle_pbdma_intr_1(struct gk20a *g, |
1464 | u32 pbdma_id, u32 pbdma_intr_1, | 1464 | u32 pbdma_id, u32 pbdma_intr_1, |
1465 | u32 *handled, u32 *error_notifier) | 1465 | u32 *handled, u32 *error_notifier) |
1466 | { | 1466 | { |
@@ -1537,7 +1537,7 @@ unsigned int gv11b_fifo_get_eng_method_buffer_size(struct gk20a *g) | |||
1537 | return buffer_size; | 1537 | return buffer_size; |
1538 | } | 1538 | } |
1539 | 1539 | ||
1540 | static void gv11b_fifo_init_eng_method_buffers(struct gk20a *g, | 1540 | void gv11b_fifo_init_eng_method_buffers(struct gk20a *g, |
1541 | struct tsg_gk20a *tsg) | 1541 | struct tsg_gk20a *tsg) |
1542 | { | 1542 | { |
1543 | struct vm_gk20a *vm = g->mm.bar2.vm; | 1543 | struct vm_gk20a *vm = g->mm.bar2.vm; |
@@ -1577,7 +1577,7 @@ static void gv11b_fifo_init_eng_method_buffers(struct gk20a *g, | |||
1577 | 1577 | ||
1578 | } | 1578 | } |
1579 | 1579 | ||
1580 | static void gv11b_fifo_deinit_eng_method_buffers(struct gk20a *g, | 1580 | void gv11b_fifo_deinit_eng_method_buffers(struct gk20a *g, |
1581 | struct tsg_gk20a *tsg) | 1581 | struct tsg_gk20a *tsg) |
1582 | { | 1582 | { |
1583 | struct vm_gk20a *vm = g->mm.bar2.vm; | 1583 | struct vm_gk20a *vm = g->mm.bar2.vm; |
@@ -1596,7 +1596,7 @@ static void gv11b_fifo_deinit_eng_method_buffers(struct gk20a *g, | |||
1596 | } | 1596 | } |
1597 | 1597 | ||
1598 | #ifdef CONFIG_TEGRA_GK20A_NVHOST | 1598 | #ifdef CONFIG_TEGRA_GK20A_NVHOST |
1599 | static int gv11b_fifo_alloc_syncpt_buf(struct channel_gk20a *c, | 1599 | int gv11b_fifo_alloc_syncpt_buf(struct channel_gk20a *c, |
1600 | u32 syncpt_id, struct nvgpu_mem *syncpt_buf) | 1600 | u32 syncpt_id, struct nvgpu_mem *syncpt_buf) |
1601 | { | 1601 | { |
1602 | struct page **pages; | 1602 | struct page **pages; |
@@ -1631,14 +1631,14 @@ static int gv11b_fifo_alloc_syncpt_buf(struct channel_gk20a *c, | |||
1631 | return err; | 1631 | return err; |
1632 | } | 1632 | } |
1633 | 1633 | ||
1634 | static void gv11b_fifo_free_syncpt_buf(struct channel_gk20a *c, | 1634 | void gv11b_fifo_free_syncpt_buf(struct channel_gk20a *c, |
1635 | struct nvgpu_mem *syncpt_buf) | 1635 | struct nvgpu_mem *syncpt_buf) |
1636 | { | 1636 | { |
1637 | nvgpu_gmmu_unmap(c->vm, syncpt_buf, syncpt_buf->gpu_va); | 1637 | nvgpu_gmmu_unmap(c->vm, syncpt_buf, syncpt_buf->gpu_va); |
1638 | nvgpu_dma_free(c->g, syncpt_buf); | 1638 | nvgpu_dma_free(c->g, syncpt_buf); |
1639 | } | 1639 | } |
1640 | 1640 | ||
1641 | static void gv11b_fifo_add_syncpt_wait_cmd(struct gk20a *g, | 1641 | void gv11b_fifo_add_syncpt_wait_cmd(struct gk20a *g, |
1642 | struct priv_cmd_entry *cmd, u32 off, | 1642 | struct priv_cmd_entry *cmd, u32 off, |
1643 | u32 id, u32 thresh, u64 gpu_va_base) | 1643 | u32 id, u32 thresh, u64 gpu_va_base) |
1644 | { | 1644 | { |
@@ -1668,12 +1668,12 @@ static void gv11b_fifo_add_syncpt_wait_cmd(struct gk20a *g, | |||
1668 | nvgpu_mem_wr32(g, cmd->mem, off++, 0x4 | (0x1 << 12)); | 1668 | nvgpu_mem_wr32(g, cmd->mem, off++, 0x4 | (0x1 << 12)); |
1669 | } | 1669 | } |
1670 | 1670 | ||
1671 | static u32 gv11b_fifo_get_syncpt_wait_cmd_size(void) | 1671 | u32 gv11b_fifo_get_syncpt_wait_cmd_size(void) |
1672 | { | 1672 | { |
1673 | return 8; | 1673 | return 8; |
1674 | } | 1674 | } |
1675 | 1675 | ||
1676 | static void gv11b_fifo_add_syncpt_incr_cmd(struct gk20a *g, | 1676 | void gv11b_fifo_add_syncpt_incr_cmd(struct gk20a *g, |
1677 | bool wfi_cmd, struct priv_cmd_entry *cmd, | 1677 | bool wfi_cmd, struct priv_cmd_entry *cmd, |
1678 | u32 id, u64 gpu_va_base) | 1678 | u32 id, u64 gpu_va_base) |
1679 | { | 1679 | { |
@@ -1706,13 +1706,13 @@ static void gv11b_fifo_add_syncpt_incr_cmd(struct gk20a *g, | |||
1706 | nvgpu_mem_wr32(g, cmd->mem, off++, 0); | 1706 | nvgpu_mem_wr32(g, cmd->mem, off++, 0); |
1707 | } | 1707 | } |
1708 | 1708 | ||
1709 | static u32 gv11b_fifo_get_syncpt_incr_cmd_size(bool wfi_cmd) | 1709 | u32 gv11b_fifo_get_syncpt_incr_cmd_size(bool wfi_cmd) |
1710 | { | 1710 | { |
1711 | return 9; | 1711 | return 9; |
1712 | } | 1712 | } |
1713 | #endif /* CONFIG_TEGRA_GK20A_NVHOST */ | 1713 | #endif /* CONFIG_TEGRA_GK20A_NVHOST */ |
1714 | 1714 | ||
1715 | static int gv11b_init_fifo_setup_hw(struct gk20a *g) | 1715 | int gv11b_init_fifo_setup_hw(struct gk20a *g) |
1716 | { | 1716 | { |
1717 | struct fifo_gk20a *f = &g->fifo; | 1717 | struct fifo_gk20a *f = &g->fifo; |
1718 | 1718 | ||
@@ -1790,58 +1790,3 @@ void gv11b_mmu_fault_id_to_eng_pbdma_id_and_veid(struct gk20a *g, | |||
1790 | else | 1790 | else |
1791 | *pbdma_id = FIFO_INVAL_PBDMA_ID; | 1791 | *pbdma_id = FIFO_INVAL_PBDMA_ID; |
1792 | } | 1792 | } |
1793 | |||
1794 | void gv11b_init_fifo(struct gpu_ops *gops) | ||
1795 | { | ||
1796 | gp10b_init_fifo(gops); | ||
1797 | /* for gv11b no need to do any thing special for fifo hw setup */ | ||
1798 | gops->fifo.init_fifo_setup_hw = gv11b_init_fifo_setup_hw; | ||
1799 | gops->fifo.runlist_entry_size = ram_rl_entry_size_v; | ||
1800 | gops->fifo.get_tsg_runlist_entry = gv11b_get_tsg_runlist_entry; | ||
1801 | gops->fifo.get_ch_runlist_entry = gv11b_get_ch_runlist_entry; | ||
1802 | gops->fifo.get_num_fifos = gv11b_fifo_get_num_fifos; | ||
1803 | gops->fifo.userd_gp_get = gv11b_userd_gp_get; | ||
1804 | gops->fifo.userd_gp_put = gv11b_userd_gp_put; | ||
1805 | gops->fifo.userd_pb_get = gv11b_userd_pb_get; | ||
1806 | gops->fifo.setup_ramfc = channel_gv11b_setup_ramfc; | ||
1807 | gops->fifo.resetup_ramfc = NULL; | ||
1808 | gops->fifo.unbind_channel = channel_gv11b_unbind; | ||
1809 | gops->fifo.eng_runlist_base_size = fifo_eng_runlist_base__size_1_v; | ||
1810 | gops->fifo.free_channel_ctx_header = gv11b_free_subctx_header; | ||
1811 | gops->fifo.device_info_fault_id = top_device_info_data_fault_id_enum_v; | ||
1812 | gops->fifo.is_fault_engine_subid_gpc = gv11b_is_fault_engine_subid_gpc; | ||
1813 | gops->fifo.trigger_mmu_fault = NULL; | ||
1814 | gops->fifo.get_mmu_fault_info = NULL; | ||
1815 | gops->fifo.dump_pbdma_status = gk20a_dump_pbdma_status; | ||
1816 | gops->fifo.dump_eng_status = gv11b_dump_eng_status; | ||
1817 | gops->fifo.dump_channel_status_ramfc = gv11b_dump_channel_status_ramfc; | ||
1818 | gops->fifo.intr_0_error_mask = gv11b_fifo_intr_0_error_mask; | ||
1819 | gops->fifo.preempt_channel = gv11b_fifo_preempt_channel; | ||
1820 | gops->fifo.preempt_tsg = gv11b_fifo_preempt_tsg; | ||
1821 | gops->fifo.is_preempt_pending = gv11b_fifo_is_preempt_pending; | ||
1822 | gops->fifo.preempt_ch_tsg = gv11b_fifo_preempt_ch_tsg; | ||
1823 | gops->fifo.init_pbdma_intr_descs = gv11b_fifo_init_pbdma_intr_descs; | ||
1824 | gops->fifo.reset_enable_hw = gv11b_init_fifo_reset_enable_hw; | ||
1825 | gops->fifo.teardown_ch_tsg = gv11b_fifo_teardown_ch_tsg; | ||
1826 | gops->fifo.handle_sched_error = gv11b_fifo_handle_sched_error; | ||
1827 | gops->fifo.handle_ctxsw_timeout = gv11b_fifo_handle_ctxsw_timeout; | ||
1828 | gops->fifo.handle_pbdma_intr_0 = | ||
1829 | gv11b_fifo_handle_pbdma_intr_0; | ||
1830 | gops->fifo.handle_pbdma_intr_1 = | ||
1831 | gv11b_fifo_handle_pbdma_intr_1; | ||
1832 | gops->fifo.init_eng_method_buffers = | ||
1833 | gv11b_fifo_init_eng_method_buffers; | ||
1834 | gops->fifo.deinit_eng_method_buffers = | ||
1835 | gv11b_fifo_deinit_eng_method_buffers; | ||
1836 | #ifdef CONFIG_TEGRA_GK20A_NVHOST | ||
1837 | gops->fifo.alloc_syncpt_buf = gv11b_fifo_alloc_syncpt_buf; | ||
1838 | gops->fifo.free_syncpt_buf = gv11b_fifo_free_syncpt_buf; | ||
1839 | gops->fifo.add_syncpt_wait_cmd = gv11b_fifo_add_syncpt_wait_cmd; | ||
1840 | gops->fifo.get_syncpt_wait_cmd_size = | ||
1841 | gv11b_fifo_get_syncpt_wait_cmd_size; | ||
1842 | gops->fifo.add_syncpt_incr_cmd = gv11b_fifo_add_syncpt_incr_cmd; | ||
1843 | gops->fifo.get_syncpt_incr_cmd_size = | ||
1844 | gv11b_fifo_get_syncpt_incr_cmd_size; | ||
1845 | #endif | ||
1846 | |||
1847 | } | ||