@@ -6445,18 +6445,23 @@ amdgpu_dm_connector_late_register(struct drm_connector *connector)
6445
6445
static void amdgpu_dm_connector_funcs_force (struct drm_connector * connector )
6446
6446
{
6447
6447
struct amdgpu_dm_connector * aconnector = to_amdgpu_dm_connector (connector );
6448
- struct amdgpu_connector * amdgpu_connector = to_amdgpu_connector (connector );
6449
6448
struct dc_link * dc_link = aconnector -> dc_link ;
6450
6449
struct dc_sink * dc_em_sink = aconnector -> dc_em_sink ;
6451
6450
struct edid * edid ;
6451
+ struct i2c_adapter * ddc ;
6452
+
6453
+ if (dc_link -> aux_mode )
6454
+ ddc = & aconnector -> dm_dp_aux .aux .ddc ;
6455
+ else
6456
+ ddc = & aconnector -> i2c -> base ;
6452
6457
6453
6458
/*
6454
6459
* Note: drm_get_edid gets edid in the following order:
6455
6460
* 1) override EDID if set via edid_override debugfs,
6456
6461
* 2) firmware EDID if set via edid_firmware module parameter
6457
6462
* 3) regular DDC read.
6458
6463
*/
6459
- edid = drm_get_edid (connector , & amdgpu_connector -> ddc_bus -> aux . ddc );
6464
+ edid = drm_get_edid (connector , ddc );
6460
6465
if (!edid ) {
6461
6466
DRM_ERROR ("No EDID found on connector: %s.\n" , connector -> name );
6462
6467
return ;
@@ -6497,20 +6502,26 @@ static int get_modes(struct drm_connector *connector)
6497
6502
static void create_eml_sink (struct amdgpu_dm_connector * aconnector )
6498
6503
{
6499
6504
struct drm_connector * connector = & aconnector -> base ;
6500
- struct amdgpu_connector * amdgpu_connector = to_amdgpu_connector ( & aconnector -> base ) ;
6505
+ struct dc_link * dc_link = aconnector -> dc_link ;
6501
6506
struct dc_sink_init_data init_params = {
6502
6507
.link = aconnector -> dc_link ,
6503
6508
.sink_signal = SIGNAL_TYPE_VIRTUAL
6504
6509
};
6505
6510
struct edid * edid ;
6511
+ struct i2c_adapter * ddc ;
6512
+
6513
+ if (dc_link -> aux_mode )
6514
+ ddc = & aconnector -> dm_dp_aux .aux .ddc ;
6515
+ else
6516
+ ddc = & aconnector -> i2c -> base ;
6506
6517
6507
6518
/*
6508
6519
* Note: drm_get_edid gets edid in the following order:
6509
6520
* 1) override EDID if set via edid_override debugfs,
6510
6521
* 2) firmware EDID if set via edid_firmware module parameter
6511
6522
* 3) regular DDC read.
6512
6523
*/
6513
- edid = drm_get_edid (connector , & amdgpu_connector -> ddc_bus -> aux . ddc );
6524
+ edid = drm_get_edid (connector , ddc );
6514
6525
if (!edid ) {
6515
6526
DRM_ERROR ("No EDID found on connector: %s.\n" , connector -> name );
6516
6527
return ;
0 commit comments