aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorThomas Niederprüm <niederp@physik.uni-kl.de>2015-03-31 14:27:13 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2015-05-27 05:54:32 -0400
commit3277e0bb8fc737174bd5e2fae5598b1595cfcdbe (patch)
tree1d57a45947434882c641da076d62476fab0a3ea6 /drivers/video
parent5f2d36b3cf629ae1d70ee8476599ff53f0d1d1f1 (diff)
fbdev: ssd1307fb: Add a module parameter to set the refresh rate
This patch adds the module parameter "refreshrate" to set delay for the deferred io. The refresh rate is given in units of Hertz. The default refresh rate is 1 Hz. The refresh rate set through the newly introduced parameter applies to all instances of the driver and for now it is not possible to change it individually. Signed-off-by: Thomas Niederprüm <niederp@physik.uni-kl.de> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/fbdev/ssd1307fb.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c
index f685d244fa2a..85eeda0fc2e4 100644
--- a/drivers/video/fbdev/ssd1307fb.c
+++ b/drivers/video/fbdev/ssd1307fb.c
@@ -38,6 +38,11 @@
38#define SSD1307FB_SET_COM_PINS_CONFIG 0xda 38#define SSD1307FB_SET_COM_PINS_CONFIG 0xda
39#define SSD1307FB_SET_VCOMH 0xdb 39#define SSD1307FB_SET_VCOMH 0xdb
40 40
41#define REFRESHRATE 1
42
43static u_int refreshrate = REFRESHRATE;
44module_param(refreshrate, uint, 0);
45
41struct ssd1307fb_par; 46struct ssd1307fb_par;
42 47
43struct ssd1307fb_deviceinfo { 48struct ssd1307fb_deviceinfo {
@@ -263,11 +268,6 @@ static void ssd1307fb_deferred_io(struct fb_info *info,
263 ssd1307fb_update_display(info->par); 268 ssd1307fb_update_display(info->par);
264} 269}
265 270
266static struct fb_deferred_io ssd1307fb_defio = {
267 .delay = HZ,
268 .deferred_io = ssd1307fb_deferred_io,
269};
270
271static int ssd1307fb_init(struct ssd1307fb_par *par) 271static int ssd1307fb_init(struct ssd1307fb_par *par)
272{ 272{
273 int ret; 273 int ret;
@@ -466,6 +466,7 @@ static int ssd1307fb_probe(struct i2c_client *client,
466{ 466{
467 struct fb_info *info; 467 struct fb_info *info;
468 struct device_node *node = client->dev.of_node; 468 struct device_node *node = client->dev.of_node;
469 struct fb_deferred_io *ssd1307fb_defio;
469 u32 vmem_size; 470 u32 vmem_size;
470 struct ssd1307fb_par *par; 471 struct ssd1307fb_par *par;
471 u8 *vmem; 472 u8 *vmem;
@@ -536,10 +537,20 @@ static int ssd1307fb_probe(struct i2c_client *client,
536 goto fb_alloc_error; 537 goto fb_alloc_error;
537 } 538 }
538 539
540 ssd1307fb_defio = devm_kzalloc(&client->dev, sizeof(struct fb_deferred_io), GFP_KERNEL);
541 if (!ssd1307fb_defio) {
542 dev_err(&client->dev, "Couldn't allocate deferred io.\n");
543 ret = -ENOMEM;
544 goto fb_alloc_error;
545 }
546
547 ssd1307fb_defio->delay = HZ / refreshrate;
548 ssd1307fb_defio->deferred_io = ssd1307fb_deferred_io;
549
539 info->fbops = &ssd1307fb_ops; 550 info->fbops = &ssd1307fb_ops;
540 info->fix = ssd1307fb_fix; 551 info->fix = ssd1307fb_fix;
541 info->fix.line_length = par->width / 8; 552 info->fix.line_length = par->width / 8;
542 info->fbdefio = &ssd1307fb_defio; 553 info->fbdefio = ssd1307fb_defio;
543 554
544 info->var = ssd1307fb_var; 555 info->var = ssd1307fb_var;
545 info->var.xres = par->width; 556 info->var.xres = par->width;