diff options
author | Emily Deng <Emily.Deng@amd.com> | 2016-08-07 23:37:50 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-08-08 14:33:28 -0400 |
commit | a6be7570518f85ce94ca9d6540543e00725828d3 (patch) | |
tree | d817a1b9d03ccddbcbdea5a44e50c33d386fb378 /drivers/gpu/drm/amd/amdgpu/vi.c | |
parent | e443059d0f41fcc07f0fb6b3b8ae96dc3d2364c7 (diff) |
drm/amdgpu: Set ip_blocks according variable amdgpu_virtual_display.
For virtual display feature, if user set the option "amdgpu.virtual_display=1"
when load amdgpu.ko. Then need to set the ip_blocks with virtual display ip
blocks. And when enable virtual display, the amdgpu_dal need to be set to zero.
Signed-off-by: Emily Deng <Emily.Deng@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vi.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vi.c | 84 |
1 files changed, 58 insertions, 26 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c index ff78b5a36143..064291771d79 100644 --- a/drivers/gpu/drm/amd/amdgpu/vi.c +++ b/drivers/gpu/drm/amd/amdgpu/vi.c | |||
@@ -1387,32 +1387,64 @@ static const struct amdgpu_ip_block_version cz_ip_blocks_vd[] = | |||
1387 | 1387 | ||
1388 | int vi_set_ip_blocks(struct amdgpu_device *adev) | 1388 | int vi_set_ip_blocks(struct amdgpu_device *adev) |
1389 | { | 1389 | { |
1390 | switch (adev->asic_type) { | 1390 | if (amdgpu_virtual_display) { |
1391 | case CHIP_TOPAZ: | 1391 | adev->mode_info.vsync_timer_enabled = AMDGPU_IRQ_STATE_DISABLE; |
1392 | adev->ip_blocks = topaz_ip_blocks; | 1392 | switch (adev->asic_type) { |
1393 | adev->num_ip_blocks = ARRAY_SIZE(topaz_ip_blocks); | 1393 | case CHIP_TOPAZ: |
1394 | break; | 1394 | adev->ip_blocks = topaz_ip_blocks; |
1395 | case CHIP_FIJI: | 1395 | adev->num_ip_blocks = ARRAY_SIZE(topaz_ip_blocks); |
1396 | adev->ip_blocks = fiji_ip_blocks; | 1396 | break; |
1397 | adev->num_ip_blocks = ARRAY_SIZE(fiji_ip_blocks); | 1397 | case CHIP_FIJI: |
1398 | break; | 1398 | adev->ip_blocks = fiji_ip_blocks_vd; |
1399 | case CHIP_TONGA: | 1399 | adev->num_ip_blocks = ARRAY_SIZE(fiji_ip_blocks_vd); |
1400 | adev->ip_blocks = tonga_ip_blocks; | 1400 | break; |
1401 | adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks); | 1401 | case CHIP_TONGA: |
1402 | break; | 1402 | adev->ip_blocks = tonga_ip_blocks_vd; |
1403 | case CHIP_POLARIS11: | 1403 | adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks_vd); |
1404 | case CHIP_POLARIS10: | 1404 | break; |
1405 | adev->ip_blocks = polaris11_ip_blocks; | 1405 | case CHIP_POLARIS11: |
1406 | adev->num_ip_blocks = ARRAY_SIZE(polaris11_ip_blocks); | 1406 | case CHIP_POLARIS10: |
1407 | break; | 1407 | adev->ip_blocks = polaris11_ip_blocks_vd; |
1408 | case CHIP_CARRIZO: | 1408 | adev->num_ip_blocks = ARRAY_SIZE(polaris11_ip_blocks_vd); |
1409 | case CHIP_STONEY: | 1409 | break; |
1410 | adev->ip_blocks = cz_ip_blocks; | 1410 | |
1411 | adev->num_ip_blocks = ARRAY_SIZE(cz_ip_blocks); | 1411 | case CHIP_CARRIZO: |
1412 | break; | 1412 | case CHIP_STONEY: |
1413 | default: | 1413 | adev->ip_blocks = cz_ip_blocks_vd; |
1414 | /* FIXME: not supported yet */ | 1414 | adev->num_ip_blocks = ARRAY_SIZE(cz_ip_blocks_vd); |
1415 | return -EINVAL; | 1415 | break; |
1416 | default: | ||
1417 | /* FIXME: not supported yet */ | ||
1418 | return -EINVAL; | ||
1419 | } | ||
1420 | } else { | ||
1421 | switch (adev->asic_type) { | ||
1422 | case CHIP_TOPAZ: | ||
1423 | adev->ip_blocks = topaz_ip_blocks; | ||
1424 | adev->num_ip_blocks = ARRAY_SIZE(topaz_ip_blocks); | ||
1425 | break; | ||
1426 | case CHIP_FIJI: | ||
1427 | adev->ip_blocks = fiji_ip_blocks; | ||
1428 | adev->num_ip_blocks = ARRAY_SIZE(fiji_ip_blocks); | ||
1429 | break; | ||
1430 | case CHIP_TONGA: | ||
1431 | adev->ip_blocks = tonga_ip_blocks; | ||
1432 | adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks); | ||
1433 | break; | ||
1434 | case CHIP_POLARIS11: | ||
1435 | case CHIP_POLARIS10: | ||
1436 | adev->ip_blocks = polaris11_ip_blocks; | ||
1437 | adev->num_ip_blocks = ARRAY_SIZE(polaris11_ip_blocks); | ||
1438 | break; | ||
1439 | case CHIP_CARRIZO: | ||
1440 | case CHIP_STONEY: | ||
1441 | adev->ip_blocks = cz_ip_blocks; | ||
1442 | adev->num_ip_blocks = ARRAY_SIZE(cz_ip_blocks); | ||
1443 | break; | ||
1444 | default: | ||
1445 | /* FIXME: not supported yet */ | ||
1446 | return -EINVAL; | ||
1447 | } | ||
1416 | } | 1448 | } |
1417 | 1449 | ||
1418 | return 0; | 1450 | return 0; |