summaryrefslogtreecommitdiff
path: root/emulators/qemu/files/patch-hw-usb-uhci.c
diff options
context:
space:
mode:
Diffstat (limited to 'emulators/qemu/files/patch-hw-usb-uhci.c')
-rw-r--r--emulators/qemu/files/patch-hw-usb-uhci.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/emulators/qemu/files/patch-hw-usb-uhci.c b/emulators/qemu/files/patch-hw-usb-uhci.c
new file mode 100644
index 000000000000..c5f3c36629bb
--- /dev/null
+++ b/emulators/qemu/files/patch-hw-usb-uhci.c
@@ -0,0 +1,28 @@
+# 1.6
+Index: qemu/hw/usb-uhci.c
+@@ -153,6 +153,7 @@
+ switch(addr) {
+ case 0x0c:
+ val = s->sof_timing;
++ break;
+ default:
+ val = 0xff;
+ break;
+@@ -654,6 +655,7 @@
+ pci_conf[0x0b] = 0x0c;
+ pci_conf[0x0e] = 0x00; // header_type
+ pci_conf[0x3d] = 4; // interrupt pin 3
++ pci_conf[0x60] = 0x10; // release number
+
+ for(i = 0; i < NB_PORTS; i++) {
+ port = &s->ports[i];
+@@ -666,6 +668,8 @@
+
+ uhci_reset(s);
+
+- pci_register_io_region(&s->dev, 0, 0x20,
++ /* Use region 4 for consistency with real hardware. BSD guests seem
++ to rely on this. */
++ pci_register_io_region(&s->dev, 4, 0x20,
+ PCI_ADDRESS_SPACE_IO, uhci_map);
+ }