2009-04-28 08:32:23

by Peter Hanzel

[permalink] [raw]
Subject: KMS + fb + FBIOPUT_VSCREENINFO

Hello.

I have tried DRM with intel KMS and it is workiing. I am using only
framebuffer console.
Fbcon initializes 1280x800 mode and it works like a charm.

But when I try to call FBIOPUT_VSCREENINFO on /dev/fb0, it always returns
EINVAL,
I have checked drivers/gpu/drm/i915/intel_fb.c
and found that

intelfb_check_var returns -EINVAL if (var->pixclock == -1 ||
!var->pixclock)
intelfb_set_par returns -EINVAL if (var->pixclock != -1) {
DRM_ERROR("PIXEL CLCOK SET\n"); return

So the FBIOPUT_VSCREENINFO always fails.

So is the change of resolution not supported through FBIOPUT_VSCREENINFO
call?

Thanks.


2009-04-29 07:01:08

by Andrew Morton

[permalink] [raw]
Subject: Re: KMS + fb + FBIOPUT_VSCREENINFO

(cc dri-devel)

On Tue, 28 Apr 2009 10:32:34 +0200 "Peter Hanzel" <[email protected]> wrote:

> Hello.
>
> I have tried DRM with intel KMS and it is workiing. I am using only
> framebuffer console.
> Fbcon initializes 1280x800 mode and it works like a charm.
>
> But when I try to call FBIOPUT_VSCREENINFO on /dev/fb0, it always returns
> EINVAL,
> I have checked drivers/gpu/drm/i915/intel_fb.c
> and found that
>
> intelfb_check_var returns -EINVAL if (var->pixclock == -1 ||
> !var->pixclock)
> intelfb_set_par returns -EINVAL if (var->pixclock != -1) {
> DRM_ERROR("PIXEL CLCOK SET\n"); return
>
> So the FBIOPUT_VSCREENINFO always fails.
>
> So is the change of resolution not supported through FBIOPUT_VSCREENINFO
> call?
>

2009-04-29 07:27:21

by Dave Airlie

[permalink] [raw]
Subject: Re: KMS + fb + FBIOPUT_VSCREENINFO

On Tue, Apr 28, 2009 at 6:32 PM, Peter Hanzel <[email protected]> wrote:
> Hello.
>
> I have tried DRM with intel KMS and it is workiing. I am using only
> framebuffer console.
> Fbcon initializes 1280x800 mode and it works like a charm.
>
> But when I try to call FBIOPUT_VSCREENINFO on /dev/fb0, it always returns
> EINVAL,
> I have checked drivers/gpu/drm/i915/intel_fb.c
> and found that
>
> intelfb_check_var ? ? ? ?returns -EINVAL ? ? if (var->pixclock == -1 ||
> !var->pixclock)
> intelfb_set_par ? ? ? ? ? ? returns -EINVAL ? ?if (var->pixclock != -1) {
> DRM_ERROR("PIXEL CLCOK SET\n"); ?return
>
> So the FBIOPUT_VSCREENINFO always fails.
>
> So is the change of resolution not supported through FBIOPUT_VSCREENINFO
> call?
>

The problem we've had is defining proper semantics for what happens in
multi-output systems when
you call this ioctl. Which crtc/output should it set the mode on?
what happens if the mode isn't valid on all
connected monitors etc.

It should be quite trivial to hook up in fact I already did it once before.

I think we probably need some sysfs or fb ioctl to configure which
crtc/output combos will get controlled
by an fbset.

kms also has an option to run with one fb per crtc, which could also
be checked out. I'm not sure how much further we got with it.

Dave.

> Thanks.
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at ?http://www.tux.org/lkml/
>

2009-04-29 11:03:24

by Sergey Kvachonok

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] KMS + fb + FBIOPUT_VSCREENINFO

> The problem we've had is defining proper semantics for what happens in
> multi-output systems when
> you call this ioctl. Which crtc/output should it set the mode on?
> what happens if the mode isn't valid on all
> connected monitors etc.

Does it really makes all that much sense to run different monitors
with the same mode?
Like embedded notebook panel with weird native resolution and an
external CRT/LCD with
completely unrelated native/preferred modes.

I tried running 2.6.29.1 i915 with one fb per crtc mode,
the first thing it did was to shut down embedded panel and to attach
fbcon to external display.
As fbset doesn't work I couldn't bring the panel back to life, and the
whole thing hung when I con2fb'd one of the VTs to it. Can't provide
more specific data atm, didn't yet try to reproduce the crash.

BTW fbxine and I believe directfb too use FBIOPUT_VSCREENINFO to
adjust vyres to the maximum to allocate offscreen surfaces for page
flipping.
It isn't really modesetting, but rather framebuffer operation, so is
the color depth setting.
At least these can be painlessly provided with the current setup.

Thanks for listening to my rant,
Sergey