最終更新:2014-06-09 (月) 17:59:14 (3624d)
usb_ep_ops
Top / usb_ep_ops
endpoint-specific parts of the api to the usb controller hardware.
- unlike the urb model, (de)multiplexing layers are not required.
- (so this api could slash overhead if used on the host side...)
- note that device side usb controllers commonly differ in how many endpoints they support, as well as their capabilities.
struct usb_ep_ops { int (*enable) (struct usb_ep *ep, const struct usb_endpoint_descriptor *desc); int (*disable) (struct usb_ep *ep); struct usb_request *(*alloc_request) (struct usb_ep *ep, gfp_t gfp_flags); void (*free_request) (struct usb_ep *ep, struct usb_request *req); int (*queue) (struct usb_ep *ep, struct usb_request *req, gfp_t gfp_flags); int (*dequeue) (struct usb_ep *ep, struct usb_request *req); int (*set_halt) (struct usb_ep *ep, int value); int (*set_wedge) (struct usb_ep *ep); int (*fifo_status) (struct usb_ep *ep); void (*fifo_flush) (struct usb_ep *ep); };
メンバ
usb_ep_ops.enable?
- provides the necessary infrastructure to configure an endpoint by upper class driver layers.
- This is required when a configuration is set or interfaces are changed and requires successful setting up of endpoint for transfers.
usb_ep_ops.disable?
usb_ep_ops.alloc_request?
- provides the necessary infrastructure to allocate memory and returns a usb_request object.
- The implementation is specific to a USB controller.
usb_ep_ops.free_request?
usb_ep_ops.queue
- provides the necessary infrastructure to transfer data through the device controller and queue the USB transfer requests.
- After successful completion or cancellation of the data transfer, the call- back triggers the completion routine.
usb_ep_ops.dequeue?
usb_ep_ops.set_halt?
- provides the necessary infrastructure to halt a particular endpoint when there is a transaction error.
usb_ep_ops.set_wedge?
usb_ep_ops.fifo_status?
- provides the necessary infrastructure for the class driver to query the status of hardware first in, first out (FIFO) for any garbage or unhandled bytes.
usb_ep_ops.fifo_flush?
- provides the necessary infrastructure for the class driver to clear any garbage or unhandled bytes in the FIFO.
使われどころ
Chipidea
- usb_ep_ops
- usb_ep_ops.enable? = ep_enable?,
- usb_ep_ops.disable? = ep_disable?,
- usb_ep_ops.alloc_request? = ep_alloc_request?,
- usb_ep_ops.free_request? = ep_free_request?,
- usb_ep_ops.queue = ep_queue,
- usb_ep_ops.dequeue? = ep_dequeue?,
- usb_ep_ops.set_halt? = ep_set_halt?,
- usb_ep_ops.set_wedge? = ep_set_wedge?,
- usb_ep_ops.fifo_flush? = ep_fifo_flush?,
MUSB
- musb_g_ep0_ops?
- usb_ep_ops.enable? = musb_g_ep0_enable?,
- usb_ep_ops.disable? = musb_g_ep0_disable?,
- usb_ep_ops.alloc_request? = musb_alloc_request?,
- usb_ep_ops.free_request? = musb_free_request?,
- usb_ep_ops.queue = musb_g_ep0_queue?,
- usb_ep_ops.dequeue? = musb_g_ep0_dequeue?,
- usb_ep_ops.set_halt? = musb_g_ep0_halt?,
- musb_ep_ops?
- usb_ep_ops.enable? = musb_gadget_enable?,
- usb_ep_ops.disable? = musb_gadget_disable?,
- usb_ep_ops.alloc_request? = musb_alloc_request?,
- usb_ep_ops.free_request? = musb_free_request?,
- usb_ep_ops.queue = musb_gadget_queue?,
- usb_ep_ops.dequeue? = musb_gadget_dequeue?,
- usb_ep_ops.set_halt? = musb_gadget_set_halt?,
- usb_ep_ops.set_wedge? = musb_gadget_set_wedge?,
- usb_ep_ops.fifo_status? = musb_gadget_fifo_status?,
- usb_ep_ops.fifo_flush? = musb_gadget_fifo_flush?
DWC3
- dwc3_gadget_ep0_ops?
- usb_ep_ops.enable? = dwc3_gadget_ep0_enable?,
- usb_ep_ops.disable? = dwc3_gadget_ep0_disable?,
- usb_ep_ops.alloc_request? = dwc3_gadget_ep_alloc_request?,
- usb_ep_ops.free_request? = dwc3_gadget_ep_free_request?,
- usb_ep_ops.queue = dwc3_gadget_ep0_queue,
- usb_ep_ops.dequeue? = dwc3_gadget_ep_dequeue?,
- usb_ep_ops.set_halt? = dwc3_gadget_ep0_set_halt?,
- usb_ep_ops.set_wedge? = dwc3_gadget_ep_set_wedge?,
- dwc3_gadget_ep_ops?
- usb_ep_ops.enable? = dwc3_gadget_ep_enable?,
- usb_ep_ops.disable? = dwc3_gadget_ep_disable?,
- usb_ep_ops.alloc_request? = dwc3_gadget_ep_alloc_request?,
- usb_ep_ops.free_request? = dwc3_gadget_ep_free_request?,
- usb_ep_ops.queue = dwc3_gadget_ep_queue,
- usb_ep_ops.dequeue? = dwc3_gadget_ep_dequeue?,
- usb_ep_ops.set_halt? = dwc3_gadget_ep_set_halt?,
- usb_ep_ops.set_wedge? = dwc3_gadget_ep_set_wedge?,