Commit c31b41f1 authored by Tom Chung's avatar Tom Chung Committed by Alex Deucher
Browse files

drm/amd/display: Disable PSR-SU on some OLED panel



[Why]
PSR-SU may cause some glitching randomly on some OLED panel.

[How]
Disable the PSR-SU for certain PSR-SU OLED panel.

Reviewed-by: default avatarSun peng Li <sunpeng.li@amd.com>
Signed-off-by: default avatarTom Chung <chiahsuan.chung@amd.com>
Signed-off-by: default avatarZaeem Mohamed <zaeem.mohamed@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 36681f15
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -30,6 +30,23 @@
#include "amdgpu_dm.h"
#include "modules/power/power_helpers.h"

static bool is_specific_oled_panel(struct dc_link *link)
{
	if (!link->dpcd_sink_ext_caps.bits.oled)
		return false;

	/* Disable PSR-SU for some OLED panels to avoid glitches */
	if (link->dpcd_caps.sink_dev_id == 0xBA4159) {
		uint8_t sink_dev_id_str1[] = {'4', '0', 'C', 'U', '1'};

		if (!memcmp(link->dpcd_caps.sink_dev_id_str, sink_dev_id_str1,
		    sizeof(sink_dev_id_str1)))
			return true;
	}

	return false;
}

static bool link_supports_psrsu(struct dc_link *link)
{
	struct dc *dc = link->ctx->dc;
@@ -40,6 +57,9 @@ static bool link_supports_psrsu(struct dc_link *link)
	if (dc->ctx->dce_version < DCN_VERSION_3_1)
		return false;

	if (is_specific_oled_panel(link))
		return false;

	if (!is_psr_su_specific_panel(link))
		return false;