Changeset c6f82e5 in mainline for uspace/drv/bus/usb/uhci


Ignore:
Timestamp:
2018-01-19T20:56:14Z (8 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7ec7b7e
Parents:
69b2dfee
Message:

libusbhost: do not try to handle the toggle bit in a generic way

Location:
uspace/drv/bus/usb/uhci
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/uhci/hc.h

    r69b2dfee rc6f82e5  
    127127} hc_t;
    128128
     129typedef struct uhci_endpoint {
     130        endpoint_t base;
     131
     132        bool toggle;
     133} uhci_endpoint_t;
     134
    129135static inline hc_t *hcd_to_hc(hc_device_t *hcd)
    130136{
  • uspace/drv/bus/usb/uhci/transfer_list.c

    r69b2dfee rc6f82e5  
    4141#include <usb/host/usb_transfer_batch.h>
    4242#include <usb/host/utils/malloc32.h>
     43#include <usb/host/utility.h>
    4344
    4445#include "hw_struct/link_pointer.h"
    4546#include "transfer_list.h"
     47#include "hc.h"
    4648
    4749/** Initialize transfer list structures.
     
    155157}
    156158
     159/**
     160 * Reset toggle on endpoint callback.
     161 */
     162static void uhci_reset_toggle(endpoint_t *ep)
     163{
     164        uhci_endpoint_t *uhci_ep = (uhci_endpoint_t *) ep;
     165        uhci_ep->toggle = 0;
     166}
     167
    157168/** Add completed batches to the provided list.
    158169 *
     
    176187                        fibril_mutex_lock(&batch->base.ep->guard);
    177188                        assert(batch->base.ep->active_batch == &batch->base);
     189                        hc_reset_toggles(&batch->base, &uhci_reset_toggle);
    178190                        endpoint_deactivate_locked(batch->base.ep);
    179191                        transfer_list_remove_batch(instance, batch);
  • uspace/drv/bus/usb/uhci/uhci_batch.c

    r69b2dfee rc6f82e5  
    4646
    4747#include "uhci_batch.h"
     48#include "hc.h"
    4849#include "hw_struct/transfer_descriptor.h"
    4950
     
    164165        batch->transfered_size = 0;
    165166
     167        uhci_endpoint_t *uhci_ep = (uhci_endpoint_t *) batch->ep;
     168
    166169        for (size_t i = 0;i < uhci_batch->td_count; ++i) {
    167170                if (td_is_active(&uhci_batch->tds[i])) {
     
    178181                        td_print_status(&uhci_batch->tds[i]);
    179182
    180                         batch->ep->toggle = td_toggle(&uhci_batch->tds[i]);
     183                        uhci_ep->toggle = td_toggle(&uhci_batch->tds[i]);
    181184                        goto substract_ret;
    182185                }
     
    230233        const size_t mps = uhci_batch->base.ep->max_packet_size;
    231234
    232         int toggle = uhci_batch->base.ep->toggle;
     235        uhci_endpoint_t *uhci_ep = (uhci_endpoint_t *) uhci_batch->base.ep;
     236
     237        int toggle = uhci_ep->toggle;
    233238        assert(toggle == 0 || toggle == 1);
    234239
     
    254259        }
    255260        td_set_ioc(&uhci_batch->tds[td - 1]);
    256         uhci_batch->base.ep->toggle = toggle;
     261        uhci_ep->toggle = toggle;
    257262        usb_log_debug2(
    258263            "Batch %p %s %s " USB_TRANSFER_BATCH_FMT " initialized.", \
Note: See TracChangeset for help on using the changeset viewer.