[COMMON] fimc-is2: change normal spin_lock to spin_lock_irqsave
authorDohyun Kim <dh5.kim@samsung.com>
Sun, 24 Mar 2019 10:51:18 +0000 (19:51 +0900)
committerlingsen1 <lingsen1@lenovo.com>
Mon, 10 Jun 2019 03:24:54 +0000 (11:24 +0800)
 PR JIRA ID: CPR-863

CRs-fixed: (CR)

Change-Id: I36667a8cd4c1765745f4e75c221f29397b9127ef
Signed-off-by: Dohyun Kim <dh5.kim@samsung.com>
Reviewed-on: https://gerrit.mot.com/1329485
SLTApproved: Slta Waiver
SME-Granted: SME Approvals Granted
Tested-by: Jira Key
Reviewed-by: Dawei Wang <wangdw10@motorola.com>
Reviewed-by: Zhichao Chen <chenzc2@motorola.com>
Submit-Approved: Jira Key

drivers/media/platform/exynos/fimc-is2/fimc-is-device-csi_v4.c
drivers/media/platform/exynos/fimc-is2/fimc-is-device-sensor_v2.c
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/pafstat/fimc-is-pafstat.c
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/pdp/fimc-is-pdp.c

index d7d0564c97ad3455a9ebdf975b20f773c7c8f3df..1b789c7096c41924ad41b0cdc5f608bb905dd587 100644 (file)
@@ -226,6 +226,7 @@ static void csis_s_vc_dma_multibuf(struct fimc_is_device_csi *csi)
        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++) {
@@ -244,7 +245,7 @@ static void csis_s_vc_dma_multibuf(struct fimc_is_device_csi *csi)
                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);
@@ -252,7 +253,7 @@ static void csis_s_vc_dma_multibuf(struct fimc_is_device_csi *csi)
                        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);
        }
@@ -264,6 +265,7 @@ static void csis_disable_all_vc_dma_buf(struct fimc_is_device_csi *csi)
        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++) {
@@ -282,7 +284,7 @@ static void csis_disable_all_vc_dma_buf(struct fimc_is_device_csi *csi)
                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.
@@ -309,7 +311,7 @@ static void csis_disable_all_vc_dma_buf(struct fimc_is_device_csi *csi)
                        merr("[VC%d] framemgr is NULL", csi, vc);
                }
 
-               framemgr_x_barrier(framemgr, 0);
+               framemgr_x_barrier_irqr(framemgr, 0, flags);
        }
 }
 
@@ -325,6 +327,7 @@ static void csis_flush_vc_buf_done(struct fimc_is_device_csi *csi, u32 vc,
        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);
 
@@ -344,7 +347,7 @@ static void csis_flush_vc_buf_done(struct fimc_is_device_csi *csi, u32 vc,
        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) {
@@ -359,7 +362,7 @@ static void csis_flush_vc_buf_done(struct fimc_is_device_csi *csi, u32 vc,
                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)
@@ -368,6 +371,7 @@ 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];
 
@@ -380,7 +384,7 @@ static void csis_flush_vc_multibuf(struct fimc_is_device_csi *csi, u32 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];
 
@@ -389,7 +393,7 @@ static void csis_flush_vc_multibuf(struct fimc_is_device_csi *csi, u32 vc)
                                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);
index a8e1c752984c695414c1d88da64b76b9e732636b..ae39d9abbcfa99754b630f5228e72570b6769814 100644 (file)
@@ -1038,6 +1038,7 @@ static int fimc_is_sensor_notify_by_fstr(struct fimc_is_device_sensor *device, v
        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
@@ -1090,14 +1091,14 @@ static int fimc_is_sensor_notify_by_fstr(struct fimc_is_device_sensor *device, v
                        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;
@@ -1108,7 +1109,7 @@ static int fimc_is_sensor_notify_by_fstr(struct fimc_is_device_sensor *device, v
                                                i, frameptr, frame->fcount);
                }
 
-               framemgr_x_barrier(framemgr, 0);
+               framemgr_x_barrier_irqr(framemgr, 0, flags);
        }
 
        return ret;
