From 38ca0f6deebe286a521d6dfaf6583e9216b441ee Mon Sep 17 00:00:00 2001 From: pbrook Date: Sat, 11 Mar 2006 18:03:38 +0000 Subject: [PATCH] Tweak UHCI device settings. Ignore host root hubs. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1779 c046a42c-6fe2-441c-8c8c-71466251a162 --- hw/usb-uhci.c | 5 ++++- usb-linux.c | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/usb-uhci.c b/hw/usb-uhci.c index 732b76a818..e93db57166 100644 --- a/hw/usb-uhci.c +++ b/hw/usb-uhci.c @@ -654,6 +654,7 @@ void usb_uhci_init(PCIBus *bus, USBPort **usb_ports) 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 +667,8 @@ void usb_uhci_init(PCIBus *bus, USBPort **usb_ports) 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); } diff --git a/usb-linux.c b/usb-linux.c index 216ac20f8e..9cd543d714 100644 --- a/usb-linux.c +++ b/usb-linux.c @@ -278,7 +278,8 @@ static int usb_host_scan(void *opaque, USBScanFunc *func) if (strlen(line) > 0) line[strlen(line) - 1] = '\0'; if (line[0] == 'T' && line[1] == ':') { - if (device_count) { + if (device_count && (vendor_id || product_id)) { + /* New device. Add the previously discovered device. */ ret = func(opaque, bus_num, addr, class_id, vendor_id, product_id, product_name, speed); if (ret) @@ -321,7 +322,8 @@ static int usb_host_scan(void *opaque, USBScanFunc *func) } fail: ; } - if (device_count) { + if (device_count && (vendor_id || product_id)) { + /* Add the last device. */ ret = func(opaque, bus_num, addr, class_id, vendor_id, product_id, product_name, speed); }