diff options
| author | Ingo Molnar <mingo@kernel.org> | 2018-03-27 02:43:39 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2018-03-27 02:43:39 -0400 |
| commit | 0bc91d4ba77156ae9217d25ed7c434540f950d05 (patch) | |
| tree | 949c1acf27b106184d8842586740fbbcc9c9ea62 /drivers/gpu/drm/amd | |
| parent | 565977a3d929fc4427769117a8ac976ec16776d5 (diff) | |
| parent | 3eb2ce825ea1ad89d20f7a3b5780df850e4be274 (diff) | |
Merge tag 'v4.16-rc7' into x86/mm, to fix up conflict
Conflicts:
arch/x86/mm/init_64.c
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/gpu/drm/amd')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 31 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/atombios_encoders.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/atombios_encoders.h | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce/dce_opp.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 20 |
16 files changed, 90 insertions, 40 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c index 74d2efaec52f..7a073ac5f9c6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | |||
| @@ -69,25 +69,18 @@ void amdgpu_connector_hotplug(struct drm_connector *connector) | |||
| 69 | /* don't do anything if sink is not display port, i.e., | 69 | /* don't do anything if sink is not display port, i.e., |
| 70 | * passive dp->(dvi|hdmi) adaptor | 70 | * passive dp->(dvi|hdmi) adaptor |
| 71 | */ | 71 | */ |
| 72 | if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { | 72 | if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT && |
| 73 | int saved_dpms = connector->dpms; | 73 | amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd) && |
| 74 | /* Only turn off the display if it's physically disconnected */ | 74 | amdgpu_atombios_dp_needs_link_train(amdgpu_connector)) { |
| 75 | if (!amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd)) { | 75 | /* Don't start link training before we have the DPCD */ |
| 76 | drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); | 76 | if (amdgpu_atombios_dp_get_dpcd(amdgpu_connector)) |
| 77 | } else if (amdgpu_atombios_dp_needs_link_train(amdgpu_connector)) { | 77 | return; |
| 78 | /* Don't try to start link training before we | 78 | |
| 79 | * have the dpcd */ | 79 | /* Turn the connector off and back on immediately, which |
| 80 | if (amdgpu_atombios_dp_get_dpcd(amdgpu_connector)) | 80 | * will trigger link training |
| 81 | return; | 81 | */ |
| 82 | 82 | drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); | |
| 83 | /* set it to OFF so that drm_helper_connector_dpms() | 83 | drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); |
| 84 | * won't return immediately since the current state | ||
| 85 | * is ON at this point. | ||
| 86 | */ | ||
| 87 | connector->dpms = DRM_MODE_DPMS_OFF; | ||
| 88 | drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); | ||
| 89 | } | ||
| 90 | connector->dpms = saved_dpms; | ||
| 91 | } | 84 | } |
| 92 | } | 85 | } |
| 93 | } | 86 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index af1b879a9ee9..66cb10cdc7c3 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |||
| @@ -2063,9 +2063,12 @@ void amdgpu_device_fini(struct amdgpu_device *adev) | |||
| 2063 | 2063 | ||
| 2064 | DRM_INFO("amdgpu: finishing device.\n"); | 2064 | DRM_INFO("amdgpu: finishing device.\n"); |
| 2065 | adev->shutdown = true; | 2065 | adev->shutdown = true; |
| 2066 | if (adev->mode_info.mode_config_initialized) | 2066 | if (adev->mode_info.mode_config_initialized){ |
| 2067 | drm_crtc_force_disable_all(adev->ddev); | 2067 | if (!amdgpu_device_has_dc_support(adev)) |
| 2068 | 2068 | drm_crtc_force_disable_all(adev->ddev); | |
| 2069 | else | ||
| 2070 | drm_atomic_helper_shutdown(adev->ddev); | ||
| 2071 | } | ||
| 2069 | amdgpu_ib_pool_fini(adev); | 2072 | amdgpu_ib_pool_fini(adev); |
| 2070 | amdgpu_fence_driver_fini(adev); | 2073 | amdgpu_fence_driver_fini(adev); |
| 2071 | amdgpu_fbdev_fini(adev); | 2074 | amdgpu_fbdev_fini(adev); |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index e48b4ec88c8c..ca6c931dabfa 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | |||
| @@ -36,8 +36,6 @@ void amdgpu_gem_object_free(struct drm_gem_object *gobj) | |||
| 36 | struct amdgpu_bo *robj = gem_to_amdgpu_bo(gobj); | 36 | struct amdgpu_bo *robj = gem_to_amdgpu_bo(gobj); |
| 37 | 37 | ||
| 38 | if (robj) { | 38 | if (robj) { |
| 39 | if (robj->gem_base.import_attach) | ||
| 40 | drm_prime_gem_destroy(&robj->gem_base, robj->tbo.sg); | ||
| 41 | amdgpu_mn_unregister(robj); | 39 | amdgpu_mn_unregister(robj); |
| 42 | amdgpu_bo_unref(&robj); | 40 | amdgpu_bo_unref(&robj); |
| 43 | } | 41 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h index 54f06c959340..2264c5c97009 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | |||
| @@ -352,6 +352,7 @@ struct amdgpu_mode_info { | |||
| 352 | u16 firmware_flags; | 352 | u16 firmware_flags; |
| 353 | /* pointer to backlight encoder */ | 353 | /* pointer to backlight encoder */ |
| 354 | struct amdgpu_encoder *bl_encoder; | 354 | struct amdgpu_encoder *bl_encoder; |
| 355 | u8 bl_level; /* saved backlight level */ | ||
| 355 | struct amdgpu_audio audio; /* audio stuff */ | 356 | struct amdgpu_audio audio; /* audio stuff */ |
| 356 | int num_crtc; /* number of crtcs */ | 357 | int num_crtc; /* number of crtcs */ |
| 357 | int num_hpd; /* number of hpd pins */ | 358 | int num_hpd; /* number of hpd pins */ |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 5c4c3e0d527b..1220322c1680 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |||
| @@ -56,6 +56,8 @@ static void amdgpu_ttm_bo_destroy(struct ttm_buffer_object *tbo) | |||
| 56 | 56 | ||
| 57 | amdgpu_bo_kunmap(bo); | 57 | amdgpu_bo_kunmap(bo); |
| 58 | 58 | ||
| 59 | if (bo->gem_base.import_attach) | ||
| 60 | drm_prime_gem_destroy(&bo->gem_base, bo->tbo.sg); | ||
| 59 | drm_gem_object_release(&bo->gem_base); | 61 | drm_gem_object_release(&bo->gem_base); |
| 60 | amdgpu_bo_unref(&bo->parent); | 62 | amdgpu_bo_unref(&bo->parent); |
| 61 | if (!list_empty(&bo->shadow_list)) { | 63 | if (!list_empty(&bo->shadow_list)) { |
diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c index 2af26d2da127..d702fb8e3427 100644 --- a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c +++ b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | #include <linux/backlight.h> | 34 | #include <linux/backlight.h> |
| 35 | #include "bif/bif_4_1_d.h" | 35 | #include "bif/bif_4_1_d.h" |
| 36 | 36 | ||
| 37 | static u8 | 37 | u8 |
| 38 | amdgpu_atombios_encoder_get_backlight_level_from_reg(struct amdgpu_device *adev) | 38 | amdgpu_atombios_encoder_get_backlight_level_from_reg(struct amdgpu_device *adev) |
| 39 | { | 39 | { |
| 40 | u8 backlight_level; | 40 | u8 backlight_level; |
| @@ -48,7 +48,7 @@ amdgpu_atombios_encoder_get_backlight_level_from_reg(struct amdgpu_device *adev) | |||
| 48 | return backlight_level; | 48 | return backlight_level; |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | static void | 51 | void |
| 52 | amdgpu_atombios_encoder_set_backlight_level_to_reg(struct amdgpu_device *adev, | 52 | amdgpu_atombios_encoder_set_backlight_level_to_reg(struct amdgpu_device *adev, |
| 53 | u8 backlight_level) | 53 | u8 backlight_level) |
| 54 | { | 54 | { |
diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.h b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.h index 2bdec40515ce..f77cbdef679e 100644 --- a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.h +++ b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.h | |||
| @@ -25,6 +25,11 @@ | |||
| 25 | #define __ATOMBIOS_ENCODER_H__ | 25 | #define __ATOMBIOS_ENCODER_H__ |
| 26 | 26 | ||
| 27 | u8 | 27 | u8 |
| 28 | amdgpu_atombios_encoder_get_backlight_level_from_reg(struct amdgpu_device *adev); | ||
| 29 | void | ||
| 30 | amdgpu_atombios_encoder_set_backlight_level_to_reg(struct amdgpu_device *adev, | ||
| 31 | u8 backlight_level); | ||
| 32 | u8 | ||
| 28 | amdgpu_atombios_encoder_get_backlight_level(struct amdgpu_encoder *amdgpu_encoder); | 33 | amdgpu_atombios_encoder_get_backlight_level(struct amdgpu_encoder *amdgpu_encoder); |
| 29 | void | 34 | void |
| 30 | amdgpu_atombios_encoder_set_backlight_level(struct amdgpu_encoder *amdgpu_encoder, | 35 | amdgpu_atombios_encoder_set_backlight_level(struct amdgpu_encoder *amdgpu_encoder, |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c index f34bc68aadfb..022f303463fc 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | |||
| @@ -2921,6 +2921,11 @@ static int dce_v10_0_hw_fini(void *handle) | |||
| 2921 | 2921 | ||
| 2922 | static int dce_v10_0_suspend(void *handle) | 2922 | static int dce_v10_0_suspend(void *handle) |
| 2923 | { | 2923 | { |
| 2924 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||
| 2925 | |||
| 2926 | adev->mode_info.bl_level = | ||
| 2927 | amdgpu_atombios_encoder_get_backlight_level_from_reg(adev); | ||
| 2928 | |||
| 2924 | return dce_v10_0_hw_fini(handle); | 2929 | return dce_v10_0_hw_fini(handle); |
| 2925 | } | 2930 | } |
| 2926 | 2931 | ||
| @@ -2929,6 +2934,9 @@ static int dce_v10_0_resume(void *handle) | |||
| 2929 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 2934 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
| 2930 | int ret; | 2935 | int ret; |
| 2931 | 2936 | ||
| 2937 | amdgpu_atombios_encoder_set_backlight_level_to_reg(adev, | ||
| 2938 | adev->mode_info.bl_level); | ||
| 2939 | |||
| 2932 | ret = dce_v10_0_hw_init(handle); | 2940 | ret = dce_v10_0_hw_init(handle); |
| 2933 | 2941 | ||
| 2934 | /* turn on the BL */ | 2942 | /* turn on the BL */ |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c index 26378bd6aba4..800a9f36ab4f 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | |||
| @@ -3047,6 +3047,11 @@ static int dce_v11_0_hw_fini(void *handle) | |||
| 3047 | 3047 | ||
| 3048 | static int dce_v11_0_suspend(void *handle) | 3048 | static int dce_v11_0_suspend(void *handle) |
| 3049 | { | 3049 | { |
| 3050 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||
| 3051 | |||
| 3052 | adev->mode_info.bl_level = | ||
| 3053 | amdgpu_atombios_encoder_get_backlight_level_from_reg(adev); | ||
| 3054 | |||
| 3050 | return dce_v11_0_hw_fini(handle); | 3055 | return dce_v11_0_hw_fini(handle); |
| 3051 | } | 3056 | } |
| 3052 | 3057 | ||
| @@ -3055,6 +3060,9 @@ static int dce_v11_0_resume(void *handle) | |||
| 3055 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 3060 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
| 3056 | int ret; | 3061 | int ret; |
| 3057 | 3062 | ||
| 3063 | amdgpu_atombios_encoder_set_backlight_level_to_reg(adev, | ||
| 3064 | adev->mode_info.bl_level); | ||
| 3065 | |||
| 3058 | ret = dce_v11_0_hw_init(handle); | 3066 | ret = dce_v11_0_hw_init(handle); |
| 3059 | 3067 | ||
| 3060 | /* turn on the BL */ | 3068 | /* turn on the BL */ |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c index a712f4b285f6..b8368f69ce1f 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | |||
| @@ -2787,6 +2787,11 @@ static int dce_v6_0_hw_fini(void *handle) | |||
| 2787 | 2787 | ||
| 2788 | static int dce_v6_0_suspend(void *handle) | 2788 | static int dce_v6_0_suspend(void *handle) |
| 2789 | { | 2789 | { |
| 2790 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||
| 2791 | |||
| 2792 | adev->mode_info.bl_level = | ||
| 2793 | amdgpu_atombios_encoder_get_backlight_level_from_reg(adev); | ||
| 2794 | |||
| 2790 | return dce_v6_0_hw_fini(handle); | 2795 | return dce_v6_0_hw_fini(handle); |
| 2791 | } | 2796 | } |
| 2792 | 2797 | ||
| @@ -2795,6 +2800,9 @@ static int dce_v6_0_resume(void *handle) | |||
| 2795 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 2800 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
| 2796 | int ret; | 2801 | int ret; |
| 2797 | 2802 | ||
| 2803 | amdgpu_atombios_encoder_set_backlight_level_to_reg(adev, | ||
| 2804 | adev->mode_info.bl_level); | ||
| 2805 | |||
| 2798 | ret = dce_v6_0_hw_init(handle); | 2806 | ret = dce_v6_0_hw_init(handle); |
| 2799 | 2807 | ||
| 2800 | /* turn on the BL */ | 2808 | /* turn on the BL */ |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c index c008dc030687..012e0a9ae0ff 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | |||
| @@ -2819,6 +2819,11 @@ static int dce_v8_0_hw_fini(void *handle) | |||
| 2819 | 2819 | ||
| 2820 | static int dce_v8_0_suspend(void *handle) | 2820 | static int dce_v8_0_suspend(void *handle) |
| 2821 | { | 2821 | { |
| 2822 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||
| 2823 | |||
| 2824 | adev->mode_info.bl_level = | ||
| 2825 | amdgpu_atombios_encoder_get_backlight_level_from_reg(adev); | ||
| 2826 | |||
| 2822 | return dce_v8_0_hw_fini(handle); | 2827 | return dce_v8_0_hw_fini(handle); |
| 2823 | } | 2828 | } |
| 2824 | 2829 | ||
| @@ -2827,6 +2832,9 @@ static int dce_v8_0_resume(void *handle) | |||
| 2827 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 2832 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
| 2828 | int ret; | 2833 | int ret; |
| 2829 | 2834 | ||
| 2835 | amdgpu_atombios_encoder_set_backlight_level_to_reg(adev, | ||
| 2836 | adev->mode_info.bl_level); | ||
| 2837 | |||
| 2830 | ret = dce_v8_0_hw_init(handle); | 2838 | ret = dce_v8_0_hw_init(handle); |
| 2831 | 2839 | ||
| 2832 | /* turn on the BL */ | 2840 | /* turn on the BL */ |
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index c345e645f1d7..63c67346d316 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | |||
| @@ -3134,8 +3134,6 @@ static int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm, | |||
| 3134 | 3134 | ||
| 3135 | switch (aplane->base.type) { | 3135 | switch (aplane->base.type) { |
| 3136 | case DRM_PLANE_TYPE_PRIMARY: | 3136 | case DRM_PLANE_TYPE_PRIMARY: |
| 3137 | aplane->base.format_default = true; | ||
| 3138 | |||
| 3139 | res = drm_universal_plane_init( | 3137 | res = drm_universal_plane_init( |
| 3140 | dm->adev->ddev, | 3138 | dm->adev->ddev, |
| 3141 | &aplane->base, | 3139 | &aplane->base, |
| @@ -4794,6 +4792,9 @@ static int dm_atomic_check_plane_state_fb(struct drm_atomic_state *state, | |||
| 4794 | return -EDEADLK; | 4792 | return -EDEADLK; |
| 4795 | 4793 | ||
| 4796 | crtc_state = drm_atomic_get_crtc_state(plane_state->state, crtc); | 4794 | crtc_state = drm_atomic_get_crtc_state(plane_state->state, crtc); |
| 4795 | if (IS_ERR(crtc_state)) | ||
| 4796 | return PTR_ERR(crtc_state); | ||
| 4797 | |||
| 4797 | if (crtc->primary == plane && crtc_state->active) { | 4798 | if (crtc->primary == plane && crtc_state->active) { |
| 4798 | if (!plane_state->fb) | 4799 | if (!plane_state->fb) |
| 4799 | return -EINVAL; | 4800 | return -EINVAL; |
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c index 9bd142f65f9b..e1acc10e35a2 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | |||
| @@ -109,7 +109,7 @@ enum dc_edid_status dm_helpers_parse_edid_caps( | |||
| 109 | struct cea_sad *sad = &sads[i]; | 109 | struct cea_sad *sad = &sads[i]; |
| 110 | 110 | ||
| 111 | edid_caps->audio_modes[i].format_code = sad->format; | 111 | edid_caps->audio_modes[i].format_code = sad->format; |
| 112 | edid_caps->audio_modes[i].channel_count = sad->channels; | 112 | edid_caps->audio_modes[i].channel_count = sad->channels + 1; |
| 113 | edid_caps->audio_modes[i].sample_rate = sad->freq; | 113 | edid_caps->audio_modes[i].sample_rate = sad->freq; |
| 114 | edid_caps->audio_modes[i].sample_size = sad->byte2; | 114 | edid_caps->audio_modes[i].sample_size = sad->byte2; |
| 115 | } | 115 | } |
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h b/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h index a993279a8f2d..f11f17fe08f9 100644 --- a/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h | |||
| @@ -496,6 +496,9 @@ struct dce_hwseq_registers { | |||
| 496 | HWS_SF(, DOMAIN7_PG_STATUS, DOMAIN7_PGFSM_PWR_STATUS, mask_sh), \ | 496 | HWS_SF(, DOMAIN7_PG_STATUS, DOMAIN7_PGFSM_PWR_STATUS, mask_sh), \ |
| 497 | HWS_SF(, DC_IP_REQUEST_CNTL, IP_REQUEST_EN, mask_sh), \ | 497 | HWS_SF(, DC_IP_REQUEST_CNTL, IP_REQUEST_EN, mask_sh), \ |
| 498 | HWS_SF(, D1VGA_CONTROL, D1VGA_MODE_ENABLE, mask_sh),\ | 498 | HWS_SF(, D1VGA_CONTROL, D1VGA_MODE_ENABLE, mask_sh),\ |
| 499 | HWS_SF(, D2VGA_CONTROL, D2VGA_MODE_ENABLE, mask_sh),\ | ||
| 500 | HWS_SF(, D3VGA_CONTROL, D3VGA_MODE_ENABLE, mask_sh),\ | ||
| 501 | HWS_SF(, D4VGA_CONTROL, D4VGA_MODE_ENABLE, mask_sh),\ | ||
| 499 | HWS_SF(, VGA_TEST_CONTROL, VGA_TEST_ENABLE, mask_sh),\ | 502 | HWS_SF(, VGA_TEST_CONTROL, VGA_TEST_ENABLE, mask_sh),\ |
| 500 | HWS_SF(, VGA_TEST_CONTROL, VGA_TEST_RENDER_START, mask_sh),\ | 503 | HWS_SF(, VGA_TEST_CONTROL, VGA_TEST_RENDER_START, mask_sh),\ |
| 501 | HWS_SF(, LVTMA_PWRSEQ_CNTL, LVTMA_BLON, mask_sh), \ | 504 | HWS_SF(, LVTMA_PWRSEQ_CNTL, LVTMA_BLON, mask_sh), \ |
| @@ -591,7 +594,10 @@ struct dce_hwseq_registers { | |||
| 591 | type DENTIST_DISPCLK_WDIVIDER; \ | 594 | type DENTIST_DISPCLK_WDIVIDER; \ |
| 592 | type VGA_TEST_ENABLE; \ | 595 | type VGA_TEST_ENABLE; \ |
| 593 | type VGA_TEST_RENDER_START; \ | 596 | type VGA_TEST_RENDER_START; \ |
| 594 | type D1VGA_MODE_ENABLE; | 597 | type D1VGA_MODE_ENABLE; \ |
| 598 | type D2VGA_MODE_ENABLE; \ | ||
| 599 | type D3VGA_MODE_ENABLE; \ | ||
| 600 | type D4VGA_MODE_ENABLE; | ||
| 595 | 601 | ||
| 596 | struct dce_hwseq_shift { | 602 | struct dce_hwseq_shift { |
| 597 | HWSEQ_REG_FIELD_LIST(uint8_t) | 603 | HWSEQ_REG_FIELD_LIST(uint8_t) |
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c index 3931412ab6d3..87093894ea9e 100644 --- a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c | |||
| @@ -128,23 +128,22 @@ static void set_truncation( | |||
| 128 | return; | 128 | return; |
| 129 | } | 129 | } |
| 130 | /* on other format-to do */ | 130 | /* on other format-to do */ |
| 131 | if (params->flags.TRUNCATE_ENABLED == 0 || | 131 | if (params->flags.TRUNCATE_ENABLED == 0) |
| 132 | params->flags.TRUNCATE_DEPTH == 2) | ||
| 133 | return; | 132 | return; |
| 134 | /*Set truncation depth and Enable truncation*/ | 133 | /*Set truncation depth and Enable truncation*/ |
| 135 | REG_UPDATE_3(FMT_BIT_DEPTH_CONTROL, | 134 | REG_UPDATE_3(FMT_BIT_DEPTH_CONTROL, |
| 136 | FMT_TRUNCATE_EN, 1, | 135 | FMT_TRUNCATE_EN, 1, |
| 137 | FMT_TRUNCATE_DEPTH, | 136 | FMT_TRUNCATE_DEPTH, |
| 138 | params->flags.TRUNCATE_MODE, | 137 | params->flags.TRUNCATE_DEPTH, |
| 139 | FMT_TRUNCATE_MODE, | 138 | FMT_TRUNCATE_MODE, |
| 140 | params->flags.TRUNCATE_DEPTH); | 139 | params->flags.TRUNCATE_MODE); |
| 141 | } | 140 | } |
| 142 | 141 | ||
| 143 | 142 | ||
| 144 | /** | 143 | /** |
| 145 | * set_spatial_dither | 144 | * set_spatial_dither |
| 146 | * 1) set spatial dithering mode: pattern of seed | 145 | * 1) set spatial dithering mode: pattern of seed |
| 147 | * 2) set spatical dithering depth: 0 for 18bpp or 1 for 24bpp | 146 | * 2) set spatial dithering depth: 0 for 18bpp or 1 for 24bpp |
| 148 | * 3) set random seed | 147 | * 3) set random seed |
| 149 | * 4) set random mode | 148 | * 4) set random mode |
| 150 | * lfsr is reset every frame or not reset | 149 | * lfsr is reset every frame or not reset |
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c index 072e4485e85e..dc1e010725c1 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | |||
| @@ -238,14 +238,24 @@ static void enable_power_gating_plane( | |||
| 238 | static void disable_vga( | 238 | static void disable_vga( |
| 239 | struct dce_hwseq *hws) | 239 | struct dce_hwseq *hws) |
| 240 | { | 240 | { |
| 241 | unsigned int in_vga_mode = 0; | 241 | unsigned int in_vga1_mode = 0; |
| 242 | 242 | unsigned int in_vga2_mode = 0; | |
| 243 | REG_GET(D1VGA_CONTROL, D1VGA_MODE_ENABLE, &in_vga_mode); | 243 | unsigned int in_vga3_mode = 0; |
| 244 | 244 | unsigned int in_vga4_mode = 0; | |
| 245 | if (in_vga_mode == 0) | 245 | |
| 246 | REG_GET(D1VGA_CONTROL, D1VGA_MODE_ENABLE, &in_vga1_mode); | ||
| 247 | REG_GET(D2VGA_CONTROL, D2VGA_MODE_ENABLE, &in_vga2_mode); | ||
| 248 | REG_GET(D3VGA_CONTROL, D3VGA_MODE_ENABLE, &in_vga3_mode); | ||
| 249 | REG_GET(D4VGA_CONTROL, D4VGA_MODE_ENABLE, &in_vga4_mode); | ||
| 250 | |||
| 251 | if (in_vga1_mode == 0 && in_vga2_mode == 0 && | ||
| 252 | in_vga3_mode == 0 && in_vga4_mode == 0) | ||
| 246 | return; | 253 | return; |
| 247 | 254 | ||
| 248 | REG_WRITE(D1VGA_CONTROL, 0); | 255 | REG_WRITE(D1VGA_CONTROL, 0); |
| 256 | REG_WRITE(D2VGA_CONTROL, 0); | ||
| 257 | REG_WRITE(D3VGA_CONTROL, 0); | ||
| 258 | REG_WRITE(D4VGA_CONTROL, 0); | ||
| 249 | 259 | ||
| 250 | /* HW Engineer's Notes: | 260 | /* HW Engineer's Notes: |
| 251 | * During switch from vga->extended, if we set the VGA_TEST_ENABLE and | 261 | * During switch from vga->extended, if we set the VGA_TEST_ENABLE and |
