Ignore:
File:
1 edited

Legend:

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

    r77ad86c r8b54fe6  
    3333 *
    3434 */
    35 
    3635#ifndef LIBUSBHOST_HOST_HCD_H
    3736#define LIBUSBHOST_HOST_HCD_H
    3837
    3938#include <assert.h>
    40 #include <usbhc_iface.h>
    41 
    4239#include <usb/host/usb_device_manager.h>
    4340#include <usb/host/usb_endpoint_manager.h>
    4441#include <usb/host/usb_transfer_batch.h>
     42#include <usbhc_iface.h>
    4543
    4644typedef struct hcd hcd_t;
    4745
    48 /** Generic host controller driver structure. */
    4946struct hcd {
    50         /** Device manager storing handles and addresses. */
    5147        usb_device_manager_t dev_manager;
    52         /** Endpoint manager. */
    5348        usb_endpoint_manager_t ep_manager;
     49        void *private_data;
    5450
    55         /** Device specific driver data. */
    56         void *private_data;
    57         /** Transfer scheduling, implement in device driver. */
    5851        int (*schedule)(hcd_t *, usb_transfer_batch_t *);
    59         /** Hook called upon registering new endpoint. */
    6052        int (*ep_add_hook)(hcd_t *, endpoint_t *);
    61         /** Hook called upon removing of an endpoint. */
    62         void (*ep_remove_hook)(hcd_t *, endpoint_t *);
    6353};
    64 
    65 /** Initialize hcd_t structure.
    66  * Initializes device and endpoint managers. Sets data and hook pointer to NULL.
    67  * @param hcd hcd_t structure to initialize, non-null.
    68  * @param bandwidth Available bandwidth, passed to endpoint manager.
    69  * @param bw_count Bandwidth compute function, passed to endpoint manager.
    70  */
    71 static inline void hcd_init(hcd_t *hcd, usb_speed_t max_speed, size_t bandwidth,
     54/*----------------------------------------------------------------------------*/
     55static inline int hcd_init(hcd_t *hcd, size_t bandwidth,
    7256    size_t (*bw_count)(usb_speed_t, usb_transfer_type_t, size_t, size_t))
    7357{
    7458        assert(hcd);
    75         usb_device_manager_init(&hcd->dev_manager, max_speed);
    76         usb_endpoint_manager_init(&hcd->ep_manager, bandwidth, bw_count);
    77         hcd->private_data = NULL;
    78         hcd->schedule = NULL;
    79         hcd->ep_add_hook = NULL;
    80         hcd->ep_remove_hook = NULL;
     59        usb_device_manager_init(&hcd->dev_manager);
     60        return usb_endpoint_manager_init(&hcd->ep_manager, bandwidth, bw_count);
    8161}
    82 
    83 /** Check registered endpoints and reset toggle bit if necessary.
    84  * @param hcd hcd_t structure, non-null.
    85  * @param target Control communication target.
    86  * @param setup_data Setup packet of the control communication.
    87  */
    88 static inline void reset_ep_if_need(hcd_t *hcd, usb_target_t target,
    89     const char setup_data[8])
     62/*----------------------------------------------------------------------------*/
     63static inline void hcd_destroy(hcd_t *hcd)
     64{
     65        usb_endpoint_manager_destroy(&hcd->ep_manager);
     66}
     67/*----------------------------------------------------------------------------*/
     68static inline void reset_ep_if_need(
     69    hcd_t *hcd, usb_target_t target, const char* setup_data)
    9070{
    9171        assert(hcd);
    92         usb_endpoint_manager_reset_eps_if_need(
     72        usb_endpoint_manager_reset_if_need(
    9373            &hcd->ep_manager, target, (const uint8_t *)setup_data);
    9474}
    95 
    96 /** Data retrieve wrapper.
    97  * @param fun ddf function, non-null.
    98  * @return pointer cast to hcd_t*.
    99  */
    100 static inline hcd_t * fun_to_hcd(const ddf_fun_t *fun)
     75/*----------------------------------------------------------------------------*/
     76static inline hcd_t * fun_to_hcd(ddf_fun_t *fun)
    10177{
    10278        assert(fun);
    10379        return fun->driver_data;
    10480}
    105 
     81/*----------------------------------------------------------------------------*/
    10682extern usbhc_iface_t hcd_iface;
    10783
    10884#endif
    109 
    11085/**
    11186 * @}
Note: See TracChangeset for help on using the changeset viewer.