Changeset 3bacee1 in mainline for uspace/drv/bus/usb/xhci/transfers.c


Ignore:
Timestamp:
2018-04-12T16:27:17Z (6 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3cf22f9
Parents:
76d0981d
git-author:
Jiri Svoboda <jiri@…> (2018-04-11 19:25:33)
git-committer:
Jiri Svoboda <jiri@…> (2018-04-12 16:27:17)
Message:

Make ccheck-fix again and commit more good files.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/xhci/transfers.c

    r76d0981d r3bacee1  
    5151 *  See Table 7 of xHCI specification.
    5252 */
    53 static inline stage_dir_flag_t get_status_direction_flag(xhci_trb_t* trb,
    54         uint8_t bmRequestType, uint16_t wLength)
     53static inline stage_dir_flag_t get_status_direction_flag(xhci_trb_t *trb,
     54    uint8_t bmRequestType, uint16_t wLength)
    5555{
    5656        /* See Table 7 of xHCI specification */
    57         return SETUP_REQUEST_TYPE_IS_DEVICE_TO_HOST(bmRequestType) && (wLength > 0)
    58                 ? STAGE_OUT
    59                 : STAGE_IN;
     57        return SETUP_REQUEST_TYPE_IS_DEVICE_TO_HOST(bmRequestType) && (wLength > 0) ?
     58            STAGE_OUT :
     59            STAGE_IN;
    6060}
    6161
     
    6969 *  See Table 8 of xHCI specification.
    7070 */
    71 static inline data_stage_type_t get_transfer_type(xhci_trb_t* trb, uint8_t
    72         bmRequestType, uint16_t wLength)
     71static inline data_stage_type_t get_transfer_type(xhci_trb_t *trb, uint8_t
     72    bmRequestType, uint16_t wLength)
    7373{
    7474        if (wLength == 0)
     
    7676
    7777        /* See Table 7 of xHCI specification */
    78         return SETUP_REQUEST_TYPE_IS_DEVICE_TO_HOST(bmRequestType)
    79                 ? DATA_STAGE_IN
    80                 : DATA_STAGE_NO;
     78        return SETUP_REQUEST_TYPE_IS_DEVICE_TO_HOST(bmRequestType) ?
     79            DATA_STAGE_IN :
     80            DATA_STAGE_NO;
    8181}
    8282
     
    8686
    8787        return request_type == USB_REQUEST_TYPE_STANDARD &&
    88                 (setup->request == USB_DEVREQ_SET_CONFIGURATION
    89                 || setup->request == USB_DEVREQ_SET_INTERFACE);
     88            (setup->request == USB_DEVREQ_SET_CONFIGURATION ||
     89            setup->request == USB_DEVREQ_SET_INTERFACE);
    9090}
    9191
     
    9595 * Bus callback.
    9696 */
    97 usb_transfer_batch_t * xhci_transfer_create(endpoint_t* ep)
     97usb_transfer_batch_t *xhci_transfer_create(endpoint_t *ep)
    9898{
    9999        xhci_transfer_t *transfer = calloc(1, sizeof(xhci_transfer_t));
     
    108108 * Destroy a xHCI transfer.
    109109 */
    110 void xhci_transfer_destroy(usb_transfer_batch_t* batch)
     110void xhci_transfer_destroy(usb_transfer_batch_t *batch)
    111111{
    112112        xhci_transfer_t *transfer = xhci_transfer_from_batch(batch);
     
    137137
    138138        const size_t chunk_mask = dma_policy_chunk_mask(ts->buf.policy);
    139         ts->chunk_size = (chunk_mask > MAX_CHUNK_SIZE + 1)
    140                 ? MAX_CHUNK_SIZE : (chunk_mask + 1);
     139        ts->chunk_size = (chunk_mask > MAX_CHUNK_SIZE + 1) ?
     140            MAX_CHUNK_SIZE : (chunk_mask + 1);
    141141
    142142        ts->remaining = transfer->batch.size;
     
    183183}
    184184
    185 static errno_t schedule_control(xhci_hc_t* hc, xhci_transfer_t* transfer)
     185static errno_t schedule_control(xhci_hc_t *hc, xhci_transfer_t *transfer)
    186186{
    187187        usb_transfer_batch_t *batch = &transfer->batch;
    188188        xhci_endpoint_t *xhci_ep = xhci_endpoint_get(transfer->batch.ep);
    189189
    190         usb_device_request_setup_packet_t* setup = &batch->setup.packet;
     190        usb_device_request_setup_packet_t *setup = &batch->setup.packet;
    191191
    192192        trb_splitter_t splitter;
     
    210210            get_transfer_type(trb_setup, setup->request_type, setup->length));
    211211
    212         stage_dir_flag_t stage_dir = (transfer->batch.dir == USB_DIRECTION_IN)
    213                                 ? STAGE_IN : STAGE_OUT;
     212        stage_dir_flag_t stage_dir = (transfer->batch.dir == USB_DIRECTION_IN) ?
     213            STAGE_IN : STAGE_OUT;
    214214
    215215        /* Data stage - first TRB is special */
     
    243243}
    244244
    245 static errno_t schedule_bulk_intr(xhci_hc_t* hc, xhci_transfer_t *transfer)
    246 {
    247         xhci_trb_ring_t * const ring = get_ring(transfer);
     245static errno_t schedule_bulk_intr(xhci_hc_t *hc, xhci_transfer_t *transfer)
     246{
     247        xhci_trb_ring_t *const ring = get_ring(transfer);
    248248        if (!ring)
    249249                return EINVAL;
     
    266266                /* Set the interrupt bit for last TRB */
    267267                TRB_CTRL_SET_IOC(trbs[trbs_used - 1], 1);
    268         }
    269         else {
     268        } else {
    270269                /* Clear the chain bit on the last TRB */
    271270                TRB_CTRL_SET_CHAIN(trbs[trbs_used - 1], 1);
     
    280279
    281280        return xhci_trb_ring_enqueue_multiple(ring, trbs, trbs_used,
    282                 &transfer->interrupt_trb_phys);
    283 }
    284 
    285 static int schedule_isochronous(xhci_transfer_t* transfer)
     281            &transfer->interrupt_trb_phys);
     282}
     283
     284static int schedule_isochronous(xhci_transfer_t *transfer)
    286285{
    287286        endpoint_t *ep = transfer->batch.ep;
    288287
    289         return ep->direction == USB_DIRECTION_OUT
    290                 ? isoch_schedule_out(transfer)
    291                 : isoch_schedule_in(transfer);
    292 }
    293 
    294 errno_t xhci_handle_transfer_event(xhci_hc_t* hc, xhci_trb_t* trb)
     288        return ep->direction == USB_DIRECTION_OUT ?
     289            isoch_schedule_out(transfer) :
     290            isoch_schedule_in(transfer);
     291}
     292
     293errno_t xhci_handle_transfer_event(xhci_hc_t *hc, xhci_trb_t *trb)
    295294{
    296295        uintptr_t addr = trb->parameter;
     
    327326                    transfer->interrupt_trb_phys);
    328327                batch = &transfer->batch;
    329         }
    330         else {
     328        } else {
    331329                xhci_trb_ring_update_dequeue(&ep->ring, addr);
    332330
     
    354352        const xhci_trb_completion_code_t completion_code = TRB_COMPLETION_CODE(*trb);
    355353        switch (completion_code) {
    356                 case XHCI_TRBC_SHORT_PACKET:
    357                 case XHCI_TRBC_SUCCESS:
    358                         batch->error = EOK;
    359                         batch->transferred_size = batch->size - TRB_TRANSFER_LENGTH(*trb);
    360                         break;
    361 
    362                 case XHCI_TRBC_DATA_BUFFER_ERROR:
    363                         usb_log_warning("Transfer ended with data buffer error.");
    364                         batch->error = EAGAIN;
    365                         batch->transferred_size = 0;
    366                         break;
    367 
    368                 case XHCI_TRBC_BABBLE_DETECTED_ERROR:
    369                         usb_log_warning("Babble detected during the transfer.");
    370                         batch->error = EAGAIN;
    371                         batch->transferred_size = 0;
    372                         break;
    373 
    374                 case XHCI_TRBC_USB_TRANSACTION_ERROR:
    375                         usb_log_warning("USB Transaction error.");
    376                         batch->error = EAGAIN;
    377                         batch->transferred_size = 0;
    378                         break;
    379 
    380                 case XHCI_TRBC_TRB_ERROR:
    381                         usb_log_error("Invalid transfer parameters.");
    382                         batch->error = EINVAL;
    383                         batch->transferred_size = 0;
    384                         break;
    385 
    386                 case XHCI_TRBC_STALL_ERROR:
    387                         usb_log_warning("Stall condition detected.");
    388                         batch->error = ESTALL;
    389                         batch->transferred_size = 0;
    390                         break;
    391 
    392                 case XHCI_TRBC_SPLIT_TRANSACTION_ERROR:
    393                         usb_log_error("Split transcation error detected.");
    394                         batch->error = EAGAIN;
    395                         batch->transferred_size = 0;
    396                         break;
    397 
    398                 default:
    399                         usb_log_warning("Transfer not successfull: %u", completion_code);
    400                         batch->error = EIO;
     354        case XHCI_TRBC_SHORT_PACKET:
     355        case XHCI_TRBC_SUCCESS:
     356                batch->error = EOK;
     357                batch->transferred_size = batch->size - TRB_TRANSFER_LENGTH(*trb);
     358                break;
     359
     360        case XHCI_TRBC_DATA_BUFFER_ERROR:
     361                usb_log_warning("Transfer ended with data buffer error.");
     362                batch->error = EAGAIN;
     363                batch->transferred_size = 0;
     364                break;
     365
     366        case XHCI_TRBC_BABBLE_DETECTED_ERROR:
     367                usb_log_warning("Babble detected during the transfer.");
     368                batch->error = EAGAIN;
     369                batch->transferred_size = 0;
     370                break;
     371
     372        case XHCI_TRBC_USB_TRANSACTION_ERROR:
     373                usb_log_warning("USB Transaction error.");
     374                batch->error = EAGAIN;
     375                batch->transferred_size = 0;
     376                break;
     377
     378        case XHCI_TRBC_TRB_ERROR:
     379                usb_log_error("Invalid transfer parameters.");
     380                batch->error = EINVAL;
     381                batch->transferred_size = 0;
     382                break;
     383
     384        case XHCI_TRBC_STALL_ERROR:
     385                usb_log_warning("Stall condition detected.");
     386                batch->error = ESTALL;
     387                batch->transferred_size = 0;
     388                break;
     389
     390        case XHCI_TRBC_SPLIT_TRANSACTION_ERROR:
     391                usb_log_error("Split transcation error detected.");
     392                batch->error = EAGAIN;
     393                batch->transferred_size = 0;
     394                break;
     395
     396        default:
     397                usb_log_warning("Transfer not successfull: %u", completion_code);
     398                batch->error = EIO;
    401399        }
    402400
     
    456454         * the Reset Endpoint command.
    457455         */
    458         if (batch->ep->transfer_type == USB_TRANSFER_CONTROL
    459             && batch->dir == USB_DIRECTION_OUT) {
     456        if (batch->ep->transfer_type == USB_TRANSFER_CONTROL &&
     457            batch->dir == USB_DIRECTION_OUT) {
    460458                const usb_device_request_setup_packet_t *request = &batch->setup.packet;
    461                 if (request->request == USB_DEVREQ_CLEAR_FEATURE
    462                     && request->request_type == USB_REQUEST_RECIPIENT_ENDPOINT
    463                     && request->value == USB_FEATURE_ENDPOINT_HALT) {
     459                if (request->request == USB_DEVREQ_CLEAR_FEATURE &&
     460                    request->request_type == USB_REQUEST_RECIPIENT_ENDPOINT &&
     461                    request->value == USB_FEATURE_ENDPOINT_HALT) {
    464462                        const uint16_t index = uint16_usb2host(request->index);
    465463                        const usb_endpoint_t ep_num = index & 0xf;
    466                         const usb_direction_t dir = (index >> 7)
    467                             ? USB_DIRECTION_IN
    468                             : USB_DIRECTION_OUT;
     464                        const usb_direction_t dir = (index >> 7) ?
     465                            USB_DIRECTION_IN :
     466                            USB_DIRECTION_OUT;
    469467                        endpoint_t *halted_ep = bus_find_endpoint(&xhci_dev->base, ep_num, dir);
    470468                        if (halted_ep) {
     
    488486                        } else {
    489487                                usb_log_warning("Device(%u): Resetting unregistered endpoint"
    490                                         " %u %s.", xhci_dev->base.address, ep_num,
    491                                         usb_str_direction(dir));
     488                                    " %u %s.", xhci_dev->base.address, ep_num,
     489                                    usb_str_direction(dir));
    492490                        }
    493491                }
Note: See TracChangeset for help on using the changeset viewer.