@@ -1124,6 +1125,7 @@ static int fimc_is_sensor_notify_by_fend(struct fimc_is_device_sensor *device, v
        struct fimc_is_group *group;
        struct fimc_is_framemgr *framemgr;
        struct fimc_is_video_ctx *vctx;
+       unsigned long flags;
 
        FIMC_BUG(!device);
 
@@ -1149,7 +1151,7 @@ static int fimc_is_sensor_notify_by_fend(struct fimc_is_device_sensor *device, v
 
        vctx = group->head->leader.vctx;
 
-       framemgr_e_barrier(framemgr, 0);
+       framemgr_e_barrier_irqs(framemgr, 0, flags);
        frame = peek_frame(framemgr, FS_PROCESS);
 
        /*
@@ -1186,7 +1188,7 @@ static int fimc_is_sensor_notify_by_fend(struct fimc_is_device_sensor *device, v
                CALL_VOPS(vctx, done, frame->index, done_state);
        }
 
-       framemgr_x_barrier(framemgr, 0);
+       framemgr_x_barrier_irqr(framemgr, 0, flags);
 
 p_err:
        return ret;
@@ -1242,6 +1244,7 @@ static int fimc_is_sensor_notify_by_line(struct fimc_is_device_sensor *device,
        struct fimc_is_group *group;
        struct fimc_is_framemgr *framemgr;
        struct fimc_is_frame *frame;
+       unsigned long flags;
 
        FIMC_BUG(!device);
 
@@ -1251,9 +1254,9 @@ static int fimc_is_sensor_notify_by_line(struct fimc_is_device_sensor *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 ||
index 3f495dd30ddacd7c6c710702fcf70197ed3b0dfb..d97143c5bda061751ffb716b477f53dede0a164f 100644 (file)
@@ -196,6 +196,7 @@ static void pafstat_tasklet_fwin_stat(unsigned long data)
        struct fimc_is_frame *frame;
        unsigned int frameptr;
        int ch;
+       unsigned long flags;
 
        pafstat = (struct fimc_is_pafstat *)data;
        if (!pafstat) {
@@ -231,7 +232,7 @@ static void pafstat_tasklet_fwin_stat(unsigned long data)
                                continue;
                        }
 
-                       framemgr_e_barrier(framemgr, FMGR_IDX_29);
+                       framemgr_e_barrier_irqs(framemgr, FMGR_IDX_29, flags);
 
                        frameptr = atomic_read(&pafstat->frameptr_fwin_stat) % framemgr->num_frames;
                        frame = &framemgr->frames[frameptr];
@@ -242,7 +243,7 @@ static void pafstat_tasklet_fwin_stat(unsigned long data)
 
                        atomic_inc(&pafstat->frameptr_fwin_stat);
 
-                       framemgr_x_barrier(framemgr, FMGR_IDX_29);
+                       framemgr_x_barrier_irqr(framemgr, FMGR_IDX_29, flags);
                }
        }
 
index 444d092201d9613fc1831b743a0a6066d690e441..226e7cbd84b2e61a63bf46a6e78757e921081c5e 100644 (file)
@@ -74,6 +74,7 @@ static void pdp_tasklet_stat0(unsigned long data)
        struct fimc_is_frame *frame;
        unsigned int frameptr;
        int ch;
+       unsigned long flags;
 
        pdp = (struct fimc_is_pdp *)data;
        if (!pdp) {
@@ -109,7 +110,7 @@ static void pdp_tasklet_stat0(unsigned long data)
                                continue;
                        }
 
-                       framemgr_e_barrier(framemgr, FMGR_IDX_29);
+                       framemgr_e_barrier_irqs(framemgr, FMGR_IDX_29, flags);
 
                        frameptr = atomic_read(&pdp->frameptr_stat0) % framemgr->num_frames;
                        frame = &framemgr->frames[frameptr];
@@ -120,7 +121,7 @@ static void pdp_tasklet_stat0(unsigned long data)
 
                        atomic_inc(&pdp->frameptr_stat0);
 
-                       framemgr_x_barrier(framemgr, FMGR_IDX_29);
+                       framemgr_x_barrier_irqr(framemgr, FMGR_IDX_29, flags);
                }
        }