forked from mirrors/linux
		
	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>
			
			
This commit is contained in:
		
							parent
							
								
									5ce8eccd53
								
							
						
					
					
						commit
						8a1de314d1
					
				
					 1 changed files with 42 additions and 27 deletions
				
			
		| 
						 | 
					@ -103,7 +103,7 @@ int amdgpu_connector_get_monitor_bpc(struct drm_connector *connector)
 | 
				
			||||||
	struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 | 
						struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 | 
				
			||||||
	struct amdgpu_connector_atom_dig *dig_connector;
 | 
						struct amdgpu_connector_atom_dig *dig_connector;
 | 
				
			||||||
	int bpc = 8;
 | 
						int bpc = 8;
 | 
				
			||||||
	unsigned mode_clock, max_tmds_clock;
 | 
						unsigned int mode_clock, max_tmds_clock;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch (connector->connector_type) {
 | 
						switch (connector->connector_type) {
 | 
				
			||||||
	case DRM_MODE_CONNECTOR_DVII:
 | 
						case DRM_MODE_CONNECTOR_DVII:
 | 
				
			||||||
| 
						 | 
					@ -255,6 +255,7 @@ struct edid *amdgpu_connector_edid(struct drm_connector *connector)
 | 
				
			||||||
		return amdgpu_connector->edid;
 | 
							return amdgpu_connector->edid;
 | 
				
			||||||
	} else if (edid_blob) {
 | 
						} else if (edid_blob) {
 | 
				
			||||||
		struct edid *edid = kmemdup(edid_blob->data, edid_blob->length, GFP_KERNEL);
 | 
							struct edid *edid = kmemdup(edid_blob->data, edid_blob->length, GFP_KERNEL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (edid)
 | 
							if (edid)
 | 
				
			||||||
			amdgpu_connector->edid = edid;
 | 
								amdgpu_connector->edid = edid;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -581,6 +582,7 @@ static int amdgpu_connector_set_property(struct drm_connector *connector,
 | 
				
			||||||
			amdgpu_encoder = to_amdgpu_encoder(connector->encoder);
 | 
								amdgpu_encoder = to_amdgpu_encoder(connector->encoder);
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private;
 | 
								const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			amdgpu_encoder = to_amdgpu_encoder(connector_funcs->best_encoder(connector));
 | 
								amdgpu_encoder = to_amdgpu_encoder(connector_funcs->best_encoder(connector));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -797,6 +799,7 @@ static int amdgpu_connector_set_lcd_property(struct drm_connector *connector,
 | 
				
			||||||
		amdgpu_encoder = to_amdgpu_encoder(connector->encoder);
 | 
							amdgpu_encoder = to_amdgpu_encoder(connector->encoder);
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
		const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private;
 | 
							const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		amdgpu_encoder = to_amdgpu_encoder(connector_funcs->best_encoder(connector));
 | 
							amdgpu_encoder = to_amdgpu_encoder(connector_funcs->best_encoder(connector));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -979,6 +982,41 @@ amdgpu_connector_check_hpd_status_unchanged(struct drm_connector *connector)
 | 
				
			||||||
	return false;
 | 
						return false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void amdgpu_connector_shared_ddc(enum drm_connector_status *status,
 | 
				
			||||||
 | 
										struct drm_connector *connector,
 | 
				
			||||||
 | 
										struct amdgpu_connector *amdgpu_connector)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct drm_connector *list_connector;
 | 
				
			||||||
 | 
						struct drm_connector_list_iter iter;
 | 
				
			||||||
 | 
						struct amdgpu_connector *list_amdgpu_connector;
 | 
				
			||||||
 | 
						struct drm_device *dev = connector->dev;
 | 
				
			||||||
 | 
						struct amdgpu_device *adev = drm_to_adev(dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (amdgpu_connector->shared_ddc && *status == connector_status_connected) {
 | 
				
			||||||
 | 
							drm_connector_list_iter_begin(dev, &iter);
 | 
				
			||||||
 | 
							drm_for_each_connector_iter(list_connector,
 | 
				
			||||||
 | 
										    &iter) {
 | 
				
			||||||
 | 
								if (connector == list_connector)
 | 
				
			||||||
 | 
									continue;
 | 
				
			||||||
 | 
								list_amdgpu_connector = to_amdgpu_connector(list_connector);
 | 
				
			||||||
 | 
								if (list_amdgpu_connector->shared_ddc &&
 | 
				
			||||||
 | 
								    list_amdgpu_connector->ddc_bus->rec.i2c_id ==
 | 
				
			||||||
 | 
								     amdgpu_connector->ddc_bus->rec.i2c_id) {
 | 
				
			||||||
 | 
									/* cases where both connectors are digital */
 | 
				
			||||||
 | 
									if (list_connector->connector_type != DRM_MODE_CONNECTOR_VGA) {
 | 
				
			||||||
 | 
										/* hpd is our only option in this case */
 | 
				
			||||||
 | 
										if (!amdgpu_display_hpd_sense(adev,
 | 
				
			||||||
 | 
													      amdgpu_connector->hpd.hpd)) {
 | 
				
			||||||
 | 
											amdgpu_connector_free_edid(connector);
 | 
				
			||||||
 | 
											*status = connector_status_disconnected;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							drm_connector_list_iter_end(&iter);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * DVI is complicated
 | 
					 * DVI is complicated
 | 
				
			||||||
 * Do a DDC probe, if DDC probe passes, get the full EDID so
 | 
					 * Do a DDC probe, if DDC probe passes, get the full EDID so
 | 
				
			||||||
| 
						 | 
					@ -1065,32 +1103,7 @@ amdgpu_connector_dvi_detect(struct drm_connector *connector, bool force)
 | 
				
			||||||
			 * DDC line.  The latter is more complex because with DVI<->HDMI adapters
 | 
								 * DDC line.  The latter is more complex because with DVI<->HDMI adapters
 | 
				
			||||||
			 * you don't really know what's connected to which port as both are digital.
 | 
								 * you don't really know what's connected to which port as both are digital.
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
			if (amdgpu_connector->shared_ddc && (ret == connector_status_connected)) {
 | 
								 amdgpu_connector_shared_ddc(&ret, connector, amdgpu_connector);
 | 
				
			||||||
				struct drm_connector *list_connector;
 | 
					 | 
				
			||||||
				struct drm_connector_list_iter iter;
 | 
					 | 
				
			||||||
				struct amdgpu_connector *list_amdgpu_connector;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				drm_connector_list_iter_begin(dev, &iter);
 | 
					 | 
				
			||||||
				drm_for_each_connector_iter(list_connector,
 | 
					 | 
				
			||||||
							    &iter) {
 | 
					 | 
				
			||||||
					if (connector == list_connector)
 | 
					 | 
				
			||||||
						continue;
 | 
					 | 
				
			||||||
					list_amdgpu_connector = to_amdgpu_connector(list_connector);
 | 
					 | 
				
			||||||
					if (list_amdgpu_connector->shared_ddc &&
 | 
					 | 
				
			||||||
					    (list_amdgpu_connector->ddc_bus->rec.i2c_id ==
 | 
					 | 
				
			||||||
					     amdgpu_connector->ddc_bus->rec.i2c_id)) {
 | 
					 | 
				
			||||||
						/* cases where both connectors are digital */
 | 
					 | 
				
			||||||
						if (list_connector->connector_type != DRM_MODE_CONNECTOR_VGA) {
 | 
					 | 
				
			||||||
							/* hpd is our only option in this case */
 | 
					 | 
				
			||||||
							if (!amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd)) {
 | 
					 | 
				
			||||||
								amdgpu_connector_free_edid(connector);
 | 
					 | 
				
			||||||
								ret = connector_status_disconnected;
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				drm_connector_list_iter_end(&iter);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1192,6 +1205,7 @@ amdgpu_connector_dvi_encoder(struct drm_connector *connector)
 | 
				
			||||||
static void amdgpu_connector_dvi_force(struct drm_connector *connector)
 | 
					static void amdgpu_connector_dvi_force(struct drm_connector *connector)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 | 
						struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (connector->force == DRM_FORCE_ON)
 | 
						if (connector->force == DRM_FORCE_ON)
 | 
				
			||||||
		amdgpu_connector->use_digital = false;
 | 
							amdgpu_connector->use_digital = false;
 | 
				
			||||||
	if (connector->force == DRM_FORCE_ON_DIGITAL)
 | 
						if (connector->force == DRM_FORCE_ON_DIGITAL)
 | 
				
			||||||
| 
						 | 
					@ -1426,6 +1440,7 @@ amdgpu_connector_dp_detect(struct drm_connector *connector, bool force)
 | 
				
			||||||
				ret = connector_status_connected;
 | 
									ret = connector_status_connected;
 | 
				
			||||||
			else if (amdgpu_connector->dac_load_detect) { /* try load detection */
 | 
								else if (amdgpu_connector->dac_load_detect) { /* try load detection */
 | 
				
			||||||
				const struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
 | 
									const struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				ret = encoder_funcs->detect(encoder, connector);
 | 
									ret = encoder_funcs->detect(encoder, connector);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue