struct fimc_is_subdev *dma_subdev;
struct fimc_is_framemgr *framemgr;
struct fimc_is_frame *frame;
+ unsigned long flags;
/* dma setting for several virtual ch 1 ~ 3 */
for (vc = CSI_VIRTUAL_CH_1; vc < CSI_VIRTUAL_CH_MAX; vc++) {
if (test_bit((CSIS_SET_MULTIBUF_VC1 + (vc - 1)), &csi->state))
continue;
- framemgr_e_barrier(framemgr, 0);
+ framemgr_e_barrier_irqs(framemgr, 0, flags);
for (i = 0; i < framemgr->num_frames; i++) {
frame = &framemgr->frames[i];
csi_s_multibuf_addr(csi, frame, i, vc);
trans_frame(framemgr, frame, FS_FREE);
}
- framemgr_x_barrier(framemgr, 0);
+ framemgr_x_barrier_irqr(framemgr, 0, flags);
set_bit((CSIS_SET_MULTIBUF_VC1 + (vc - 1)), &csi->state);
}
int cur_dma_enable;
struct fimc_is_framemgr *framemgr;
struct fimc_is_subdev *dma_subdev;
+ unsigned long flags;
/* default disable dma setting for several virtual ch 0 ~ 3 */
for (vc = CSI_VIRTUAL_CH_0; vc < CSI_VIRTUAL_CH_MAX; vc++) {
cur_dma_enable = csi_hw_g_output_cur_dma_enable(csi->vc_reg[csi->scm][vc], vc);
framemgr = GET_SUBDEV_FRAMEMGR(dma_subdev);
- framemgr_e_barrier(framemgr, 0);
+ framemgr_e_barrier_irqs(framemgr, 0, flags);
if (likely(framemgr)) {
/*
* W/A: DMA should be on forcely at invalid frame state.
merr("[VC%d] framemgr is NULL", csi, vc);
}
- framemgr_x_barrier(framemgr, 0);
+ framemgr_x_barrier_irqr(framemgr, 0, flags);
}
}
struct fimc_is_frame *frame;
struct fimc_is_video_ctx *vctx;
u32 findex;
+ unsigned long flags;
device = container_of(csi->subdev, struct fimc_is_device_sensor, subdev_csi);
FIMC_BUG_VOID(!ldr_framemgr);
FIMC_BUG_VOID(!framemgr);
- framemgr_e_barrier(framemgr, 0);
+ framemgr_e_barrier_irqs(framemgr, 0, flags);
frame = peek_frame(framemgr, target);
while (frame) {
frame = peek_frame(framemgr, target);
}
- framemgr_x_barrier(framemgr, 0);
+ framemgr_x_barrier_irqr(framemgr, 0, flags);
}
static void csis_flush_vc_multibuf(struct fimc_is_device_csi *csi, u32 vc)
struct fimc_is_subdev *subdev;
struct fimc_is_framemgr *framemgr;
struct fimc_is_frame *frame;
+ unsigned long flags;
subdev = csi->dma_subdev[vc];
framemgr = GET_SUBDEV_FRAMEMGR(subdev);
if (framemgr) {
- framemgr_e_barrier(framemgr, 0);
+ framemgr_e_barrier_irqs(framemgr, 0, flags);
for (i = 0; i < framemgr->num_frames; i++) {
frame = &framemgr->frames[i];
trans_frame(framemgr, frame, FS_FREE);
}
}
- framemgr_x_barrier(framemgr, 0);
+ framemgr_x_barrier_irqr(framemgr, 0, flags);
}
clear_bit((CSIS_SET_MULTIBUF_VC1 + (vc - 1)), &csi->state);
struct fimc_is_subdev *dma_subdev;
struct v4l2_control ctrl;
u32 frameptr;
+ unsigned long flags;
#if defined(MEASURE_TIME) && defined(MONITOR_TIME)
struct fimc_is_group *group;
#endif
continue;
}
- framemgr_e_barrier(framemgr, 0);
+ framemgr_e_barrier_irqs(framemgr, 0, flags);
if (test_bit(FIMC_IS_SUBDEV_INTERNAL_USE, &dma_subdev->state)) {
ctrl.id = V4L2_CID_IS_G_VC1_FRAMEPTR + (i - 1);
ret = v4l2_subdev_call(device->subdev_csi, core, g_ctrl, &ctrl);
if (ret) {
err("csi_g_ctrl fail");
- framemgr_x_barrier(framemgr, 0);
+ framemgr_x_barrier_irqr(framemgr, 0, flags);
return -EINVAL;
}
frameptr = (ctrl.value + dma_subdev->vc_buffer_offset) % framemgr->num_frames;
i, frameptr, frame->fcount);
}
- framemgr_x_barrier(framemgr, 0);
+ framemgr_x_barrier_irqr(framemgr, 0, flags);
}
return ret;
struct fimc_is_group *group;
struct fimc_is_framemgr *framemgr;
struct fimc_is_video_ctx *vctx;
+ unsigned long flags;
FIMC_BUG(!device);
vctx = group->head->leader.vctx;
- framemgr_e_barrier(framemgr, 0);
+ framemgr_e_barrier_irqs(framemgr, 0, flags);
frame = peek_frame(framemgr, FS_PROCESS);
/*
CALL_VOPS(vctx, done, frame->index, done_state);
}
- framemgr_x_barrier(framemgr, 0);
+ framemgr_x_barrier_irqr(framemgr, 0, flags);
p_err:
return ret;
struct fimc_is_group *group;
struct fimc_is_framemgr *framemgr;
struct fimc_is_frame *frame;
+ unsigned long flags;
FIMC_BUG(!device);
framemgr = GET_SUBDEV_FRAMEMGR(&group->head->leader);
FIMC_BUG(!framemgr);
- framemgr_e_barrier(framemgr, 0);
+ framemgr_e_barrier_irqs(framemgr, 0, flags);
frame = find_frame(framemgr, FS_PROCESS, frame_fcount, (void *)(ulong)device->line_fcount);
- framemgr_x_barrier(framemgr, 0);
+ framemgr_x_barrier_irqr(framemgr, 0, flags);
/* There's no shot */
if (!frame ||