Эх сурвалжийг харах

drm/radeon/kms: use LCD physical size from vbios tables if available

Some systems have the LCD width and height in mm available in the
LCD info table.  Use this info if there is no EDID to provide it.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Alex Deucher 14 жил өмнө
parent
commit
7a868e18a4

+ 3 - 0
drivers/gpu/drm/radeon/radeon_atombios.c

@@ -1500,6 +1500,9 @@ struct radeon_encoder_atom_dig *radeon_atombios_get_lvds_info(struct
 		if (misc & ATOM_DOUBLE_CLOCK_MODE)
 		if (misc & ATOM_DOUBLE_CLOCK_MODE)
 			lvds->native_mode.flags |= DRM_MODE_FLAG_DBLSCAN;
 			lvds->native_mode.flags |= DRM_MODE_FLAG_DBLSCAN;
 
 
+		lvds->native_mode.width_mm = lvds_info->info.sLCDTiming.usImageHSize;
+		lvds->native_mode.height_mm = lvds_info->info.sLCDTiming.usImageVSize;
+
 		/* set crtc values */
 		/* set crtc values */
 		drm_mode_set_crtcinfo(&lvds->native_mode, CRTC_INTERLACE_HALVE_V);
 		drm_mode_set_crtcinfo(&lvds->native_mode, CRTC_INTERLACE_HALVE_V);
 
 

+ 3 - 0
drivers/gpu/drm/radeon/radeon_connectors.c

@@ -472,6 +472,9 @@ static int radeon_lvds_get_modes(struct drm_connector *connector)
 	if (mode) {
 	if (mode) {
 		ret = 1;
 		ret = 1;
 		drm_mode_probed_add(connector, mode);
 		drm_mode_probed_add(connector, mode);
+		/* add the width/height from vbios tables if available */
+		connector->display_info.width_mm = mode->width_mm;
+		connector->display_info.height_mm = mode->height_mm;
 		/* add scaled modes */
 		/* add scaled modes */
 		radeon_add_common_modes(encoder, connector);
 		radeon_add_common_modes(encoder, connector);
 	}
 	}