]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
Merge tag 'drm-misc-fixes-2021-01-08' of git://anongit.freedesktop.org/drm/drm-misc...
[linux.git] / drivers / gpu / drm / amd / display / dc / dce / dce_link_encoder.c
index b409f6b2bfd832bea2f68da1e1404e0441ba4b5e..210466b2d8631f0aadec3160b969cac8897e4604 100644 (file)
@@ -119,7 +119,8 @@ static const struct link_encoder_funcs dce110_lnk_enc_funcs = {
        .disable_hpd = dce110_link_encoder_disable_hpd,
        .is_dig_enabled = dce110_is_dig_enabled,
        .destroy = dce110_link_encoder_destroy,
-       .get_max_link_cap = dce110_link_encoder_get_max_link_cap
+       .get_max_link_cap = dce110_link_encoder_get_max_link_cap,
+       .get_dig_frontend = dce110_get_dig_frontend,
 };
 
 static enum bp_result link_transmitter_control(
@@ -235,6 +236,44 @@ static void set_link_training_complete(
 
 }
 
+unsigned int dce110_get_dig_frontend(struct link_encoder *enc)
+{
+       struct dce110_link_encoder *enc110 = TO_DCE110_LINK_ENC(enc);
+       u32 value;
+       enum engine_id result;
+
+       REG_GET(DIG_BE_CNTL, DIG_FE_SOURCE_SELECT, &value);
+
+       switch (value) {
+       case DCE110_DIG_FE_SOURCE_SELECT_DIGA:
+               result = ENGINE_ID_DIGA;
+               break;
+       case DCE110_DIG_FE_SOURCE_SELECT_DIGB:
+               result = ENGINE_ID_DIGB;
+               break;
+       case DCE110_DIG_FE_SOURCE_SELECT_DIGC:
+               result = ENGINE_ID_DIGC;
+               break;
+       case DCE110_DIG_FE_SOURCE_SELECT_DIGD:
+               result = ENGINE_ID_DIGD;
+               break;
+       case DCE110_DIG_FE_SOURCE_SELECT_DIGE:
+               result = ENGINE_ID_DIGE;
+               break;
+       case DCE110_DIG_FE_SOURCE_SELECT_DIGF:
+               result = ENGINE_ID_DIGF;
+               break;
+       case DCE110_DIG_FE_SOURCE_SELECT_DIGG:
+               result = ENGINE_ID_DIGG;
+               break;
+       default:
+               // invalid source select DIG
+               result = ENGINE_ID_UNKNOWN;
+       }
+
+       return result;
+}
+
 void dce110_link_encoder_set_dp_phy_pattern_training_pattern(
        struct link_encoder *enc,
        uint32_t index)
@@ -1665,7 +1704,8 @@ static const struct link_encoder_funcs dce60_lnk_enc_funcs = {
        .disable_hpd = dce110_link_encoder_disable_hpd,
        .is_dig_enabled = dce110_is_dig_enabled,
        .destroy = dce110_link_encoder_destroy,
-       .get_max_link_cap = dce110_link_encoder_get_max_link_cap
+       .get_max_link_cap = dce110_link_encoder_get_max_link_cap,
+       .get_dig_frontend = dce110_get_dig_frontend
 };
 
 void dce60_link_encoder_construct(
This page took 0.030954 seconds and 4 git commands to generate.