@@ -6461,15 +6461,23 @@ amdgpu_dm_connector_late_register(struct drm_connector *connector)
6461
6461
static void amdgpu_dm_connector_funcs_force (struct drm_connector * connector )
6462
6462
{
6463
6463
struct amdgpu_dm_connector * aconnector = to_amdgpu_dm_connector (connector );
6464
+ struct amdgpu_connector * amdgpu_connector = to_amdgpu_connector (connector );
6464
6465
struct dc_link * dc_link = aconnector -> dc_link ;
6465
6466
struct dc_sink * dc_em_sink = aconnector -> dc_em_sink ;
6466
6467
struct edid * edid ;
6467
6468
6468
- if (!connector -> edid_override )
6469
+ /*
6470
+ * Note: drm_get_edid gets edid in the following order:
6471
+ * 1) override EDID if set via edid_override debugfs,
6472
+ * 2) firmware EDID if set via edid_firmware module parameter
6473
+ * 3) regular DDC read.
6474
+ */
6475
+ edid = drm_get_edid (connector , & amdgpu_connector -> ddc_bus -> aux .ddc );
6476
+ if (!edid ) {
6477
+ DRM_ERROR ("No EDID found on connector: %s.\n" , connector -> name );
6469
6478
return ;
6479
+ }
6470
6480
6471
- drm_edid_override_connector_update (& aconnector -> base );
6472
- edid = aconnector -> base .edid_blob_ptr -> data ;
6473
6481
aconnector -> edid = edid ;
6474
6482
6475
6483
/* Update emulated (virtual) sink's EDID */
@@ -6504,30 +6512,26 @@ static int get_modes(struct drm_connector *connector)
6504
6512
6505
6513
static void create_eml_sink (struct amdgpu_dm_connector * aconnector )
6506
6514
{
6515
+ struct drm_connector * connector = & aconnector -> base ;
6516
+ struct amdgpu_connector * amdgpu_connector = to_amdgpu_connector (& aconnector -> base );
6507
6517
struct dc_sink_init_data init_params = {
6508
6518
.link = aconnector -> dc_link ,
6509
6519
.sink_signal = SIGNAL_TYPE_VIRTUAL
6510
6520
};
6511
6521
struct edid * edid ;
6512
6522
6513
- if (!aconnector -> base .edid_blob_ptr ) {
6514
- /* if connector->edid_override valid, pass
6515
- * it to edid_override to edid_blob_ptr
6516
- */
6517
-
6518
- drm_edid_override_connector_update (& aconnector -> base );
6519
-
6520
- if (!aconnector -> base .edid_blob_ptr ) {
6521
- DRM_ERROR ("No EDID firmware found on connector: %s ,forcing to OFF!\n" ,
6522
- aconnector -> base .name );
6523
-
6524
- aconnector -> base .force = DRM_FORCE_OFF ;
6525
- return ;
6526
- }
6523
+ /*
6524
+ * Note: drm_get_edid gets edid in the following order:
6525
+ * 1) override EDID if set via edid_override debugfs,
6526
+ * 2) firmware EDID if set via edid_firmware module parameter
6527
+ * 3) regular DDC read.
6528
+ */
6529
+ edid = drm_get_edid (connector , & amdgpu_connector -> ddc_bus -> aux .ddc );
6530
+ if (!edid ) {
6531
+ DRM_ERROR ("No EDID found on connector: %s.\n" , connector -> name );
6532
+ return ;
6527
6533
}
6528
6534
6529
- edid = (struct edid * ) aconnector -> base .edid_blob_ptr -> data ;
6530
-
6531
6535
aconnector -> edid = edid ;
6532
6536
6533
6537
aconnector -> dc_em_sink = dc_link_add_remote_sink (
0 commit comments