Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/radeon: convert to using is_hdmi and has_audio from display info

Prefer the parsed results for is_hdmi and has_audio in display info over
calling drm_detect_hdmi_monitor() and drm_detect_monitor_audio(),
respectively.

Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Pan
Cc: amd-gfx@lists.freedesktop.org
Reviewed-by: Robert Foss <rfoss@kernel.org>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/c4dfde81b98a4e938ef1e253b05550cad96e49be.1715353572.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>

+19 -20
+5 -5
drivers/gpu/drm/radeon/atombios_encoders.c
··· 701 701 if (radeon_connector->use_digital && 702 702 (radeon_connector->audio == RADEON_AUDIO_ENABLE)) 703 703 return ATOM_ENCODER_MODE_HDMI; 704 - else if (drm_detect_hdmi_monitor(radeon_connector_edid(connector)) && 704 + else if (connector->display_info.is_hdmi && 705 705 (radeon_connector->audio == RADEON_AUDIO_AUTO)) 706 706 return ATOM_ENCODER_MODE_HDMI; 707 707 else if (radeon_connector->use_digital) ··· 720 720 if (radeon_audio != 0) { 721 721 if (radeon_connector->audio == RADEON_AUDIO_ENABLE) 722 722 return ATOM_ENCODER_MODE_HDMI; 723 - else if (drm_detect_hdmi_monitor(radeon_connector_edid(connector)) && 723 + else if (connector->display_info.is_hdmi && 724 724 (radeon_connector->audio == RADEON_AUDIO_AUTO)) 725 725 return ATOM_ENCODER_MODE_HDMI; 726 726 else ··· 737 737 if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || 738 738 (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) { 739 739 if (radeon_audio != 0 && 740 - drm_detect_monitor_audio(radeon_connector_edid(connector)) && 740 + connector->display_info.has_audio && 741 741 ASIC_IS_DCE4(rdev) && !ASIC_IS_DCE5(rdev)) 742 742 return ATOM_ENCODER_MODE_DP_AUDIO; 743 743 return ATOM_ENCODER_MODE_DP; 744 744 } else if (radeon_audio != 0) { 745 745 if (radeon_connector->audio == RADEON_AUDIO_ENABLE) 746 746 return ATOM_ENCODER_MODE_HDMI; 747 - else if (drm_detect_hdmi_monitor(radeon_connector_edid(connector)) && 747 + else if (connector->display_info.is_hdmi && 748 748 (radeon_connector->audio == RADEON_AUDIO_AUTO)) 749 749 return ATOM_ENCODER_MODE_HDMI; 750 750 else ··· 755 755 break; 756 756 case DRM_MODE_CONNECTOR_eDP: 757 757 if (radeon_audio != 0 && 758 - drm_detect_monitor_audio(radeon_connector_edid(connector)) && 758 + connector->display_info.has_audio && 759 759 ASIC_IS_DCE4(rdev) && !ASIC_IS_DCE5(rdev)) 760 760 return ATOM_ENCODER_MODE_DP_AUDIO; 761 761 return ATOM_ENCODER_MODE_DP;
+2 -3
drivers/gpu/drm/radeon/evergreen_hdmi.c
··· 412 412 if (enable) { 413 413 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); 414 414 415 - if (connector && drm_detect_monitor_audio(radeon_connector_edid(connector))) { 415 + if (connector && connector->display_info.has_audio) { 416 416 WREG32(HDMI_INFOFRAME_CONTROL0 + dig->afmt->offset, 417 417 HDMI_AVI_INFO_SEND | /* enable AVI info frames */ 418 418 HDMI_AVI_INFO_CONT | /* required for audio info values to be updated */ ··· 450 450 if (!dig || !dig->afmt) 451 451 return; 452 452 453 - if (enable && connector && 454 - drm_detect_monitor_audio(radeon_connector_edid(connector))) { 453 + if (enable && connector && connector->display_info.has_audio) { 455 454 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); 456 455 struct radeon_connector *radeon_connector = to_radeon_connector(connector); 457 456 struct radeon_connector_atom_dig *dig_connector;
+3 -3
drivers/gpu/drm/radeon/radeon_audio.c
··· 409 409 radeon_encoder->audio = rdev->audio.hdmi_funcs; 410 410 } 411 411 412 - if (drm_detect_monitor_audio(radeon_connector_edid(connector))) { 412 + if (connector->display_info.has_audio) { 413 413 if (!dig->pin) 414 414 dig->pin = radeon_audio_get_pin(encoder); 415 415 radeon_audio_enable(rdev, dig->pin, 0xf); ··· 646 646 if (!connector) 647 647 return; 648 648 649 - if (drm_detect_monitor_audio(radeon_connector_edid(connector))) { 649 + if (connector->display_info.has_audio) { 650 650 radeon_audio_set_mute(encoder, true); 651 651 652 652 radeon_audio_write_speaker_allocation(encoder); ··· 686 686 if (!connector) 687 687 return; 688 688 689 - if (drm_detect_monitor_audio(radeon_connector_edid(connector))) { 689 + if (connector->display_info.has_audio) { 690 690 radeon_audio_write_speaker_allocation(encoder); 691 691 radeon_audio_write_sad_regs(encoder); 692 692 radeon_audio_write_latency_fields(encoder, mode);
+6 -6
drivers/gpu/drm/radeon/radeon_connectors.c
··· 109 109 case DRM_MODE_CONNECTOR_DVII: 110 110 case DRM_MODE_CONNECTOR_HDMIB: 111 111 if (radeon_connector->use_digital) { 112 - if (drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { 112 + if (connector->display_info.is_hdmi) { 113 113 if (connector->display_info.bpc) 114 114 bpc = connector->display_info.bpc; 115 115 } ··· 117 117 break; 118 118 case DRM_MODE_CONNECTOR_DVID: 119 119 case DRM_MODE_CONNECTOR_HDMIA: 120 - if (drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { 120 + if (connector->display_info.is_hdmi) { 121 121 if (connector->display_info.bpc) 122 122 bpc = connector->display_info.bpc; 123 123 } ··· 126 126 dig_connector = radeon_connector->con_priv; 127 127 if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || 128 128 (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) || 129 - drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { 129 + connector->display_info.is_hdmi) { 130 130 if (connector->display_info.bpc) 131 131 bpc = connector->display_info.bpc; 132 132 } ··· 150 150 break; 151 151 } 152 152 153 - if (drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { 153 + if (connector->display_info.is_hdmi) { 154 154 /* hdmi deep color only implemented on DCE4+ */ 155 155 if ((bpc > 8) && !ASIC_IS_DCE4(rdev)) { 156 156 DRM_DEBUG("%s: HDMI deep color %d bpc unsupported. Using 8 bpc.\n", ··· 1478 1478 (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D) || 1479 1479 (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_HDMI_TYPE_B)) 1480 1480 return MODE_OK; 1481 - else if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { 1481 + else if (ASIC_IS_DCE6(rdev) && connector->display_info.is_hdmi) { 1482 1482 /* HDMI 1.3+ supports max clock of 340 Mhz */ 1483 1483 if (mode->clock > 340000) 1484 1484 return MODE_CLOCK_HIGH; ··· 1774 1774 (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) { 1775 1775 return radeon_dp_mode_valid_helper(connector, mode); 1776 1776 } else { 1777 - if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { 1777 + if (ASIC_IS_DCE6(rdev) && connector->display_info.is_hdmi) { 1778 1778 /* HDMI 1.3+ supports max clock of 340 Mhz */ 1779 1779 if (mode->clock > 340000) 1780 1780 return MODE_CLOCK_HIGH;
+1 -1
drivers/gpu/drm/radeon/radeon_display.c
··· 1722 1722 (!(mode->flags & DRM_MODE_FLAG_INTERLACE)) && 1723 1723 ((radeon_encoder->underscan_type == UNDERSCAN_ON) || 1724 1724 ((radeon_encoder->underscan_type == UNDERSCAN_AUTO) && 1725 - drm_detect_hdmi_monitor(radeon_connector_edid(connector)) && 1725 + connector->display_info.is_hdmi && 1726 1726 is_hdtv_mode(mode)))) { 1727 1727 if (radeon_encoder->underscan_hborder != 0) 1728 1728 radeon_crtc->h_border = radeon_encoder->underscan_hborder;
+2 -2
drivers/gpu/drm/radeon/radeon_encoders.c
··· 386 386 case DRM_MODE_CONNECTOR_HDMIB: 387 387 if (radeon_connector->use_digital) { 388 388 /* HDMI 1.3 supports up to 340 Mhz over single link */ 389 - if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { 389 + if (ASIC_IS_DCE6(rdev) && connector->display_info.is_hdmi) { 390 390 if (pixel_clock > 340000) 391 391 return true; 392 392 else ··· 408 408 return false; 409 409 else { 410 410 /* HDMI 1.3 supports up to 340 Mhz over single link */ 411 - if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { 411 + if (ASIC_IS_DCE6(rdev) && connector->display_info.is_hdmi) { 412 412 if (pixel_clock > 340000) 413 413 return true; 414 414 else