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: Andy Walls <awalls@radix.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
83c3a3c8b6
commit
0ef0289264
@@ -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 */
|
|||||||
|
|
||||||
|
|
||||||
#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,
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
||||||
|
Reference in New Issue
Block a user