Re: [PATCH 1/7] dma: cppi41: handle 0-length packets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I messed up the register names in the commit log. Will fix in v2.

On 05/22/2014 05:30 PM, Daniel Mack wrote:
> When a 0-length packet is received on the bus, desc->pd6 contains 1, and

... 'desc->pd0' ...

> the current residue calculation reports back that 1 byte has been
> transferred. This is not according to what the datasheet says, but it's
> been the case on an AM335x board, very reproducible.
> 
> Fix this by looking at bit 19 in PD2 of the completed packet. This bit
> will tell us if a zero-length packet was received on a queue. If it's
> set, ignore pd2 and report a total length of 0.

... 'ignore pd0' ...

> 
> Signed-off-by: Daniel Mack <zonque@xxxxxxxxx>
> ---
>  drivers/dma/cppi41.c | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/dma/cppi41.c b/drivers/dma/cppi41.c
> index d028f36..8f8b0b6 100644
> --- a/drivers/dma/cppi41.c
> +++ b/drivers/dma/cppi41.c
> @@ -86,6 +86,9 @@
>  
>  #define USBSS_IRQ_PD_COMP	(1 <<  2)
>  
> +/* Packet Descriptor */
> +#define PD2_ZERO_LENGTH		(1 << 19)
> +
>  struct cppi41_channel {
>  	struct dma_chan chan;
>  	struct dma_async_tx_descriptor txd;
> @@ -307,7 +310,7 @@ static irqreturn_t cppi41_irq(int irq, void *data)
>  			__iormb();
>  
>  		while (val) {
> -			u32 desc;
> +			u32 desc, len;
>  
>  			q_num = __fls(val);
>  			val &= ~(1 << q_num);
> @@ -319,9 +322,13 @@ static irqreturn_t cppi41_irq(int irq, void *data)
>  						q_num, desc);
>  				continue;
>  			}
> -			c->residue = pd_trans_len(c->desc->pd6) -
> -				pd_trans_len(c->desc->pd0);
>  
> +			if (c->desc->pd2 & PD2_ZERO_LENGTH)
> +				len = 0;
> +			else
> +				len = pd_trans_len(c->desc->pd0);
> +
> +			c->residue = pd_trans_len(c->desc->pd6) - len;
>  			dma_cookie_complete(&c->txd);
>  			c->txd.callback(c->txd.callback_param);
>  		}
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux