Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbdev/src/pipes.c

    r56bdd9a4 r8e5ce07  
    5454static usb_address_t get_my_address(async_sess_t *sess, const ddf_dev_t *dev)
    5555{
    56         assert(sess);
    5756        async_exch_t *exch = async_exchange_begin(sess);
    58         if (!exch)
    59                 return ENOMEM;
    60 
    61         usb_address_t address;
    62         const int ret = usb_get_my_address(exch, &address);
    63 
     57       
     58        /*
     59         * We are sending special value as a handle - zero - to get
     60         * handle of the parent function (that handle was used
     61         * when registering our device @p dev.
     62         */
     63        sysarg_t address;
     64        int rc = async_req_2_1(exch, DEV_IFACE_ID(USB_DEV_IFACE),
     65            IPC_M_USB_GET_ADDRESS, 0, &address);
     66       
    6467        async_exchange_end(exch);
    65 
    66         return (ret == EOK) ? address : ret;
     68       
     69        if (rc != EOK)
     70                return rc;
     71       
     72        return (usb_address_t) address;
    6773}
    6874
     
    7076 *
    7177 * @param device Device in question.
    72  * @return Error code (ENOTSUP means any).
     78 * @return Interface number (negative code means any).
    7379 */
    7480int usb_device_get_assigned_interface(const ddf_dev_t *device)
    7581{
    76         assert(device);
    7782        async_sess_t *parent_sess =
    7883            devman_parent_device_connect(EXCHANGE_ATOMIC, device->handle,
    7984            IPC_FLAG_BLOCKING);
    8085        if (!parent_sess)
    81                 return ENOMEM;
    82 
     86                return -1;
     87       
    8388        async_exch_t *exch = async_exchange_begin(parent_sess);
    84         if (!exch) {
    85                 async_hangup(parent_sess);
    86                 return ENOMEM;
    87         }
    88 
    89         int iface_no;
    90         const int ret = usb_get_my_interface(exch, &iface_no);
    91 
    92         return ret == EOK ? iface_no : ret;
     89       
     90        sysarg_t iface_no;
     91        int rc = async_req_2_1(exch, DEV_IFACE_ID(USB_DEV_IFACE),
     92            IPC_M_USB_GET_INTERFACE, device->handle, &iface_no);
     93       
     94        async_exchange_end(exch);
     95        async_hangup(parent_sess);
     96       
     97        if (rc != EOK)
     98                return -1;
     99       
     100        return (int) iface_no;
    93101}
    94102
Note: See TracChangeset for help on using the changeset viewer.