aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/evergreen.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2011-05-31 15:42:48 -0400
committerDave Airlie <airlied@redhat.com>2011-06-01 20:47:40 -0400
commitd5c5a72f2a5821ba3ebdbe02bce03345790458aa (patch)
treecf932ccb82aa19f7917e0c4c5b5292581bebe7bd /drivers/gpu/drm/radeon/evergreen.c
parent3b68a26ec058fda2d6b470cdd8fedc5a3c854916 (diff)
drm/radeon/kms: add support for Llano Fusion APUs
- add gpu init support - add blit support - add ucode loader Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/evergreen.c')
-rw-r--r--drivers/gpu/drm/radeon/evergreen.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 8f446aadccd6..12984a481880 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -1433,6 +1433,8 @@ static u32 evergreen_get_tile_pipe_to_backend_map(struct radeon_device *rdev,
1433 case CHIP_CEDAR: 1433 case CHIP_CEDAR:
1434 case CHIP_REDWOOD: 1434 case CHIP_REDWOOD:
1435 case CHIP_PALM: 1435 case CHIP_PALM:
1436 case CHIP_SUMO:
1437 case CHIP_SUMO2:
1436 case CHIP_TURKS: 1438 case CHIP_TURKS:
1437 case CHIP_CAICOS: 1439 case CHIP_CAICOS:
1438 force_no_swizzle = false; 1440 force_no_swizzle = false;
@@ -1562,6 +1564,8 @@ static void evergreen_program_channel_remap(struct radeon_device *rdev)
1562 case CHIP_REDWOOD: 1564 case CHIP_REDWOOD:
1563 case CHIP_CEDAR: 1565 case CHIP_CEDAR:
1564 case CHIP_PALM: 1566 case CHIP_PALM:
1567 case CHIP_SUMO:
1568 case CHIP_SUMO2:
1565 case CHIP_TURKS: 1569 case CHIP_TURKS:
1566 case CHIP_CAICOS: 1570 case CHIP_CAICOS:
1567 default: 1571 default:
@@ -1707,6 +1711,54 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
1707 rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30; 1711 rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30;
1708 rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130; 1712 rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130;
1709 break; 1713 break;
1714 case CHIP_SUMO:
1715 rdev->config.evergreen.num_ses = 1;
1716 rdev->config.evergreen.max_pipes = 4;
1717 rdev->config.evergreen.max_tile_pipes = 2;
1718 if (rdev->pdev->device == 0x9648)
1719 rdev->config.evergreen.max_simds = 3;
1720 else if ((rdev->pdev->device == 0x9647) ||
1721 (rdev->pdev->device == 0x964a))
1722 rdev->config.evergreen.max_simds = 4;
1723 else
1724 rdev->config.evergreen.max_simds = 5;
1725 rdev->config.evergreen.max_backends = 2 * rdev->config.evergreen.num_ses;
1726 rdev->config.evergreen.max_gprs = 256;
1727 rdev->config.evergreen.max_threads = 248;
1728 rdev->config.evergreen.max_gs_threads = 32;
1729 rdev->config.evergreen.max_stack_entries = 256;
1730 rdev->config.evergreen.sx_num_of_sets = 4;
1731 rdev->config.evergreen.sx_max_export_size = 256;
1732 rdev->config.evergreen.sx_max_export_pos_size = 64;
1733 rdev->config.evergreen.sx_max_export_smx_size = 192;
1734 rdev->config.evergreen.max_hw_contexts = 8;
1735 rdev->config.evergreen.sq_num_cf_insts = 2;
1736
1737 rdev->config.evergreen.sc_prim_fifo_size = 0x40;
1738 rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30;
1739 rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130;
1740 break;
1741 case CHIP_SUMO2:
1742 rdev->config.evergreen.num_ses = 1;
1743 rdev->config.evergreen.max_pipes = 4;
1744 rdev->config.evergreen.max_tile_pipes = 4;
1745 rdev->config.evergreen.max_simds = 2;
1746 rdev->config.evergreen.max_backends = 1 * rdev->config.evergreen.num_ses;
1747 rdev->config.evergreen.max_gprs = 256;
1748 rdev->config.evergreen.max_threads = 248;
1749 rdev->config.evergreen.max_gs_threads = 32;
1750 rdev->config.evergreen.max_stack_entries = 512;
1751 rdev->config.evergreen.sx_num_of_sets = 4;
1752 rdev->config.evergreen.sx_max_export_size = 256;
1753 rdev->config.evergreen.sx_max_export_pos_size = 64;
1754 rdev->config.evergreen.sx_max_export_smx_size = 192;
1755 rdev->config.evergreen.max_hw_contexts = 8;
1756 rdev->config.evergreen.sq_num_cf_insts = 2;
1757
1758 rdev->config.evergreen.sc_prim_fifo_size = 0x40;
1759 rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30;
1760 rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130;
1761 break;
1710 case CHIP_BARTS: 1762 case CHIP_BARTS:
1711 rdev->config.evergreen.num_ses = 2; 1763 rdev->config.evergreen.num_ses = 2;
1712 rdev->config.evergreen.max_pipes = 4; 1764 rdev->config.evergreen.max_pipes = 4;
@@ -2054,6 +2106,8 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
2054 switch (rdev->family) { 2106 switch (rdev->family) {
2055 case CHIP_CEDAR: 2107 case CHIP_CEDAR:
2056 case CHIP_PALM: 2108 case CHIP_PALM:
2109 case CHIP_SUMO:
2110 case CHIP_SUMO2:
2057 case CHIP_CAICOS: 2111 case CHIP_CAICOS:
2058 /* no vertex cache */ 2112 /* no vertex cache */
2059 sq_config &= ~VC_ENABLE; 2113 sq_config &= ~VC_ENABLE;
@@ -2075,6 +2129,8 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
2075 switch (rdev->family) { 2129 switch (rdev->family) {
2076 case CHIP_CEDAR: 2130 case CHIP_CEDAR:
2077 case CHIP_PALM: 2131 case CHIP_PALM:
2132 case CHIP_SUMO:
2133 case CHIP_SUMO2:
2078 ps_thread_count = 96; 2134 ps_thread_count = 96;
2079 break; 2135 break;
2080 default: 2136 default:
@@ -2114,6 +2170,8 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
2114 switch (rdev->family) { 2170 switch (rdev->family) {
2115 case CHIP_CEDAR: 2171 case CHIP_CEDAR:
2116 case CHIP_PALM: 2172 case CHIP_PALM:
2173 case CHIP_SUMO:
2174 case CHIP_SUMO2:
2117 case CHIP_CAICOS: 2175 case CHIP_CAICOS:
2118 vgt_cache_invalidation = CACHE_INVALIDATION(TC_ONLY); 2176 vgt_cache_invalidation = CACHE_INVALIDATION(TC_ONLY);
2119 break; 2177 break;