mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
dwc2: gadget: Fix ISOC IN DDMA PID bitfield value calculation
PID bitfield in descriptor should be set based on particular request length, not based on EP's mc value. PID value can't be set to 0 even request length is 0. Signed-off-by: Minas Harutyunyan <hminas@synopsys.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
9bb073a053
commit
1d8e5c0027
@ -812,6 +812,7 @@ static int dwc2_gadget_fill_isoc_desc(struct dwc2_hsotg_ep *hs_ep,
|
||||
u32 index;
|
||||
u32 maxsize = 0;
|
||||
u32 mask = 0;
|
||||
u8 pid = 0;
|
||||
|
||||
maxsize = dwc2_gadget_get_desc_params(hs_ep, &mask);
|
||||
|
||||
@ -840,7 +841,11 @@ static int dwc2_gadget_fill_isoc_desc(struct dwc2_hsotg_ep *hs_ep,
|
||||
((len << DEV_DMA_NBYTES_SHIFT) & mask));
|
||||
|
||||
if (hs_ep->dir_in) {
|
||||
desc->status |= ((hs_ep->mc << DEV_DMA_ISOC_PID_SHIFT) &
|
||||
if (len)
|
||||
pid = DIV_ROUND_UP(len, hs_ep->ep.maxpacket);
|
||||
else
|
||||
pid = 1;
|
||||
desc->status |= ((pid << DEV_DMA_ISOC_PID_SHIFT) &
|
||||
DEV_DMA_ISOC_PID_MASK) |
|
||||
((len % hs_ep->ep.maxpacket) ?
|
||||
DEV_DMA_SHORT : 0) |
|
||||
|
Loading…
Reference in New Issue
Block a user