drm/amd/display: update connector->display_info after read edid
[Why] drm_connector->display_info is not passed to amdgpu_dm right way after read edid. [How] display_info is parsed from edid and saved into drm_connector by drm_connector_update_edid_proerty which is called within amdgpu_dm_update_connector_after_detect. call this function after read edid to update drm_connector->display_info Signed-off-by: Hersen Wu <hersenxs.wu@amd.com> Reviewed-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -132,9 +132,6 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev);
|
|||||||
/* removes and deallocates the drm structures, created by the above function */
|
/* removes and deallocates the drm structures, created by the above function */
|
||||||
static void amdgpu_dm_destroy_drm_device(struct amdgpu_display_manager *dm);
|
static void amdgpu_dm_destroy_drm_device(struct amdgpu_display_manager *dm);
|
||||||
|
|
||||||
static void
|
|
||||||
amdgpu_dm_update_connector_after_detect(struct amdgpu_dm_connector *aconnector);
|
|
||||||
|
|
||||||
static int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm,
|
static int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm,
|
||||||
struct drm_plane *plane,
|
struct drm_plane *plane,
|
||||||
unsigned long possible_crtcs,
|
unsigned long possible_crtcs,
|
||||||
@@ -1897,8 +1894,8 @@ static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector)
|
|||||||
caps->aux_min_input_signal = min;
|
caps->aux_min_input_signal = min;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void amdgpu_dm_update_connector_after_detect(
|
||||||
amdgpu_dm_update_connector_after_detect(struct amdgpu_dm_connector *aconnector)
|
struct amdgpu_dm_connector *aconnector)
|
||||||
{
|
{
|
||||||
struct drm_connector *connector = &aconnector->base;
|
struct drm_connector *connector = &aconnector->base;
|
||||||
struct drm_device *dev = connector->dev;
|
struct drm_device *dev = connector->dev;
|
||||||
|
|||||||
@@ -483,6 +483,9 @@ int amdgpu_dm_update_crtc_color_mgmt(struct dm_crtc_state *crtc);
|
|||||||
int amdgpu_dm_update_plane_color_mgmt(struct dm_crtc_state *crtc,
|
int amdgpu_dm_update_plane_color_mgmt(struct dm_crtc_state *crtc,
|
||||||
struct dc_plane_state *dc_plane_state);
|
struct dc_plane_state *dc_plane_state);
|
||||||
|
|
||||||
|
void amdgpu_dm_update_connector_after_detect(
|
||||||
|
struct amdgpu_dm_connector *aconnector);
|
||||||
|
|
||||||
extern const struct drm_encoder_helper_funcs amdgpu_dm_encoder_helper_funcs;
|
extern const struct drm_encoder_helper_funcs amdgpu_dm_encoder_helper_funcs;
|
||||||
|
|
||||||
#endif /* __AMDGPU_DM_H__ */
|
#endif /* __AMDGPU_DM_H__ */
|
||||||
|
|||||||
@@ -580,6 +580,20 @@ enum dc_edid_status dm_helpers_read_local_edid(
|
|||||||
/* We don't need the original edid anymore */
|
/* We don't need the original edid anymore */
|
||||||
kfree(edid);
|
kfree(edid);
|
||||||
|
|
||||||
|
/* connector->display_info will be parsed from EDID and saved
|
||||||
|
* into drm_connector->display_info from edid by call stack
|
||||||
|
* below:
|
||||||
|
* drm_parse_ycbcr420_deep_color_info
|
||||||
|
* drm_parse_hdmi_forum_vsdb
|
||||||
|
* drm_parse_cea_ext
|
||||||
|
* drm_add_display_info
|
||||||
|
* drm_connector_update_edid_property
|
||||||
|
*
|
||||||
|
* drm_connector->display_info will be used by amdgpu_dm funcs,
|
||||||
|
* like fill_stream_properties_from_drm_display_mode
|
||||||
|
*/
|
||||||
|
amdgpu_dm_update_connector_after_detect(aconnector);
|
||||||
|
|
||||||
edid_status = dm_helpers_parse_edid_caps(
|
edid_status = dm_helpers_parse_edid_caps(
|
||||||
ctx,
|
ctx,
|
||||||
&sink->dc_edid,
|
&sink->dc_edid,
|
||||||
|
|||||||
Reference in New Issue
Block a user