On Fri, 2009-03-20 at 14:13 +0800, yakui_zhao wrote:
> Subject: [DRM/I915]: Sync the default modes for LVDS output device
> From: Zhao Yakui <yakui.z...@intel.com>
> 
>     Sync the default modes for the LVDS output device
>     This covers:
>     Add the default modes for the LVDS output device.
>     The bit of edid->feature.msc indicates whether the display device is not
> continous-frequency. And it is used to determine whether the default modes 
> will
> be added to the output device.
>     But for the LVDS output device the edid->feature.msc will always be 
> set.Even
> when there is no edid, the corresponding bit in the fake edid will be set.
> In such case the default modes will be added to LVDS output device.
>     If not, the modes obtained by using KMS/UMS will be different.

Similar whitespace concerns in this and the previous patch as the first,
plus a couple of review comments below.

> Signed-off-by: Zhao Yakui <yakui.z...@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_lvds.c |  422 
> +++++++++++++++++++++++++++++++++++++-
>  1 file changed, 412 insertions(+), 10 deletions(-)
> 
> Index: linux-2.6/drivers/gpu/drm/i915/intel_lvds.c
> ===================================================================
> --- linux-2.6.orig/drivers/gpu/drm/i915/intel_lvds.c  2009-03-20 
> 11:51:53.000000000 +0800
> +++ linux-2.6/drivers/gpu/drm/i915/intel_lvds.c       2009-03-20 
> 13:36:03.000000000 +0800
> @@ -36,6 +36,381 @@
>  #include "intel_drv.h"
>  #include "i915_drm.h"
>  #include "i915_drv.h"
> +/*
> + * the default modes, which is based on the file of
> + * xserver/xfree86/common/xf86DefModeSet.c.
> + */
> +static struct drm_display_mode default_modes[] = {
> +     /* 640x...@85hz */
> +     { DRM_MODE("640x350", DRM_MODE_TYPE_DRIVER, 31500, 640, 672,
> +                736, 832, 0, 350, 382, 385, 445, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 320x...@85hz */
> +     { DRM_MODE("320x175", DRM_MODE_TYPE_DRIVER, 15750, 320, 336,
> +                368, 416, 0, 175, 191, 192, 222, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 640x...@85hz */
> +     { DRM_MODE("640x400", DRM_MODE_TYPE_DRIVER, 31500, 640, 672,
> +                736, 832, 0, 400, 401, 405, 445, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 320x...@85hz */
> +     { DRM_MODE("320x200", DRM_MODE_TYPE_DRIVER, 15750, 320, 336,
> +                368, 416, 0, 200, 200, 202, 222, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 720x...@85hz */
> +     { DRM_MODE("720x400", DRM_MODE_TYPE_DRIVER, 35500, 720, 756,
> +                828, 936, 0, 400, 401, 405, 446, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 360x...@85hz */
> +     { DRM_MODE("360x200", DRM_MODE_TYPE_DRIVER, 17750, 360, 378,
> +                414, 468, 0, 200, 200, 202, 223, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 640x...@60hz */
> +     { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 600, 656,
> +                752, 800, 0, 480, 490, 492, 525, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 320x...@60hz */
> +     { DRM_MODE("320x240", DRM_MODE_TYPE_DRIVER, 12587, 320, 328,
> +                376, 400, 0, 240, 245, 246, 262, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 640x...@72hz */
> +     { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 31500, 640, 664,
> +                704, 832, 0, 480, 489, 492, 520, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 320x...@72hz */
> +     { DRM_MODE("320x240", DRM_MODE_TYPE_DRIVER, 15750, 320, 332,
> +                352, 416, 0, 240, 244, 246, 260, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 640x...@75hz */
> +     { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 31500, 640, 656,
> +                720, 840, 0, 480, 481, 484, 500, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 320x...@75hz */
> +     { DRM_MODE("320x240", DRM_MODE_TYPE_DRIVER, 15750, 320, 328,
> +                360, 420, 0, 240, 240, 242, 250, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 640x...@85hz */
> +     { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 36000, 640, 696,
> +                752, 832, 0, 480, 481, 484, 509, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 320x...@85hz */
> +     { DRM_MODE("320x240", DRM_MODE_TYPE_DRIVER, 18000, 320, 348,
> +                376, 416, 0, 240, 240, 242, 254, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 800x...@56hz */
> +     { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 36000, 800, 824,
> +                968, 1024, 0, 600, 601, 603, 625, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 400x...@56hz */
> +     { DRM_MODE("400x300", DRM_MODE_TYPE_DRIVER, 18000, 400, 412,
> +                484, 512, 0, 300, 300, 301, 312, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 800x...@60hz */
> +     { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 40000, 800, 840,
> +                968, 1056, 0, 600, 601, 605,  628, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 400x...@60hz */
> +     { DRM_MODE("400x300", DRM_MODE_TYPE_DRIVER, 20000, 400, 426,
> +                484, 528, 0, 300, 300, 302, 314, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 800x...@72hz */
> +     { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 50000, 800, 856,
> +                976, 1040, 0, 600, 637, 643, 666, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 400x...@72hz */
> +     { DRM_MODE("400x300", DRM_MODE_TYPE_DRIVER, 25000, 400, 428,
> +                488, 520, 0, 300, 318, 321, 333, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 800x...@75hz */
> +     { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 49500, 800, 816,
> +                896, 1056, 0, 600, 601, 604, 625, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 400x...@75hz */
> +     { DRM_MODE("400x300", DRM_MODE_TYPE_DRIVER, 24750, 400, 408,
> +                448, 528, 0, 300, 300, 302, 312, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 800x...@85hz */
> +     { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 56300, 800, 832,
> +                896, 1048, 0, 600, 601, 604,  631, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 400x...@85hz */
> +     { DRM_MODE("400x300", DRM_MODE_TYPE_DRIVER, 28150, 400, 416,
> +                448, 524, 0, 300, 300, 302, 315, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1024x...@43hz */
> +     { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 44900, 1024, 1032,
> +                1208, 1264, 0, 768, 768, 776,  817, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 512x...@43hz */
> +     { DRM_MODE("512x384", DRM_MODE_TYPE_DRIVER, 22450, 512, 516,
> +                604, 632, 0, 384, 384, 388, 408, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1024x...@60hz */
> +     { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 65000, 1024, 1048,
> +                1184, 1344, 0, 768, 771, 777, 806, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 512x...@60hz */
> +     { DRM_MODE("512x384", DRM_MODE_TYPE_DRIVER, 32500, 512, 524,
> +                592, 672, 0, 384, 385, 388, 403, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1024x...@70hz */
> +     { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 75000, 1020, 1048,
> +                1184, 1328, 0, 768, 771, 777, 806, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 512x...@70hz */
> +     { DRM_MODE("512x384", DRM_MODE_TYPE_DRIVER, 37500, 510, 524,
> +                592, 664, 0, 384, 385, 388, 403, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1024x...@75hz */
> +     { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 78750, 1024, 1040,
> +                1136, 1312, 0, 768, 769, 772, 800, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 512x...@75hz */
> +     { DRM_MODE("512x384", DRM_MODE_TYPE_DRIVER, 39375, 512, 520,
> +                568, 656, 0, 384, 384, 386, 400, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1024x...@85hz */
> +     { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 94500, 1024, 1072,
> +                1168, 1376, 0, 768, 769, 772, 808, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 512x...@85hz */
> +     { DRM_MODE("512x384", DRM_MODE_TYPE_DRIVER, 47250, 512, 536,
> +                584, 688, 0, 384, 384, 386, 404, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1152x...@75hz */
> +     { DRM_MODE("1152x864", DRM_MODE_TYPE_DRIVER, 108000, 1152, 1216,
> +                1344, 1600, 0, 864, 865, 868, 900, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 576x...@85hz */
> +     { DRM_MODE("576x432", DRM_MODE_TYPE_DRIVER, 54000, 576, 608,
> +                672, 800, 0, 432, 432, 434, 450, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1280x...@60hz */
> +     { DRM_MODE("1280x960", DRM_MODE_TYPE_DRIVER, 108000, 1280, 1376,
> +                1488, 1800, 0, 960, 961, 964, 1000, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 1280x...@60hz */
> +     { DRM_MODE("1280x960", DRM_MODE_TYPE_DRIVER, 540000, 640, 684,
> +                744, 900, 0, 480, 480, 482, 500, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1280x...@85hz */
> +     { DRM_MODE("1280x960", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1344,
> +                1504, 1728, 0, 960, 961, 964,  1011, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 1280x...@85hz */
> +     { DRM_MODE("1280x960", DRM_MODE_TYPE_DRIVER, 74250, 640, 672,
> +                752, 864, 0, 480, 480, 482, 505, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1280x1...@60hz */
> +     { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 108000, 1280, 1328,
> +                1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 640x...@60hz */
> +     { DRM_MODE("640x512", DRM_MODE_TYPE_DRIVER, 54000, 640, 664,
> +                720, 744, 0, 512, 512, 514, 533, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1280x1...@75hz */
> +     { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 135000, 1280, 1296,
> +                1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 640x...@75hz */
> +     { DRM_MODE("640x512", DRM_MODE_TYPE_DRIVER, 67500, 640, 648,
> +                720, 844, 0, 512, 512, 514, 533, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1280x1...@85hz */
> +     { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 157500, 1280, 1344,
> +                1504, 1728, 0, 1024, 1025, 1028, 1072, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 640x...@85hz */
> +     { DRM_MODE("640x512", DRM_MODE_TYPE_DRIVER, 78750, 640, 672,
> +                752, 864, 0, 512, 512, 514, 536, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1600x1...@60hz */
> +     { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 162000, 1600, 1664,
> +                1854, 2160, 0, 1200, 1201, 1205, 1250, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 800x...@60hz */
> +     { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 81000, 800, 832,
> +                928, 1080, 0, 600, 600, 602, 625, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1600x1...@65hz */
> +     { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 175500, 1600, 1664,
> +                1854, 2160, 0, 1200, 1201, 1205, 1250, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 800x...@65hz */
> +     { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 87750, 800, 832,
> +                928, 1080, 0, 600, 600, 602, 625, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1600x1...@70hz */
> +     { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 189000, 1600, 1664,
> +                1854, 2160, 0, 1200, 1201, 1205, 1250, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 800x...@70hz */
> +     { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 94500, 800, 832,
> +                928, 1080, 0, 600, 600, 602, 625, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1600x1...@75hz */
> +     { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 202500, 1600, 1664,
> +                1854, 2160, 0, 1200, 1201, 1205, 1250, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 800x...@75hz */
> +     { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 101250, 800, 832,
> +                928, 1080, 0, 600, 600, 602, 625, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1600x1...@85hz */
> +     { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 229500, 1600, 1664,
> +                1854, 2160, 0, 1200, 1201, 1205, 1250, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 800x...@85hz */
> +     { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 114750, 800, 832,
> +                928, 1080, 0, 600, 600, 602, 625, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1792x1...@60hz */
> +     { DRM_MODE("1792x1344", DRM_MODE_TYPE_DRIVER, 204800, 1792, 1920,
> +                2104, 2448, 0, 1344, 1345, 1348, 1394, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 896x...@60hz */
> +     { DRM_MODE("896x672", DRM_MODE_TYPE_DRIVER, 102400, 896, 960,
> +                1052, 1224, 0, 672, 672, 674, 697, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1792x1...@75hz */
> +     { DRM_MODE("1792x1344", DRM_MODE_TYPE_DRIVER, 261000, 1792, 1888,
> +                2104, 2456, 0, 1344, 1345, 1348, 1417, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 896x...@75hz */
> +     { DRM_MODE("896x672", DRM_MODE_TYPE_DRIVER, 130500, 896, 944,
> +                1052, 1228, 0, 672, 672, 674, 708, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1856x1...@60hz */
> +     { DRM_MODE("1856x1392", DRM_MODE_TYPE_DRIVER, 218300, 1856, 1952,
> +                2176, 2528, 0, 1392, 1393, 1396, 1439, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 928x...@60hz */
> +     { DRM_MODE("928x696", DRM_MODE_TYPE_DRIVER, 109150, 928, 976,
> +                1088, 1264, 0, 696, 696, 698, 719, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1856x1...@75hz */
> +     { DRM_MODE("1856x1392", DRM_MODE_TYPE_DRIVER, 288000, 1792, 1984,
> +                2208, 2560, 0, 1392, 1393, 1396, 1500, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 928x...@75hz */
> +     { DRM_MODE("928x696", DRM_MODE_TYPE_DRIVER, 144000, 896, 992,
> +                1104, 1280, 0, 696, 696, 698, 750, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1920x1...@60hz */
> +     { DRM_MODE("1920x1440", DRM_MODE_TYPE_DRIVER, 234000, 1920, 2048,
> +                2256, 2600, 0, 1440, 1441, 1444, 1500, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 960x...@60hz */
> +     { DRM_MODE("960x720", DRM_MODE_TYPE_DRIVER, 117000, 960, 1024,
> +                1128, 1300, 0, 720, 720, 722, 750, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 1920x1...@75hz */
> +     { DRM_MODE("1920x1440", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2064,
> +                2288, 2640, 0, 1440, 1441, 1444, 1500, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 960x...@75hz */
> +     { DRM_MODE("960x720", DRM_MODE_TYPE_DRIVER, 148500, 960, 1032,
> +                1144, 1320, 0, 720, 720, 722, 750, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* 832x...@75hz (fix if the official/Apple spec is different) */
> +     { DRM_MODE("832x624", DRM_MODE_TYPE_DRIVER, 57284, 832, 864,
> +                928, 1152, 0, 624, 625, 628, 667, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* 416x...@75hz (fix if the official/Apple spec is different) */
> +     { DRM_MODE("416x312", DRM_MODE_TYPE_DRIVER, 28642, 416, 432,
> +                464, 576, 0, 312, 312, 314, 333, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* vesa GTF 1400x1...@60hz */
> +     { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 122200, 1400, 1488,
> +                1640, 1880, 0, 1050, 1052, 1064, 1082, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* vesa GTF 700x...@60hz */
> +     { DRM_MODE("700x525", DRM_MODE_TYPE_DRIVER, 61100, 700, 744,
> +                820, 940, 0, 525, 526, 532, 541, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* vesa GTF 1400x1...@75hz */
> +     { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 155800, 1400, 1464,
> +                1784, 1912, 0, 1050, 1052, 1064, 1090, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* vesa GTF 700x...@75hz */
> +     { DRM_MODE("700x525", DRM_MODE_TYPE_DRIVER, 77900, 700, 732,
> +                892, 956, 0, 525, 526, 532, 545, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* vesa GTF 1920x1...@85hz */
> +     { DRM_MODE("1920x1440", DRM_MODE_TYPE_DRIVER, 341350, 1920, 2072,
> +                2288, 2656, 0, 1440, 1441, 1444, 1512, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* vesa GFT 960x...@85hz */
> +     { DRM_MODE("960x720", DRM_MODE_TYPE_DRIVER, 170675, 960, 1036,
> +                1144, 1328, 0, 720, 720, 722, 756, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* vesa GTF 2048x1...@60hz */
> +     { DRM_MODE("2048x1536", DRM_MODE_TYPE_DRIVER, 266950, 2048, 2200,
> +                2424, 2800, 0, 1536, 1537, 1540, 1589, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* vesa GTF 1024x...@60hz */
> +     { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 133475, 1024, 1100,
> +                1212, 1400, 0, 768, 768, 770, 794, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* vesa GTF 2048x1...@75hz */
> +     { DRM_MODE("2048x1536", DRM_MODE_TYPE_DRIVER, 340480, 2048, 2216,
> +                2440, 2832, 0, 1536, 1537, 1540, 1603, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* vesa GTF 1024x...@75hz */
> +     { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 170240, 1024, 1108,
> +                1220, 1416, 0, 768, 768, 770, 801, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +     /* vesa GTF 2048x1...@85hz */
> +     { DRM_MODE("2048x1536", DRM_MODE_TYPE_DRIVER, 388040, 2048, 2216,
> +                2440, 2832, 0, 1536, 1537, 1540, 1612, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
> +     /* vesa GTF 1024x...@85hz */
> +     { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 194020, 1024, 1108,
> +                1220, 1416, 0, 768, 768, 770, 806, 0,
> +                DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
> +                                     DRM_MODE_FLAG_DBLSCAN) },
> +};

This modes list looks like the EDID established modes plus a few extra
GTF modes.  Why are we statically putting this list in intel_lvds.c
instead of accessing the established modes plus cooking up a few GTF
modes on the fly?

>  /*
>   * the following four scaling options are defined.
> @@ -481,6 +856,22 @@
>  }
>  
>  /**
> + * Add the default mode to .
> + */

Sentence fragment?

> +static int lvds_add_default_modes(struct drm_connector *connector)
> +{
> +     int i, num_modes = 0;
> +     struct drm_device *dev = connector->dev;
> +     num_modes = sizeof(default_modes)/sizeof(struct drm_display_mode);
> +     for (i = 0; i < num_modes; i++) {
> +             struct drm_display_mode *mode;
> +
> +             mode = drm_mode_duplicate(dev, &default_modes[i]);
> +             drm_mode_probed_add(connector, mode);
> +     }
> +     return num_modes;
> +}
> +/**
>   * Return the list of DDC modes if available, or the BIOS fixed mode 
> otherwise.
>   */
>  static int intel_lvds_get_modes(struct drm_connector *connector)
> @@ -488,13 +879,24 @@
>       struct drm_device *dev = connector->dev;
>       struct intel_output *intel_output = to_intel_output(connector);
>       struct drm_i915_private *dev_priv = dev->dev_private;
> -     int ret = 0;
> -
> -     ret = intel_ddc_get_modes(intel_output);
> -
> -     if (ret)
> -             return ret;
> +     int ddc_ret = 0, ret = 0, fixed_ret = 0;
>  
> +     ddc_ret = intel_ddc_get_modes(intel_output);

Could we rename ret to "mode_count" or something?  int ret is usually "0
or a -ESOMETHING", while here it's a count of modes we've added to the
output.

> +     /*
> +      * When there exists the EDID info, the bit of feature.msc will always
> +      * be set.
> +      * It seems that bit of feature.msc will also be set even when the
> +      * bogus edid_mon is constructed in 2D driver.
> +      * So in such case the default mode will be added.
> +      */
> +     if (ddc_ret) {
> +             /*
> +              * If the mode can be parsed from the EDID info, we will try
> +              * to add the default mode
> +              */
> +             fixed_ret = 0;
> +             goto add_default_mode;
> +     }

Please just put the non-DDC path following this goto under if (!ddc_ret)
{} and don't do this goto.

>       /* Didn't get an EDID, so
>        * Set wide sync ranges so we get all modes
>        * handed to valid_mode for checking
> @@ -509,11 +911,11 @@
>  
>               mode = drm_mode_duplicate(dev, dev_priv->panel_fixed_mode);
>               drm_mode_probed_add(connector, mode);
> -
> -             return 1;
> +             fixed_ret = 1;
>       }
> -
> -     return 0;
> +add_default_mode:
> +     ret = lvds_add_default_modes(connector);
> +     return  ddc_ret + fixed_ret + ret;
>  }
>  
>  /**
> 
> 
-- 
Eric Anholt
e...@anholt.net                         eric.anh...@intel.com


Attachment: signature.asc
Description: This is a digitally signed message part

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to