Распечатка 5.8 Структуры данных драйвера периферийного USB устройства

Предыдущая  Содержание  Следующая V*D*V

Распечатка 5.8.

 

struct usb_gadget_driver {

 

  /* Строка, описывающая функции периферийного устройства */

  char *function;

 

  /*

   * Самая высокая скорость, которую поддерживает драйвер.

   * (Одна из USB_SPEED_HIGH, USB_SPEED_FULL, USB_SPEED_LOW)

   */

  enum usb_device_speed speed;

 

  /*

   * Функция подключения устройства, вызываемая из драйвера

   * периферийного устройства во время регистрации

   */

  int (*bind)(struct usb_gadget *);

 

  /*

   * setup вызывается для обработки запросов управления ep0,

   * которые не обрабатываются драйвером контроллера

   */

  int (*setup)(struct usb_gadget *,

               const struct usb_ctrlrequest *);

 

  /* Этого вызов вызывает отключение устройства от хоста */

  void (*disconnect)(struct usb_gadget *);

 

  /* Вызывается после отключения устройства */

  void (*unbind)(struct usb_gadget *);

 

  /* Вызывает приостановку работы USB устройства */

  void (*suspend)(struct usb_gadget *);

 

  /* Вызывает возобновление работы USB устройства */

  void (*resume)(struct usb_gadget *);

}

 

struct usb_ep_ops {

 

  /* Включение или Выключение оконечной точки */

  int (*enable) (struct usb_ep *ep,

               const struct usb_endpoint_descriptor *desc);

  int (*disable) (struct usb_ep *ep);

 

  /* Процедуры выделения и освобождения памяти для URB */

  struct usb_request * (*alloc_request) (struct usb_ep *ep,

                                      int gfp_flags);

  void (*free_request) (struct usb_ep *ep,

                        struct usb_request *req);

  void *(*alloc_buffer)(struct usb_ep *ep, unsigned bytes,

                        dma_addr_t *dma, int gfp_flags);

  void (*free_buffer) (struct usb_ep *ep, void *buf,

                       dma_addr_t dma, unsigned bytes);

 

  /* Функции управления очередью оконечной точки */

  int (*queue) (struct usb_ep *ep, struct usb_request *req,

                int gfp_flags);

  int (*dequeue) (struct usb_ep *ep, struct usb_request *req);

  int (*set_halt) (struct usb_ep *ep, int value);

  int (*fifo_status) (struct usb_ep *ep);

  void (*fifo_flush) (struct usb_ep *ep);

};

 

Предыдущая  Содержание  Следующая