aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvc0_grctx.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2011-07-11 01:57:54 -0400
committerBen Skeggs <bskeggs@redhat.com>2011-12-21 04:01:27 -0500
commit06784090ecb3f925616fc797164a74b03d5c0968 (patch)
treef77b4896046fef0a503f690103e943e0c54ffd12 /drivers/gpu/drm/nouveau/nvc0_grctx.c
parentbe7f2615d7d14221a106e6c4ec3a64558e6190ed (diff)
drm/nvc0/gr: add initial support for nvd9, not quite there yet..
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvc0_grctx.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvc0_grctx.c127
1 files changed, 101 insertions, 26 deletions
diff --git a/drivers/gpu/drm/nouveau/nvc0_grctx.c b/drivers/gpu/drm/nouveau/nvc0_grctx.c
index 96b0b93d94ca..de77842b31c0 100644
--- a/drivers/gpu/drm/nouveau/nvc0_grctx.c
+++ b/drivers/gpu/drm/nouveau/nvc0_grctx.c
@@ -1268,6 +1268,17 @@ nvc0_grctx_generate_9039(struct drm_device *dev)
1268static void 1268static void
1269nvc0_grctx_generate_90c0(struct drm_device *dev) 1269nvc0_grctx_generate_90c0(struct drm_device *dev)
1270{ 1270{
1271 struct drm_nouveau_private *dev_priv = dev->dev_private;
1272 int i;
1273
1274 for (i = 0; dev_priv->chipset == 0xd9 && i < 4; i++) {
1275 nv_mthd(dev, 0x90c0, 0x2700 + (i * 0x40), 0x00000000);
1276 nv_mthd(dev, 0x90c0, 0x2720 + (i * 0x40), 0x00000000);
1277 nv_mthd(dev, 0x90c0, 0x2704 + (i * 0x40), 0x00000000);
1278 nv_mthd(dev, 0x90c0, 0x2724 + (i * 0x40), 0x00000000);
1279 nv_mthd(dev, 0x90c0, 0x2708 + (i * 0x40), 0x00000000);
1280 nv_mthd(dev, 0x90c0, 0x2728 + (i * 0x40), 0x00000000);
1281 }
1271 nv_mthd(dev, 0x90c0, 0x270c, 0x00000000); 1282 nv_mthd(dev, 0x90c0, 0x270c, 0x00000000);
1272 nv_mthd(dev, 0x90c0, 0x272c, 0x00000000); 1283 nv_mthd(dev, 0x90c0, 0x272c, 0x00000000);
1273 nv_mthd(dev, 0x90c0, 0x274c, 0x00000000); 1284 nv_mthd(dev, 0x90c0, 0x274c, 0x00000000);
@@ -1276,6 +1287,12 @@ nvc0_grctx_generate_90c0(struct drm_device *dev)
1276 nv_mthd(dev, 0x90c0, 0x27ac, 0x00000000); 1287 nv_mthd(dev, 0x90c0, 0x27ac, 0x00000000);
1277 nv_mthd(dev, 0x90c0, 0x27cc, 0x00000000); 1288 nv_mthd(dev, 0x90c0, 0x27cc, 0x00000000);
1278 nv_mthd(dev, 0x90c0, 0x27ec, 0x00000000); 1289 nv_mthd(dev, 0x90c0, 0x27ec, 0x00000000);
1290 for (i = 0; dev_priv->chipset == 0xd9 && i < 4; i++) {
1291 nv_mthd(dev, 0x90c0, 0x2710 + (i * 0x40), 0x00014000);
1292 nv_mthd(dev, 0x90c0, 0x2730 + (i * 0x40), 0x00014000);
1293 nv_mthd(dev, 0x90c0, 0x2714 + (i * 0x40), 0x00000040);
1294 nv_mthd(dev, 0x90c0, 0x2734 + (i * 0x40), 0x00000040);
1295 }
1279 nv_mthd(dev, 0x90c0, 0x030c, 0x00000001); 1296 nv_mthd(dev, 0x90c0, 0x030c, 0x00000001);
1280 nv_mthd(dev, 0x90c0, 0x1944, 0x00000000); 1297 nv_mthd(dev, 0x90c0, 0x1944, 0x00000000);
1281 nv_mthd(dev, 0x90c0, 0x0758, 0x00000100); 1298 nv_mthd(dev, 0x90c0, 0x0758, 0x00000100);
@@ -1471,14 +1488,20 @@ nvc0_grctx_generate_shaders(struct drm_device *dev)
1471{ 1488{
1472 struct drm_nouveau_private *dev_priv = dev->dev_private; 1489 struct drm_nouveau_private *dev_priv = dev->dev_private;
1473 1490
1474 if (dev_priv->chipset != 0xc1) { 1491 if (dev_priv->chipset == 0xd9) {
1475 nv_wr32(dev, 0x405800, 0x078000bf);
1476 nv_wr32(dev, 0x405830, 0x02180000);
1477 } else {
1478 nv_wr32(dev, 0x405800, 0x0f8000bf); 1492 nv_wr32(dev, 0x405800, 0x0f8000bf);
1479 nv_wr32(dev, 0x405830, 0x02180218); 1493 nv_wr32(dev, 0x405830, 0x02180218);
1494 nv_wr32(dev, 0x405834, 0x08000000);
1495 } else
1496 if (dev_priv->chipset == 0xc1) {
1497 nv_wr32(dev, 0x405800, 0x0f8000bf);
1498 nv_wr32(dev, 0x405830, 0x02180218);
1499 nv_wr32(dev, 0x405834, 0x00000000);
1500 } else {
1501 nv_wr32(dev, 0x405800, 0x078000bf);
1502 nv_wr32(dev, 0x405830, 0x02180000);
1503 nv_wr32(dev, 0x405834, 0x00000000);
1480 } 1504 }
1481 nv_wr32(dev, 0x405834, 0x00000000);
1482 nv_wr32(dev, 0x405838, 0x00000000); 1505 nv_wr32(dev, 0x405838, 0x00000000);
1483 nv_wr32(dev, 0x405854, 0x00000000); 1506 nv_wr32(dev, 0x405854, 0x00000000);
1484 nv_wr32(dev, 0x405870, 0x00000001); 1507 nv_wr32(dev, 0x405870, 0x00000001);
@@ -1509,7 +1532,10 @@ nvc0_grctx_generate_unk64xx(struct drm_device *dev)
1509 nv_wr32(dev, 0x4064ac, 0x00003fff); 1532 nv_wr32(dev, 0x4064ac, 0x00003fff);
1510 nv_wr32(dev, 0x4064b4, 0x00000000); 1533 nv_wr32(dev, 0x4064b4, 0x00000000);
1511 nv_wr32(dev, 0x4064b8, 0x00000000); 1534 nv_wr32(dev, 0x4064b8, 0x00000000);
1512 if (dev_priv->chipset == 0xc1) { 1535 if (dev_priv->chipset == 0xd9)
1536 nv_wr32(dev, 0x4064bc, 0x00000000);
1537 if (dev_priv->chipset == 0xc1 ||
1538 dev_priv->chipset == 0xd9) {
1513 nv_wr32(dev, 0x4064c0, 0x80140078); 1539 nv_wr32(dev, 0x4064c0, 0x80140078);
1514 nv_wr32(dev, 0x4064c4, 0x0086ffff); 1540 nv_wr32(dev, 0x4064c4, 0x0086ffff);
1515 } 1541 }
@@ -1550,10 +1576,23 @@ nvc0_grctx_generate_rop(struct drm_device *dev)
1550 /* ROPC_BROADCAST */ 1576 /* ROPC_BROADCAST */
1551 nv_wr32(dev, 0x408800, 0x02802a3c); 1577 nv_wr32(dev, 0x408800, 0x02802a3c);
1552 nv_wr32(dev, 0x408804, 0x00000040); 1578 nv_wr32(dev, 0x408804, 0x00000040);
1553 nv_wr32(dev, 0x408808, chipset != 0xc1 ? 0x0003e00d : 0x1003e005); 1579 if (chipset == 0xd9) {
1554 nv_wr32(dev, 0x408900, 0x3080b801); 1580 nv_wr32(dev, 0x408808, 0x1043e005);
1555 nv_wr32(dev, 0x408904, chipset != 0xc1 ? 0x02000001 : 0x62000001); 1581 nv_wr32(dev, 0x408900, 0x3080b801);
1556 nv_wr32(dev, 0x408908, 0x00c80929); 1582 nv_wr32(dev, 0x408904, 0x1043e005);
1583 nv_wr32(dev, 0x408908, 0x00c8102f);
1584 } else
1585 if (chipset == 0xc1) {
1586 nv_wr32(dev, 0x408808, 0x1003e005);
1587 nv_wr32(dev, 0x408900, 0x3080b801);
1588 nv_wr32(dev, 0x408904, 0x62000001);
1589 nv_wr32(dev, 0x408908, 0x00c80929);
1590 } else {
1591 nv_wr32(dev, 0x408808, 0x0003e00d);
1592 nv_wr32(dev, 0x408900, 0x3080b801);
1593 nv_wr32(dev, 0x408904, 0x02000001);
1594 nv_wr32(dev, 0x408908, 0x00c80929);
1595 }
1557 nv_wr32(dev, 0x40890c, 0x00000000); 1596 nv_wr32(dev, 0x40890c, 0x00000000);
1558 nv_wr32(dev, 0x408980, 0x0000011d); 1597 nv_wr32(dev, 0x408980, 0x0000011d);
1559} 1598}
@@ -1572,7 +1611,7 @@ nvc0_grctx_generate_gpc(struct drm_device *dev)
1572 nv_wr32(dev, 0x418408, 0x00000000); 1611 nv_wr32(dev, 0x418408, 0x00000000);
1573 nv_wr32(dev, 0x41840c, 0x00001008); 1612 nv_wr32(dev, 0x41840c, 0x00001008);
1574 nv_wr32(dev, 0x418410, 0x0fff0fff); 1613 nv_wr32(dev, 0x418410, 0x0fff0fff);
1575 nv_wr32(dev, 0x418414, 0x00200fff); 1614 nv_wr32(dev, 0x418414, chipset != 0xd9 ? 0x00200fff : 0x02200fff);
1576 nv_wr32(dev, 0x418450, 0x00000000); 1615 nv_wr32(dev, 0x418450, 0x00000000);
1577 nv_wr32(dev, 0x418454, 0x00000000); 1616 nv_wr32(dev, 0x418454, 0x00000000);
1578 nv_wr32(dev, 0x418458, 0x00000000); 1617 nv_wr32(dev, 0x418458, 0x00000000);
@@ -1587,14 +1626,17 @@ nvc0_grctx_generate_gpc(struct drm_device *dev)
1587 nv_wr32(dev, 0x418700, 0x00000002); 1626 nv_wr32(dev, 0x418700, 0x00000002);
1588 nv_wr32(dev, 0x418704, 0x00000080); 1627 nv_wr32(dev, 0x418704, 0x00000080);
1589 nv_wr32(dev, 0x418708, 0x00000000); 1628 nv_wr32(dev, 0x418708, 0x00000000);
1590 nv_wr32(dev, 0x41870c, 0x07c80000); 1629 nv_wr32(dev, 0x41870c, chipset != 0xd9 ? 0x07c80000 : 0x00000000);
1591 nv_wr32(dev, 0x418710, 0x00000000); 1630 nv_wr32(dev, 0x418710, 0x00000000);
1592 nv_wr32(dev, 0x418800, 0x0006860a); 1631 nv_wr32(dev, 0x418800, chipset != 0xd9 ? 0x0006860a : 0x7006860a);
1593 nv_wr32(dev, 0x418808, 0x00000000); 1632 nv_wr32(dev, 0x418808, 0x00000000);
1594 nv_wr32(dev, 0x41880c, 0x00000000); 1633 nv_wr32(dev, 0x41880c, 0x00000000);
1595 nv_wr32(dev, 0x418810, 0x00000000); 1634 nv_wr32(dev, 0x418810, 0x00000000);
1596 nv_wr32(dev, 0x418828, 0x00008442); 1635 nv_wr32(dev, 0x418828, 0x00008442);
1597 nv_wr32(dev, 0x418830, chipset != 0xc1 ? 0x00000001 : 0x10000001); 1636 if (chipset == 0xc1 || chipset == 0xd9)
1637 nv_wr32(dev, 0x418830, 0x10000001);
1638 else
1639 nv_wr32(dev, 0x418830, 0x00000001);
1598 nv_wr32(dev, 0x4188d8, 0x00000008); 1640 nv_wr32(dev, 0x4188d8, 0x00000008);
1599 nv_wr32(dev, 0x4188e0, 0x01000000); 1641 nv_wr32(dev, 0x4188e0, 0x01000000);
1600 nv_wr32(dev, 0x4188e8, 0x00000000); 1642 nv_wr32(dev, 0x4188e8, 0x00000000);
@@ -1602,7 +1644,12 @@ nvc0_grctx_generate_gpc(struct drm_device *dev)
1602 nv_wr32(dev, 0x4188f0, 0x00000000); 1644 nv_wr32(dev, 0x4188f0, 0x00000000);
1603 nv_wr32(dev, 0x4188f4, 0x00000000); 1645 nv_wr32(dev, 0x4188f4, 0x00000000);
1604 nv_wr32(dev, 0x4188f8, 0x00000000); 1646 nv_wr32(dev, 0x4188f8, 0x00000000);
1605 nv_wr32(dev, 0x4188fc, chipset != 0xc1 ? 0x00100000 : 0x00100018); 1647 if (chipset == 0xd9)
1648 nv_wr32(dev, 0x4188fc, 0x20100008);
1649 else if (chipset == 0xc1)
1650 nv_wr32(dev, 0x4188fc, 0x00100018);
1651 else
1652 nv_wr32(dev, 0x4188fc, 0x00100000);
1606 nv_wr32(dev, 0x41891c, 0x00ff00ff); 1653 nv_wr32(dev, 0x41891c, 0x00ff00ff);
1607 nv_wr32(dev, 0x418924, 0x00000000); 1654 nv_wr32(dev, 0x418924, 0x00000000);
1608 nv_wr32(dev, 0x418928, 0x00ffff00); 1655 nv_wr32(dev, 0x418928, 0x00ffff00);
@@ -1616,7 +1663,7 @@ nvc0_grctx_generate_gpc(struct drm_device *dev)
1616 nv_wr32(dev, 0x418a14 + (i * 0x20), 0x00000000); 1663 nv_wr32(dev, 0x418a14 + (i * 0x20), 0x00000000);
1617 nv_wr32(dev, 0x418a18 + (i * 0x20), 0x00000000); 1664 nv_wr32(dev, 0x418a18 + (i * 0x20), 0x00000000);
1618 } 1665 }
1619 nv_wr32(dev, 0x418b00, 0x00000000); 1666 nv_wr32(dev, 0x418b00, chipset != 0xd9 ? 0x00000000 : 0x00000006);
1620 nv_wr32(dev, 0x418b08, 0x0a418820); 1667 nv_wr32(dev, 0x418b08, 0x0a418820);
1621 nv_wr32(dev, 0x418b0c, 0x062080e6); 1668 nv_wr32(dev, 0x418b0c, 0x062080e6);
1622 nv_wr32(dev, 0x418b10, 0x020398a4); 1669 nv_wr32(dev, 0x418b10, 0x020398a4);
@@ -1633,7 +1680,7 @@ nvc0_grctx_generate_gpc(struct drm_device *dev)
1633 nv_wr32(dev, 0x418c24, 0x00000000); 1680 nv_wr32(dev, 0x418c24, 0x00000000);
1634 nv_wr32(dev, 0x418c28, 0x00000000); 1681 nv_wr32(dev, 0x418c28, 0x00000000);
1635 nv_wr32(dev, 0x418c2c, 0x00000000); 1682 nv_wr32(dev, 0x418c2c, 0x00000000);
1636 if (chipset == 0xc1) 1683 if (chipset == 0xc1 || chipset == 0xd9)
1637 nv_wr32(dev, 0x418c6c, 0x00000001); 1684 nv_wr32(dev, 0x418c6c, 0x00000001);
1638 nv_wr32(dev, 0x418c80, 0x20200004); 1685 nv_wr32(dev, 0x418c80, 0x20200004);
1639 nv_wr32(dev, 0x418c8c, 0x00000001); 1686 nv_wr32(dev, 0x418c8c, 0x00000001);
@@ -1653,7 +1700,10 @@ nvc0_grctx_generate_tp(struct drm_device *dev)
1653 nv_wr32(dev, 0x419818, 0x00000000); 1700 nv_wr32(dev, 0x419818, 0x00000000);
1654 nv_wr32(dev, 0x41983c, 0x00038bc7); 1701 nv_wr32(dev, 0x41983c, 0x00038bc7);
1655 nv_wr32(dev, 0x419848, 0x00000000); 1702 nv_wr32(dev, 0x419848, 0x00000000);
1656 nv_wr32(dev, 0x419864, chipset != 0xc1 ? 0x0000012a : 0x00000129); 1703 if (chipset == 0xc1 || chipset == 0xd9)
1704 nv_wr32(dev, 0x419864, 0x00000129);
1705 else
1706 nv_wr32(dev, 0x419864, 0x0000012a);
1657 nv_wr32(dev, 0x419888, 0x00000000); 1707 nv_wr32(dev, 0x419888, 0x00000000);
1658 nv_wr32(dev, 0x419a00, 0x000001f0); 1708 nv_wr32(dev, 0x419a00, 0x000001f0);
1659 nv_wr32(dev, 0x419a04, 0x00000001); 1709 nv_wr32(dev, 0x419a04, 0x00000001);
@@ -1663,7 +1713,9 @@ nvc0_grctx_generate_tp(struct drm_device *dev)
1663 nv_wr32(dev, 0x419a14, 0x00000200); 1713 nv_wr32(dev, 0x419a14, 0x00000200);
1664 nv_wr32(dev, 0x419a1c, 0x00000000); 1714 nv_wr32(dev, 0x419a1c, 0x00000000);
1665 nv_wr32(dev, 0x419a20, 0x00000800); 1715 nv_wr32(dev, 0x419a20, 0x00000800);
1666 if (chipset != 0xc0 && chipset != 0xc8) 1716 if (chipset == 0xd9)
1717 nv_wr32(dev, 0x00419ac4, 0x0017f440);
1718 else if (chipset != 0xc0 && chipset != 0xc8)
1667 nv_wr32(dev, 0x00419ac4, 0x0007f440); 1719 nv_wr32(dev, 0x00419ac4, 0x0007f440);
1668 nv_wr32(dev, 0x419b00, 0x0a418820); 1720 nv_wr32(dev, 0x419b00, 0x0a418820);
1669 nv_wr32(dev, 0x419b04, 0x062080e6); 1721 nv_wr32(dev, 0x419b04, 0x062080e6);
@@ -1672,21 +1724,33 @@ nvc0_grctx_generate_tp(struct drm_device *dev)
1672 nv_wr32(dev, 0x419b10, 0x0a418820); 1724 nv_wr32(dev, 0x419b10, 0x0a418820);
1673 nv_wr32(dev, 0x419b14, 0x000000e6); 1725 nv_wr32(dev, 0x419b14, 0x000000e6);
1674 nv_wr32(dev, 0x419bd0, 0x00900103); 1726 nv_wr32(dev, 0x419bd0, 0x00900103);
1675 nv_wr32(dev, 0x419be0, chipset != 0xc1 ? 0x00000001 : 0x00400001); 1727 if (chipset == 0xc1 || chipset == 0xd9)
1728 nv_wr32(dev, 0x419be0, 0x00400001);
1729 else
1730 nv_wr32(dev, 0x419be0, 0x00000001);
1676 nv_wr32(dev, 0x419be4, 0x00000000); 1731 nv_wr32(dev, 0x419be4, 0x00000000);
1677 nv_wr32(dev, 0x419c00, 0x00000002); 1732 nv_wr32(dev, 0x419c00, chipset != 0xd9 ? 0x00000002 : 0x0000000a);
1678 nv_wr32(dev, 0x419c04, 0x00000006); 1733 nv_wr32(dev, 0x419c04, 0x00000006);
1679 nv_wr32(dev, 0x419c08, 0x00000002); 1734 nv_wr32(dev, 0x419c08, 0x00000002);
1680 nv_wr32(dev, 0x419c20, 0x00000000); 1735 nv_wr32(dev, 0x419c20, 0x00000000);
1681 if (chipset == 0xce || chipset == 0xcf) 1736 if (dev_priv->chipset == 0xd9) {
1737 nv_wr32(dev, 0x419c24, 0x00084210);
1738 nv_wr32(dev, 0x419c28, 0x3cf3cf3c);
1682 nv_wr32(dev, 0x419cb0, 0x00020048); 1739 nv_wr32(dev, 0x419cb0, 0x00020048);
1683 else 1740 } else
1741 if (chipset == 0xce || chipset == 0xcf) {
1742 nv_wr32(dev, 0x419cb0, 0x00020048);
1743 } else {
1684 nv_wr32(dev, 0x419cb0, 0x00060048); 1744 nv_wr32(dev, 0x419cb0, 0x00060048);
1745 }
1685 nv_wr32(dev, 0x419ce8, 0x00000000); 1746 nv_wr32(dev, 0x419ce8, 0x00000000);
1686 nv_wr32(dev, 0x419cf4, 0x00000183); 1747 nv_wr32(dev, 0x419cf4, 0x00000183);
1687 nv_wr32(dev, 0x419d20, chipset != 0xc1 ? 0x02180000 : 0x12180000); 1748 if (chipset == 0xc1 || chipset == 0xd9)
1749 nv_wr32(dev, 0x419d20, 0x12180000);
1750 else
1751 nv_wr32(dev, 0x419d20, 0x02180000);
1688 nv_wr32(dev, 0x419d24, 0x00001fff); 1752 nv_wr32(dev, 0x419d24, 0x00001fff);
1689 if (chipset == 0xc1) 1753 if (chipset == 0xc1 || chipset == 0xd9)
1690 nv_wr32(dev, 0x419d44, 0x02180218); 1754 nv_wr32(dev, 0x419d44, 0x02180218);
1691 nv_wr32(dev, 0x419e04, 0x00000000); 1755 nv_wr32(dev, 0x419e04, 0x00000000);
1692 nv_wr32(dev, 0x419e08, 0x00000000); 1756 nv_wr32(dev, 0x419e08, 0x00000000);
@@ -1986,6 +2050,10 @@ nvc0_grctx_generate(struct nouveau_channel *chan)
1986 nv_icmd(dev, 0x00000215, 0x00000040); 2050 nv_icmd(dev, 0x00000215, 0x00000040);
1987 nv_icmd(dev, 0x00000216, 0x00000040); 2051 nv_icmd(dev, 0x00000216, 0x00000040);
1988 nv_icmd(dev, 0x00000217, 0x00000040); 2052 nv_icmd(dev, 0x00000217, 0x00000040);
2053 if (dev_priv->chipset == 0xd9) {
2054 for (i = 0x0400; i <= 0x0417; i++)
2055 nv_icmd(dev, i, 0x00000040);
2056 }
1989 nv_icmd(dev, 0x00000218, 0x0000c080); 2057 nv_icmd(dev, 0x00000218, 0x0000c080);
1990 nv_icmd(dev, 0x00000219, 0x0000c080); 2058 nv_icmd(dev, 0x00000219, 0x0000c080);
1991 nv_icmd(dev, 0x0000021a, 0x0000c080); 2059 nv_icmd(dev, 0x0000021a, 0x0000c080);
@@ -1994,6 +2062,10 @@ nvc0_grctx_generate(struct nouveau_channel *chan)
1994 nv_icmd(dev, 0x0000021d, 0x0000c080); 2062 nv_icmd(dev, 0x0000021d, 0x0000c080);
1995 nv_icmd(dev, 0x0000021e, 0x0000c080); 2063 nv_icmd(dev, 0x0000021e, 0x0000c080);
1996 nv_icmd(dev, 0x0000021f, 0x0000c080); 2064 nv_icmd(dev, 0x0000021f, 0x0000c080);
2065 if (dev_priv->chipset == 0xd9) {
2066 for (i = 0x0440; i <= 0x0457; i++)
2067 nv_icmd(dev, i, 0x0000c080);
2068 }
1997 nv_icmd(dev, 0x000000ad, 0x0000013e); 2069 nv_icmd(dev, 0x000000ad, 0x0000013e);
1998 nv_icmd(dev, 0x000000e1, 0x00000010); 2070 nv_icmd(dev, 0x000000e1, 0x00000010);
1999 nv_icmd(dev, 0x00000290, 0x00000000); 2071 nv_icmd(dev, 0x00000290, 0x00000000);
@@ -2556,7 +2628,8 @@ nvc0_grctx_generate(struct nouveau_channel *chan)
2556 nv_icmd(dev, 0x0000053f, 0xffff0000); 2628 nv_icmd(dev, 0x0000053f, 0xffff0000);
2557 nv_icmd(dev, 0x00000585, 0x0000003f); 2629 nv_icmd(dev, 0x00000585, 0x0000003f);
2558 nv_icmd(dev, 0x00000576, 0x00000003); 2630 nv_icmd(dev, 0x00000576, 0x00000003);
2559 if (dev_priv->chipset == 0xc1) 2631 if (dev_priv->chipset == 0xc1 ||
2632 dev_priv->chipset == 0xd9)
2560 nv_icmd(dev, 0x0000057b, 0x00000059); 2633 nv_icmd(dev, 0x0000057b, 0x00000059);
2561 nv_icmd(dev, 0x00000586, 0x00000040); 2634 nv_icmd(dev, 0x00000586, 0x00000040);
2562 nv_icmd(dev, 0x00000582, 0x00000080); 2635 nv_icmd(dev, 0x00000582, 0x00000080);
@@ -2658,6 +2731,8 @@ nvc0_grctx_generate(struct nouveau_channel *chan)
2658 nv_icmd(dev, 0x00000957, 0x00000003); 2731 nv_icmd(dev, 0x00000957, 0x00000003);
2659 nv_icmd(dev, 0x0000095e, 0x20164010); 2732 nv_icmd(dev, 0x0000095e, 0x20164010);
2660 nv_icmd(dev, 0x0000095f, 0x00000020); 2733 nv_icmd(dev, 0x0000095f, 0x00000020);
2734 if (dev_priv->chipset == 0xd9)
2735 nv_icmd(dev, 0x0000097d, 0x00000020);
2661 nv_icmd(dev, 0x00000683, 0x00000006); 2736 nv_icmd(dev, 0x00000683, 0x00000006);
2662 nv_icmd(dev, 0x00000685, 0x003fffff); 2737 nv_icmd(dev, 0x00000685, 0x003fffff);
2663 nv_icmd(dev, 0x00000687, 0x00000c48); 2738 nv_icmd(dev, 0x00000687, 0x00000c48);