media: staging: rkisp1: cap: move code that manages the buffers to rkisp1_set_next_buf
The function 'rkisp1_set_next_buf' configures the registers according to 'cap->buf.next'. It is called after updating 'cap->buf.next' and 'cap->buf.curr'. This patch moves the code that updates those fields to rkisp1_set_next_buf. This is a preparation for later patch that change a call to 'rkisp1_handle_buffer' with a call to 'rkisp1_set_next_buf'. Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com> Acked-by: Helen Koike <helen.koike@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
454748e3b3
commit
23780e14fe
@@ -575,12 +575,16 @@ static void rkisp1_dummy_buf_destroy(struct rkisp1_capture *cap)
|
||||
|
||||
static void rkisp1_set_next_buf(struct rkisp1_capture *cap)
|
||||
{
|
||||
/*
|
||||
* Use the dummy space allocated by dma_alloc_coherent to
|
||||
* throw data if there is no available buffer.
|
||||
*/
|
||||
if (cap->buf.next) {
|
||||
u32 *buff_addr = cap->buf.next->buff_addr;
|
||||
cap->buf.curr = cap->buf.next;
|
||||
cap->buf.next = NULL;
|
||||
|
||||
if (!list_empty(&cap->buf.queue)) {
|
||||
u32 *buff_addr;
|
||||
|
||||
cap->buf.next = list_first_entry(&cap->buf.queue, struct rkisp1_buffer, queue);
|
||||
list_del(&cap->buf.next->queue);
|
||||
|
||||
buff_addr = cap->buf.next->buff_addr;
|
||||
|
||||
rkisp1_write(cap->rkisp1,
|
||||
buff_addr[RKISP1_PLANE_Y],
|
||||
@@ -592,6 +596,10 @@ static void rkisp1_set_next_buf(struct rkisp1_capture *cap)
|
||||
buff_addr[RKISP1_PLANE_CR],
|
||||
cap->config->mi.cr_base_ad_init);
|
||||
} else {
|
||||
/*
|
||||
* Use the dummy space allocated by dma_alloc_coherent to
|
||||
* throw data if there is no available buffer.
|
||||
*/
|
||||
rkisp1_write(cap->rkisp1,
|
||||
cap->buf.dummy.dma_addr,
|
||||
cap->config->mi.y_base_ad_init);
|
||||
@@ -632,16 +640,6 @@ static void rkisp1_handle_buffer(struct rkisp1_capture *cap)
|
||||
cap->rkisp1->debug.frame_drop[cap->id]++;
|
||||
}
|
||||
|
||||
cap->buf.curr = cap->buf.next;
|
||||
cap->buf.next = NULL;
|
||||
|
||||
if (!list_empty(&cap->buf.queue)) {
|
||||
cap->buf.next = list_first_entry(&cap->buf.queue,
|
||||
struct rkisp1_buffer,
|
||||
queue);
|
||||
list_del(&cap->buf.next->queue);
|
||||
}
|
||||
|
||||
rkisp1_set_next_buf(cap);
|
||||
spin_unlock_irqrestore(&cap->buf.lock, flags);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user