From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
To: Linux Frame Buffer Device Development
<linux-fbdev-devel@lists.sourceforge.net>
Cc: James Simmons <jsimmons@infradead.org>,
Paul Mackerras <paulus@samba.org>,
Linux/PPC Development <linuxppc-dev@ozlabs.org>
Subject: Re: [Linux-fbdev-devel] [PATCH 0/10] ps3av/fb drivers for 2.6.21
Date: Wed, 7 Feb 2007 17:51:12 +0100 (CET) [thread overview]
Message-ID: <Pine.LNX.4.62.0702071743040.29060@pademelon.sonytel.be> (raw)
In-Reply-To: <Pine.LNX.4.62.0702070859050.31772@pademelon.sonytel.be>
On Wed, 7 Feb 2007, Geert Uytterhoeven wrote:
> On Wed, 7 Feb 2007, Benjamin Herrenschmidt wrote:
> > > ps3av: Use a kernel thread to handle the actual video mode setting, as this
> > > involves some quite big delays.
> >
> > The ps3 fbdev already has it's own kernel thread no ? Why use a second
> > one ? We could just have the ps3av code keep the delays but be called by
> > a thread ?
>
> That's another possibility. And since the screen is blanked during mode
> change, there's no need to refresh it, and I may even get rid of the call to
> ps3fb_flip_ctl() in ps3av.
>
> I'll look into it...
Below's a new patch (take 3).
But it doesn't work well: after each mode change, the old contents of the
screen are visible for a (noticable) fraction of a second.
Ps3fbd doesn't refresh the screen contents until ps3av_set_video_mode()
returns, which is longer than my display needs to sync to the new video mode
(this was actually the reason behind the msleep() calls).
I also could not get rid of the calls to ps3fb_flip_ctl() in ps3av, as screen
updates have to be disabled while sending other AV packets, too.
So I prefer the previous solution, using a new ps3av kernel thread.
Unless anyone has a better solution, of course :-)
----
--- ps3-linux-2.6.20.orig/drivers/video/ps3fb.c
+++ ps3-linux-2.6.20/drivers/video/ps3fb.c
@@ -138,6 +138,7 @@ struct ps3fb_priv {
u32 num_frames; /* num of frame buffers */
atomic_t ext_flip; /* on/off flip with vsync */
atomic_t f_count; /* fb_open count */
+ atomic_t change_mode; /* tell ps3fb to change the video mode */
int is_blanked;
};
static struct ps3fb_priv ps3fb;
@@ -294,7 +295,7 @@ static const struct fb_videomode ps3fb_m
#define VP_OFF(i) (WIDTH(i) * Y_OFF(i) * BPP + X_OFF(i) * BPP)
#define FB_OFF(i) (GPU_OFFSET - VP_OFF(i) % GPU_OFFSET)
-static int ps3fb_mode = 0;
+static int ps3fb_mode;
module_param(ps3fb_mode, bool, 0);
static char *mode_option __initdata = NULL;
@@ -542,7 +543,6 @@ static int ps3fb_set_par(struct fb_info
unsigned int mode;
int i;
unsigned long offset;
- static int first = 1;
DPRINTK("xres:%d xv:%d yres:%d yv:%d clock:%d\n",
info->var.xres, info->var.xres_virtual,
@@ -565,10 +565,10 @@ static int ps3fb_set_par(struct fb_info
/* Keep the special bits we cannot set using fb_var_screeninfo */
ps3fb_mode = (ps3fb_mode & ~PS3AV_MODE_MASK) | mode;
- if (ps3av_set_video_mode(ps3fb_mode, first))
- return -EINVAL;
+ /* Wake up ps3fbd to do the actual mode change */
+ atomic_inc(&ps3fb.change_mode);
+ up(&ps3fb.sem);
- first = 0;
return 0;
}
@@ -805,9 +805,17 @@ static int ps3fb_ioctl(struct fb_info *i
static int ps3fbd(void *arg)
{
+ int first = 1;
+
daemonize("ps3fbd");
for (;;) {
down(&ps3fb.sem);
+ if (atomic_dec_if_positive(&ps3fb.change_mode) >= 0) {
+ if (ps3av_set_video_mode(ps3fb_mode, first))
+ printk(KERN_ERR
+ "ps3fbd: ps3av_set_video_mode failed\n");
+ first = 0;
+ }
if (atomic_read(&ps3fb.ext_flip) == 0)
ps3fb_sync(0); /* single buffer */
}
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- Sony Network and Software Technology Center Europe (NSCE)
Geert.Uytterhoeven@sonycom.com ------- The Corporate Village, Da Vincilaan 7-D1
Voice +32-2-7008453 Fax +32-2-7008622 ---------------- B-1935 Zaventem, Belgium
next prev parent reply other threads:[~2007-02-07 16:51 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-30 16:57 [PATCH 0/10] ps3av/fb drivers for 2.6.21 Geert Uytterhoeven
2007-01-30 16:59 ` [PATCH 1/10] ps3: Add shutdown to virtual uart port driver framework Geert Uytterhoeven
2007-01-30 20:28 ` Geoff Levand
2007-01-30 17:00 ` [PATCH 2/10] ps3: AV Settings Driver Library Geert Uytterhoeven
2007-01-31 16:34 ` Geoff Levand
2007-01-30 17:00 ` fbdev modedb: allow refresh rates for named video modes Geert Uytterhoeven
2007-01-30 17:01 ` [PATCH 4/10] fbdev modedb: make more pointer parameters const Geert Uytterhoeven
2007-01-30 17:01 ` [PATCH 5/10] fb_videomode_to_var: reset virtual screen parameters Geert Uytterhoeven
2007-01-30 17:02 ` [PATCH 6/10] ps3: Preallocate bootmem memory for ps3fb Geert Uytterhoeven
2007-01-30 17:02 ` [PATCH 7/10] ps3: Virtual Frame Buffer Driver Geert Uytterhoeven
2007-01-30 17:02 ` [PATCH 8/10] ps3: disable display flipping during mode changes Geert Uytterhoeven
2007-01-30 17:03 ` [PATCH 9/10] ps3: cleanup ps3fb before clearing HPTE Geert Uytterhoeven
2007-01-30 17:03 ` [PATCH 10/10] ps3: ps3av/fb defconfig updates Geert Uytterhoeven
2007-01-30 17:06 ` [PATCH 3/10] fbdev modedb: allow refresh rates for named video modes Geert Uytterhoeven
2007-02-05 15:33 ` [PATCH 0/10] ps3av/fb drivers for 2.6.21 Geert Uytterhoeven
2007-02-06 15:01 ` Geert Uytterhoeven
2007-02-06 20:49 ` Benjamin Herrenschmidt
2007-02-07 8:01 ` Geert Uytterhoeven
2007-02-07 16:51 ` Geert Uytterhoeven [this message]
2007-02-07 21:07 ` [Linux-fbdev-devel] " Benjamin Herrenschmidt
2007-02-08 8:13 ` Geert Uytterhoeven
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.62.0702071743040.29060@pademelon.sonytel.be \
--to=geert.uytterhoeven@sonycom.com \
--cc=jsimmons@infradead.org \
--cc=linux-fbdev-devel@lists.sourceforge.net \
--cc=linuxppc-dev@ozlabs.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).