usb-bus: introduce a wrapper function to check speed
In this way, we can check speed directly, don't need call usb_device_attach(), which has other conditions, such as checking the chardev is open. Signed-off-by: Gonglei <arei.gonglei@huawei.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
bd2ba2752d
commit
594a53607e
14
hw/usb/bus.c
14
hw/usb/bus.c
@ -478,7 +478,7 @@ static void usb_mask_to_str(char *dest, size_t size,
|
||||
}
|
||||
}
|
||||
|
||||
void usb_device_attach(USBDevice *dev, Error **errp)
|
||||
void usb_check_attach(USBDevice *dev, Error **errp)
|
||||
{
|
||||
USBBus *bus = usb_bus_from_device(dev);
|
||||
USBPort *port = dev->port;
|
||||
@ -499,6 +499,18 @@ void usb_device_attach(USBDevice *dev, Error **errp)
|
||||
bus->qbus.name, port->path, portspeed);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void usb_device_attach(USBDevice *dev, Error **errp)
|
||||
{
|
||||
USBPort *port = dev->port;
|
||||
Error *local_err = NULL;
|
||||
|
||||
usb_check_attach(dev, &local_err);
|
||||
if (local_err) {
|
||||
error_propagate(errp, local_err);
|
||||
return;
|
||||
}
|
||||
|
||||
dev->attached++;
|
||||
usb_attach(port);
|
||||
|
@ -553,6 +553,7 @@ void usb_release_port(USBDevice *dev);
|
||||
void usb_device_attach(USBDevice *dev, Error **errp);
|
||||
int usb_device_detach(USBDevice *dev);
|
||||
int usb_device_delete_addr(int busnr, int addr);
|
||||
void usb_check_attach(USBDevice *dev, Error **errp);
|
||||
|
||||
static inline USBBus *usb_bus_from_device(USBDevice *d)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user