diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nv30_fb.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nv30_fb.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nv30_fb.c b/drivers/gpu/drm/nouveau/nv30_fb.c index 4a3f2f095128..e0135f0e2144 100644 --- a/drivers/gpu/drm/nouveau/nv30_fb.c +++ b/drivers/gpu/drm/nouveau/nv30_fb.c | |||
@@ -29,6 +29,27 @@ | |||
29 | #include "nouveau_drv.h" | 29 | #include "nouveau_drv.h" |
30 | #include "nouveau_drm.h" | 30 | #include "nouveau_drm.h" |
31 | 31 | ||
32 | void | ||
33 | nv30_fb_init_tile_region(struct drm_device *dev, int i, uint32_t addr, | ||
34 | uint32_t size, uint32_t pitch, uint32_t flags) | ||
35 | { | ||
36 | struct drm_nouveau_private *dev_priv = dev->dev_private; | ||
37 | struct nouveau_tile_reg *tile = &dev_priv->tile.reg[i]; | ||
38 | |||
39 | tile->addr = addr | 1; | ||
40 | tile->limit = max(1u, addr + size) - 1; | ||
41 | tile->pitch = pitch; | ||
42 | } | ||
43 | |||
44 | void | ||
45 | nv30_fb_free_tile_region(struct drm_device *dev, int i) | ||
46 | { | ||
47 | struct drm_nouveau_private *dev_priv = dev->dev_private; | ||
48 | struct nouveau_tile_reg *tile = &dev_priv->tile.reg[i]; | ||
49 | |||
50 | tile->addr = tile->limit = tile->pitch = 0; | ||
51 | } | ||
52 | |||
32 | static int | 53 | static int |
33 | calc_bias(struct drm_device *dev, int k, int i, int j) | 54 | calc_bias(struct drm_device *dev, int k, int i, int j) |
34 | { | 55 | { |
@@ -65,7 +86,7 @@ nv30_fb_init(struct drm_device *dev) | |||
65 | 86 | ||
66 | /* Turn all the tiling regions off. */ | 87 | /* Turn all the tiling regions off. */ |
67 | for (i = 0; i < pfb->num_tiles; i++) | 88 | for (i = 0; i < pfb->num_tiles; i++) |
68 | pfb->set_region_tiling(dev, i, 0, 0, 0); | 89 | pfb->set_tile_region(dev, i); |
69 | 90 | ||
70 | /* Init the memory timing regs at 0x10037c/0x1003ac */ | 91 | /* Init the memory timing regs at 0x10037c/0x1003ac */ |
71 | if (dev_priv->chipset == 0x30 || | 92 | if (dev_priv->chipset == 0x30 || |