static void usb_host_set_config(USBHostDevice *s, int config, USBPacket *p)

{

    int rc;



    trace_usb_host_set_config(s->bus_num, s->addr, config);



    usb_host_release_interfaces(s);

    usb_host_detach_kernel(s);

    rc = libusb_set_configuration(s->dh, config);

    if (rc != 0) {

        usb_host_libusb_error("libusb_set_configuration", rc);

        p->status = USB_RET_STALL;

        if (rc == LIBUSB_ERROR_NO_DEVICE) {

            usb_host_nodev(s);

        }

        return;

    }

    p->status = usb_host_claim_interfaces(s, config);

    if (p->status != USB_RET_SUCCESS) {

        return;

    }

    usb_host_ep_update(s);

}

static void usb_host_set_config(USBHostDevice *s, int config, USBPacket *p)

{

    int rc;



    trace_usb_host_set_config(s->bus_num, s->addr, config);



    usb_host_release_interfaces(s);

    usb_host_detach_kernel(s);

    rc = libusb_set_configuration(s->dh, config);

    if (rc != 0) {

        usb_host_libusb_error("libusb_set_configuration", rc);

        p->status = USB_RET_STALL;

        if (rc == LIBUSB_ERROR_NO_DEVICE) {

            usb_host_nodev(s);

        }

        return;

    }

    p->status = usb_host_claim_interfaces(s, config);

    if (p->status != USB_RET_SUCCESS) {

        return;

    }

    usb_host_ep_update(s);

}

static void FUNC_0(USBHostDevice *VAR_0, int VAR_1, USBPacket *VAR_2)

{

    int VAR_3;



    trace_usb_host_set_config(VAR_0->bus_num, VAR_0->addr, VAR_1);



    usb_host_release_interfaces(VAR_0);

    usb_host_detach_kernel(VAR_0);

    VAR_3 = libusb_set_configuration(VAR_0->dh, VAR_1);

    if (VAR_3 != 0) {

        usb_host_libusb_error("libusb_set_configuration", VAR_3);

        VAR_2->status = USB_RET_STALL;

        if (VAR_3 == LIBUSB_ERROR_NO_DEVICE) {

            usb_host_nodev(VAR_0);

        }

        return;

    }

    VAR_2->status = usb_host_claim_interfaces(VAR_0, VAR_1);

    if (VAR_2->status != USB_RET_SUCCESS) {

        return;

    }

    usb_host_ep_update(VAR_0);

}

static void FUNC_0(USBHostDevice *VAR_0, int VAR_1, USBPacket *VAR_2)
{ int VAR_3; trace_usb_host_set_config(VAR_0->bus_num, VAR_0->addr, VAR_1); usb_host_release_interfaces(VAR_0); usb_host_detach_kernel(VAR_0); VAR_3 = libusb_set_configuration(VAR_0->dh, VAR_1); if (VAR_3 != 0) { usb_host_libusb_error("libusb_set_configuration", VAR_3); VAR_2->status = USB_RET_STALL; if (VAR_3 == LIBUSB_ERROR_NO_DEVICE) { usb_host_nodev(VAR_0); } return; } VAR_2->status = usb_host_claim_interfaces(VAR_0, VAR_1); if (VAR_2->status != USB_RET_SUCCESS) { return; } usb_host_ep_update(VAR_0); }