@@ -6534,18 +6534,23 @@ amdgpu_dm_connector_late_register(struct drm_connector *connector)
65346534static void amdgpu_dm_connector_funcs_force (struct drm_connector * connector )
65356535{
65366536 struct amdgpu_dm_connector * aconnector = to_amdgpu_dm_connector (connector );
6537- struct amdgpu_connector * amdgpu_connector = to_amdgpu_connector (connector );
65386537 struct dc_link * dc_link = aconnector -> dc_link ;
65396538 struct dc_sink * dc_em_sink = aconnector -> dc_em_sink ;
65406539 struct edid * edid ;
6540+ struct i2c_adapter * ddc ;
6541+
6542+ if (dc_link -> aux_mode )
6543+ ddc = & aconnector -> dm_dp_aux .aux .ddc ;
6544+ else
6545+ ddc = & aconnector -> i2c -> base ;
65416546
65426547 /*
65436548 * Note: drm_get_edid gets edid in the following order:
65446549 * 1) override EDID if set via edid_override debugfs,
65456550 * 2) firmware EDID if set via edid_firmware module parameter
65466551 * 3) regular DDC read.
65476552 */
6548- edid = drm_get_edid (connector , & amdgpu_connector -> ddc_bus -> aux . ddc );
6553+ edid = drm_get_edid (connector , ddc );
65496554 if (!edid ) {
65506555 DRM_ERROR ("No EDID found on connector: %s.\n" , connector -> name );
65516556 return ;
@@ -6586,20 +6591,26 @@ static int get_modes(struct drm_connector *connector)
65866591static void create_eml_sink (struct amdgpu_dm_connector * aconnector )
65876592{
65886593 struct drm_connector * connector = & aconnector -> base ;
6589- struct amdgpu_connector * amdgpu_connector = to_amdgpu_connector ( & aconnector -> base ) ;
6594+ struct dc_link * dc_link = aconnector -> dc_link ;
65906595 struct dc_sink_init_data init_params = {
65916596 .link = aconnector -> dc_link ,
65926597 .sink_signal = SIGNAL_TYPE_VIRTUAL
65936598 };
65946599 struct edid * edid ;
6600+ struct i2c_adapter * ddc ;
6601+
6602+ if (dc_link -> aux_mode )
6603+ ddc = & aconnector -> dm_dp_aux .aux .ddc ;
6604+ else
6605+ ddc = & aconnector -> i2c -> base ;
65956606
65966607 /*
65976608 * Note: drm_get_edid gets edid in the following order:
65986609 * 1) override EDID if set via edid_override debugfs,
65996610 * 2) firmware EDID if set via edid_firmware module parameter
66006611 * 3) regular DDC read.
66016612 */
6602- edid = drm_get_edid (connector , & amdgpu_connector -> ddc_bus -> aux . ddc );
6613+ edid = drm_get_edid (connector , ddc );
66036614 if (!edid ) {
66046615 DRM_ERROR ("No EDID found on connector: %s.\n" , connector -> name );
66056616 return ;
0 commit comments