• Vahram Aharonyan's avatar
    usb: dwc2: gadget: Add DDMA isoc related fields to dwc2_hsotg_ep · ab7d2192
    Vahram Aharonyan authored
    Preparing for isochronous transfers support adding in DDMA mode. In DDMA
    isochronous transfers are handled differently compared to Slave and BDMA
    modes. This is caused by fact that isoc requests contain data for one
    frame/microframe. HW descriptor should contain data of one
    frame/microframe as well. Hence each DMA descriptor in the chain will
    correspond to one usb request.
    
    Decided to divide endpoints descriptor chain to two halves - while one
    will be processed by HW, other one will be under SW control. First part
    will be passed to HW once ISOC traffic needs to be started. In parallel
    to HW's work SW will keep creating new entries in the other half of
    chain if new requests arrive in ep_queue routine. This will allow
    passing of already pre-prepared descriptors to HW immediately after
    endpoint gets disabled. The endpoint should be disabled once HW closes
    descriptor with "L" bit set. Afterwards SW will switch to use first part
    of chain if more requests are arriving.
    
    Add two members to the dwc2_hsotg_ep structure to be used in isochronous
    transfers' handling in DDMA mode:
    
    -isoc_chain_num - indicates which half of EP descriptor chain can be
    		used by SW to add new queued requests while HW is
    		processing other half.
    
    -next_desc - index which points to next not yet programmed descriptor in
    		the half of descriptor chain which is under SW control.
    
    Also add initialization of these fields in function
    dwc2_hsotg_ep_enable().
    Signed-off-by: default avatarVahram Aharonyan <vahrama@synopsys.com>
    Signed-off-by: default avatarJohn Youn <johnyoun@synopsys.com>
    Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
    ab7d2192
core.h 47.8 KB