aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nv20_graph.c
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2010-10-24 10:36:12 -0400
committerBen Skeggs <bskeggs@redhat.com>2010-12-03 00:11:21 -0500
commit87a326a38589e1c919af5f86a59cd571ff0aa831 (patch)
treec8e829f79f4f20bc876d73ba7c3d545b15d12ee0 /drivers/gpu/drm/nouveau/nv20_graph.c
parenta5cf68b04b2b8ea716cf6fd8499c1c54d05fdf5e (diff)
drm/nv20: Add Z compression support.
Signed-off-by: Francisco Jerez <currojerez@riseup.net> Tested-by: Xavier Chantry <chantry.xavier@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nv20_graph.c')
-rw-r--r--drivers/gpu/drm/nouveau/nv20_graph.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/gpu/drm/nouveau/nv20_graph.c b/drivers/gpu/drm/nouveau/nv20_graph.c
index a71871b91c69..bd065c2fcba4 100644
--- a/drivers/gpu/drm/nouveau/nv20_graph.c
+++ b/drivers/gpu/drm/nouveau/nv20_graph.c
@@ -526,6 +526,12 @@ nv20_graph_set_tile_region(struct drm_device *dev, int i)
526 nv_wr32(dev, NV10_PGRAPH_RDI_DATA, tile->pitch); 526 nv_wr32(dev, NV10_PGRAPH_RDI_DATA, tile->pitch);
527 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0010 + 4 * i); 527 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0010 + 4 * i);
528 nv_wr32(dev, NV10_PGRAPH_RDI_DATA, tile->addr); 528 nv_wr32(dev, NV10_PGRAPH_RDI_DATA, tile->addr);
529
530 if (dev_priv->card_type == NV_20) {
531 nv_wr32(dev, NV20_PGRAPH_ZCOMP(i), tile->zcomp);
532 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00ea0090 + 4 * i);
533 nv_wr32(dev, NV10_PGRAPH_RDI_DATA, tile->zcomp);
534 }
529} 535}
530 536
531int 537int
@@ -589,16 +595,17 @@ nv20_graph_init(struct drm_device *dev)
589 nv_wr32(dev, 0x40009C , 0x00000040); 595 nv_wr32(dev, 0x40009C , 0x00000040);
590 596
591 if (dev_priv->chipset >= 0x25) { 597 if (dev_priv->chipset >= 0x25) {
592 nv_wr32(dev, 0x400890, 0x00080000); 598 nv_wr32(dev, 0x400890, 0x00a8cfff);
593 nv_wr32(dev, 0x400610, 0x304B1FB6); 599 nv_wr32(dev, 0x400610, 0x304B1FB6);
594 nv_wr32(dev, 0x400B80, 0x18B82880); 600 nv_wr32(dev, 0x400B80, 0x1cbd3883);
595 nv_wr32(dev, 0x400B84, 0x44000000); 601 nv_wr32(dev, 0x400B84, 0x44000000);
596 nv_wr32(dev, 0x400098, 0x40000080); 602 nv_wr32(dev, 0x400098, 0x40000080);
597 nv_wr32(dev, 0x400B88, 0x000000ff); 603 nv_wr32(dev, 0x400B88, 0x000000ff);
604
598 } else { 605 } else {
599 nv_wr32(dev, 0x400880, 0x00080000); /* 0x0008c7df */ 606 nv_wr32(dev, 0x400880, 0x0008c7df);
600 nv_wr32(dev, 0x400094, 0x00000005); 607 nv_wr32(dev, 0x400094, 0x00000005);
601 nv_wr32(dev, 0x400B80, 0x45CAA208); /* 0x45eae20e */ 608 nv_wr32(dev, 0x400B80, 0x45eae20e);
602 nv_wr32(dev, 0x400B84, 0x24000000); 609 nv_wr32(dev, 0x400B84, 0x24000000);
603 nv_wr32(dev, 0x400098, 0x00000040); 610 nv_wr32(dev, 0x400098, 0x00000040);
604 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00E00038); 611 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00E00038);
@@ -611,12 +618,6 @@ nv20_graph_init(struct drm_device *dev)
611 for (i = 0; i < NV10_PFB_TILE__SIZE; i++) 618 for (i = 0; i < NV10_PFB_TILE__SIZE; i++)
612 nv20_graph_set_tile_region(dev, i); 619 nv20_graph_set_tile_region(dev, i);
613 620
614 for (i = 0; i < 8; i++) {
615 nv_wr32(dev, 0x400980 + i * 4, nv_rd32(dev, 0x100300 + i * 4));
616 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0090 + i * 4);
617 nv_wr32(dev, NV10_PGRAPH_RDI_DATA,
618 nv_rd32(dev, 0x100300 + i * 4));
619 }
620 nv_wr32(dev, 0x4009a0, nv_rd32(dev, 0x100324)); 621 nv_wr32(dev, 0x4009a0, nv_rd32(dev, 0x100324));
621 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA000C); 622 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA000C);
622 nv_wr32(dev, NV10_PGRAPH_RDI_DATA, nv_rd32(dev, 0x100324)); 623 nv_wr32(dev, NV10_PGRAPH_RDI_DATA, nv_rd32(dev, 0x100324));