udlfb: Add module_param to allow forcing pixel_limit
authorBen Collins <bcollins@ubuntu.com>
Sat, 3 Mar 2012 20:57:37 +0000 (12:57 -0800)
committerBernie Thompson <bernie@plugable.com>
Sat, 3 Mar 2012 20:57:37 +0000 (12:57 -0800)
Some user scenarios need to prioritize performance over
maxiumum resolution.

Also, some devices may have bad vendor descriptors, and
this allows the user to set a pixel limit that matches
their specific device to avoid blank screens on higher
resolution monitors.

700000 minimum for DL-115, 2360000 maximum for DL-195

Signed-off-by: Ben Collins <bcollins@ubuntu.com>
Signed-off-by: Bernie Thompson <bernie@plugable.com>
drivers/video/udlfb.c

index 4330cf4b17a396769320c03ef027a00eba97dc02..86c8b256e306f0d1fbf7224f2ecc1c1d79a58451 100644 (file)
@@ -72,6 +72,7 @@ MODULE_DEVICE_TABLE(usb, id_table);
 static bool console = 1; /* Allow fbcon to open framebuffer */
 static bool fb_defio = 1;  /* Detect mmap writes using page faults */
 static bool shadow = 1; /* Optionally disable shadow framebuffer */
+static int pixel_limit; /* Optionally force a pixel resolution limit */
 
 /* dlfb keeps a list of urbs for efficient bulk transfers */
 static void dlfb_urb_completion(struct urb *urb);
@@ -1616,6 +1617,14 @@ static int dlfb_usb_probe(struct usb_interface *interface,
                goto error;
        }
 
+       if (pixel_limit) {
+               pr_warn("DL chip limit of %d overriden"
+                       " by module param to %d\n",
+                       dev->sku_pixel_limit, pixel_limit);
+               dev->sku_pixel_limit = pixel_limit;
+       }
+
+
        if (!dlfb_alloc_urb_list(dev, WRITES_IN_FLIGHT, MAX_TRANSFER)) {
                retval = -ENOMEM;
                pr_err("dlfb_alloc_urb_list failed\n");
@@ -1963,6 +1972,9 @@ MODULE_PARM_DESC(fb_defio, "Page fault detection of mmap writes");
 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_param(pixel_limit, int, S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP);
+MODULE_PARM_DESC(pixel_limit, "Force limit on max mode (in x*y pixels)");
+
 MODULE_AUTHOR("Roberto De Ioris <roberto@unbit.it>, "
              "Jaya Kumar <jayakumar.lkml@gmail.com>, "
              "Bernie Thompson <bernie@plugable.com>");