Ignore:
File:
1 edited

Legend:

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

    r9d58539 r11e9e613  
    5454        return usb_hc_connection_open(pipe->wire->hc_connection);
    5555}
    56 /*----------------------------------------------------------------------------*/
     56
    5757/** Terminate a long transfer on a pipe.
    5858 * @param pipe Pipe where to end the long transfer.
     
    6767        return usb_hc_connection_close(pipe->wire->hc_connection);
    6868}
    69 /*----------------------------------------------------------------------------*/
     69
    7070/** Try to clear endpoint halt of default control pipe.
    7171 *
     
    8585        pipe->auto_reset_halt = true;
    8686}
    87 /*----------------------------------------------------------------------------*/
     87
    8888/** Request a control read transfer on an endpoint pipe.
    8989 *
     
    135135        return rc;
    136136}
    137 /*----------------------------------------------------------------------------*/
     137
    138138/** Request a control write transfer on an endpoint pipe.
    139139 *
     
    182182        return rc;
    183183}
    184 /*----------------------------------------------------------------------------*/
     184
    185185/** Request a read (in) transfer on an endpoint pipe.
    186186 *
     
    227227        return rc;
    228228}
    229 /*----------------------------------------------------------------------------*/
     229
    230230/** Request a write (out) transfer on an endpoint pipe.
    231231 *
     
    259259            pipe->endpoint_no, buffer, size);
    260260}
    261 /*----------------------------------------------------------------------------*/
     261
    262262/** Initialize USB endpoint pipe.
    263263 *
     
    273273    usb_device_connection_t *connection, usb_endpoint_t endpoint_no,
    274274    usb_transfer_type_t transfer_type, size_t max_packet_size,
    275     usb_direction_t direction)
     275    usb_direction_t direction, usb_dev_session_t *bus_session)
    276276{
    277277        assert(pipe);
     
    284284        pipe->direction = direction;
    285285        pipe->auto_reset_halt = false;
     286        pipe->bus_session = bus_session;
    286287
    287288        return EOK;
    288289}
    289 /*----------------------------------------------------------------------------*/
     290
    290291/** Initialize USB endpoint pipe as the default zero control pipe.
    291292 *
     
    295296 */
    296297int usb_pipe_initialize_default_control(usb_pipe_t *pipe,
    297     usb_device_connection_t *connection)
     298    usb_device_connection_t *connection, usb_dev_session_t *bus_session)
    298299{
    299300        assert(pipe);
     
    301302
    302303        int rc = usb_pipe_initialize(pipe, connection, 0, USB_TRANSFER_CONTROL,
    303             CTRL_PIPE_MIN_PACKET_SIZE, USB_DIRECTION_BOTH);
     304            CTRL_PIPE_MIN_PACKET_SIZE, USB_DIRECTION_BOTH, bus_session);
    304305
    305306        pipe->auto_reset_halt = true;
     
    307308        return rc;
    308309}
    309 /*----------------------------------------------------------------------------*/
     310
    310311/** Register endpoint with the host controller.
    311312 *
     
    317318{
    318319        assert(pipe);
    319         assert(pipe->wire);
    320 
    321         return usb_device_register_endpoint(pipe->wire,
    322            pipe->endpoint_no, pipe->transfer_type,
    323            pipe->direction, pipe->max_packet_size, interval);
    324 }
    325 /*----------------------------------------------------------------------------*/
     320        assert(pipe->bus_session);
     321        async_exch_t *exch = async_exchange_begin(pipe->bus_session);
     322        if (!exch)
     323                return ENOMEM;
     324        const int ret = usb_register_endpoint(exch, pipe->endpoint_no,
     325            pipe->transfer_type, pipe->direction, pipe->max_packet_size,
     326            interval);
     327        async_exchange_end(exch);
     328        return ret;
     329}
     330
    326331/** Revert endpoint registration with the host controller.
    327332 *
     
    332337{
    333338        assert(pipe);
    334         assert(pipe->wire);
    335 
    336         return usb_device_unregister_endpoint(pipe->wire,
    337             pipe->endpoint_no, pipe->direction);
     339        assert(pipe->bus_session);
     340        async_exch_t *exch = async_exchange_begin(pipe->bus_session);
     341        if (!exch)
     342                return ENOMEM;
     343        const int ret = usb_unregister_endpoint(exch, pipe->endpoint_no,
     344            pipe->direction);
     345        async_exchange_end(exch);
     346        return ret;
    338347}
    339348
Note: See TracChangeset for help on using the changeset viewer.