aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1964-drm-amd-display-Remove-DPMS-state-dependency-for-fas.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1964-drm-amd-display-Remove-DPMS-state-dependency-for-fas.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1964-drm-amd-display-Remove-DPMS-state-dependency-for-fas.patch158
1 files changed, 158 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1964-drm-amd-display-Remove-DPMS-state-dependency-for-fas.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1964-drm-amd-display-Remove-DPMS-state-dependency-for-fas.patch
new file mode 100644
index 00000000..c7505dfb
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1964-drm-amd-display-Remove-DPMS-state-dependency-for-fas.patch
@@ -0,0 +1,158 @@
+From 5a90c3906782bdd8ca9ee58fa58c998e49d4eec4 Mon Sep 17 00:00:00 2001
+From: SivapiriyanKumarasamy <sivapiriyan.kumarasamy@amd.com>
+Date: Wed, 24 Apr 2019 10:20:15 -0400
+Subject: [PATCH 1964/2940] drm/amd/display: Remove DPMS state dependency for
+ fast boot
+
+[Why]
+The DPMS state of a display should not impact whether we want to enable fast boot.
+Currently fast boot is not enabled when resuming from S4 because of this.
+
+[How]
+Remove check for DPMS state when determining if fast boot
+can be applied.
+
+Signed-off-by: SivapiriyanKumarasamy <sivapiriyan.kumarasamy@amd.com>
+Reviewed-by: Anthony Koo <Anthony.Koo@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
+---
+ .../display/dc/dce110/dce110_hw_sequencer.c | 85 ++++++++-----------
+ 1 file changed, 35 insertions(+), 50 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+index 5919716832a5..d3c821f3899b 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+@@ -1496,10 +1496,11 @@ static void disable_vga_and_power_gate_all_controllers(
+ }
+ }
+
+-static struct dc_link *get_link_for_edp(struct dc *dc)
++static struct dc_link *get_edp_link(struct dc *dc)
+ {
+ int i;
+
++ // report any eDP links, even unconnected DDI's
+ for (i = 0; i < dc->link_count; i++) {
+ if (dc->links[i]->connector_signal == SIGNAL_TYPE_EDP)
+ return dc->links[i];
+@@ -1507,23 +1508,13 @@ static struct dc_link *get_link_for_edp(struct dc *dc)
+ return NULL;
+ }
+
+-static struct dc_link *get_link_for_edp_to_turn_off(
++static struct dc_link *get_edp_link_with_sink(
+ struct dc *dc,
+ struct dc_state *context)
+ {
+ int i;
+ struct dc_link *link = NULL;
+
+- /* check if eDP panel is suppose to be set mode, if yes, no need to disable */
+- for (i = 0; i < context->stream_count; i++) {
+- if (context->streams[i]->signal == SIGNAL_TYPE_EDP) {
+- if (context->streams[i]->dpms_off == true)
+- return context->streams[i]->sink->link;
+- else
+- return NULL;
+- }
+- }
+-
+ /* check if there is an eDP panel not in use */
+ for (i = 0; i < dc->link_count; i++) {
+ if (dc->links[i]->local_sink &&
+@@ -1546,59 +1537,53 @@ static struct dc_link *get_link_for_edp_to_turn_off(
+ void dce110_enable_accelerated_mode(struct dc *dc, struct dc_state *context)
+ {
+ int i;
+- struct dc_link *edp_link_to_turnoff = NULL;
+- struct dc_link *edp_link = get_link_for_edp(dc);
+- bool can_edp_fast_boot_optimize = false;
+- bool apply_edp_fast_boot_optimization = false;
++ struct dc_link *edp_link_with_sink = get_edp_link_with_sink(dc, context);
++ struct dc_link *edp_link = get_edp_link(dc);
++ bool can_apply_edp_fast_boot = false;
+ bool can_apply_seamless_boot = false;
+
+- for (i = 0; i < context->stream_count; i++) {
+- if (context->streams[i]->apply_seamless_boot_optimization) {
+- can_apply_seamless_boot = true;
+- break;
+- }
+- }
+-
+ if (dc->hwss.init_pipes)
+ dc->hwss.init_pipes(dc, context);
+
+- if (edp_link) {
+- /* this seems to cause blank screens on DCE8 */
+- if ((dc->ctx->dce_version == DCE_VERSION_8_0) ||
+- (dc->ctx->dce_version == DCE_VERSION_8_1) ||
+- (dc->ctx->dce_version == DCE_VERSION_8_3))
+- can_edp_fast_boot_optimize = false;
+- else
+- can_edp_fast_boot_optimize =
+- edp_link->link_enc->funcs->is_dig_enabled(edp_link->link_enc);
++ // Check fastboot support, disable on DCE8 because of blank screens
++ if (edp_link && dc->ctx->dce_version != DCE_VERSION_8_0 &&
++ dc->ctx->dce_version != DCE_VERSION_8_1 &&
++ dc->ctx->dce_version != DCE_VERSION_8_3) {
++
++ // enable fastboot if backend is enabled on eDP
++ if (edp_link->link_enc->funcs->is_dig_enabled(edp_link->link_enc)) {
++ /* Find eDP stream and set optimization flag */
++ for (i = 0; i < context->stream_count; i++) {
++ if (context->streams[i]->signal == SIGNAL_TYPE_EDP) {
++ context->streams[i]->apply_edp_fast_boot_optimization = true;
++ can_apply_edp_fast_boot = true;
++ break;
++ }
++ }
++ }
+ }
+
+- if (can_edp_fast_boot_optimize)
+- edp_link_to_turnoff = get_link_for_edp_to_turn_off(dc, context);
+-
+- /* if OS doesn't light up eDP and eDP link is available, we want to disable
+- * If resume from S4/S5, should optimization.
+- */
+- if (can_edp_fast_boot_optimize && !edp_link_to_turnoff) {
+- /* Find eDP stream and set optimization flag */
+- for (i = 0; i < context->stream_count; i++) {
+- if (context->streams[i]->signal == SIGNAL_TYPE_EDP) {
+- context->streams[i]->apply_edp_fast_boot_optimization = true;
+- apply_edp_fast_boot_optimization = true;
+- }
++ // Check seamless boot support
++ for (i = 0; i < context->stream_count; i++) {
++ if (context->streams[i]->apply_seamless_boot_optimization) {
++ can_apply_seamless_boot = true;
++ break;
+ }
+ }
+
+- if (!apply_edp_fast_boot_optimization && !can_apply_seamless_boot) {
+- if (edp_link_to_turnoff) {
++ /* eDP should not have stream in resume from S4 and so even with VBios post
++ * it should get turned off
++ */
++ if (!can_apply_edp_fast_boot && !can_apply_seamless_boot) {
++ if (edp_link_with_sink) {
+ /*turn off backlight before DP_blank and encoder powered down*/
+- dc->hwss.edp_backlight_control(edp_link_to_turnoff, false);
++ dc->hwss.edp_backlight_control(edp_link_with_sink, false);
+ }
+ /*resume from S3, no vbios posting, no need to power down again*/
+ power_down_all_hw_blocks(dc);
+ disable_vga_and_power_gate_all_controllers(dc);
+- if (edp_link_to_turnoff)
+- dc->hwss.edp_power_control(edp_link_to_turnoff, false);
++ if (edp_link_with_sink)
++ dc->hwss.edp_power_control(edp_link_with_sink, false);
+ }
+ bios_set_scratch_acc_mode_change(dc->ctx->dc_bios);
+ }
+--
+2.17.1
+