Commit 1d509915 authored by Dafna Hirschfeld's avatar Dafna Hirschfeld Committed by Mauro Carvalho Chehab

media: staging: rkisp1: use the right variants of spin_lock

When locking, use either 'spin_lock' or 'spin_lock_irq'
according to the context. There is nowhere need to
use 'spin_lock_irqsave'.
Outside of irq context, always use 'spin_lock_irq'
to be on the safe side.
Signed-off-by: default avatarDafna Hirschfeld <dafna.hirschfeld@collabora.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 816b07b6
...@@ -668,9 +668,8 @@ static void rkisp1_handle_buffer(struct rkisp1_capture *cap) ...@@ -668,9 +668,8 @@ static void rkisp1_handle_buffer(struct rkisp1_capture *cap)
{ {
struct rkisp1_isp *isp = &cap->rkisp1->isp; struct rkisp1_isp *isp = &cap->rkisp1->isp;
struct rkisp1_buffer *curr_buf; struct rkisp1_buffer *curr_buf;
unsigned long flags;
spin_lock_irqsave(&cap->buf.lock, flags); spin_lock(&cap->buf.lock);
curr_buf = cap->buf.curr; curr_buf = cap->buf.curr;
if (curr_buf) { if (curr_buf) {
...@@ -683,7 +682,7 @@ static void rkisp1_handle_buffer(struct rkisp1_capture *cap) ...@@ -683,7 +682,7 @@ static void rkisp1_handle_buffer(struct rkisp1_capture *cap)
} }
rkisp1_set_next_buf(cap); rkisp1_set_next_buf(cap);
spin_unlock_irqrestore(&cap->buf.lock, flags); spin_unlock(&cap->buf.lock);
} }
void rkisp1_capture_isr(struct rkisp1_device *rkisp1) void rkisp1_capture_isr(struct rkisp1_device *rkisp1)
...@@ -758,7 +757,6 @@ static void rkisp1_vb2_buf_queue(struct vb2_buffer *vb) ...@@ -758,7 +757,6 @@ static void rkisp1_vb2_buf_queue(struct vb2_buffer *vb)
container_of(vbuf, struct rkisp1_buffer, vb); container_of(vbuf, struct rkisp1_buffer, vb);
struct rkisp1_capture *cap = vb->vb2_queue->drv_priv; struct rkisp1_capture *cap = vb->vb2_queue->drv_priv;
const struct v4l2_pix_format_mplane *pixm = &cap->pix.fmt; const struct v4l2_pix_format_mplane *pixm = &cap->pix.fmt;
unsigned long flags;
unsigned int i; unsigned int i;
memset(ispbuf->buff_addr, 0, sizeof(ispbuf->buff_addr)); memset(ispbuf->buff_addr, 0, sizeof(ispbuf->buff_addr));
...@@ -783,9 +781,9 @@ static void rkisp1_vb2_buf_queue(struct vb2_buffer *vb) ...@@ -783,9 +781,9 @@ static void rkisp1_vb2_buf_queue(struct vb2_buffer *vb)
swap(ispbuf->buff_addr[RKISP1_PLANE_CR], swap(ispbuf->buff_addr[RKISP1_PLANE_CR],
ispbuf->buff_addr[RKISP1_PLANE_CB]); ispbuf->buff_addr[RKISP1_PLANE_CB]);
spin_lock_irqsave(&cap->buf.lock, flags); spin_lock_irq(&cap->buf.lock);
list_add_tail(&ispbuf->queue, &cap->buf.queue); list_add_tail(&ispbuf->queue, &cap->buf.queue);
spin_unlock_irqrestore(&cap->buf.lock, flags); spin_unlock_irq(&cap->buf.lock);
} }
static int rkisp1_vb2_buf_prepare(struct vb2_buffer *vb) static int rkisp1_vb2_buf_prepare(struct vb2_buffer *vb)
...@@ -811,10 +809,9 @@ static int rkisp1_vb2_buf_prepare(struct vb2_buffer *vb) ...@@ -811,10 +809,9 @@ static int rkisp1_vb2_buf_prepare(struct vb2_buffer *vb)
static void rkisp1_return_all_buffers(struct rkisp1_capture *cap, static void rkisp1_return_all_buffers(struct rkisp1_capture *cap,
enum vb2_buffer_state state) enum vb2_buffer_state state)
{ {
unsigned long flags;
struct rkisp1_buffer *buf; struct rkisp1_buffer *buf;
spin_lock_irqsave(&cap->buf.lock, flags); spin_lock_irq(&cap->buf.lock);
if (cap->buf.curr) { if (cap->buf.curr) {
vb2_buffer_done(&cap->buf.curr->vb.vb2_buf, state); vb2_buffer_done(&cap->buf.curr->vb.vb2_buf, state);
cap->buf.curr = NULL; cap->buf.curr = NULL;
...@@ -829,7 +826,7 @@ static void rkisp1_return_all_buffers(struct rkisp1_capture *cap, ...@@ -829,7 +826,7 @@ static void rkisp1_return_all_buffers(struct rkisp1_capture *cap,
list_del(&buf->queue); list_del(&buf->queue);
vb2_buffer_done(&buf->vb.vb2_buf, state); vb2_buffer_done(&buf->vb.vb2_buf, state);
} }
spin_unlock_irqrestore(&cap->buf.lock, flags); spin_unlock_irq(&cap->buf.lock);
} }
/* /*
......
...@@ -1300,16 +1300,15 @@ static void rkisp1_params_config_parameter(struct rkisp1_params *params) ...@@ -1300,16 +1300,15 @@ static void rkisp1_params_config_parameter(struct rkisp1_params *params)
else else
rkisp1_csm_config(params, false); rkisp1_csm_config(params, false);
spin_lock(&params->config_lock); spin_lock_irq(&params->config_lock);
/* apply the first buffer if there is one already */ /* apply the first buffer if there is one already */
if (params->is_streaming) if (params->is_streaming)
rkisp1_params_apply_params_cfg(params, 0); rkisp1_params_apply_params_cfg(params, 0);
spin_unlock(&params->config_lock); spin_unlock_irq(&params->config_lock);
} }
/* Not called when the camera active, thus not isr protection. */
void rkisp1_params_configure(struct rkisp1_params *params, void rkisp1_params_configure(struct rkisp1_params *params,
enum rkisp1_fmt_raw_pat_type bayer_pat, enum rkisp1_fmt_raw_pat_type bayer_pat,
enum v4l2_quantization quantization) enum v4l2_quantization quantization)
...@@ -1442,12 +1441,11 @@ static void rkisp1_params_vb2_buf_queue(struct vb2_buffer *vb) ...@@ -1442,12 +1441,11 @@ static void rkisp1_params_vb2_buf_queue(struct vb2_buffer *vb)
container_of(vbuf, struct rkisp1_buffer, vb); container_of(vbuf, struct rkisp1_buffer, vb);
struct vb2_queue *vq = vb->vb2_queue; struct vb2_queue *vq = vb->vb2_queue;
struct rkisp1_params *params = vq->drv_priv; struct rkisp1_params *params = vq->drv_priv;
unsigned long flags;
params_buf->vaddr = vb2_plane_vaddr(vb, 0); params_buf->vaddr = vb2_plane_vaddr(vb, 0);
spin_lock_irqsave(&params->config_lock, flags); spin_lock_irq(&params->config_lock);
list_add_tail(&params_buf->queue, &params->params); list_add_tail(&params_buf->queue, &params->params);
spin_unlock_irqrestore(&params->config_lock, flags); spin_unlock_irq(&params->config_lock);
} }
static int rkisp1_params_vb2_buf_prepare(struct vb2_buffer *vb) static int rkisp1_params_vb2_buf_prepare(struct vb2_buffer *vb)
...@@ -1465,7 +1463,6 @@ static void rkisp1_params_vb2_stop_streaming(struct vb2_queue *vq) ...@@ -1465,7 +1463,6 @@ static void rkisp1_params_vb2_stop_streaming(struct vb2_queue *vq)
struct rkisp1_params *params = vq->drv_priv; struct rkisp1_params *params = vq->drv_priv;
struct rkisp1_buffer *buf; struct rkisp1_buffer *buf;
struct list_head tmp_list; struct list_head tmp_list;
unsigned long flags;
INIT_LIST_HEAD(&tmp_list); INIT_LIST_HEAD(&tmp_list);
...@@ -1474,10 +1471,10 @@ static void rkisp1_params_vb2_stop_streaming(struct vb2_queue *vq) ...@@ -1474,10 +1471,10 @@ static void rkisp1_params_vb2_stop_streaming(struct vb2_queue *vq)
* and then we can iterate it and call vb2_buffer_done * and then we can iterate it and call vb2_buffer_done
* without holding the lock * without holding the lock
*/ */
spin_lock_irqsave(&params->config_lock, flags); spin_lock_irq(&params->config_lock);
params->is_streaming = false; params->is_streaming = false;
list_cut_position(&tmp_list, &params->params, params->params.prev); list_cut_position(&tmp_list, &params->params, params->params.prev);
spin_unlock_irqrestore(&params->config_lock, flags); spin_unlock_irq(&params->config_lock);
list_for_each_entry(buf, &tmp_list, queue) list_for_each_entry(buf, &tmp_list, queue)
vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR); vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
...@@ -1487,11 +1484,10 @@ static int ...@@ -1487,11 +1484,10 @@ static int
rkisp1_params_vb2_start_streaming(struct vb2_queue *queue, unsigned int count) rkisp1_params_vb2_start_streaming(struct vb2_queue *queue, unsigned int count)
{ {
struct rkisp1_params *params = queue->drv_priv; struct rkisp1_params *params = queue->drv_priv;
unsigned long flags;
spin_lock_irqsave(&params->config_lock, flags); spin_lock_irq(&params->config_lock);
params->is_streaming = true; params->is_streaming = true;
spin_unlock_irqrestore(&params->config_lock, flags); spin_unlock_irq(&params->config_lock);
return 0; return 0;
} }
......
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