Ignore:
Timestamp:
2018-01-06T21:15:48Z (6 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
56257ba
Parents:
c901632
Message:

usb: move endpoint descriptor parsing to HC

This better separates responsibilities. Now the device driver does not
care about the contents of an endpoint descriptor, and HC can parse the
values according to device's actual speed.

Currently, it is device driver's responsibility to fetch endpoint
descriptors, map them and register pipes - sending the endpoint
descriptor back to HC. HC then parses it, and fills the pipe
description, which then sends back to device driver. We shall probably
fetch the endpoint descriptor from inside the HC (also fixing the USB
spec violation of communication with EP0).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbhost/include/usb/host/endpoint.h

    rc901632 r9efad54  
    4646#include <usb/usb.h>
    4747#include <usb/host/bus.h>
     48#include <usbhc_iface.h>
    4849
    4950typedef struct bus bus_t;
     
    5960        /** Reference count. */
    6061        atomic_t refcnt;
    61         /** Enpoint number */
    62         usb_endpoint_t endpoint;
    63         /** Communication direction. */
    64         usb_direction_t direction;
    65         /** USB transfer type. */
    66         usb_transfer_type_t transfer_type;
    67         /** Maximum size of data packets. */
    68         size_t max_packet_size;
    69         /** Additional opportunities per uframe */
    70         unsigned packets;
    7162        /** Reserved bandwidth. */
    7263        size_t bandwidth;
     
    8071        fibril_condvar_t avail;
    8172
     73        /** Enpoint number */
     74        usb_endpoint_t endpoint;
     75        /** Communication direction. */
     76        usb_direction_t direction;
     77        /** USB transfer type. */
     78        usb_transfer_type_t transfer_type;
     79        /** Maximum size of one packet */
     80        size_t max_packet_size;
     81
     82        /** Maximum size of one transfer */
     83        size_t max_transfer_size;
     84        /** Number of packats that can be sent in one service interval (not necessarily uframe) */
     85        unsigned packets_per_uframe;
     86
    8287        /* This structure is meant to be extended by overriding. */
    8388} endpoint_t;
    8489
    85 extern void endpoint_init(endpoint_t *, device_t *, const usb_endpoint_desc_t *);
     90extern void endpoint_init(endpoint_t *, device_t *, const usb_endpoint_descriptors_t *);
    8691
    8792extern void endpoint_add_ref(endpoint_t *);
Note: See TracChangeset for help on using the changeset viewer.