summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/fifo_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.c35
1 files changed, 27 insertions, 8 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
index 39cb1174..5eba9f12 100644
--- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
@@ -2115,6 +2115,32 @@ static int gk20a_fifo_runlist_wait_pending(struct gk20a *g, u32 runlist_id)
2115 return ret; 2115 return ret;
2116} 2116}
2117 2117
2118static inline u32 gk20a_get_tsg_runlist_entry_0(struct tsg_gk20a *tsg)
2119{
2120 u32 runlist_entry_0 = 0;
2121
2122 if (tsg->timeslice_timeout)
2123 runlist_entry_0 = ram_rl_entry_id_f(tsg->tsgid) |
2124 ram_rl_entry_type_f(ram_rl_entry_type_tsg_f()) |
2125 ram_rl_entry_timeslice_scale_f(
2126 tsg->timeslice_scale) |
2127 ram_rl_entry_timeslice_timeout_f(
2128 tsg->timeslice_timeout) |
2129 ram_rl_entry_tsg_length_f(
2130 tsg->num_active_channels);
2131 else
2132 runlist_entry_0 = ram_rl_entry_id_f(tsg->tsgid) |
2133 ram_rl_entry_type_f(ram_rl_entry_type_tsg_f()) |
2134 ram_rl_entry_timeslice_scale_f(
2135 ram_rl_entry_timeslice_scale_3_f()) |
2136 ram_rl_entry_timeslice_timeout_f(
2137 ram_rl_entry_timeslice_timeout_128_f()) |
2138 ram_rl_entry_tsg_length_f(
2139 tsg->num_active_channels);
2140
2141 return runlist_entry_0;
2142}
2143
2118static int gk20a_fifo_update_runlist_locked(struct gk20a *g, u32 runlist_id, 2144static int gk20a_fifo_update_runlist_locked(struct gk20a *g, u32 runlist_id,
2119 u32 hw_chid, bool add, 2145 u32 hw_chid, bool add,
2120 bool wait_for_finish) 2146 bool wait_for_finish)
@@ -2201,14 +2227,7 @@ static int gk20a_fifo_update_runlist_locked(struct gk20a *g, u32 runlist_id,
2201 tsg = &f->tsg[tsgid]; 2227 tsg = &f->tsg[tsgid];
2202 /* add TSG entry */ 2228 /* add TSG entry */
2203 gk20a_dbg_info("add TSG %d to runlist", tsg->tsgid); 2229 gk20a_dbg_info("add TSG %d to runlist", tsg->tsgid);
2204 runlist_entry[0] = ram_rl_entry_id_f(tsg->tsgid) | 2230 runlist_entry[0] = gk20a_get_tsg_runlist_entry_0(tsg);
2205 ram_rl_entry_type_f(ram_rl_entry_type_tsg_f()) |
2206 ram_rl_entry_timeslice_scale_f(
2207 ram_rl_entry_timeslice_scale_3_f()) |
2208 ram_rl_entry_timeslice_timeout_f(
2209 ram_rl_entry_timeslice_timeout_128_f()) |
2210 ram_rl_entry_tsg_length_f(
2211 tsg->num_active_channels);
2212 runlist_entry[1] = 0; 2231 runlist_entry[1] = 0;
2213 runlist_entry += 2; 2232 runlist_entry += 2;
2214 count++; 2233 count++;