Completely ignore EDID for KMS, use user-supplied kernel param (video=)?
alexdeucher at gmail.com
Tue Nov 23 12:59:00 PST 2010
On Tue, Nov 23, 2010 at 3:38 PM, Paul Sokolovsky <pmiscml at gmail.com> wrote:
> On Tue, 23 Nov 2010 02:00:51 -0500
> Alex Deucher <alexdeucher at gmail.com> wrote:
>> > My specific issue is that there's an LVDS (of MSI X410/X430
>> > notebook) which has right dimensions and refresh rate, but wrong,
>> > if not say unrelated, clock settings. The end result is that
>> > there's tearing-off, broken sync like on an old dying TV. More
>> > details are at
>> > http://wwww.ubuntuforums.org/showthread.php?p=10120939 . That's on
>> > 2.6.35 (stock Ubuntu 10.10 kernel). I was able to set CVT timings
>> > on X which gave stable picture, but no luck persuading kernel to do
>> > the same (I used video=LVDS-1:1366x768M at 60 param, also tried more
>> > conventional modes like 1024x768).
>> > I'd appreciate any hints.
>> Assuming your laptop contains a radeon, the panel timing comes from a
>> table in the vbios. The timing problem is most likely not due to an
>> EDID problem, but to pll dividers that that panel doesn't like. Try
>> booting with radeon.new_pll=0 on the kernel command line or try kernel
> Pure magic! ;-) Thanks for quick reply, that worked, even though I
> really thought that's a case of broken EDID, as X had the same
> behavior, which I could work around by setting CVT timing using xrandr
> (while nomodeset for kernel). Just for the info, that was for Radeon HD
> 3200, though the same issue was reported for Radeon X1250.
X using KMS and the console use the same code to set the mode. They
both call into the radeon KMS drm. The modesetting paths in UMS are
slightly different from KMS so likely a slightly different set of pll
dividers was selected.
> However, can you please elaborate about overring mode for KMS-based
> driver on the kernel command line? I studied kernel source more myself,
> and see that video= parsing for KMS is being performed by
> drm_fb_helper.c, and its routines seem to be called by the radeon
> driver. So, based on the code
> DRM_DEBUG_KMS("cmdline mode for connector %s
> %dx%d@%dHz%s%s%s\n", drm_get_connector_name(connector), xres,
> yres, (refresh) ? refresh : 60, (rb) ? " reduced blanking" :
> "", (margins) ? " with margins" : "", (interlace) ?
> " interlaced" : "");
> I set following kernel params:
> drm.debug=7 video=LVDS-1:1366x768M at 60
> But expected output didn't appear in dmesg. I also tried
> "video=LVDS:1366x768M at 60" with the same result. What could be wrong?
There's no way to override the panel mode on LVDS, the driver doesn't
let you (same for UMS). The timing is too sensitive; the driver
always uses the panel's native timing.
> Best regards,
> Paul mailto:pmiscml at gmail.com
More information about the dri-devel