Changeset 68e5406 in mainline for uspace/lib/usbhost/src/ddf_helpers.c


Ignore:
Timestamp:
2017-12-10T21:08:11Z (7 years ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4c6de4f
Parents:
dd8ab1c
Message:

Separate return value from error code in gen_irq_code*() and hcd_send_batch_sync().

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbhost/src/ddf_helpers.c

    rdd8ab1c r68e5406  
    481481        }};
    482482
    483         const usb_address_t address = hcd_request_address(hcd, speed);
    484         if (address < 0) {
     483        usb_address_t address;
     484        ret = hcd_request_address(hcd, speed, &address);
     485        if (ret != EOK) {
    485486                usb_log_error("Failed to reserve new address: %s.",
    486                     str_error(address));
    487                 return address;
     487                    str_error(ret));
     488                return ret;
    488489        }
    489490
     
    518519        usb_log_debug("Device(%d): Requesting first 8B of device descriptor.",
    519520            address);
    520         ssize_t got = hcd_send_batch_sync(hcd, default_target, USB_DIRECTION_IN,
     521        size_t got;
     522        ret = hcd_send_batch_sync(hcd, default_target, USB_DIRECTION_IN,
    521523            &desc, CTRL_PIPE_MIN_PACKET_SIZE, *(uint64_t *)&get_device_desc_8,
    522             "read first 8 bytes of dev descriptor");
    523 
    524         if (got != CTRL_PIPE_MIN_PACKET_SIZE) {
    525                 ret = got < 0 ? got : EOVERFLOW;
     524            "read first 8 bytes of dev descriptor", &got);
     525
     526        if (ret == EOK && got != CTRL_PIPE_MIN_PACKET_SIZE) {
     527                ret = EOVERFLOW;
     528        }
     529
     530        if (ret != EOK) {
    526531                usb_log_error("Device(%d): Failed to get 8B of dev descr: %s.",
    527532                    address, str_error(ret));
     
    552557
    553558        usb_log_debug("Device(%d): Setting USB address.", address);
    554         got = hcd_send_batch_sync(hcd, default_target, USB_DIRECTION_OUT,
    555             NULL, 0, *(uint64_t *)&set_address, "set address");
     559        ret = hcd_send_batch_sync(hcd, default_target, USB_DIRECTION_OUT,
     560            NULL, 0, *(uint64_t *)&set_address, "set address", &got);
    556561
    557562        usb_log_debug("Device(%d): Removing default (0:0) EP.", address);
    558563        hcd_remove_ep(hcd, default_target, USB_DIRECTION_BOTH);
    559564
    560         if (got != 0) {
     565        if (ret != EOK) {
    561566                usb_log_error("Device(%d): Failed to set new address: %s.",
    562                     address, str_error(got));
     567                    address, str_error(ret));
    563568                hcd_remove_ep(hcd, target, USB_DIRECTION_BOTH);
    564569                hcd_release_address(hcd, address);
    565                 return got;
     570                return ret;
    566571        }
    567572
     
    572577        usb_log_debug("Device(%d): Requesting full device descriptor.",
    573578            address);
    574         got = hcd_send_batch_sync(hcd, target, USB_DIRECTION_IN,
     579        ret = hcd_send_batch_sync(hcd, target, USB_DIRECTION_IN,
    575580            &desc, sizeof(desc), *(uint64_t *)&get_device_desc,
    576             "read device descriptor");
     581            "read device descriptor", &got);
    577582        if (ret != EOK) {
    578583                usb_log_error("Device(%d): Failed to set get dev descriptor: %s",
     
    749754    const hw_res_list_parsed_t *hw_res,
    750755    interrupt_handler_t handler,
    751     int (*gen_irq_code)(irq_code_t *, const hw_res_list_parsed_t *hw_res),
     756    int (*gen_irq_code)(irq_code_t *, const hw_res_list_parsed_t *, int *),
    752757    cap_handle_t *handle)
    753758{
     
    759764        irq_code_t irq_code = {0};
    760765
    761         const int irq = gen_irq_code(&irq_code, hw_res);
    762         if (irq < 0) {
     766        int irq;
     767        int ret = gen_irq_code(&irq_code, hw_res, &irq);
     768        if (ret != EOK) {
    763769                usb_log_error("Failed to generate IRQ code: %s.\n",
    764                     str_error(irq));
    765                 return irq;
     770                    str_error(ret));
     771                return ret;
    766772        }
    767773
    768774        /* Register handler to avoid interrupt lockup */
    769         int ret = register_interrupt_handler(device, irq, handler,
     775        ret = register_interrupt_handler(device, irq, handler,
    770776            &irq_code, handle);
    771777        irq_code_clean(&irq_code);
Note: See TracChangeset for help on using the changeset viewer.