media: ddbridge: fix output buffer check
authorDaniel Scheller <d.scheller@gmx.net>
Mon, 9 Apr 2018 16:47:44 +0000 (12:47 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Fri, 4 May 2018 14:39:59 +0000 (10:39 -0400)
A 188 byte gap has to be left between the writer and the consumer. This
requires 2*188 bytes available to be able to write to the output buffers.
So, change ddb_output_free() to report free bytes according to this rule.

Picked up from the upstream dddvb-0.9.33 release.

Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/pci/ddbridge/ddbridge-core.c

index 7e57f5864df3c61e61567fc34fbbc1a06ba16469..216a9a3feceff8a574c8cc5583fc3b6339c6ba42 100644 (file)
@@ -572,12 +572,12 @@ static u32 ddb_output_free(struct ddb_output *output)
 
        if (output->dma->cbuf != idx) {
                if ((((output->dma->cbuf + 1) % output->dma->num) == idx) &&
-                   (output->dma->size - output->dma->coff <= 188))
+                   (output->dma->size - output->dma->coff <= (2 * 188)))
                        return 0;
                return 188;
        }
        diff = off - output->dma->coff;
-       if (diff <= 0 || diff > 188)
+       if (diff <= 0 || diff > (2 * 188))
                return 188;
        return 0;
 }