diff options
| author | Tom St Denis <tom.stdenis@amd.com> | 2016-09-22 12:29:40 -0400 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2016-09-28 16:16:25 -0400 |
| commit | 3d5f4d4770a4084ccfc5ed2fff4b2a0017e7d558 (patch) | |
| tree | 7b76d323e6977385c5c77267a36df9de19dea5a4 /drivers/gpu/drm/amd/amdgpu | |
| parent | ad78069c333b6d80958794d073d85f7c428a2213 (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.c | 46 |
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 | ||
| 1514 | static void dce_v6_0_grph_enable(struct drm_crtc *crtc, bool enable) | 1511 | static 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 | ||
| 1526 | static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc, | 1520 | static 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; |
