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 at gmail.com>
---
 drivers/gpu/drm/radeon/radeon_atombios.c   |    3 +++
 drivers/gpu/drm/radeon/radeon_connectors.c |    3 +++
 2 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c 
b/drivers/gpu/drm/radeon/radeon_atombios.c
index 6d33da3..ac8d2e9 100644
--- a/drivers/gpu/drm/radeon/radeon_atombios.c
+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
@@ -1555,6 +1555,9 @@ struct radeon_encoder_atom_dig 
*radeon_atombios_get_lvds_info(struct
                if (misc & ATOM_DOUBLE_CLOCK_MODE)
                        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 */
                drm_mode_set_crtcinfo(&lvds->native_mode, 
CRTC_INTERLACE_HALVE_V);

diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c 
b/drivers/gpu/drm/radeon/radeon_connectors.c
index 8afaf7a..5b00f92 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -472,6 +472,9 @@ static int radeon_lvds_get_modes(struct drm_connector 
*connector)
        if (mode) {
                ret = 1;
                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 */
                radeon_add_common_modes(encoder, connector);
        }
-- 
1.7.1.1

Reply via email to