Hello, here a patch to add cursor enable/disable, very useful if you wish a full screen boot logo. Cursor can be disabled from kernel command line: video=au1100fb:nocursor,panel:Toppoly_TD035STED4 or from sysfs interface: echo 1 > /sys/module/au1100fb/parameters/nocursor The patch also fixes up some wrong indentation issues. Ciao, Rodolfo Signed-off-by: Rodolfo Giometti <giometti@xxxxxxxx> -- GNU/Linux Solutions e-mail: giometti@xxxxxxxxxxxx Linux Device Driver giometti@xxxxxxxxx Embedded Systems giometti@xxxxxxxx UNIX programming phone: +39 349 2432127
diff --git a/drivers/video/au1100fb.c b/drivers/video/au1100fb.c index e0b71fe..1b9ad17 100644 --- a/drivers/video/au1100fb.c +++ b/drivers/video/au1100fb.c @@ -8,6 +8,7 @@ * <c.pellegrin@xxxxxxxxxxx> * * PM support added by Rodolfo Giometti <giometti@xxxxxxxx> + * Cursor enable/disable by Rodolfo Giometti <giometti@xxxxxxxx> * * Copyright 2002 MontaVista Software * Author: MontaVista Software, Inc. @@ -114,6 +115,10 @@ static struct fb_var_screeninfo au1100fb static struct au1100fb_drv_info drv_info; +static int nocursor = 0; +module_param(nocursor, int, 0644); +MODULE_PARM_DESC(nocursor, "cursor enable/disable"); + int au1100fb_fb_blank(int blank_mode, struct fb_info *fbi); /* @@ -440,6 +445,17 @@ int au1100fb_fb_mmap(struct fb_info *fbi return 0; } +/* fb_cursor + * Used to disable cursor drawing... + */ +int au1100fb_fb_cursor(struct fb_info *info, struct fb_cursor *cursor) +{ + if (nocursor) + return 0; + else + return -EINVAL; /* just to force soft_cursor() call */ +} + static struct fb_ops au1100fb_ops = { .owner = THIS_MODULE, @@ -451,6 +467,7 @@ static struct fb_ops au1100fb_ops = .fb_imageblit = cfb_imageblit, .fb_rotate = au1100fb_fb_rotate, .fb_mmap = au1100fb_fb_mmap, + .fb_cursor = au1100fb_fb_cursor, }; @@ -705,7 +722,7 @@ int au1100fb_setup(char *options) if (options) { while ((this_opt = strsep(&options,",")) != NULL) { /* Panel option */ - if (!strncmp(this_opt, "panel:", 6)) { + if (!strncmp(this_opt, "panel:", 6)) { int i; this_opt += 6; for (i = 0; i < num_panels; i++) { @@ -713,13 +730,18 @@ int au1100fb_setup(char *options) known_lcd_panels[i].name, strlen(this_opt))) { panel_idx = i; - break; + break; + } } - } if (i >= num_panels) { print_warn("Panel %s not supported!", this_opt); } } + if (!strncmp(this_opt, "nocursor", 8)) { + this_opt += 8; + nocursor = 1; + print_info("Cursor disabled"); + } /* Mode option (only option that start with digit) */ else if (isdigit(this_opt[0])) { mode = kmalloc(strlen(this_opt) + 1, GFP_KERNEL); @@ -728,7 +750,7 @@ int au1100fb_setup(char *options) /* Unsupported option */ else { print_warn("Unsupported option \"%s\"", this_opt); - } + } } }