summary refs log tree commit diff stats
path: root/hw/spapr.c
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2012-08-16 12:03:56 +1000
committerAnthony Liguori <aliguori@us.ibm.com>2012-08-16 13:41:16 -0500
commit35139a590c4e2f3086d069028bda77f1de1d46b0 (patch)
treee3adddfd4e8b29a0462352f3971581f10efd4a1e /hw/spapr.c
parentd973ba18ced6e9440131c55b0f07e97bdbbc6703 (diff)
downloadfocaccia-qemu-35139a590c4e2f3086d069028bda77f1de1d46b0.tar.gz
focaccia-qemu-35139a590c4e2f3086d069028bda77f1de1d46b0.zip
pseries: Instantiate USB interface when required
The pseries machine already supports the -vga std option, creating a
graphics adapter.  However, this is not very useful without being able to
add a keyboard and mouse as well.  This patch addresses this by adding
a USB interface when requested, and automatically adding a USB keyboard
and mouse when VGA is enabled.

This is a stop gap measure to get usable graphics mode on pseries while
waiting for Li Zhang's rework of USB options to go in after 1.2.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'hw/spapr.c')
-rw-r--r--hw/spapr.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/hw/spapr.c b/hw/spapr.c
index 5178721d49..be533ee934 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -49,6 +49,7 @@
 #include "vga-pci.h"
 
 #include "exec-memory.h"
+#include "hw/usb.h"
 
 #include <libfdt.h>
 
@@ -765,6 +766,15 @@ static void ppc_spapr_init(ram_addr_t ram_size,
         spapr->has_graphics = true;
     }
 
+    if (usb_enabled) {
+        pci_create_simple(QLIST_FIRST(&spapr->phbs)->host_state.bus,
+                          -1, "pci-ohci");
+        if (spapr->has_graphics) {
+            usbdevice_create("keyboard");
+            usbdevice_create("mouse");
+        }
+    }
+
     if (rma_size < (MIN_RMA_SLOF << 20)) {
         fprintf(stderr, "qemu: pSeries SLOF firmware requires >= "
                 "%ldM guest RMA (Real Mode Area memory)\n", MIN_RMA_SLOF);