aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
authorTom St Denis <tom.stdenis@amd.com>2016-09-22 12:29:40 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-09-28 16:16:25 -0400
commit3d5f4d4770a4084ccfc5ed2fff4b2a0017e7d558 (patch)
tree7b76d323e6977385c5c77267a36df9de19dea5a4 /drivers/gpu/drm/amd/amdgpu
parentad78069c333b6d80958794d073d85f7c428a2213 (diff)
drm/amd/amdgpu: Various cleanups for DCEv6
Signed-off-by: Tom St Denis <tom.stdenis@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')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/dce_v6_0.c46
1 files changed, 10 insertions, 36 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
index 42a4e7e745da..b948d6cb1399 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
@@ -1505,10 +1505,7 @@ static void dce_v6_0_vga_enable(struct drm_crtc *crtc, bool enable)
1505 u32 vga_control; 1505 u32 vga_control;
1506 1506
1507 vga_control = RREG32(vga_control_regs[amdgpu_crtc->crtc_id]) & ~1; 1507 vga_control = RREG32(vga_control_regs[amdgpu_crtc->crtc_id]) & ~1;
1508 if (enable) 1508 WREG32(vga_control_regs[amdgpu_crtc->crtc_id], vga_control | (enable ? 1 : 0));
1509 WREG32(vga_control_regs[amdgpu_crtc->crtc_id], vga_control | 1);
1510 else
1511 WREG32(vga_control_regs[amdgpu_crtc->crtc_id], vga_control);
1512} 1509}
1513 1510
1514static void dce_v6_0_grph_enable(struct drm_crtc *crtc, bool enable) 1511static void dce_v6_0_grph_enable(struct drm_crtc *crtc, bool enable)
@@ -1517,10 +1514,7 @@ static void dce_v6_0_grph_enable(struct drm_crtc *crtc, bool enable)
1517 struct drm_device *dev = crtc->dev; 1514 struct drm_device *dev = crtc->dev;
1518 struct amdgpu_device *adev = dev->dev_private; 1515 struct amdgpu_device *adev = dev->dev_private;
1519 1516
1520 if (enable) 1517 WREG32(EVERGREEN_GRPH_ENABLE + amdgpu_crtc->crtc_offset, enable ? 1 : 0);
1521 WREG32(EVERGREEN_GRPH_ENABLE + amdgpu_crtc->crtc_offset, 1);
1522 else
1523 WREG32(EVERGREEN_GRPH_ENABLE + amdgpu_crtc->crtc_offset, 0);
1524} 1518}
1525 1519
1526static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc, 1520static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc,
@@ -1550,8 +1544,7 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc,
1550 if (atomic) { 1544 if (atomic) {
1551 amdgpu_fb = to_amdgpu_framebuffer(fb); 1545 amdgpu_fb = to_amdgpu_framebuffer(fb);
1552 target_fb = fb; 1546 target_fb = fb;
1553 } 1547 } else {
1554 else {
1555 amdgpu_fb = to_amdgpu_framebuffer(crtc->primary->fb); 1548 amdgpu_fb = to_amdgpu_framebuffer(crtc->primary->fb);
1556 target_fb = crtc->primary->fb; 1549 target_fb = crtc->primary->fb;
1557 } 1550 }
@@ -1565,9 +1558,9 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc,
1565 if (unlikely(r != 0)) 1558 if (unlikely(r != 0))
1566 return r; 1559 return r;
1567 1560
1568 if (atomic) 1561 if (atomic) {
1569 fb_location = amdgpu_bo_gpu_offset(abo); 1562 fb_location = amdgpu_bo_gpu_offset(abo);
1570 else { 1563 } else {
1571 r = amdgpu_bo_pin(abo, AMDGPU_GEM_DOMAIN_VRAM, &fb_location); 1564 r = amdgpu_bo_pin(abo, AMDGPU_GEM_DOMAIN_VRAM, &fb_location);
1572 if (unlikely(r != 0)) { 1565 if (unlikely(r != 0)) {
1573 amdgpu_bo_unreserve(abo); 1566 amdgpu_bo_unreserve(abo);
@@ -1663,8 +1656,9 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc,
1663 fb_format |= EVERGREEN_GRPH_BANK_WIDTH(bankw); 1656 fb_format |= EVERGREEN_GRPH_BANK_WIDTH(bankw);
1664 fb_format |= EVERGREEN_GRPH_BANK_HEIGHT(bankh); 1657 fb_format |= EVERGREEN_GRPH_BANK_HEIGHT(bankh);
1665 fb_format |= EVERGREEN_GRPH_MACRO_TILE_ASPECT(mtaspect); 1658 fb_format |= EVERGREEN_GRPH_MACRO_TILE_ASPECT(mtaspect);
1666 } else if (AMDGPU_TILING_GET(tiling_flags, ARRAY_MODE) == ARRAY_1D_TILED_THIN1) 1659 } else if (AMDGPU_TILING_GET(tiling_flags, ARRAY_MODE) == ARRAY_1D_TILED_THIN1) {
1667 fb_format |= EVERGREEN_GRPH_ARRAY_MODE(EVERGREEN_GRPH_ARRAY_1D_TILED_THIN1); 1660 fb_format |= EVERGREEN_GRPH_ARRAY_MODE(EVERGREEN_GRPH_ARRAY_1D_TILED_THIN1);
1661 }
1668 1662
1669 pipe_config = AMDGPU_TILING_GET(tiling_flags, PIPE_CONFIG); 1663 pipe_config = AMDGPU_TILING_GET(tiling_flags, PIPE_CONFIG);
1670 fb_format |= SI_GRPH_PIPE_CONFIG(pipe_config); 1664 fb_format |= SI_GRPH_PIPE_CONFIG(pipe_config);
@@ -1828,26 +1822,13 @@ static int dce_v6_0_pick_dig_encoder(struct drm_encoder *encoder)
1828 1822
1829 switch (amdgpu_encoder->encoder_id) { 1823 switch (amdgpu_encoder->encoder_id) {
1830 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: 1824 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
1831 if (dig->linkb) 1825 return dig->linkb ? 1 : 0;
1832 return 1;
1833 else
1834 return 0;
1835 break;
1836 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: 1826 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
1837 if (dig->linkb) 1827 return dig->linkb ? 3 : 2;
1838 return 3;
1839 else
1840 return 2;
1841 break;
1842 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: 1828 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
1843 if (dig->linkb) 1829 return dig->linkb ? 5 : 4;
1844 return 5;
1845 else
1846 return 4;
1847 break;
1848 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY3: 1830 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY3:
1849 return 6; 1831 return 6;
1850 break;
1851 default: 1832 default:
1852 DRM_ERROR("invalid encoder_id: 0x%x\n", amdgpu_encoder->encoder_id); 1833 DRM_ERROR("invalid encoder_id: 0x%x\n", amdgpu_encoder->encoder_id);
1853 return 0; 1834 return 0;
@@ -2082,7 +2063,6 @@ static void dce_v6_0_cursor_reset(struct drm_crtc *crtc)
2082 amdgpu_crtc->cursor_y); 2063 amdgpu_crtc->cursor_y);
2083 2064
2084 dce_v6_0_show_cursor(crtc); 2065 dce_v6_0_show_cursor(crtc);
2085
2086 dce_v6_0_lock_cursor(crtc, false); 2066 dce_v6_0_lock_cursor(crtc, false);
2087 } 2067 }
2088} 2068}
@@ -2405,15 +2385,11 @@ static int dce_v6_0_sw_init(void *handle)
2405 adev->mode_info.mode_config_initialized = true; 2385 adev->mode_info.mode_config_initialized = true;
2406 2386
2407 adev->ddev->mode_config.funcs = &amdgpu_mode_funcs; 2387 adev->ddev->mode_config.funcs = &amdgpu_mode_funcs;
2408
2409 adev->ddev->mode_config.async_page_flip = true; 2388 adev->ddev->mode_config.async_page_flip = true;
2410
2411 adev->ddev->mode_config.max_width = 16384; 2389 adev->ddev->mode_config.max_width = 16384;
2412 adev->ddev->mode_config.max_height = 16384; 2390 adev->ddev->mode_config.max_height = 16384;
2413
2414 adev->ddev->mode_config.preferred_depth = 24; 2391 adev->ddev->mode_config.preferred_depth = 24;
2415 adev->ddev->mode_config.prefer_shadow = 1; 2392 adev->ddev->mode_config.prefer_shadow = 1;
2416
2417 adev->ddev->mode_config.fb_base = adev->mc.aper_base; 2393 adev->ddev->mode_config.fb_base = adev->mc.aper_base;
2418 2394
2419 r = amdgpu_modeset_create_props(adev); 2395 r = amdgpu_modeset_create_props(adev);
@@ -2459,7 +2435,6 @@ static int dce_v6_0_sw_fini(void *handle)
2459 drm_kms_helper_poll_fini(adev->ddev); 2435 drm_kms_helper_poll_fini(adev->ddev);
2460 2436
2461 dce_v6_0_audio_fini(adev); 2437 dce_v6_0_audio_fini(adev);
2462
2463 dce_v6_0_afmt_fini(adev); 2438 dce_v6_0_afmt_fini(adev);
2464 2439
2465 drm_mode_config_cleanup(adev->ddev); 2440 drm_mode_config_cleanup(adev->ddev);
@@ -3087,7 +3062,6 @@ static void dce_v6_0_encoder_add(struct amdgpu_device *adev,
3087 } 3062 }
3088 3063
3089 amdgpu_encoder->enc_priv = NULL; 3064 amdgpu_encoder->enc_priv = NULL;
3090
3091 amdgpu_encoder->encoder_enum = encoder_enum; 3065 amdgpu_encoder->encoder_enum = encoder_enum;
3092 amdgpu_encoder->encoder_id = (encoder_enum & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; 3066 amdgpu_encoder->encoder_id = (encoder_enum & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
3093 amdgpu_encoder->devices = supported_device; 3067 amdgpu_encoder->devices = supported_device;