diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2011-05-31 15:42:48 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-06-01 20:47:40 -0400 |
commit | d5c5a72f2a5821ba3ebdbe02bce03345790458aa (patch) | |
tree | cf932ccb82aa19f7917e0c4c5b5292581bebe7bd /drivers/gpu/drm/radeon/evergreen.c | |
parent | 3b68a26ec058fda2d6b470cdd8fedc5a3c854916 (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.c | 58 |
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; |