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

Configure Feed

Select the types of activity you want to include in your feed.

drm/amdgpu: Refactor 'amdgpu_connector_dvi_detect' in amdgpu_connectors.c

Fixes the below:

WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
WARNING: Missing a blank line after declarations
WARNING: Too many leading tabs - consider code refactoring
+ if (list_connector->connector_type != DRM_MODE_CONNECTOR_VGA) {
WARNING: Too many leading tabs - consider code refactoring
+ if (!amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd)) {

Cc: Guchun Chen <guchun.chen@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Pan, Xinhui" <Xinhui.Pan@amd.com>
Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Acked-by: Guchun Chen <guchun.chen@amd.com>
Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Srinivasan Shanmugam and committed by
Alex Deucher
8a1de314 5ce8eccd

+42 -27
+42 -27
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
··· 103 103 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); 104 104 struct amdgpu_connector_atom_dig *dig_connector; 105 105 int bpc = 8; 106 - unsigned mode_clock, max_tmds_clock; 106 + unsigned int mode_clock, max_tmds_clock; 107 107 108 108 switch (connector->connector_type) { 109 109 case DRM_MODE_CONNECTOR_DVII: ··· 255 255 return amdgpu_connector->edid; 256 256 } else if (edid_blob) { 257 257 struct edid *edid = kmemdup(edid_blob->data, edid_blob->length, GFP_KERNEL); 258 + 258 259 if (edid) 259 260 amdgpu_connector->edid = edid; 260 261 } ··· 582 581 amdgpu_encoder = to_amdgpu_encoder(connector->encoder); 583 582 } else { 584 583 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; 584 + 585 585 amdgpu_encoder = to_amdgpu_encoder(connector_funcs->best_encoder(connector)); 586 586 } 587 587 ··· 799 797 amdgpu_encoder = to_amdgpu_encoder(connector->encoder); 800 798 else { 801 799 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; 800 + 802 801 amdgpu_encoder = to_amdgpu_encoder(connector_funcs->best_encoder(connector)); 803 802 } 804 803 ··· 982 979 return false; 983 980 } 984 981 982 + static void amdgpu_connector_shared_ddc(enum drm_connector_status *status, 983 + struct drm_connector *connector, 984 + struct amdgpu_connector *amdgpu_connector) 985 + { 986 + struct drm_connector *list_connector; 987 + struct drm_connector_list_iter iter; 988 + struct amdgpu_connector *list_amdgpu_connector; 989 + struct drm_device *dev = connector->dev; 990 + struct amdgpu_device *adev = drm_to_adev(dev); 991 + 992 + if (amdgpu_connector->shared_ddc && *status == connector_status_connected) { 993 + drm_connector_list_iter_begin(dev, &iter); 994 + drm_for_each_connector_iter(list_connector, 995 + &iter) { 996 + if (connector == list_connector) 997 + continue; 998 + list_amdgpu_connector = to_amdgpu_connector(list_connector); 999 + if (list_amdgpu_connector->shared_ddc && 1000 + list_amdgpu_connector->ddc_bus->rec.i2c_id == 1001 + amdgpu_connector->ddc_bus->rec.i2c_id) { 1002 + /* cases where both connectors are digital */ 1003 + if (list_connector->connector_type != DRM_MODE_CONNECTOR_VGA) { 1004 + /* hpd is our only option in this case */ 1005 + if (!amdgpu_display_hpd_sense(adev, 1006 + amdgpu_connector->hpd.hpd)) { 1007 + amdgpu_connector_free_edid(connector); 1008 + *status = connector_status_disconnected; 1009 + } 1010 + } 1011 + } 1012 + } 1013 + drm_connector_list_iter_end(&iter); 1014 + } 1015 + } 1016 + 985 1017 /* 986 1018 * DVI is complicated 987 1019 * Do a DDC probe, if DDC probe passes, get the full EDID so ··· 1103 1065 * DDC line. The latter is more complex because with DVI<->HDMI adapters 1104 1066 * you don't really know what's connected to which port as both are digital. 1105 1067 */ 1106 - if (amdgpu_connector->shared_ddc && (ret == connector_status_connected)) { 1107 - struct drm_connector *list_connector; 1108 - struct drm_connector_list_iter iter; 1109 - struct amdgpu_connector *list_amdgpu_connector; 1110 - 1111 - drm_connector_list_iter_begin(dev, &iter); 1112 - drm_for_each_connector_iter(list_connector, 1113 - &iter) { 1114 - if (connector == list_connector) 1115 - continue; 1116 - list_amdgpu_connector = to_amdgpu_connector(list_connector); 1117 - if (list_amdgpu_connector->shared_ddc && 1118 - (list_amdgpu_connector->ddc_bus->rec.i2c_id == 1119 - amdgpu_connector->ddc_bus->rec.i2c_id)) { 1120 - /* cases where both connectors are digital */ 1121 - if (list_connector->connector_type != DRM_MODE_CONNECTOR_VGA) { 1122 - /* hpd is our only option in this case */ 1123 - if (!amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd)) { 1124 - amdgpu_connector_free_edid(connector); 1125 - ret = connector_status_disconnected; 1126 - } 1127 - } 1128 - } 1129 - } 1130 - drm_connector_list_iter_end(&iter); 1131 - } 1068 + amdgpu_connector_shared_ddc(&ret, connector, amdgpu_connector); 1132 1069 } 1133 1070 } 1134 1071 ··· 1205 1192 static void amdgpu_connector_dvi_force(struct drm_connector *connector) 1206 1193 { 1207 1194 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); 1195 + 1208 1196 if (connector->force == DRM_FORCE_ON) 1209 1197 amdgpu_connector->use_digital = false; 1210 1198 if (connector->force == DRM_FORCE_ON_DIGITAL) ··· 1440 1426 ret = connector_status_connected; 1441 1427 else if (amdgpu_connector->dac_load_detect) { /* try load detection */ 1442 1428 const struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; 1429 + 1443 1430 ret = encoder_funcs->detect(encoder, connector); 1444 1431 } 1445 1432 }