qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] patch for USB issues


From: Krister Walfridsson
Subject: [Qemu-devel] patch for USB issues
Date: Thu, 16 Feb 2006 21:06:18 +0100 (CET)

I'm playing with the USB code, but I cannot get the USB mouse emulation
to work with the guests I have tried (NetBSD and Win2k). Attached are two patches that improves the situation somewhat.

* hw/usb-uhci.c
     The PCI configuration registers are set up with an incorrect
     offset for USBBASE and uninitialized SBRN.  This makes NetBSD
     complain that this is not a valid UHCI controller.
* hw/usb.c
     The length field of the returned descriptor strings are
     incorrect, which trunkates the returned strings.

There are some additional problems with the hub emulation that I hope
to get the time to fix during the weekend.

   /Krister



Index: usb-uhci.c
===================================================================
RCS file: /sources/qemu/qemu/hw/usb-uhci.c,v
retrieving revision 1.4
diff -b -u -p -r1.4 usb-uhci.c
--- usb-uhci.c  19 Nov 2005 17:43:37 -0000      1.4
+++ usb-uhci.c  16 Feb 2006 20:02:52 -0000
@@ -654,6 +654,7 @@ void usb_uhci_init(PCIBus *bus, USBPort
     pci_conf[0x0b] = 0x0c;
     pci_conf[0x0e] = 0x00; // header_type
     pci_conf[0x3d] = 4; // interrupt pin 3
+    pci_conf[0x60] = 0x11; // USB 1.1

     for(i = 0; i < NB_PORTS; i++) {
         port = &s->ports[i];
@@ -666,6 +667,6 @@ void usb_uhci_init(PCIBus *bus, USBPort

     uhci_reset(s);

- pci_register_io_region(&s->dev, 0, 0x20, + pci_register_io_region(&s->dev, 4, 0x20,
                            PCI_ADDRESS_SPACE_IO, uhci_map);
 }
Index: usb.c
===================================================================
RCS file: /sources/qemu/qemu/hw/usb.c,v
retrieving revision 1.3
diff -b -u -p -r1.3 usb.c
--- usb.c       6 Nov 2005 16:13:29 -0000       1.3
+++ usb.c       16 Feb 2006 20:02:55 -0000
@@ -183,7 +183,7 @@ int set_usb_string(uint8_t *buf, const c

     q = buf;
     len = strlen(str);
-    *q++ = 2 * len + 1;
+    *q++ = 2 * len + 2;
     *q++ = 3;
     for(i = 0; i < len; i++) {
         *q++ = str[i];




reply via email to

[Prev in Thread] Current Thread [Next in Thread]