Commit 38ca0f6deebe286a521d6dfaf6583e9216b441ee

Authored by pbrook
1 parent 09c56b84

Tweak UHCI device settings. Ignore host root hubs.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1779 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 2 changed files with 8 additions and 3 deletions
hw/usb-uhci.c
... ... @@ -654,6 +654,7 @@ void usb_uhci_init(PCIBus *bus, USBPort **usb_ports)
654 654 pci_conf[0x0b] = 0x0c;
655 655 pci_conf[0x0e] = 0x00; // header_type
656 656 pci_conf[0x3d] = 4; // interrupt pin 3
  657 + pci_conf[0x60] = 0x10; // release number
657 658  
658 659 for(i = 0; i < NB_PORTS; i++) {
659 660 port = &s->ports[i];
... ... @@ -666,6 +667,8 @@ void usb_uhci_init(PCIBus *bus, USBPort **usb_ports)
666 667  
667 668 uhci_reset(s);
668 669  
669   - pci_register_io_region(&s->dev, 0, 0x20,
  670 + /* Use region 4 for consistency with real hardware. BSD guests seem
  671 + to rely on this. */
  672 + pci_register_io_region(&s->dev, 4, 0x20,
670 673 PCI_ADDRESS_SPACE_IO, uhci_map);
671 674 }
... ...
usb-linux.c
... ... @@ -278,7 +278,8 @@ static int usb_host_scan(void *opaque, USBScanFunc *func)
278 278 if (strlen(line) > 0)
279 279 line[strlen(line) - 1] = '\0';
280 280 if (line[0] == 'T' && line[1] == ':') {
281   - if (device_count) {
  281 + if (device_count && (vendor_id || product_id)) {
  282 + /* New device. Add the previously discovered device. */
282 283 ret = func(opaque, bus_num, addr, class_id, vendor_id,
283 284 product_id, product_name, speed);
284 285 if (ret)
... ... @@ -321,7 +322,8 @@ static int usb_host_scan(void *opaque, USBScanFunc *func)
321 322 }
322 323 fail: ;
323 324 }
324   - if (device_count) {
  325 + if (device_count && (vendor_id || product_id)) {
  326 + /* Add the last device. */
325 327 ret = func(opaque, bus_num, addr, class_id, vendor_id,
326 328 product_id, product_name, speed);
327 329 }
... ...