aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/radeon/radeon_encoders.c54
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 e4e64a80b58..55b84b8e6b2 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