Commit 0ef02892 authored by Andy Walls's avatar Andy Walls Committed by Mauro Carvalho Chehab

V4L/DVB (9891): cx18 Replace magic number 63 with CX18_MAX_FW_MDLS_PER_STREAM

Removed magic number that referred to firmware limit on the number of
MDLs the firmware can maintain for any stream at any one time.
Signed-off-by: default avatarAndy Walls <awalls@radix.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 83c3a3c8
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
#define CX18_DEFAULT_ENC_PCM_BUFFERS 1 #define CX18_DEFAULT_ENC_PCM_BUFFERS 1
/* Maximum firmware DMA buffers per stream */ /* Maximum firmware DMA buffers per stream */
#define CX18_MAX_MDLS_PER_STREAM 63 #define CX18_MAX_FW_MDLS_PER_STREAM 63
/* DMA buffer, default size in kB allocated */ /* DMA buffer, default size in kB allocated */
#define CX18_DEFAULT_ENC_TS_BUFSIZE 32 #define CX18_DEFAULT_ENC_TS_BUFSIZE 32
...@@ -255,7 +255,8 @@ struct cx18_scb; /* forward reference */ ...@@ -255,7 +255,8 @@ struct cx18_scb; /* forward reference */
#define CX18_MAX_MDL_ACKS 2 #define CX18_MAX_MDL_ACKS 2
#define CX18_MAX_EPU_WORK_ORDERS 70 /* CPU_DE_RELEASE_MDL bursts 63 commands */ #define CX18_MAX_EPU_WORK_ORDERS (CX18_MAX_FW_MDLS_PER_STREAM + 7)
/* CPU_DE_RELEASE_MDL can burst CX18_MAX_FW_MDLS_PER_STREAM orders in a group */
#define CX18_F_EWO_MB_STALE_UPON_RECEIPT 0x1 #define CX18_F_EWO_MB_STALE_UPON_RECEIPT 0x1
#define CX18_F_EWO_MB_STALE_WHILE_PROC 0x2 #define CX18_F_EWO_MB_STALE_WHILE_PROC 0x2
......
...@@ -55,8 +55,9 @@ struct cx18_queue *_cx18_enqueue(struct cx18_stream *s, struct cx18_buffer *buf, ...@@ -55,8 +55,9 @@ struct cx18_queue *_cx18_enqueue(struct cx18_stream *s, struct cx18_buffer *buf,
mutex_lock(&s->qlock); mutex_lock(&s->qlock);
/* q_busy is restricted to 63 buffers to stay within firmware limits */ /* q_busy is restricted to a max buffer count imposed by firmware */
if (q == &s->q_busy && atomic_read(&q->buffers) >= 63) if (q == &s->q_busy &&
atomic_read(&q->buffers) >= CX18_MAX_FW_MDLS_PER_STREAM)
q = &s->q_free; q = &s->q_free;
if (to_front) if (to_front)
......
...@@ -425,7 +425,7 @@ void cx18_stream_load_fw_queue(struct cx18_stream *s) ...@@ -425,7 +425,7 @@ void cx18_stream_load_fw_queue(struct cx18_stream *s)
struct cx18_buffer *buf; struct cx18_buffer *buf;
if (atomic_read(&s->q_free.buffers) == 0 || if (atomic_read(&s->q_free.buffers) == 0 ||
atomic_read(&s->q_busy.buffers) >= 63) atomic_read(&s->q_busy.buffers) >= CX18_MAX_FW_MDLS_PER_STREAM)
return; return;
/* Move from q_free to q_busy notifying the firmware, until the limit */ /* Move from q_free to q_busy notifying the firmware, until the limit */
...@@ -434,7 +434,8 @@ void cx18_stream_load_fw_queue(struct cx18_stream *s) ...@@ -434,7 +434,8 @@ void cx18_stream_load_fw_queue(struct cx18_stream *s)
if (buf == NULL) if (buf == NULL)
break; break;
q = cx18_stream_put_buf_fw(s, buf); q = cx18_stream_put_buf_fw(s, buf);
} while (atomic_read(&s->q_busy.buffers) < 63 && q == &s->q_busy); } while (atomic_read(&s->q_busy.buffers) < CX18_MAX_FW_MDLS_PER_STREAM
&& q == &s->q_busy);
} }
int cx18_start_v4l2_encode_stream(struct cx18_stream *s) int cx18_start_v4l2_encode_stream(struct cx18_stream *s)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment