Loading drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c +2 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include "msm.h" #include "msm_buf_mgr.h" #include "cam_smmu_api.h" #include "msm_isp_util.h" #undef CDBG #define CDBG(fmt, args...) pr_debug(fmt, ##args) Loading Loading @@ -737,6 +738,7 @@ static int msm_isp_update_put_buf_cnt(struct msm_isp_buf_mgr *buf_mgr, if (-ENOTEMPTY == rc) { pr_err("%s: Error! Uncleared put_buf_mask for pingpong(%d) from vfe %d bufq 0x%x buf_idx %d\n", __func__, pingpong_bit, id, bufq_handle, buf_index); msm_isp_dump_ping_pong_mismatch(); rc = -EFAULT; } spin_unlock_irqrestore(&bufq->bufq_lock, flags); Loading drivers/media/platform/msm/camera_v2/isp/msm_isp.h +3 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,8 @@ struct msm_isp_timestamp { }; struct msm_vfe_irq_ops { void (*read_irq_status_and_clear)(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1); void (*read_irq_status)(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1); void (*process_reg_update)(struct vfe_device *vfe_dev, Loading Loading @@ -182,6 +184,7 @@ struct msm_vfe_axi_ops { struct msm_vfe_axi_stream *stream_info); void (*clear_wm_irq_mask)(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info); void (*clear_irq_mask)(struct vfe_device *vfe_dev); void (*cfg_wm_reg)(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info, Loading drivers/media/platform/msm/camera_v2/isp/msm_isp32.c +17 −1 Original line number Diff line number Diff line Loading @@ -567,7 +567,7 @@ static void msm_vfe32_process_error_status(struct vfe_device *vfe_dev) pr_err("%s: axi error\n", __func__); } static void msm_vfe32_read_irq_status(struct vfe_device *vfe_dev, static void msm_vfe32_read_irq_status_and_clear(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); Loading @@ -585,6 +585,13 @@ static void msm_vfe32_read_irq_status(struct vfe_device *vfe_dev, msm_camera_io_r(vfe_dev->vfe_base + 0x7B4); } static void msm_vfe32_read_irq_status(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); *irq_status1 = msm_camera_io_r(vfe_dev->vfe_base + 0x30); } static void msm_vfe32_process_reg_update(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, struct msm_isp_timestamp *ts) Loading Loading @@ -741,6 +748,11 @@ static void msm_vfe32_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, msm_camera_io_w(irq_mask, vfe_dev->vfe_base + 0x1C); } static void msm_vfe32_axi_clear_irq_mask(struct vfe_device *vfe_dev) { msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x1C); } static void msm_vfe32_cfg_framedrop(void __iomem *vfe_base, struct msm_vfe_axi_stream *stream_info, uint32_t framedrop_pattern, uint32_t framedrop_period) Loading Loading @@ -1467,6 +1479,8 @@ struct msm_vfe_hardware_info vfe32_hw_info = { .vfe_ops = { .irq_ops = { .read_irq_status = msm_vfe32_read_irq_status, .read_irq_status_and_clear = msm_vfe32_read_irq_status_and_clear, .process_camif_irq = msm_vfe32_process_camif_irq, .process_reset_irq = msm_vfe32_process_reset_irq, .process_halt_irq = msm_vfe32_process_halt_irq, Loading @@ -1483,6 +1497,8 @@ struct msm_vfe_hardware_info vfe32_hw_info = { .clear_comp_mask = msm_vfe32_axi_clear_comp_mask, .cfg_wm_irq_mask = msm_vfe32_axi_cfg_wm_irq_mask, .clear_wm_irq_mask = msm_vfe32_axi_clear_wm_irq_mask, .clear_irq_mask = msm_vfe32_axi_clear_irq_mask, .cfg_framedrop = msm_vfe32_cfg_framedrop, .clear_framedrop = msm_vfe32_clear_framedrop, .cfg_wm_reg = msm_vfe32_axi_cfg_wm_reg, Loading drivers/media/platform/msm/camera_v2/isp/msm_isp40.c +18 −1 Original line number Diff line number Diff line Loading @@ -552,7 +552,7 @@ static void msm_vfe40_process_error_status(struct vfe_device *vfe_dev) msm_isp_update_last_overflow_ab_ib(vfe_dev); } static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev, static void msm_vfe40_read_irq_status_and_clear(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38); Loading Loading @@ -585,6 +585,13 @@ static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev, } static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38); *irq_status1 = msm_camera_io_r(vfe_dev->vfe_base + 0x3C); } static void msm_vfe40_process_reg_update(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, struct msm_isp_timestamp *ts) Loading Loading @@ -831,6 +838,12 @@ static void msm_vfe40_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, MSM_ISP_IRQ_DISABLE); } static void msm_vfe40_axi_clear_irq_mask(struct vfe_device *vfe_dev) { msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x2C); } static void msm_vfe40_cfg_framedrop(void __iomem *vfe_base, struct msm_vfe_axi_stream *stream_info, uint32_t framedrop_pattern, uint32_t framedrop_period) Loading Loading @@ -2250,6 +2263,8 @@ struct msm_vfe_hardware_info vfe40_hw_info = { .vfe_ops = { .irq_ops = { .read_irq_status = msm_vfe40_read_irq_status, .read_irq_status_and_clear = msm_vfe40_read_irq_status_and_clear, .process_camif_irq = msm_vfe40_process_input_irq, .process_reset_irq = msm_vfe40_process_reset_irq, .process_halt_irq = msm_vfe40_process_halt_irq, Loading @@ -2268,6 +2283,8 @@ struct msm_vfe_hardware_info vfe40_hw_info = { .clear_comp_mask = msm_vfe40_axi_clear_comp_mask, .cfg_wm_irq_mask = msm_vfe40_axi_cfg_wm_irq_mask, .clear_wm_irq_mask = msm_vfe40_axi_clear_wm_irq_mask, .clear_irq_mask = msm_vfe40_axi_clear_irq_mask, .cfg_framedrop = msm_vfe40_cfg_framedrop, .clear_framedrop = msm_vfe40_clear_framedrop, .cfg_wm_reg = msm_vfe40_axi_cfg_wm_reg, Loading drivers/media/platform/msm/camera_v2/isp/msm_isp44.c +18 −1 Original line number Diff line number Diff line Loading @@ -387,7 +387,7 @@ static void msm_vfe44_process_error_status(struct vfe_device *vfe_dev) } } static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev, static void msm_vfe44_read_irq_status_and_clear(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38); Loading Loading @@ -415,6 +415,13 @@ static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev, } static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38); *irq_status1 = msm_camera_io_r(vfe_dev->vfe_base + 0x3C); } static void msm_vfe44_process_reg_update(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, struct msm_isp_timestamp *ts) Loading Loading @@ -666,6 +673,12 @@ static void msm_vfe44_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, MSM_ISP_IRQ_DISABLE); } static void msm_vfe44_axi_clear_irq_mask(struct vfe_device *vfe_dev) { msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x2C); } static void msm_vfe44_cfg_framedrop(void __iomem *vfe_base, struct msm_vfe_axi_stream *stream_info, uint32_t framedrop_pattern, uint32_t framedrop_period) Loading Loading @@ -1823,6 +1836,8 @@ struct msm_vfe_hardware_info vfe44_hw_info = { .vfe_ops = { .irq_ops = { .read_irq_status = msm_vfe44_read_irq_status, .read_irq_status_and_clear = msm_vfe44_read_irq_status_and_clear, .process_camif_irq = msm_vfe44_process_input_irq, .process_reset_irq = msm_vfe44_process_reset_irq, .process_halt_irq = msm_vfe44_process_halt_irq, Loading @@ -1841,6 +1856,8 @@ struct msm_vfe_hardware_info vfe44_hw_info = { .clear_comp_mask = msm_vfe44_axi_clear_comp_mask, .cfg_wm_irq_mask = msm_vfe44_axi_cfg_wm_irq_mask, .clear_wm_irq_mask = msm_vfe44_axi_clear_wm_irq_mask, .clear_irq_mask = msm_vfe44_axi_clear_irq_mask, .cfg_framedrop = msm_vfe44_cfg_framedrop, .clear_framedrop = msm_vfe44_clear_framedrop, .cfg_wm_reg = msm_vfe44_axi_cfg_wm_reg, Loading Loading
drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c +2 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include "msm.h" #include "msm_buf_mgr.h" #include "cam_smmu_api.h" #include "msm_isp_util.h" #undef CDBG #define CDBG(fmt, args...) pr_debug(fmt, ##args) Loading Loading @@ -737,6 +738,7 @@ static int msm_isp_update_put_buf_cnt(struct msm_isp_buf_mgr *buf_mgr, if (-ENOTEMPTY == rc) { pr_err("%s: Error! Uncleared put_buf_mask for pingpong(%d) from vfe %d bufq 0x%x buf_idx %d\n", __func__, pingpong_bit, id, bufq_handle, buf_index); msm_isp_dump_ping_pong_mismatch(); rc = -EFAULT; } spin_unlock_irqrestore(&bufq->bufq_lock, flags); Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp.h +3 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,8 @@ struct msm_isp_timestamp { }; struct msm_vfe_irq_ops { void (*read_irq_status_and_clear)(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1); void (*read_irq_status)(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1); void (*process_reg_update)(struct vfe_device *vfe_dev, Loading Loading @@ -182,6 +184,7 @@ struct msm_vfe_axi_ops { struct msm_vfe_axi_stream *stream_info); void (*clear_wm_irq_mask)(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info); void (*clear_irq_mask)(struct vfe_device *vfe_dev); void (*cfg_wm_reg)(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info, Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp32.c +17 −1 Original line number Diff line number Diff line Loading @@ -567,7 +567,7 @@ static void msm_vfe32_process_error_status(struct vfe_device *vfe_dev) pr_err("%s: axi error\n", __func__); } static void msm_vfe32_read_irq_status(struct vfe_device *vfe_dev, static void msm_vfe32_read_irq_status_and_clear(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); Loading @@ -585,6 +585,13 @@ static void msm_vfe32_read_irq_status(struct vfe_device *vfe_dev, msm_camera_io_r(vfe_dev->vfe_base + 0x7B4); } static void msm_vfe32_read_irq_status(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); *irq_status1 = msm_camera_io_r(vfe_dev->vfe_base + 0x30); } static void msm_vfe32_process_reg_update(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, struct msm_isp_timestamp *ts) Loading Loading @@ -741,6 +748,11 @@ static void msm_vfe32_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, msm_camera_io_w(irq_mask, vfe_dev->vfe_base + 0x1C); } static void msm_vfe32_axi_clear_irq_mask(struct vfe_device *vfe_dev) { msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x1C); } static void msm_vfe32_cfg_framedrop(void __iomem *vfe_base, struct msm_vfe_axi_stream *stream_info, uint32_t framedrop_pattern, uint32_t framedrop_period) Loading Loading @@ -1467,6 +1479,8 @@ struct msm_vfe_hardware_info vfe32_hw_info = { .vfe_ops = { .irq_ops = { .read_irq_status = msm_vfe32_read_irq_status, .read_irq_status_and_clear = msm_vfe32_read_irq_status_and_clear, .process_camif_irq = msm_vfe32_process_camif_irq, .process_reset_irq = msm_vfe32_process_reset_irq, .process_halt_irq = msm_vfe32_process_halt_irq, Loading @@ -1483,6 +1497,8 @@ struct msm_vfe_hardware_info vfe32_hw_info = { .clear_comp_mask = msm_vfe32_axi_clear_comp_mask, .cfg_wm_irq_mask = msm_vfe32_axi_cfg_wm_irq_mask, .clear_wm_irq_mask = msm_vfe32_axi_clear_wm_irq_mask, .clear_irq_mask = msm_vfe32_axi_clear_irq_mask, .cfg_framedrop = msm_vfe32_cfg_framedrop, .clear_framedrop = msm_vfe32_clear_framedrop, .cfg_wm_reg = msm_vfe32_axi_cfg_wm_reg, Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp40.c +18 −1 Original line number Diff line number Diff line Loading @@ -552,7 +552,7 @@ static void msm_vfe40_process_error_status(struct vfe_device *vfe_dev) msm_isp_update_last_overflow_ab_ib(vfe_dev); } static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev, static void msm_vfe40_read_irq_status_and_clear(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38); Loading Loading @@ -585,6 +585,13 @@ static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev, } static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38); *irq_status1 = msm_camera_io_r(vfe_dev->vfe_base + 0x3C); } static void msm_vfe40_process_reg_update(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, struct msm_isp_timestamp *ts) Loading Loading @@ -831,6 +838,12 @@ static void msm_vfe40_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, MSM_ISP_IRQ_DISABLE); } static void msm_vfe40_axi_clear_irq_mask(struct vfe_device *vfe_dev) { msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x2C); } static void msm_vfe40_cfg_framedrop(void __iomem *vfe_base, struct msm_vfe_axi_stream *stream_info, uint32_t framedrop_pattern, uint32_t framedrop_period) Loading Loading @@ -2250,6 +2263,8 @@ struct msm_vfe_hardware_info vfe40_hw_info = { .vfe_ops = { .irq_ops = { .read_irq_status = msm_vfe40_read_irq_status, .read_irq_status_and_clear = msm_vfe40_read_irq_status_and_clear, .process_camif_irq = msm_vfe40_process_input_irq, .process_reset_irq = msm_vfe40_process_reset_irq, .process_halt_irq = msm_vfe40_process_halt_irq, Loading @@ -2268,6 +2283,8 @@ struct msm_vfe_hardware_info vfe40_hw_info = { .clear_comp_mask = msm_vfe40_axi_clear_comp_mask, .cfg_wm_irq_mask = msm_vfe40_axi_cfg_wm_irq_mask, .clear_wm_irq_mask = msm_vfe40_axi_clear_wm_irq_mask, .clear_irq_mask = msm_vfe40_axi_clear_irq_mask, .cfg_framedrop = msm_vfe40_cfg_framedrop, .clear_framedrop = msm_vfe40_clear_framedrop, .cfg_wm_reg = msm_vfe40_axi_cfg_wm_reg, Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp44.c +18 −1 Original line number Diff line number Diff line Loading @@ -387,7 +387,7 @@ static void msm_vfe44_process_error_status(struct vfe_device *vfe_dev) } } static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev, static void msm_vfe44_read_irq_status_and_clear(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38); Loading Loading @@ -415,6 +415,13 @@ static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev, } static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev, uint32_t *irq_status0, uint32_t *irq_status1) { *irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38); *irq_status1 = msm_camera_io_r(vfe_dev->vfe_base + 0x3C); } static void msm_vfe44_process_reg_update(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, struct msm_isp_timestamp *ts) Loading Loading @@ -666,6 +673,12 @@ static void msm_vfe44_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, MSM_ISP_IRQ_DISABLE); } static void msm_vfe44_axi_clear_irq_mask(struct vfe_device *vfe_dev) { msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x2C); } static void msm_vfe44_cfg_framedrop(void __iomem *vfe_base, struct msm_vfe_axi_stream *stream_info, uint32_t framedrop_pattern, uint32_t framedrop_period) Loading Loading @@ -1823,6 +1836,8 @@ struct msm_vfe_hardware_info vfe44_hw_info = { .vfe_ops = { .irq_ops = { .read_irq_status = msm_vfe44_read_irq_status, .read_irq_status_and_clear = msm_vfe44_read_irq_status_and_clear, .process_camif_irq = msm_vfe44_process_input_irq, .process_reset_irq = msm_vfe44_process_reset_irq, .process_halt_irq = msm_vfe44_process_halt_irq, Loading @@ -1841,6 +1856,8 @@ struct msm_vfe_hardware_info vfe44_hw_info = { .clear_comp_mask = msm_vfe44_axi_clear_comp_mask, .cfg_wm_irq_mask = msm_vfe44_axi_cfg_wm_irq_mask, .clear_wm_irq_mask = msm_vfe44_axi_clear_wm_irq_mask, .clear_irq_mask = msm_vfe44_axi_clear_irq_mask, .cfg_framedrop = msm_vfe44_cfg_framedrop, .clear_framedrop = msm_vfe44_clear_framedrop, .cfg_wm_reg = msm_vfe44_axi_cfg_wm_reg, Loading