Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/drv/include/usb_iface.h

    r56bdd9a4 r79784ef8  
    3939
    4040#include "ddf/driver.h"
    41 #include <async.h>
    4241#include <usb/usb.h>
     42typedef enum {
     43        /** Tell USB address assigned to device.
     44         * Parameters:
     45         * - devman handle id
     46         * Answer:
     47         * - EINVAL - unknown handle or handle not managed by this driver
     48         * - ENOTSUP - operation not supported (shall not happen)
     49         * - arbitrary error code if returned by remote implementation
     50         * - EOK - handle found, first parameter contains the USB address
     51         *
     52         * The handle must be the one used for binding USB address with
     53         * it (IPC_M_USBHC_BIND_ADDRESS), otherwise the host controller
     54         * (that this request would eventually reach) would not be able
     55         * to find it.
     56         * The problem is that this handle is actually assigned to the
     57         * function inside driver of the parent device (usually hub driver).
     58         * To bypass this problem, the initial caller specify handle as
     59         * zero and the first parent assigns the actual value.
     60         * See usb_iface_get_address_hub_child_impl() implementation
     61         * that could be assigned to device ops of a child device of in a
     62         * hub driver.
     63         * For example, the USB multi interface device driver (MID)
     64         * passes this initial zero without any modification because the
     65         * handle must be resolved by its parent.
     66         */
     67        IPC_M_USB_GET_ADDRESS,
    4368
    44 int usb_get_my_address(async_exch_t *, usb_address_t *);
    45 int usb_get_my_interface(async_exch_t *, int *);
    46 int usb_get_hc_handle(async_exch_t *, devman_handle_t *);
     69        /** Tell interface number given device can use.
     70         * Parameters
     71         * - devman handle id of the device
     72         * Answer:
     73         * - ENOTSUP - operation not supported (can also mean any interface)
     74         * - EOK - operation okay, first parameter contains interface number
     75         */
     76        IPC_M_USB_GET_INTERFACE,
     77
     78        /** Tell devman handle of device host controller.
     79         * Parameters:
     80         * - none
     81         * Answer:
     82         * - EOK - request processed without errors
     83         * - ENOTSUP - this indicates invalid USB driver
     84         * Parameters of the answer:
     85         * - devman handle of HC caller is physically connected to
     86         */
     87        IPC_M_USB_GET_HOST_CONTROLLER_HANDLE
     88} usb_iface_funcs_t;
    4789
    4890/** USB device communication interface. */
    4991typedef struct {
    50         int (*get_my_address)(ddf_fun_t *, usb_address_t *);
    51         int (*get_my_interface)(ddf_fun_t *, int *);
     92        int (*get_address)(ddf_fun_t *, devman_handle_t, usb_address_t *);
     93        int (*get_interface)(ddf_fun_t *, devman_handle_t, int *);
    5294        int (*get_hc_handle)(ddf_fun_t *, devman_handle_t *);
    5395} usb_iface_t;
     96
    5497
    5598#endif
Note: See TracChangeset for help on using the changeset viewer.