Am Sat, 7 Feb 2015 12:26:27 +0100 schrieb Maxime Ripard <maxime.ripard@xxxxxxxxxxxxxxxxxx>: > On Fri, Feb 06, 2015 at 11:28:12PM +0100, niederp@xxxxxxxxxxxxxxxx > wrote: > > From: Thomas Niederprüm <niederp@xxxxxxxxxxxxxxxx> > > > > This patch adds the module parameter "delaydivider" to set delay > > for the deferred io. Effectively this is setting the refresh rate > > for mmap access to the framebuffer. The delay for the deferred io > > is HZ/delaydivider. > > So this is actually a refresh rate? > > Maybe you could expose it as such, and pass a frequency in Hz as an > argument. Good idea! I'll try to do it that way. > > Exposing the divider directly has some issues, since the bootloader > that set the parameter won't know the HZ value, you'll end up with > different rates for different configurations, without any way to do > something about it. > > > > > Signed-off-by: Thomas Niederprüm <niederp@xxxxxxxxxxxxxxxx> > > --- > > drivers/video/fbdev/ssd1307fb.c | 7 ++++++- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/video/fbdev/ssd1307fb.c > > b/drivers/video/fbdev/ssd1307fb.c index 1d81877..b38315d 100644 > > --- a/drivers/video/fbdev/ssd1307fb.c > > +++ b/drivers/video/fbdev/ssd1307fb.c > > @@ -44,10 +44,14 @@ > > #define SSD1307FB_SET_VCOMH 0xdb > > > > #define BITSPERPIXEL 1 > > +#define DELAYDIVIDER 20 > > > > static u_int bitsperpixel = BITSPERPIXEL; > > module_param(bitsperpixel, uint, 0); > > > > +static u_int delaydivider = DELAYDIVIDER; > > +module_param(delaydivider, uint, 0); > > + > > You're breaking the existing behaviour. True! I'll try to keep the existing behaviour when rewriting this to use the refresh rate. > > > struct ssd1307fb_par; > > > > struct ssd1307fb_deviceinfo { > > @@ -312,7 +316,7 @@ static void ssd1307fb_deferred_io(struct > > fb_info *info, } > > > > static struct fb_deferred_io ssd1307fb_defio = { > > - .delay = HZ, > > + .delay = HZ/DELAYDIVIDER, > > .deferred_io = ssd1307fb_deferred_io, > > }; > > > > @@ -601,6 +605,7 @@ static int ssd1307fb_probe(struct i2c_client > > *client, info->fix = ssd1307fb_fix; > > info->fix.line_length = par->width * bitsperpixel / 8; > > info->fbdefio = &ssd1307fb_defio; > > + info->fbdefio->delay = HZ/delaydivider; > > That won't work with multiple instances of the same driver > unfortunately. Could you please elaborate why? I'm not seeing it... > > > > > info->var = ssd1307fb_var; > > info->var.bits_per_pixel = bitsperpixel; > > -- > > 2.1.1 > > > -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html