summaryrefslogtreecommitdiffstats
path: root/drivers/input/xen-kbdfront.c
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2008-05-27 00:31:11 +0200
committerThomas Gleixner <tglx@linutronix.de>2008-05-27 10:11:36 +0200
commite4dcff1f6e7582f76c2c9990b1d9111bbc8e26ef (patch)
treed4a06968700cf64e3f8b7b146512a457ac9e7ece /drivers/input/xen-kbdfront.c
parentxen pvfb: Zero unused bytes in events sent to backend (diff)
downloadlinux-e4dcff1f6e7582f76c2c9990b1d9111bbc8e26ef.tar.xz
linux-e4dcff1f6e7582f76c2c9990b1d9111bbc8e26ef.zip
xen pvfb: Dynamic mode support (screen resizing)
The pvfb backend indicates dynamic mode support by creating node feature_resize with a non-zero value in its xenstore directory. xen-fbfront sends a resize notification event on mode change. Fully backwards compatible both ways. Framebuffer size and initial resolution can be controlled through kernel parameter xen_fbfront.video. The backend enforces a separate size limit, which it advertises in node videoram in its xenstore directory. xen-kbdfront gets the maximum screen resolution from nodes width and height in the backend's xenstore directory instead of hardcoding it. Additional goodie: support for larger framebuffers (512M on a 64-bit system with 4K pages). Changing the number of bits per pixels dynamically is not supported, yet. Ported from http://xenbits.xensource.com/linux-2.6.18-xen.hg?rev/92f7b3144f41 http://xenbits.xensource.com/linux-2.6.18-xen.hg?rev/bfc040135633 Signed-off-by: Pat Campbell <plc@novell.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/input/xen-kbdfront.c')
-rw-r--r--drivers/input/xen-kbdfront.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/input/xen-kbdfront.c b/drivers/input/xen-kbdfront.c
index eaf69cf5b444..9ce3b3baf3a2 100644
--- a/drivers/input/xen-kbdfront.c
+++ b/drivers/input/xen-kbdfront.c
@@ -300,6 +300,16 @@ InitWait:
*/
if (dev->state != XenbusStateConnected)
goto InitWait; /* no InitWait seen yet, fudge it */
+
+ /* Set input abs params to match backend screen res */
+ if (xenbus_scanf(XBT_NIL, info->xbdev->otherend,
+ "width", "%d", &val) > 0)
+ input_set_abs_params(info->ptr, ABS_X, 0, val, 0, 0);
+
+ if (xenbus_scanf(XBT_NIL, info->xbdev->otherend,
+ "height", "%d", &val) > 0)
+ input_set_abs_params(info->ptr, ABS_Y, 0, val, 0, 0);
+
break;
case XenbusStateClosing: