diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-07-11 01:57:54 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-12-21 04:01:27 -0500 |
commit | 06784090ecb3f925616fc797164a74b03d5c0968 (patch) | |
tree | f77b4896046fef0a503f690103e943e0c54ffd12 /drivers/gpu/drm/nouveau/nvc0_grctx.c | |
parent | be7f2615d7d14221a106e6c4ec3a64558e6190ed (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.c | 127 |
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) | |||
1268 | static void | 1268 | static void |
1269 | nvc0_grctx_generate_90c0(struct drm_device *dev) | 1269 | nvc0_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); |