aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_state.c
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2010-10-24 10:14:41 -0400
committerBen Skeggs <bskeggs@redhat.com>2010-12-03 00:11:20 -0500
commita5cf68b04b2b8ea716cf6fd8499c1c54d05fdf5e (patch)
tree87f6007ef18c8d488f590523b90bcd8766537778 /drivers/gpu/drm/nouveau/nouveau_state.c
parente419cf0954901bb3a987f8b76cbc9654ca06121c (diff)
drm/nouveau: Rework tile region handling.
The point is to share more code between the PFB/PGRAPH tile region hooks, and give the hardware specific functions a chance to allocate per-region resources. Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_state.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_state.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
index ec9d193b6f61..1a7a50ccb7c8 100644
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
@@ -118,7 +118,9 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
118 engine->timer.takedown = nv04_timer_takedown; 118 engine->timer.takedown = nv04_timer_takedown;
119 engine->fb.init = nv10_fb_init; 119 engine->fb.init = nv10_fb_init;
120 engine->fb.takedown = nv10_fb_takedown; 120 engine->fb.takedown = nv10_fb_takedown;
121 engine->fb.set_region_tiling = nv10_fb_set_region_tiling; 121 engine->fb.init_tile_region = nv10_fb_init_tile_region;
122 engine->fb.set_tile_region = nv10_fb_set_tile_region;
123 engine->fb.free_tile_region = nv10_fb_free_tile_region;
122 engine->graph.init = nv10_graph_init; 124 engine->graph.init = nv10_graph_init;
123 engine->graph.takedown = nv10_graph_takedown; 125 engine->graph.takedown = nv10_graph_takedown;
124 engine->graph.channel = nv10_graph_channel; 126 engine->graph.channel = nv10_graph_channel;
@@ -127,7 +129,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
127 engine->graph.fifo_access = nv04_graph_fifo_access; 129 engine->graph.fifo_access = nv04_graph_fifo_access;
128 engine->graph.load_context = nv10_graph_load_context; 130 engine->graph.load_context = nv10_graph_load_context;
129 engine->graph.unload_context = nv10_graph_unload_context; 131 engine->graph.unload_context = nv10_graph_unload_context;
130 engine->graph.set_region_tiling = nv10_graph_set_region_tiling; 132 engine->graph.set_tile_region = nv10_graph_set_tile_region;
131 engine->fifo.channels = 32; 133 engine->fifo.channels = 32;
132 engine->fifo.init = nv10_fifo_init; 134 engine->fifo.init = nv10_fifo_init;
133 engine->fifo.takedown = nouveau_stub_takedown; 135 engine->fifo.takedown = nouveau_stub_takedown;
@@ -173,7 +175,9 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
173 engine->timer.takedown = nv04_timer_takedown; 175 engine->timer.takedown = nv04_timer_takedown;
174 engine->fb.init = nv10_fb_init; 176 engine->fb.init = nv10_fb_init;
175 engine->fb.takedown = nv10_fb_takedown; 177 engine->fb.takedown = nv10_fb_takedown;
176 engine->fb.set_region_tiling = nv10_fb_set_region_tiling; 178 engine->fb.init_tile_region = nv10_fb_init_tile_region;
179 engine->fb.set_tile_region = nv10_fb_set_tile_region;
180 engine->fb.free_tile_region = nv10_fb_free_tile_region;
177 engine->graph.init = nv20_graph_init; 181 engine->graph.init = nv20_graph_init;
178 engine->graph.takedown = nv20_graph_takedown; 182 engine->graph.takedown = nv20_graph_takedown;
179 engine->graph.channel = nv10_graph_channel; 183 engine->graph.channel = nv10_graph_channel;
@@ -182,7 +186,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
182 engine->graph.fifo_access = nv04_graph_fifo_access; 186 engine->graph.fifo_access = nv04_graph_fifo_access;
183 engine->graph.load_context = nv20_graph_load_context; 187 engine->graph.load_context = nv20_graph_load_context;
184 engine->graph.unload_context = nv20_graph_unload_context; 188 engine->graph.unload_context = nv20_graph_unload_context;
185 engine->graph.set_region_tiling = nv20_graph_set_region_tiling; 189 engine->graph.set_tile_region = nv20_graph_set_tile_region;
186 engine->fifo.channels = 32; 190 engine->fifo.channels = 32;
187 engine->fifo.init = nv10_fifo_init; 191 engine->fifo.init = nv10_fifo_init;
188 engine->fifo.takedown = nouveau_stub_takedown; 192 engine->fifo.takedown = nouveau_stub_takedown;
@@ -228,7 +232,9 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
228 engine->timer.takedown = nv04_timer_takedown; 232 engine->timer.takedown = nv04_timer_takedown;
229 engine->fb.init = nv30_fb_init; 233 engine->fb.init = nv30_fb_init;
230 engine->fb.takedown = nv30_fb_takedown; 234 engine->fb.takedown = nv30_fb_takedown;
231 engine->fb.set_region_tiling = nv10_fb_set_region_tiling; 235 engine->fb.init_tile_region = nv30_fb_init_tile_region;
236 engine->fb.set_tile_region = nv10_fb_set_tile_region;
237 engine->fb.free_tile_region = nv30_fb_free_tile_region;
232 engine->graph.init = nv30_graph_init; 238 engine->graph.init = nv30_graph_init;
233 engine->graph.takedown = nv20_graph_takedown; 239 engine->graph.takedown = nv20_graph_takedown;
234 engine->graph.fifo_access = nv04_graph_fifo_access; 240 engine->graph.fifo_access = nv04_graph_fifo_access;
@@ -237,7 +243,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
237 engine->graph.destroy_context = nv20_graph_destroy_context; 243 engine->graph.destroy_context = nv20_graph_destroy_context;
238 engine->graph.load_context = nv20_graph_load_context; 244 engine->graph.load_context = nv20_graph_load_context;
239 engine->graph.unload_context = nv20_graph_unload_context; 245 engine->graph.unload_context = nv20_graph_unload_context;
240 engine->graph.set_region_tiling = nv20_graph_set_region_tiling; 246 engine->graph.set_tile_region = nv20_graph_set_tile_region;
241 engine->fifo.channels = 32; 247 engine->fifo.channels = 32;
242 engine->fifo.init = nv10_fifo_init; 248 engine->fifo.init = nv10_fifo_init;
243 engine->fifo.takedown = nouveau_stub_takedown; 249 engine->fifo.takedown = nouveau_stub_takedown;
@@ -286,7 +292,9 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
286 engine->timer.takedown = nv04_timer_takedown; 292 engine->timer.takedown = nv04_timer_takedown;
287 engine->fb.init = nv40_fb_init; 293 engine->fb.init = nv40_fb_init;
288 engine->fb.takedown = nv40_fb_takedown; 294 engine->fb.takedown = nv40_fb_takedown;
289 engine->fb.set_region_tiling = nv40_fb_set_region_tiling; 295 engine->fb.init_tile_region = nv30_fb_init_tile_region;
296 engine->fb.set_tile_region = nv40_fb_set_tile_region;
297 engine->fb.free_tile_region = nv30_fb_free_tile_region;
290 engine->graph.init = nv40_graph_init; 298 engine->graph.init = nv40_graph_init;
291 engine->graph.takedown = nv40_graph_takedown; 299 engine->graph.takedown = nv40_graph_takedown;
292 engine->graph.fifo_access = nv04_graph_fifo_access; 300 engine->graph.fifo_access = nv04_graph_fifo_access;
@@ -295,7 +303,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
295 engine->graph.destroy_context = nv40_graph_destroy_context; 303 engine->graph.destroy_context = nv40_graph_destroy_context;
296 engine->graph.load_context = nv40_graph_load_context; 304 engine->graph.load_context = nv40_graph_load_context;
297 engine->graph.unload_context = nv40_graph_unload_context; 305 engine->graph.unload_context = nv40_graph_unload_context;
298 engine->graph.set_region_tiling = nv40_graph_set_region_tiling; 306 engine->graph.set_tile_region = nv40_graph_set_tile_region;
299 engine->fifo.channels = 32; 307 engine->fifo.channels = 32;
300 engine->fifo.init = nv40_fifo_init; 308 engine->fifo.init = nv40_fifo_init;
301 engine->fifo.takedown = nouveau_stub_takedown; 309 engine->fifo.takedown = nouveau_stub_takedown;
@@ -596,6 +604,7 @@ nouveau_card_init(struct drm_device *dev)
596 goto out; 604 goto out;
597 engine = &dev_priv->engine; 605 engine = &dev_priv->engine;
598 spin_lock_init(&dev_priv->channels.lock); 606 spin_lock_init(&dev_priv->channels.lock);
607 spin_lock_init(&dev_priv->tile.lock);
599 spin_lock_init(&dev_priv->context_switch_lock); 608 spin_lock_init(&dev_priv->context_switch_lock);
600 609
601 /* Make the CRTCs and I2C buses accessible */ 610 /* Make the CRTCs and I2C buses accessible */