Changeset bcaefe3 in mainline


Ignore:
Timestamp:
2011-03-07T11:59:07Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
13927cf
Parents:
2ab6875
Message:

Yet another refactoring

File:
1 edited

Legend:

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

    r2ab6875 rbcaefe3  
    9898        bzero(instance->tds, sizeof(td_t) * instance->packets);
    9999
    100         const size_t transport_size = max_packet_size * instance->packets;
     100//      const size_t transport_size = max_packet_size * instance->packets;
    101101
    102102        if (size > 0) {
    103                 instance->transport_buffer = malloc32(transport_size);
     103                instance->transport_buffer = malloc32(size);
    104104                CHECK_NULL_DISPOSE_RETURN(instance->transport_buffer,
    105105                    "Failed to allocate device accessible buffer.\n");
     
    156156                            instance, i, instance->tds[i].status);
    157157
    158                         device_keeper_set_toggle(instance->manager, instance->target,
    159                             td_toggle(&instance->tds[i]));
     158                        device_keeper_set_toggle(instance->manager,
     159                            instance->target, td_toggle(&instance->tds[i]));
    160160                        if (i > 0)
    161161                                goto substract_ret;
     
    204204{
    205205        assert(instance);
     206        /* we are data out, we are supposed to provide data */
    206207        memcpy(instance->transport_buffer, instance->buffer, instance->buffer_size);
    207208        batch_data(instance, USB_PID_OUT);
     
    234235        assert(instance);
    235236        const bool low_speed = instance->speed == USB_SPEED_LOW;
    236         int toggle = device_keeper_get_toggle(instance->manager, instance->target);
     237        int toggle =
     238            device_keeper_get_toggle(instance->manager, instance->target);
    237239        assert(toggle == 0 || toggle == 1);
    238240
     
    244246                    - remain_size;
    245247
    246 
    247248                const size_t packet_size =
    248249                    (instance->max_packet_size > remain_size) ?
    249250                    remain_size : instance->max_packet_size;
    250251
    251                 td_init(&instance->tds[packet],
    252                     DEFAULT_ERROR_COUNT, packet_size, toggle, false, low_speed,
    253                     instance->target, pid, data,
    254                     &instance->tds[packet + 1]);
     252                td_t *next_packet = (packet + 1 < instance->packets)
     253                    ? &instance->tds[packet + 1] : NULL;
     254
     255                assert(packet < instance->packets);
     256                assert(packet_size <= remain_size);
     257
     258                td_init(
     259                    &instance->tds[packet], DEFAULT_ERROR_COUNT, packet_size,
     260                    toggle, false, low_speed, instance->target, pid, data,
     261                    next_packet);
     262
    255263
    256264                toggle = 1 - toggle;
     265                remain_size -= packet_size;
    257266                ++packet;
    258                 assert(packet <= instance->packets);
    259                 assert(packet_size <= remain_size);
    260                 remain_size -= packet_size;
    261267        }
    262268        device_keeper_set_toggle(instance->manager, instance->target, toggle);
    263 
    264         instance->tds[packet - 1].status |= TD_STATUS_COMPLETE_INTERRUPT_FLAG;
    265         instance->tds[packet - 1].next = 0 | LINK_POINTER_TERMINATE_FLAG;
    266269}
    267270/*----------------------------------------------------------------------------*/
     
    292295                    remain_size : instance->max_packet_size;
    293296
    294                 td_init(&instance->tds[packet],
    295                     DEFAULT_ERROR_COUNT, packet_size, toggle, false, low_speed,
    296                     instance->target, data_stage, data,
    297                     &instance->tds[packet + 1]);
     297                td_init(
     298                    &instance->tds[packet], DEFAULT_ERROR_COUNT, packet_size,
     299                    toggle, false, low_speed, instance->target, data_stage,
     300                    data, &instance->tds[packet + 1]);
    298301
    299302                ++packet;
     
    319322        assert(instance->callback_in);
    320323
     324        /* we are data in, we need data */
    321325        memcpy(instance->buffer, instance->transport_buffer, instance->buffer_size);
    322326
     
    326330            instance->transfered_size);
    327331
    328         instance->callback_in(instance->fun,
    329             err, instance->transfered_size,
    330             instance->arg);
     332        instance->callback_in(
     333            instance->fun, err, instance->transfered_size, instance->arg);
    331334}
    332335/*----------------------------------------------------------------------------*/
     
    361364        assert(instance);
    362365        usb_log_debug("Batch(%p) disposing.\n", instance);
     366        /* free32 is NULL safe */
    363367        free32(instance->tds);
    364368        free32(instance->qh);
Note: See TracChangeset for help on using the changeset viewer.