Commit 7718564b authored by Anthony Liguori's avatar Anthony Liguori
Browse files

Merge remote-tracking branch 'kraxel/usb.38' into staging

* kraxel/usb.38: (28 commits)
  xhci: handle USB_RET_NAK
  xhci: remote wakeup support
  xhci: kill port arg from xhci_setup_packet
  xhci: stop on errors
  xhci: add trb type name lookup support.
  xhci: signal low- and fullspeed support
  usb: add USBBusOps->wakeup_endpoint
  usb: pass USBEndpoint to usb_wakeup
  usb: maintain async packet list per endpoint
  usb: Set USBEndpoint in usb_packet_setup().
  usb: add USBEndpoint->{nr,pid}
  usb: USBPacket: add status, rename owner -> ep
  usb: fold usb_generic_handle_packet into usb_handle_packet
  usb: kill handle_packet callback
  usb-xhci: switch to usb_find_device()
  usb-musb: switch to usb_find_device()
  usb-ohci: switch to usb_find_device()
  usb-ehci: switch to usb_find_device()
  usb-uhci: switch to usb_find_device()
  usb: handle dev == NULL in usb_handle_packet()
  ...
parents 65b31cc2 7c605a23
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2584,7 +2584,7 @@ fi

# check for usbredirparser for usb network redirection support
if test "$usb_redir" != "no" ; then
    if $pkg_config libusbredirparser >/dev/null 2>&1 ; then
    if $pkg_config --atleast-version=0.3.3 libusbredirparser >/dev/null 2>&1 ; then
        usb_redir="yes"
        usb_redir_cflags=$($pkg_config --cflags libusbredirparser 2>/dev/null)
        usb_redir_libs=$($pkg_config --libs libusbredirparser 2>/dev/null)
+2 −3
Original line number Diff line number Diff line
@@ -607,7 +607,7 @@ static int usb_audio_handle_data(USBDevice *dev, USBPacket *p)

    switch (p->pid) {
    case USB_TOKEN_OUT:
        switch (p->devep) {
        switch (p->ep->nr) {
        case 1:
            ret = usb_audio_handle_dataout(s, p);
            break;
@@ -624,7 +624,7 @@ fail:
    if (ret == USB_RET_STALL && s->debug) {
        fprintf(stderr, "usb-audio: failed data transaction: "
                        "pid 0x%x ep 0x%x len 0x%zx\n",
                        p->pid, p->devep, p->iov.size);
                        p->pid, p->ep->nr, p->iov.size);
    }
    return ret;
}
@@ -691,7 +691,6 @@ static void usb_audio_class_init(ObjectClass *klass, void *data)
    k->product_desc   = "QEMU USB Audio Interface";
    k->usb_desc       = &desc_audio;
    k->init           = usb_audio_initfn;
    k->handle_packet  = usb_generic_handle_packet;
    k->handle_reset   = usb_audio_handle_reset;
    k->handle_control = usb_audio_handle_control;
    k->handle_data    = usb_audio_handle_data;
+2 −3
Original line number Diff line number Diff line
@@ -423,7 +423,7 @@ static int usb_bt_handle_data(USBDevice *dev, USBPacket *p)

    switch (p->pid) {
    case USB_TOKEN_IN:
        switch (p->devep & 0xf) {
        switch (p->ep->nr) {
        case USB_EVT_EP:
            ret = usb_bt_fifo_dequeue(&s->evt, p);
            break;
@@ -442,7 +442,7 @@ static int usb_bt_handle_data(USBDevice *dev, USBPacket *p)
        break;

    case USB_TOKEN_OUT:
        switch (p->devep & 0xf) {
        switch (p->ep->nr) {
        case USB_ACL_EP:
            usb_bt_fifo_out_enqueue(s, &s->outacl, s->hci->acl_send,
                            usb_bt_hci_acl_complete, p);
@@ -535,7 +535,6 @@ static void usb_bt_class_initfn(ObjectClass *klass, void *data)
    uc->init           = usb_bt_initfn;
    uc->product_desc   = "QEMU BT dongle";
    uc->usb_desc       = &desc_bluetooth;
    uc->handle_packet  = usb_generic_handle_packet;
    uc->handle_reset   = usb_bt_handle_reset;
    uc->handle_control = usb_bt_handle_control;
    uc->handle_data    = usb_bt_handle_data;
+7 −7
Original line number Diff line number Diff line
@@ -74,21 +74,21 @@ static int usb_device_init(USBDevice *dev)
    return 0;
}

static void usb_device_handle_destroy(USBDevice *dev)
USBDevice *usb_device_find_device(USBDevice *dev, uint8_t addr)
{
    USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev);
    if (klass->handle_destroy) {
        klass->handle_destroy(dev);
    if (klass->find_device) {
        return klass->find_device(dev, addr);
    }
    return NULL;
}

int usb_device_handle_packet(USBDevice *dev, USBPacket *p)
static void usb_device_handle_destroy(USBDevice *dev)
{
    USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev);
    if (klass->handle_packet) {
        return klass->handle_packet(dev, p);
    if (klass->handle_destroy) {
        klass->handle_destroy(dev);
    }
    return -ENOSYS;
}

void usb_device_cancel_packet(USBDevice *dev, USBPacket *p)
+4 −3
Original line number Diff line number Diff line
@@ -267,6 +267,7 @@ typedef struct CCIDBus {
 */
typedef struct USBCCIDState {
    USBDevice dev;
    USBEndpoint *intr;
    CCIDBus bus;
    CCIDCardState *card;
    BulkIn bulk_in_pending[BULK_IN_PENDING_NUM]; /* circular */
@@ -839,7 +840,7 @@ static void ccid_on_slot_change(USBCCIDState *s, bool full)
        s->bmSlotICCState |= SLOT_0_CHANGED_MASK;
    }
    s->notify_slot_change = true;
    usb_wakeup(&s->dev);
    usb_wakeup(s->intr);
}

static void ccid_write_data_block_error(
@@ -995,7 +996,7 @@ static int ccid_handle_data(USBDevice *dev, USBPacket *p)
        break;

    case USB_TOKEN_IN:
        switch (p->devep & 0xf) {
        switch (p->ep->nr) {
        case CCID_BULK_IN_EP:
            if (!p->iov.size) {
                ret = USB_RET_NAK;
@@ -1190,6 +1191,7 @@ static int ccid_initfn(USBDevice *dev)

    usb_desc_init(dev);
    qbus_create_inplace(&s->bus.qbus, &ccid_bus_info, &dev->qdev, NULL);
    s->intr = usb_ep_get(dev, USB_TOKEN_IN, CCID_INT_IN_EP);
    s->bus.qbus.allow_hotplug = 1;
    s->card = NULL;
    s->migration_state = MIGRATION_NONE;
@@ -1320,7 +1322,6 @@ static void ccid_class_initfn(ObjectClass *klass, void *data)
    uc->init           = ccid_initfn;
    uc->product_desc   = "QEMU USB CCID";
    uc->usb_desc       = &desc_ccid;
    uc->handle_packet  = usb_generic_handle_packet;
    uc->handle_reset   = ccid_handle_reset;
    uc->handle_control = ccid_handle_control;
    uc->handle_data    = ccid_handle_data;
Loading