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
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