diff options
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_encoders.c | 54 |
1 files changed, 25 insertions, 29 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c index e4e64a80b58d..55b84b8e6b29 100644 --- a/drivers/gpu/drm/radeon/radeon_encoders.c +++ b/drivers/gpu/drm/radeon/radeon_encoders.c | |||
@@ -910,15 +910,9 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t | |||
910 | else | 910 | else |
911 | args.v3.ucLaneNum = 4; | 911 | args.v3.ucLaneNum = 4; |
912 | 912 | ||
913 | if (ASIC_IS_DCE41(rdev)) { | 913 | if (dig->linkb) { |
914 | args.v3.acConfig.ucEncoderSel = dig->dig_encoder; | 914 | args.v3.acConfig.ucLinkSel = 1; |
915 | if (dig->linkb) | 915 | args.v3.acConfig.ucEncoderSel = 1; |
916 | args.v3.acConfig.ucLinkSel = 1; | ||
917 | } else { | ||
918 | if (dig->linkb) { | ||
919 | args.v3.acConfig.ucLinkSel = 1; | ||
920 | args.v3.acConfig.ucEncoderSel = 1; | ||
921 | } | ||
922 | } | 916 | } |
923 | 917 | ||
924 | /* Select the PLL for the PHY | 918 | /* Select the PLL for the PHY |
@@ -1535,32 +1529,34 @@ static int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder) | |||
1535 | struct radeon_encoder_atom_dig *dig; | 1529 | struct radeon_encoder_atom_dig *dig; |
1536 | uint32_t dig_enc_in_use = 0; | 1530 | uint32_t dig_enc_in_use = 0; |
1537 | 1531 | ||
1538 | /* on DCE41 and encoder can driver any phy so just crtc id */ | ||
1539 | if (ASIC_IS_DCE41(rdev)) { | ||
1540 | return radeon_crtc->crtc_id; | ||
1541 | } | ||
1542 | |||
1543 | if (ASIC_IS_DCE4(rdev)) { | 1532 | if (ASIC_IS_DCE4(rdev)) { |
1544 | dig = radeon_encoder->enc_priv; | 1533 | dig = radeon_encoder->enc_priv; |
1545 | switch (radeon_encoder->encoder_id) { | 1534 | if (ASIC_IS_DCE41(rdev)) { |
1546 | case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: | ||
1547 | if (dig->linkb) | 1535 | if (dig->linkb) |
1548 | return 1; | 1536 | return 1; |
1549 | else | 1537 | else |
1550 | return 0; | 1538 | return 0; |
1551 | break; | 1539 | } else { |
1552 | case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: | 1540 | switch (radeon_encoder->encoder_id) { |
1553 | if (dig->linkb) | 1541 | case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: |
1554 | return 3; | 1542 | if (dig->linkb) |
1555 | else | 1543 | return 1; |
1556 | return 2; | 1544 | else |
1557 | break; | 1545 | return 0; |
1558 | case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: | 1546 | break; |
1559 | if (dig->linkb) | 1547 | case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: |
1560 | return 5; | 1548 | if (dig->linkb) |
1561 | else | 1549 | return 3; |
1562 | return 4; | 1550 | else |
1563 | break; | 1551 | return 2; |
1552 | break; | ||
1553 | case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: | ||
1554 | if (dig->linkb) | ||
1555 | return 5; | ||
1556 | else | ||
1557 | return 4; | ||
1558 | break; | ||
1559 | } | ||
1564 | } | 1560 | } |
1565 | } | 1561 | } |
1566 | 1562 | ||