|
@@ -62,6 +62,7 @@ MODULE_DEVICE_TABLE(usb, id_table);
|
|
|
/* module options */
|
|
|
static int console; /* Optionally allow fbcon to consume first framebuffer */
|
|
|
static int fb_defio; /* Optionally enable experimental fb_defio mmap support */
|
|
|
+static int shadow = 1; /* Optionally disable shadow framebuffer */
|
|
|
|
|
|
/* dlfb keeps a list of urbs for efficient bulk transfers */
|
|
|
static void dlfb_urb_completion(struct urb *urb);
|
|
@@ -1148,7 +1149,7 @@ static int dlfb_realloc_framebuffer(struct dlfb_data *dev, struct fb_info *info)
|
|
|
int new_len;
|
|
|
unsigned char *old_fb = info->screen_base;
|
|
|
unsigned char *new_fb;
|
|
|
- unsigned char *new_back;
|
|
|
+ unsigned char *new_back = 0;
|
|
|
|
|
|
pr_warn("Reallocating framebuffer. Addresses will change!\n");
|
|
|
|
|
@@ -1180,7 +1181,8 @@ static int dlfb_realloc_framebuffer(struct dlfb_data *dev, struct fb_info *info)
|
|
|
* But with imperfect damage info we may send pixels over USB
|
|
|
* that were, in fact, unchanged - wasting limited USB bandwidth
|
|
|
*/
|
|
|
- new_back = vzalloc(new_len);
|
|
|
+ if (shadow)
|
|
|
+ new_back = vzalloc(new_len);
|
|
|
if (!new_back)
|
|
|
pr_info("No shadow/backing buffer allocated\n");
|
|
|
else {
|
|
@@ -1593,6 +1595,7 @@ static int dlfb_usb_probe(struct usb_interface *interface,
|
|
|
usbdev->descriptor.bcdDevice, dev);
|
|
|
pr_info("console enable=%d\n", console);
|
|
|
pr_info("fb_defio enable=%d\n", fb_defio);
|
|
|
+ pr_info("shadow enable=%d\n", shadow);
|
|
|
|
|
|
dev->sku_pixel_limit = 2048 * 1152; /* default to maximum */
|
|
|
|
|
@@ -1950,6 +1953,9 @@ MODULE_PARM_DESC(console, "Allow fbcon to consume first framebuffer found");
|
|
|
module_param(fb_defio, bool, S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP);
|
|
|
MODULE_PARM_DESC(fb_defio, "Enable fb_defio mmap support. *Experimental*");
|
|
|
|
|
|
+module_param(shadow, bool, S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP);
|
|
|
+MODULE_PARM_DESC(shadow, "Shadow vid mem. Disable to save mem but lose perf");
|
|
|
+
|
|
|
MODULE_AUTHOR("Roberto De Ioris <roberto@unbit.it>, "
|
|
|
"Jaya Kumar <jayakumar.lkml@gmail.com>, "
|
|
|
"Bernie Thompson <bernie@plugable.com>");
|