Commit bd25f078 authored by Jerome Glisse's avatar Jerome Glisse Committed by Alex Deucher

drm/radeon: fix amd afusion gpu setup aka sumo v2

Set the proper number of tile pipe that should be a multiple of
pipe depending on the number of se engine.

Fix:
https://bugs.freedesktop.org/show_bug.cgi?id=56405
https://bugs.freedesktop.org/show_bug.cgi?id=56720

v2: Don't change sumo2
Signed-off-by: default avatarJerome Glisse <jglisse@redhat.com>
Cc: stable@vger.kernel.org
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent d025e9e2
...@@ -1821,7 +1821,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev) ...@@ -1821,7 +1821,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
case CHIP_SUMO: case CHIP_SUMO:
rdev->config.evergreen.num_ses = 1; rdev->config.evergreen.num_ses = 1;
rdev->config.evergreen.max_pipes = 4; rdev->config.evergreen.max_pipes = 4;
rdev->config.evergreen.max_tile_pipes = 2; rdev->config.evergreen.max_tile_pipes = 4;
if (rdev->pdev->device == 0x9648) if (rdev->pdev->device == 0x9648)
rdev->config.evergreen.max_simds = 3; rdev->config.evergreen.max_simds = 3;
else if ((rdev->pdev->device == 0x9647) || else if ((rdev->pdev->device == 0x9647) ||
...@@ -1844,7 +1844,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev) ...@@ -1844,7 +1844,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
rdev->config.evergreen.sc_prim_fifo_size = 0x40; rdev->config.evergreen.sc_prim_fifo_size = 0x40;
rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30; rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30;
rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130; rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130;
gb_addr_config = REDWOOD_GB_ADDR_CONFIG_GOLDEN; gb_addr_config = SUMO_GB_ADDR_CONFIG_GOLDEN;
break; break;
case CHIP_SUMO2: case CHIP_SUMO2:
rdev->config.evergreen.num_ses = 1; rdev->config.evergreen.num_ses = 1;
...@@ -1866,7 +1866,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev) ...@@ -1866,7 +1866,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
rdev->config.evergreen.sc_prim_fifo_size = 0x40; rdev->config.evergreen.sc_prim_fifo_size = 0x40;
rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30; rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30;
rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130; rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130;
gb_addr_config = REDWOOD_GB_ADDR_CONFIG_GOLDEN; gb_addr_config = SUMO2_GB_ADDR_CONFIG_GOLDEN;
break; break;
case CHIP_BARTS: case CHIP_BARTS:
rdev->config.evergreen.num_ses = 2; rdev->config.evergreen.num_ses = 2;
...@@ -1914,7 +1914,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev) ...@@ -1914,7 +1914,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
break; break;
case CHIP_CAICOS: case CHIP_CAICOS:
rdev->config.evergreen.num_ses = 1; rdev->config.evergreen.num_ses = 1;
rdev->config.evergreen.max_pipes = 4; rdev->config.evergreen.max_pipes = 2;
rdev->config.evergreen.max_tile_pipes = 2; rdev->config.evergreen.max_tile_pipes = 2;
rdev->config.evergreen.max_simds = 2; rdev->config.evergreen.max_simds = 2;
rdev->config.evergreen.max_backends = 1 * rdev->config.evergreen.num_ses; rdev->config.evergreen.max_backends = 1 * rdev->config.evergreen.num_ses;
......
...@@ -45,6 +45,8 @@ ...@@ -45,6 +45,8 @@
#define TURKS_GB_ADDR_CONFIG_GOLDEN 0x02010002 #define TURKS_GB_ADDR_CONFIG_GOLDEN 0x02010002
#define CEDAR_GB_ADDR_CONFIG_GOLDEN 0x02010001 #define CEDAR_GB_ADDR_CONFIG_GOLDEN 0x02010001
#define CAICOS_GB_ADDR_CONFIG_GOLDEN 0x02010001 #define CAICOS_GB_ADDR_CONFIG_GOLDEN 0x02010001
#define SUMO_GB_ADDR_CONFIG_GOLDEN 0x02010002
#define SUMO2_GB_ADDR_CONFIG_GOLDEN 0x02010002
/* Registers */ /* Registers */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment