diff options
Diffstat (limited to 'hw/usb/hcd-ehci.c')
| -rw-r--r-- | hw/usb/hcd-ehci.c | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c index ccf54b6e09..d4d754765b 100644 --- a/hw/usb/hcd-ehci.c +++ b/hw/usb/hcd-ehci.c @@ -769,30 +769,26 @@ static void ehci_wakeup(USBPort *port) qemu_bh_schedule(s->async_bh); } -static int ehci_register_companion(USBBus *bus, USBPort *ports[], - uint32_t portcount, uint32_t firstport) +static void ehci_register_companion(USBBus *bus, USBPort *ports[], + uint32_t portcount, uint32_t firstport, + Error **errp) { EHCIState *s = container_of(bus, EHCIState, bus); uint32_t i; if (firstport + portcount > NB_PORTS) { - qerror_report(QERR_INVALID_PARAMETER_VALUE, "firstport", - "firstport on masterbus"); - error_printf_unless_qmp( - "firstport value of %u makes companion take ports %u - %u, which " - "is outside of the valid range of 0 - %u\n", firstport, firstport, - firstport + portcount - 1, NB_PORTS - 1); - return -1; + error_setg(errp, "firstport must be between 0 and %u", + NB_PORTS - portcount); + return; } for (i = 0; i < portcount; i++) { if (s->companion_ports[firstport + i]) { - qerror_report(QERR_INVALID_PARAMETER_VALUE, "masterbus", - "an USB masterbus"); - error_printf_unless_qmp( - "port %u on masterbus %s already has a companion assigned\n", - firstport + i, bus->qbus.name); - return -1; + error_setg(errp, "firstport %u asks for ports %u-%u," + " but port %u has a companion assigned already", + firstport, firstport, firstport + portcount - 1, + firstport + i); + return; } } @@ -806,8 +802,6 @@ static int ehci_register_companion(USBBus *bus, USBPort *ports[], s->companion_count++; s->caps[0x05] = (s->companion_count << 4) | portcount; - - return 0; } static void ehci_wakeup_endpoint(USBBus *bus, USBEndpoint *ep, @@ -845,7 +839,7 @@ static USBDevice *ehci_find_device(EHCIState *ehci, uint8_t addr) } /* 4.1 host controller initialization */ -static void ehci_reset(void *opaque) +void ehci_reset(void *opaque) { EHCIState *s = opaque; int i; @@ -2471,7 +2465,6 @@ void usb_ehci_realize(EHCIState *s, DeviceState *dev, Error **errp) s->async_bh = qemu_bh_new(ehci_frame_timer, s); s->device = dev; - qemu_register_reset(ehci_reset, s); s->vmstate = qemu_add_vm_change_state_handler(usb_ehci_vm_state_change, s); } |