Changeset c5b93dc in mainline


Ignore:
Timestamp:
2011-03-05T00:12:21Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
eae83aa
Parents:
0e06a14
Message:

Refactoring

Rename transfer_descriptor_t to td_t
Minor fixes

Location:
uspace/drv/uhci-hcd
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-hcd/batch.c

    r0e06a14 rc5b93dc  
    8484        }
    8585
    86         instance->tds = malloc32(sizeof(transfer_descriptor_t) * instance->packets);
     86        instance->tds = malloc32(sizeof(td_t) * instance->packets);
    8787        if (instance->tds == NULL) {
    8888                usb_log_error("Failed to allocate transfer descriptors.\n");
     
    9191                return NULL;
    9292        }
    93         bzero(instance->tds, sizeof(transfer_descriptor_t) * instance->packets);
     93        bzero(instance->tds, sizeof(td_t) * instance->packets);
    9494
    9595        const size_t transport_size = max_packet_size * instance->packets;
     
    152152        size_t i = 0;
    153153        for (;i < instance->packets; ++i) {
    154                 if (transfer_descriptor_is_active(&instance->tds[i])) {
     154                if (td_is_active(&instance->tds[i])) {
    155155                        return false;
    156156                }
    157                 instance->error = transfer_descriptor_status(&instance->tds[i]);
     157
     158                instance->error = td_status(&instance->tds[i]);
    158159                if (instance->error != EOK) {
     160                        usb_log_debug("Batch(%p) found error TD(%d):%x.\n",
     161                            instance, i, instance->tds[i].status);
    159162                        if (i > 0)
    160                                 instance->transfered_size -= instance->setup_size;
    161                         usb_log_debug("Batch(%p) found error TD(%d):%x.\n",
    162                           instance, i, instance->tds[i].status);
     163                                goto substract_ret;
    163164                        return true;
    164165                }
    165                 instance->transfered_size +=
    166                     transfer_descriptor_actual_size(&instance->tds[i]);
    167         }
     166
     167                instance->transfered_size += td_act_size(&instance->tds[i]);
     168                if (td_is_short(&instance->tds[i]))
     169                        goto substract_ret;
     170        }
     171substract_ret:
    168172        instance->transfered_size -= instance->setup_size;
    169173        return true;
     
    247251                    remain_size : instance->max_packet_size;
    248252
    249                 transfer_descriptor_init(&instance->tds[packet],
     253                td_init(&instance->tds[packet],
    250254                    DEFAULT_ERROR_COUNT, packet_size, toggle, false, low_speed,
    251255                    instance->target, pid, data,
     
    270274        int toggle = 0;
    271275        /* setup stage */
    272         transfer_descriptor_init(instance->tds, DEFAULT_ERROR_COUNT,
     276        td_init(instance->tds, DEFAULT_ERROR_COUNT,
    273277            instance->setup_size, toggle, false, low_speed, instance->target,
    274278            USB_PID_SETUP, instance->setup_buffer, &instance->tds[1]);
     
    288292                    remain_size : instance->max_packet_size;
    289293
    290                 transfer_descriptor_init(&instance->tds[packet],
     294                td_init(&instance->tds[packet],
    291295                    DEFAULT_ERROR_COUNT, packet_size, toggle, false, low_speed,
    292296                    instance->target, data_stage, data,
     
    301305        /* status stage */
    302306        assert(packet == instance->packets - 1);
    303         transfer_descriptor_init(&instance->tds[packet], DEFAULT_ERROR_COUNT,
     307        td_init(&instance->tds[packet], DEFAULT_ERROR_COUNT,
    304308            0, 1, false, low_speed, instance->target, status_stage, NULL, NULL);
    305309
  • uspace/drv/uhci-hcd/batch.h

    r0e06a14 rc5b93dc  
    6565        ddf_fun_t *fun;
    6666        queue_head_t *qh;
    67         transfer_descriptor_t *tds;
     67        td_t *tds;
    6868        void (*next_step)(struct batch*);
    6969} batch_t;
  • uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c

    r0e06a14 rc5b93dc  
    3838#include "utils/malloc32.h"
    3939
    40 void transfer_descriptor_init(transfer_descriptor_t *instance,
    41     int error_count, size_t size, bool toggle, bool isochronous, bool low_speed,
    42     usb_target_t target, int pid, void *buffer, transfer_descriptor_t *next)
     40void td_init(td_t *instance, int err_count, size_t size, bool toggle, bool iso,
     41    bool low_speed, usb_target_t target, int pid, void *buffer, td_t *next)
    4342{
    4443        assert(instance);
     44        assert(size < 1024);
    4545
    4646        instance->next = 0
     
    4949
    5050        instance->status = 0
    51           | ((error_count & TD_STATUS_ERROR_COUNT_MASK) << TD_STATUS_ERROR_COUNT_POS)
    52                 | (low_speed ? TD_STATUS_LOW_SPEED_FLAG : 0)
    53           | TD_STATUS_ERROR_ACTIVE;
     51            | ((err_count & TD_STATUS_ERROR_COUNT_MASK) << TD_STATUS_ERROR_COUNT_POS)
     52            | (low_speed ? TD_STATUS_LOW_SPEED_FLAG : 0)
     53            | (iso ? TD_STATUS_ISOCHRONOUS_FLAG : 0)
     54            | TD_STATUS_ERROR_ACTIVE;
    5455
    55         assert(size < 1024);
    5656        instance->device = 0
    57                 | (((size - 1) & TD_DEVICE_MAXLEN_MASK) << TD_DEVICE_MAXLEN_POS)
    58                 | (toggle ? TD_DEVICE_DATA_TOGGLE_ONE_FLAG : 0)
    59                 | ((target.address & TD_DEVICE_ADDRESS_MASK) << TD_DEVICE_ADDRESS_POS)
    60                 | ((target.endpoint & TD_DEVICE_ENDPOINT_MASK) << TD_DEVICE_ENDPOINT_POS)
    61                 | ((pid & TD_DEVICE_PID_MASK) << TD_DEVICE_PID_POS);
     57            | (((size - 1) & TD_DEVICE_MAXLEN_MASK) << TD_DEVICE_MAXLEN_POS)
     58            | (toggle ? TD_DEVICE_DATA_TOGGLE_ONE_FLAG : 0)
     59            | ((target.address & TD_DEVICE_ADDRESS_MASK) << TD_DEVICE_ADDRESS_POS)
     60            | ((target.endpoint & TD_DEVICE_ENDPOINT_MASK) << TD_DEVICE_ENDPOINT_POS)
     61            | ((pid & TD_DEVICE_PID_MASK) << TD_DEVICE_PID_POS);
    6262
    6363        instance->buffer_ptr = 0;
     
    6868
    6969        usb_log_debug2("Created TD: %X:%X:%X:%X(%p).\n",
    70                 instance->next, instance->status, instance->device,
    71           instance->buffer_ptr, buffer);
     70            instance->next, instance->status, instance->device,
     71            instance->buffer_ptr, buffer);
    7272}
    7373/*----------------------------------------------------------------------------*/
    74 int transfer_descriptor_status(transfer_descriptor_t *instance)
     74int td_status(td_t *instance)
    7575{
    7676        assert(instance);
  • uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h

    r0e06a14 rc5b93dc  
    8888         * we don't use it anyway
    8989         */
    90 } __attribute__((packed)) transfer_descriptor_t;
     90} __attribute__((packed)) td_t;
    9191
    9292
    93 void transfer_descriptor_init(transfer_descriptor_t *instance,
    94     int error_count, size_t size, bool toggle, bool isochronous, bool low_speed,
    95     usb_target_t target, int pid, void *buffer, transfer_descriptor_t * next);
     93void td_init(td_t *instance, int error_count, size_t size, bool toggle, bool iso,
     94    bool low_speed, usb_target_t target, int pid, void *buffer, td_t * next);
    9695
    97 int transfer_descriptor_status(transfer_descriptor_t *instance);
     96int td_status(td_t *instance);
    9897
    99 static inline size_t transfer_descriptor_actual_size(
    100     transfer_descriptor_t *instance)
     98static inline size_t td_act_size(td_t *instance)
    10199{
    102100        assert(instance);
    103101        return
    104             ((instance->status >> TD_STATUS_ACTLEN_POS) + 1) & TD_STATUS_ACTLEN_MASK;
     102            ((instance->status >> TD_STATUS_ACTLEN_POS) + 1)
     103            & TD_STATUS_ACTLEN_MASK;
    105104}
    106105
    107 static inline bool transfer_descriptor_is_active(
    108     transfer_descriptor_t *instance)
     106static inline bool td_is_short(td_t *instance)
     107{
     108        const size_t act_size = td_act_size(instance);
     109        const size_t max_size =
     110            ((instance->device >> TD_DEVICE_MAXLEN_POS) + 1)
     111            & TD_DEVICE_MAXLEN_MASK;
     112        return
     113            (instance->status | TD_STATUS_SPD_FLAG) && act_size < max_size;
     114}
     115
     116static inline bool td_is_active(td_t *instance)
    109117{
    110118        assert(instance);
Note: See TracChangeset for help on using the changeset viewer.