Loading drivers/media/platform/msm/camera_v2/isp/msm_isp40.c +39 −57 Original line number Diff line number Diff line Loading @@ -101,29 +101,21 @@ static void msm_vfe40_config_irq(struct vfe_device *vfe_dev, uint32_t irq0_mask, uint32_t irq1_mask, enum msm_isp_irq_operation oper) { uint32_t val; switch (oper) { case MSM_ISP_IRQ_ENABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x28); val |= irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x28); val = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); val |= irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask |= irq0_mask; vfe_dev->irq1_mask |= irq1_mask; break; case MSM_ISP_IRQ_DISABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x28); val &= ~irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x28); val = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); val &= ~irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask &= ~irq0_mask; vfe_dev->irq1_mask &= ~irq1_mask; break; case MSM_ISP_IRQ_SET: msm_camera_io_w_mb(irq0_mask, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(irq1_mask, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask = irq0_mask; vfe_dev->irq1_mask = irq1_mask; } msm_camera_io_w_mb(vfe_dev->irq0_mask, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(vfe_dev->irq1_mask, vfe_dev->vfe_base + 0x2C); } static int32_t msm_vfe40_init_qos_parms(struct vfe_device *vfe_dev, Loading Loading @@ -335,10 +327,8 @@ static void msm_vfe40_init_hardware_reg(struct vfe_device *vfe_dev) msm_vfe40_init_vbif_parms(vfe_dev, &vbif_parms); /* BUS_CFG */ msm_camera_io_w(0x10000001, vfe_dev->vfe_base + 0x50); vfe_dev->irq0_mask = 0xE00000F1; vfe_dev->irq1_mask = 0xFEFFFFFF; msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 0x800000E0, 0xFEFFFF7E, MSM_ISP_IRQ_ENABLE); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFEFFFFFF, vfe_dev->vfe_base + 0x34); msm_camera_io_w(1, vfe_dev->vfe_base + 0x24); Loading @@ -346,15 +336,13 @@ static void msm_vfe40_init_hardware_reg(struct vfe_device *vfe_dev) msm_camera_io_w(0, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0, vfe_dev->vfe_base + 0x34); msm_camera_io_w(1, vfe_dev->vfe_base + 0x24); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); } static void msm_vfe40_clear_status_reg(struct vfe_device *vfe_dev) { vfe_dev->irq0_mask = (1 << 31); vfe_dev->irq1_mask = 0; msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, msm_vfe40_config_irq(vfe_dev, (1 << 31), 0, MSM_ISP_IRQ_SET); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x34); Loading Loading @@ -589,7 +577,6 @@ static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev, if (*irq_status1 & (1 << 0)) { vfe_dev->error_info.camif_status = msm_camera_io_r(vfe_dev->vfe_base + 0x31C); vfe_dev->irq1_mask &= ~(1 << 0); msm_vfe40_config_irq(vfe_dev, 0, (1 << 0), MSM_ISP_IRQ_DISABLE); } Loading Loading @@ -812,11 +799,9 @@ static void msm_vfe40_axi_cfg_comp_mask(struct vfe_device *vfe_dev, comp_mask |= (axi_data->composite_info[comp_mask_index]. stream_composite_mask << (comp_mask_index * 8)); vfe_dev->irq0_mask |= 1 << (comp_mask_index + 25); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x40); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 1 << (comp_mask_index + 25), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe40_axi_clear_comp_mask(struct vfe_device *vfe_dev, Loading @@ -828,27 +813,24 @@ static void msm_vfe40_axi_clear_comp_mask(struct vfe_device *vfe_dev, comp_mask = msm_camera_io_r(vfe_dev->vfe_base + 0x40); comp_mask &= ~(0x7F << (comp_mask_index * 8)); vfe_dev->irq0_mask &= ~(1 << (comp_mask_index + 25)); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x40); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, (1 << (comp_mask_index + 25)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe40_axi_cfg_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (stream_info->wm[0] + 8); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 1 << (stream_info->wm[0] + 8), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe40_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (stream_info->wm[0] + 8)); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, (1 << (stream_info->wm[0] + 8)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe40_cfg_framedrop(void __iomem *vfe_base, Loading Loading @@ -1088,10 +1070,8 @@ static void msm_vfe40_cfg_fetch_engine(struct vfe_device *vfe_dev, temp |= (1 << 1); msm_camera_io_w(temp, vfe_dev->vfe_base + 0x50); vfe_dev->irq0_mask &= 0xFEFFFFFF; vfe_dev->irq0_mask |= (1 << 24); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, (1 << 24), 0, MSM_ISP_IRQ_ENABLE); msm_camera_io_w((fe_cfg->fetch_height - 1), vfe_dev->vfe_base + 0x238); Loading Loading @@ -1382,13 +1362,11 @@ static void msm_vfe40_update_camif_state(struct vfe_device *vfe_dev, return; if (update_state == ENABLE_CAMIF) { msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x34); msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0x81, vfe_dev->vfe_base + 0x34); msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x24); vfe_dev->irq0_mask |= 0xF7; msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 0xF7, 0x81, MSM_ISP_IRQ_ENABLE); msm_camera_io_w_mb(0x140000, vfe_dev->vfe_base + 0x318); bus_en = Loading @@ -1413,8 +1391,8 @@ static void msm_vfe40_update_camif_state(struct vfe_device *vfe_dev, if (vfe_dev->axi_data.src_info[VFE_PIX_0].input_mux == TESTGEN) update_state = DISABLE_CAMIF; msm_vfe40_config_irq(vfe_dev, 0, 0, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 0, 0x81, MSM_ISP_IRQ_DISABLE); val = msm_camera_io_r(vfe_dev->vfe_base + 0x464); /* disable danger signal */ msm_camera_io_w_mb(val & ~(1 << 8), vfe_dev->vfe_base + 0x464); Loading Loading @@ -1897,6 +1875,9 @@ static void msm_vfe40_stats_cfg_comp_mask(struct vfe_device *vfe_dev, comp_mask_reg |= mask_bf_scale << (16 + request_comp_index * 8); atomic_set(stats_comp_mask, stats_mask | atomic_read(stats_comp_mask)); msm_vfe40_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_ENABLE); } else { if (!(atomic_read(stats_comp_mask) & stats_mask)) return; Loading @@ -1904,6 +1885,9 @@ static void msm_vfe40_stats_cfg_comp_mask(struct vfe_device *vfe_dev, ~stats_mask & atomic_read(stats_comp_mask)); comp_mask_reg &= ~(mask_bf_scale << (16 + request_comp_index * 8)); msm_vfe40_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_DISABLE); } msm_camera_io_w(comp_mask_reg, vfe_dev->vfe_base + 0x44); Loading @@ -1919,20 +1903,18 @@ static void msm_vfe40_stats_cfg_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (STATS_IDX(stream_info->stream_handle) + 16); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 1 << (STATS_IDX(stream_info->stream_handle) + 16), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe40_stats_clear_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (STATS_IDX(stream_info->stream_handle) + 16)); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, (1 << (STATS_IDX(stream_info->stream_handle) + 16)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe40_stats_cfg_wm_reg( Loading drivers/media/platform/msm/camera_v2/isp/msm_isp44.c +38 −54 Original line number Diff line number Diff line Loading @@ -70,30 +70,22 @@ static void msm_vfe44_config_irq(struct vfe_device *vfe_dev, uint32_t irq0_mask, uint32_t irq1_mask, enum msm_isp_irq_operation oper) { uint32_t val; switch (oper) { case MSM_ISP_IRQ_ENABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x28); val |= irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x28); val = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); val |= irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask |= irq0_mask; vfe_dev->irq1_mask |= irq1_mask; break; case MSM_ISP_IRQ_DISABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x28); val &= ~irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x28); val = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); val &= ~irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask &= ~irq0_mask; vfe_dev->irq1_mask &= ~irq1_mask; break; case MSM_ISP_IRQ_SET: msm_camera_io_w_mb(irq0_mask, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(irq1_mask, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask = irq0_mask; vfe_dev->irq1_mask = irq1_mask; break; } msm_camera_io_w_mb(irq0_mask, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(irq1_mask, vfe_dev->vfe_base + 0x2C); } static int32_t msm_vfe44_init_dt_parms(struct vfe_device *vfe_dev, Loading Loading @@ -181,10 +173,8 @@ static void msm_vfe44_init_hardware_reg(struct vfe_device *vfe_dev) /* BUS_CFG */ msm_camera_io_w(0x10000001, vfe_dev->vfe_base + 0x50); vfe_dev->irq0_mask = 0xE00000F1; vfe_dev->irq1_mask = 0xFFFFFFFF; msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 0x800000E0, 0xFFFFFF7E, MSM_ISP_IRQ_ENABLE); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x34); msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x24); Loading @@ -193,9 +183,7 @@ static void msm_vfe44_init_hardware_reg(struct vfe_device *vfe_dev) static void msm_vfe44_clear_status_reg(struct vfe_device *vfe_dev) { vfe_dev->irq0_mask = 0x80000000; vfe_dev->irq1_mask = 0; msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, msm_vfe44_config_irq(vfe_dev, 0x80000000, 0, MSM_ISP_IRQ_SET); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x34); Loading Loading @@ -419,7 +407,6 @@ static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev, if (*irq_status1 & (1 << 0)) { vfe_dev->error_info.camif_status = msm_camera_io_r(vfe_dev->vfe_base + 0x31C); vfe_dev->irq1_mask &= ~(1 << 0); msm_vfe44_config_irq(vfe_dev, 0, (1 << 0), MSM_ISP_IRQ_DISABLE); } Loading Loading @@ -650,9 +637,8 @@ static void msm_vfe44_axi_cfg_comp_mask(struct vfe_device *vfe_dev, stream_composite_mask << (comp_mask_index * 8)); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x40); vfe_dev->irq0_mask |= 1 << (comp_mask_index + 25); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 1 << (comp_mask_index + 25), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe44_axi_clear_comp_mask(struct vfe_device *vfe_dev, Loading @@ -664,25 +650,22 @@ static void msm_vfe44_axi_clear_comp_mask(struct vfe_device *vfe_dev, comp_mask &= ~(0x7F << (comp_mask_index * 8)); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x40); vfe_dev->irq0_mask &= ~(1 << (comp_mask_index + 25)); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, (1 << (comp_mask_index + 25)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe44_axi_cfg_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (stream_info->wm[0] + 8); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 1 << (stream_info->wm[0] + 8), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe44_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (stream_info->wm[0] + 8)); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, (1 << (stream_info->wm[0] + 8)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe44_cfg_framedrop(void __iomem *vfe_base, Loading Loading @@ -918,10 +901,8 @@ static void msm_vfe44_cfg_fetch_engine(struct vfe_device *vfe_dev, temp |= (1 << 1); msm_camera_io_w(temp, vfe_dev->vfe_base + 0x50); vfe_dev->irq0_mask &= 0xFEFFFFFF; vfe_dev->irq0_mask |= (1 << 24); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, (1 << 24), 0, MSM_ISP_IRQ_SET); msm_camera_io_w((fe_cfg->fetch_height - 1) & 0xFFF, vfe_dev->vfe_base + 0x238); Loading Loading @@ -1045,13 +1026,12 @@ static void msm_vfe44_update_camif_state(struct vfe_device *vfe_dev, return; if (update_state == ENABLE_CAMIF) { msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x34); msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0x81, vfe_dev->vfe_base + 0x34); msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x24); vfe_dev->irq0_mask |= 0xF7; msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 0xF7, 0x81, MSM_ISP_IRQ_ENABLE); msm_camera_io_w_mb(0x140000, vfe_dev->vfe_base + 0x318); bus_en = Loading @@ -1075,7 +1055,7 @@ static void msm_vfe44_update_camif_state(struct vfe_device *vfe_dev, if (vfe_dev->axi_data.src_info[VFE_PIX_0].input_mux == TESTGEN) update_state = DISABLE_CAMIF; msm_vfe44_config_irq(vfe_dev, 0, 0, MSM_ISP_IRQ_SET); 0x81, MSM_ISP_IRQ_DISABLE); val = msm_camera_io_r(vfe_dev->vfe_base + 0xC18); /* disable danger signal */ msm_camera_io_w_mb(val & ~(1 << 8), vfe_dev->vfe_base + 0xC18); Loading Loading @@ -1526,6 +1506,9 @@ static void msm_vfe44_stats_cfg_comp_mask( comp_mask_reg |= mask_bf_scale << (16 + request_comp_index * 8); atomic_set(stats_comp_mask, stats_mask | atomic_read(stats_comp_mask)); msm_vfe44_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_ENABLE); } else { if (!(atomic_read(stats_comp_mask) & stats_mask)) return; Loading @@ -1540,6 +1523,9 @@ static void msm_vfe44_stats_cfg_comp_mask( ~stats_mask & atomic_read(stats_comp_mask)); comp_mask_reg &= ~(mask_bf_scale << (16 + request_comp_index * 8)); msm_vfe44_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_DISABLE); } msm_camera_io_w(comp_mask_reg, vfe_dev->vfe_base + 0x44); Loading @@ -1555,20 +1541,18 @@ static void msm_vfe44_stats_cfg_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (STATS_IDX(stream_info->stream_handle) + 15); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 1 << (STATS_IDX(stream_info->stream_handle) + 15), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe44_stats_clear_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (STATS_IDX(stream_info->stream_handle) + 15)); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, (1 << (STATS_IDX(stream_info->stream_handle) + 15)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe44_stats_cfg_wm_reg( Loading drivers/media/platform/msm/camera_v2/isp/msm_isp46.c +43 −52 Original line number Diff line number Diff line Loading @@ -92,30 +92,24 @@ static void msm_vfe46_config_irq(struct vfe_device *vfe_dev, uint32_t irq0_mask, uint32_t irq1_mask, enum msm_isp_irq_operation oper) { uint32_t val; switch (oper) { case MSM_ISP_IRQ_ENABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x5C); val |= irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x5C); val = msm_camera_io_r(vfe_dev->vfe_base + 0x60); val |= irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x60); vfe_dev->irq0_mask |= irq0_mask; vfe_dev->irq1_mask |= irq1_mask; break; case MSM_ISP_IRQ_DISABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x5C); val &= ~irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x5C); val = msm_camera_io_r(vfe_dev->vfe_base + 0x60); val &= ~irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x60); vfe_dev->irq0_mask &= ~irq0_mask; vfe_dev->irq1_mask &= ~irq1_mask; break; case MSM_ISP_IRQ_SET: msm_camera_io_w_mb(irq0_mask, vfe_dev->vfe_base + 0x5C); msm_camera_io_w_mb(irq1_mask, vfe_dev->vfe_base + 0x60); vfe_dev->irq0_mask = irq0_mask; vfe_dev->irq1_mask = irq1_mask; break; } msm_camera_io_w_mb(vfe_dev->irq0_mask, vfe_dev->vfe_base + 0x5C); msm_camera_io_w_mb(vfe_dev->irq1_mask, vfe_dev->vfe_base + 0x60); } static int32_t msm_vfe46_init_dt_parms(struct vfe_device *vfe_dev, Loading Loading @@ -208,20 +202,16 @@ static void msm_vfe46_init_hardware_reg(struct vfe_device *vfe_dev) /* BUS_CFG */ msm_camera_io_w(0x00000001, vfe_dev->vfe_base + 0x84); /* IRQ_MASK/CLEAR */ vfe_dev->irq0_mask = 0xE00000F1; vfe_dev->irq1_mask = 0xE1FFFFFF; msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 0x810000E0, 0xFFFFFF7E, MSM_ISP_IRQ_ENABLE); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x64); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x68); msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x58); } static void msm_vfe46_clear_status_reg(struct vfe_device *vfe_dev) { vfe_dev->irq0_mask = 0x80000000; vfe_dev->irq1_mask = 0x0; msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 0x80000000, 0, MSM_ISP_IRQ_SET); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x64); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x68); msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x58); Loading Loading @@ -355,7 +345,6 @@ static void msm_vfe46_read_irq_status(struct vfe_device *vfe_dev, if (*irq_status1 & (1 << 0)) { vfe_dev->error_info.camif_status = msm_camera_io_r(vfe_dev->vfe_base + 0x3D0); vfe_dev->irq1_mask &= ~(1 << 0); msm_vfe46_config_irq(vfe_dev, 0, (1 << 0), MSM_ISP_IRQ_DISABLE); } Loading Loading @@ -587,9 +576,8 @@ static void msm_vfe46_axi_cfg_comp_mask(struct vfe_device *vfe_dev, stream_composite_mask << (comp_mask_index * 8)); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x74); vfe_dev->irq0_mask |= 1 << (comp_mask_index + 25); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << (comp_mask_index + 25), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe46_axi_clear_comp_mask(struct vfe_device *vfe_dev, Loading @@ -601,25 +589,22 @@ static void msm_vfe46_axi_clear_comp_mask(struct vfe_device *vfe_dev, comp_mask &= ~(0x7F << (comp_mask_index * 8)); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x74); vfe_dev->irq0_mask |= 1 << (comp_mask_index + 25); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << (comp_mask_index + 25), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe46_axi_cfg_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (stream_info->wm[0] + 8); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << (stream_info->wm[0] + 8), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe46_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (stream_info->wm[0] + 8)); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, (1 << (stream_info->wm[0] + 8)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe46_cfg_framedrop(void __iomem *vfe_base, Loading Loading @@ -857,10 +842,8 @@ static void msm_vfe46_cfg_fetch_engine(struct vfe_device *vfe_dev, temp |= (1 << 1); msm_camera_io_w(temp, vfe_dev->vfe_base + 0x84); vfe_dev->irq0_mask &= 0xFEFFFFFF; vfe_dev->irq0_mask |= (1 << 24); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << 24, 0, MSM_ISP_IRQ_ENABLE); temp = fe_cfg->fetch_height - 1; msm_camera_io_w(temp & 0x3FFF, vfe_dev->vfe_base + 0x278); Loading Loading @@ -1120,9 +1103,11 @@ static void msm_vfe46_update_camif_state(struct vfe_device *vfe_dev, return; if (update_state == ENABLE_CAMIF) { vfe_dev->irq0_mask |= 0xF5; msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x64); msm_camera_io_w(0x81, vfe_dev->vfe_base + 0x68); msm_camera_io_w(0x1, vfe_dev->vfe_base + 0x58); msm_vfe46_config_irq(vfe_dev, 0x15, 0x81, MSM_ISP_IRQ_ENABLE); bus_en = ((vfe_dev->axi_data. Loading @@ -1148,7 +1133,8 @@ static void msm_vfe46_update_camif_state(struct vfe_device *vfe_dev, if (vfe_dev->axi_data.src_info[VFE_PIX_0].input_mux == TESTGEN) update_state = DISABLE_CAMIF; msm_vfe46_config_irq(vfe_dev, 0, 0, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 0, 0x81, MSM_ISP_IRQ_DISABLE); /* disable danger signal */ val = msm_camera_io_r(vfe_dev->vfe_base + 0xC18); val &= ~(1 << 8); Loading Loading @@ -1611,6 +1597,9 @@ static void msm_vfe46_stats_cfg_comp_mask( comp_mask_reg |= mask_bf_scale << (16 + request_comp_index * 8); atomic_set(stats_comp_mask, stats_mask | atomic_read(stats_comp_mask)); msm_vfe46_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_ENABLE); } else { if (!(atomic_read(stats_comp_mask) & stats_mask)) return; Loading @@ -1625,6 +1614,9 @@ static void msm_vfe46_stats_cfg_comp_mask( ~stats_mask & atomic_read(stats_comp_mask)); comp_mask_reg &= ~(mask_bf_scale << (16 + request_comp_index * 8)); msm_vfe46_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_DISABLE); } msm_camera_io_w(comp_mask_reg, vfe_dev->vfe_base + 0x78); Loading @@ -1640,19 +1632,18 @@ static void msm_vfe46_stats_cfg_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (STATS_IDX(stream_info->stream_handle) + 15); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << (STATS_IDX(stream_info->stream_handle) + 15), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe46_stats_clear_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (STATS_IDX(stream_info->stream_handle) + 15)); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << (STATS_IDX(stream_info->stream_handle) + 15), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe46_stats_cfg_wm_reg( Loading drivers/media/platform/msm/camera_v2/isp/msm_isp47.c +56 −79 File changed.Preview size limit exceeded, changes collapsed. Show changes drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c +16 −14 Original line number Diff line number Diff line Loading @@ -1188,15 +1188,9 @@ int msm_isp_request_axi_stream(struct vfe_device *vfe_dev, void *arg) vfe_dev->vt_enable = stream_cfg_cmd->vt_enable; msm_isp_start_avtimer(); } if (stream_info->num_planes > 1) { if (stream_info->num_planes > 1) msm_isp_axi_reserve_comp_mask( &vfe_dev->axi_data, stream_info); vfe_dev->hw_info->vfe_ops.axi_ops. cfg_comp_mask(vfe_dev, stream_info); } else { vfe_dev->hw_info->vfe_ops.axi_ops. cfg_wm_irq_mask(vfe_dev, stream_info); } for (i = 0; i < stream_info->num_planes; i++) { vfe_dev->hw_info->vfe_ops.axi_ops. Loading Loading @@ -1252,14 +1246,8 @@ int msm_isp_release_axi_stream(struct vfe_device *vfe_dev, void *arg) clear_wm_xbar_reg(vfe_dev, stream_info, i); } if (stream_info->num_planes > 1) { vfe_dev->hw_info->vfe_ops.axi_ops. clear_comp_mask(vfe_dev, stream_info); if (stream_info->num_planes > 1) msm_isp_axi_free_comp_mask(&vfe_dev->axi_data, stream_info); } else { vfe_dev->hw_info->vfe_ops.axi_ops. clear_wm_irq_mask(vfe_dev, stream_info); } vfe_dev->hw_info->vfe_ops.axi_ops.clear_framedrop(vfe_dev, stream_info); msm_isp_axi_free_wm(axi_data, stream_info); Loading Loading @@ -2617,6 +2605,13 @@ static int msm_isp_start_axi_stream(struct vfe_device *vfe_dev, return rc; } spin_unlock_irqrestore(&stream_info->lock, flags); if (stream_info->num_planes > 1) { vfe_dev->hw_info->vfe_ops.axi_ops. cfg_comp_mask(vfe_dev, stream_info); } else { vfe_dev->hw_info->vfe_ops.axi_ops. cfg_wm_irq_mask(vfe_dev, stream_info); } stream_info->state = START_PENDING; Loading Loading @@ -2733,6 +2728,13 @@ static int msm_isp_stop_axi_stream(struct vfe_device *vfe_dev, spin_unlock_irqrestore(&stream_info->lock, flags); wait_for_complete_for_this_stream = 0; if (stream_info->num_planes > 1) vfe_dev->hw_info->vfe_ops.axi_ops. clear_comp_mask(vfe_dev, stream_info); else vfe_dev->hw_info->vfe_ops.axi_ops. clear_wm_irq_mask(vfe_dev, stream_info); stream_info->state = STOP_PENDING; if (!halt && !ext_read && Loading Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp40.c +39 −57 Original line number Diff line number Diff line Loading @@ -101,29 +101,21 @@ static void msm_vfe40_config_irq(struct vfe_device *vfe_dev, uint32_t irq0_mask, uint32_t irq1_mask, enum msm_isp_irq_operation oper) { uint32_t val; switch (oper) { case MSM_ISP_IRQ_ENABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x28); val |= irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x28); val = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); val |= irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask |= irq0_mask; vfe_dev->irq1_mask |= irq1_mask; break; case MSM_ISP_IRQ_DISABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x28); val &= ~irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x28); val = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); val &= ~irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask &= ~irq0_mask; vfe_dev->irq1_mask &= ~irq1_mask; break; case MSM_ISP_IRQ_SET: msm_camera_io_w_mb(irq0_mask, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(irq1_mask, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask = irq0_mask; vfe_dev->irq1_mask = irq1_mask; } msm_camera_io_w_mb(vfe_dev->irq0_mask, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(vfe_dev->irq1_mask, vfe_dev->vfe_base + 0x2C); } static int32_t msm_vfe40_init_qos_parms(struct vfe_device *vfe_dev, Loading Loading @@ -335,10 +327,8 @@ static void msm_vfe40_init_hardware_reg(struct vfe_device *vfe_dev) msm_vfe40_init_vbif_parms(vfe_dev, &vbif_parms); /* BUS_CFG */ msm_camera_io_w(0x10000001, vfe_dev->vfe_base + 0x50); vfe_dev->irq0_mask = 0xE00000F1; vfe_dev->irq1_mask = 0xFEFFFFFF; msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 0x800000E0, 0xFEFFFF7E, MSM_ISP_IRQ_ENABLE); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFEFFFFFF, vfe_dev->vfe_base + 0x34); msm_camera_io_w(1, vfe_dev->vfe_base + 0x24); Loading @@ -346,15 +336,13 @@ static void msm_vfe40_init_hardware_reg(struct vfe_device *vfe_dev) msm_camera_io_w(0, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0, vfe_dev->vfe_base + 0x34); msm_camera_io_w(1, vfe_dev->vfe_base + 0x24); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); } static void msm_vfe40_clear_status_reg(struct vfe_device *vfe_dev) { vfe_dev->irq0_mask = (1 << 31); vfe_dev->irq1_mask = 0; msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, msm_vfe40_config_irq(vfe_dev, (1 << 31), 0, MSM_ISP_IRQ_SET); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x34); Loading Loading @@ -589,7 +577,6 @@ static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev, if (*irq_status1 & (1 << 0)) { vfe_dev->error_info.camif_status = msm_camera_io_r(vfe_dev->vfe_base + 0x31C); vfe_dev->irq1_mask &= ~(1 << 0); msm_vfe40_config_irq(vfe_dev, 0, (1 << 0), MSM_ISP_IRQ_DISABLE); } Loading Loading @@ -812,11 +799,9 @@ static void msm_vfe40_axi_cfg_comp_mask(struct vfe_device *vfe_dev, comp_mask |= (axi_data->composite_info[comp_mask_index]. stream_composite_mask << (comp_mask_index * 8)); vfe_dev->irq0_mask |= 1 << (comp_mask_index + 25); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x40); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 1 << (comp_mask_index + 25), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe40_axi_clear_comp_mask(struct vfe_device *vfe_dev, Loading @@ -828,27 +813,24 @@ static void msm_vfe40_axi_clear_comp_mask(struct vfe_device *vfe_dev, comp_mask = msm_camera_io_r(vfe_dev->vfe_base + 0x40); comp_mask &= ~(0x7F << (comp_mask_index * 8)); vfe_dev->irq0_mask &= ~(1 << (comp_mask_index + 25)); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x40); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, (1 << (comp_mask_index + 25)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe40_axi_cfg_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (stream_info->wm[0] + 8); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 1 << (stream_info->wm[0] + 8), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe40_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (stream_info->wm[0] + 8)); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, (1 << (stream_info->wm[0] + 8)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe40_cfg_framedrop(void __iomem *vfe_base, Loading Loading @@ -1088,10 +1070,8 @@ static void msm_vfe40_cfg_fetch_engine(struct vfe_device *vfe_dev, temp |= (1 << 1); msm_camera_io_w(temp, vfe_dev->vfe_base + 0x50); vfe_dev->irq0_mask &= 0xFEFFFFFF; vfe_dev->irq0_mask |= (1 << 24); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, (1 << 24), 0, MSM_ISP_IRQ_ENABLE); msm_camera_io_w((fe_cfg->fetch_height - 1), vfe_dev->vfe_base + 0x238); Loading Loading @@ -1382,13 +1362,11 @@ static void msm_vfe40_update_camif_state(struct vfe_device *vfe_dev, return; if (update_state == ENABLE_CAMIF) { msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x34); msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0x81, vfe_dev->vfe_base + 0x34); msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x24); vfe_dev->irq0_mask |= 0xF7; msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 0xF7, 0x81, MSM_ISP_IRQ_ENABLE); msm_camera_io_w_mb(0x140000, vfe_dev->vfe_base + 0x318); bus_en = Loading @@ -1413,8 +1391,8 @@ static void msm_vfe40_update_camif_state(struct vfe_device *vfe_dev, if (vfe_dev->axi_data.src_info[VFE_PIX_0].input_mux == TESTGEN) update_state = DISABLE_CAMIF; msm_vfe40_config_irq(vfe_dev, 0, 0, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 0, 0x81, MSM_ISP_IRQ_DISABLE); val = msm_camera_io_r(vfe_dev->vfe_base + 0x464); /* disable danger signal */ msm_camera_io_w_mb(val & ~(1 << 8), vfe_dev->vfe_base + 0x464); Loading Loading @@ -1897,6 +1875,9 @@ static void msm_vfe40_stats_cfg_comp_mask(struct vfe_device *vfe_dev, comp_mask_reg |= mask_bf_scale << (16 + request_comp_index * 8); atomic_set(stats_comp_mask, stats_mask | atomic_read(stats_comp_mask)); msm_vfe40_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_ENABLE); } else { if (!(atomic_read(stats_comp_mask) & stats_mask)) return; Loading @@ -1904,6 +1885,9 @@ static void msm_vfe40_stats_cfg_comp_mask(struct vfe_device *vfe_dev, ~stats_mask & atomic_read(stats_comp_mask)); comp_mask_reg &= ~(mask_bf_scale << (16 + request_comp_index * 8)); msm_vfe40_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_DISABLE); } msm_camera_io_w(comp_mask_reg, vfe_dev->vfe_base + 0x44); Loading @@ -1919,20 +1903,18 @@ static void msm_vfe40_stats_cfg_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (STATS_IDX(stream_info->stream_handle) + 16); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, 1 << (STATS_IDX(stream_info->stream_handle) + 16), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe40_stats_clear_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (STATS_IDX(stream_info->stream_handle) + 16)); msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe40_config_irq(vfe_dev, (1 << (STATS_IDX(stream_info->stream_handle) + 16)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe40_stats_cfg_wm_reg( Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp44.c +38 −54 Original line number Diff line number Diff line Loading @@ -70,30 +70,22 @@ static void msm_vfe44_config_irq(struct vfe_device *vfe_dev, uint32_t irq0_mask, uint32_t irq1_mask, enum msm_isp_irq_operation oper) { uint32_t val; switch (oper) { case MSM_ISP_IRQ_ENABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x28); val |= irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x28); val = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); val |= irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask |= irq0_mask; vfe_dev->irq1_mask |= irq1_mask; break; case MSM_ISP_IRQ_DISABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x28); val &= ~irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x28); val = msm_camera_io_r(vfe_dev->vfe_base + 0x2C); val &= ~irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask &= ~irq0_mask; vfe_dev->irq1_mask &= ~irq1_mask; break; case MSM_ISP_IRQ_SET: msm_camera_io_w_mb(irq0_mask, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(irq1_mask, vfe_dev->vfe_base + 0x2C); vfe_dev->irq0_mask = irq0_mask; vfe_dev->irq1_mask = irq1_mask; break; } msm_camera_io_w_mb(irq0_mask, vfe_dev->vfe_base + 0x28); msm_camera_io_w_mb(irq1_mask, vfe_dev->vfe_base + 0x2C); } static int32_t msm_vfe44_init_dt_parms(struct vfe_device *vfe_dev, Loading Loading @@ -181,10 +173,8 @@ static void msm_vfe44_init_hardware_reg(struct vfe_device *vfe_dev) /* BUS_CFG */ msm_camera_io_w(0x10000001, vfe_dev->vfe_base + 0x50); vfe_dev->irq0_mask = 0xE00000F1; vfe_dev->irq1_mask = 0xFFFFFFFF; msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 0x800000E0, 0xFFFFFF7E, MSM_ISP_IRQ_ENABLE); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x34); msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x24); Loading @@ -193,9 +183,7 @@ static void msm_vfe44_init_hardware_reg(struct vfe_device *vfe_dev) static void msm_vfe44_clear_status_reg(struct vfe_device *vfe_dev) { vfe_dev->irq0_mask = 0x80000000; vfe_dev->irq1_mask = 0; msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, msm_vfe44_config_irq(vfe_dev, 0x80000000, 0, MSM_ISP_IRQ_SET); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x34); Loading Loading @@ -419,7 +407,6 @@ static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev, if (*irq_status1 & (1 << 0)) { vfe_dev->error_info.camif_status = msm_camera_io_r(vfe_dev->vfe_base + 0x31C); vfe_dev->irq1_mask &= ~(1 << 0); msm_vfe44_config_irq(vfe_dev, 0, (1 << 0), MSM_ISP_IRQ_DISABLE); } Loading Loading @@ -650,9 +637,8 @@ static void msm_vfe44_axi_cfg_comp_mask(struct vfe_device *vfe_dev, stream_composite_mask << (comp_mask_index * 8)); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x40); vfe_dev->irq0_mask |= 1 << (comp_mask_index + 25); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 1 << (comp_mask_index + 25), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe44_axi_clear_comp_mask(struct vfe_device *vfe_dev, Loading @@ -664,25 +650,22 @@ static void msm_vfe44_axi_clear_comp_mask(struct vfe_device *vfe_dev, comp_mask &= ~(0x7F << (comp_mask_index * 8)); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x40); vfe_dev->irq0_mask &= ~(1 << (comp_mask_index + 25)); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, (1 << (comp_mask_index + 25)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe44_axi_cfg_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (stream_info->wm[0] + 8); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 1 << (stream_info->wm[0] + 8), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe44_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (stream_info->wm[0] + 8)); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, (1 << (stream_info->wm[0] + 8)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe44_cfg_framedrop(void __iomem *vfe_base, Loading Loading @@ -918,10 +901,8 @@ static void msm_vfe44_cfg_fetch_engine(struct vfe_device *vfe_dev, temp |= (1 << 1); msm_camera_io_w(temp, vfe_dev->vfe_base + 0x50); vfe_dev->irq0_mask &= 0xFEFFFFFF; vfe_dev->irq0_mask |= (1 << 24); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, (1 << 24), 0, MSM_ISP_IRQ_SET); msm_camera_io_w((fe_cfg->fetch_height - 1) & 0xFFF, vfe_dev->vfe_base + 0x238); Loading Loading @@ -1045,13 +1026,12 @@ static void msm_vfe44_update_camif_state(struct vfe_device *vfe_dev, return; if (update_state == ENABLE_CAMIF) { msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x34); msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x30); msm_camera_io_w_mb(0x81, vfe_dev->vfe_base + 0x34); msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x24); vfe_dev->irq0_mask |= 0xF7; msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 0xF7, 0x81, MSM_ISP_IRQ_ENABLE); msm_camera_io_w_mb(0x140000, vfe_dev->vfe_base + 0x318); bus_en = Loading @@ -1075,7 +1055,7 @@ static void msm_vfe44_update_camif_state(struct vfe_device *vfe_dev, if (vfe_dev->axi_data.src_info[VFE_PIX_0].input_mux == TESTGEN) update_state = DISABLE_CAMIF; msm_vfe44_config_irq(vfe_dev, 0, 0, MSM_ISP_IRQ_SET); 0x81, MSM_ISP_IRQ_DISABLE); val = msm_camera_io_r(vfe_dev->vfe_base + 0xC18); /* disable danger signal */ msm_camera_io_w_mb(val & ~(1 << 8), vfe_dev->vfe_base + 0xC18); Loading Loading @@ -1526,6 +1506,9 @@ static void msm_vfe44_stats_cfg_comp_mask( comp_mask_reg |= mask_bf_scale << (16 + request_comp_index * 8); atomic_set(stats_comp_mask, stats_mask | atomic_read(stats_comp_mask)); msm_vfe44_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_ENABLE); } else { if (!(atomic_read(stats_comp_mask) & stats_mask)) return; Loading @@ -1540,6 +1523,9 @@ static void msm_vfe44_stats_cfg_comp_mask( ~stats_mask & atomic_read(stats_comp_mask)); comp_mask_reg &= ~(mask_bf_scale << (16 + request_comp_index * 8)); msm_vfe44_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_DISABLE); } msm_camera_io_w(comp_mask_reg, vfe_dev->vfe_base + 0x44); Loading @@ -1555,20 +1541,18 @@ static void msm_vfe44_stats_cfg_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (STATS_IDX(stream_info->stream_handle) + 15); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 1 << (STATS_IDX(stream_info->stream_handle) + 15), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe44_stats_clear_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (STATS_IDX(stream_info->stream_handle) + 15)); msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, (1 << (STATS_IDX(stream_info->stream_handle) + 15)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe44_stats_cfg_wm_reg( Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp46.c +43 −52 Original line number Diff line number Diff line Loading @@ -92,30 +92,24 @@ static void msm_vfe46_config_irq(struct vfe_device *vfe_dev, uint32_t irq0_mask, uint32_t irq1_mask, enum msm_isp_irq_operation oper) { uint32_t val; switch (oper) { case MSM_ISP_IRQ_ENABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x5C); val |= irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x5C); val = msm_camera_io_r(vfe_dev->vfe_base + 0x60); val |= irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x60); vfe_dev->irq0_mask |= irq0_mask; vfe_dev->irq1_mask |= irq1_mask; break; case MSM_ISP_IRQ_DISABLE: val = msm_camera_io_r(vfe_dev->vfe_base + 0x5C); val &= ~irq0_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x5C); val = msm_camera_io_r(vfe_dev->vfe_base + 0x60); val &= ~irq1_mask; msm_camera_io_w_mb(val, vfe_dev->vfe_base + 0x60); vfe_dev->irq0_mask &= ~irq0_mask; vfe_dev->irq1_mask &= ~irq1_mask; break; case MSM_ISP_IRQ_SET: msm_camera_io_w_mb(irq0_mask, vfe_dev->vfe_base + 0x5C); msm_camera_io_w_mb(irq1_mask, vfe_dev->vfe_base + 0x60); vfe_dev->irq0_mask = irq0_mask; vfe_dev->irq1_mask = irq1_mask; break; } msm_camera_io_w_mb(vfe_dev->irq0_mask, vfe_dev->vfe_base + 0x5C); msm_camera_io_w_mb(vfe_dev->irq1_mask, vfe_dev->vfe_base + 0x60); } static int32_t msm_vfe46_init_dt_parms(struct vfe_device *vfe_dev, Loading Loading @@ -208,20 +202,16 @@ static void msm_vfe46_init_hardware_reg(struct vfe_device *vfe_dev) /* BUS_CFG */ msm_camera_io_w(0x00000001, vfe_dev->vfe_base + 0x84); /* IRQ_MASK/CLEAR */ vfe_dev->irq0_mask = 0xE00000F1; vfe_dev->irq1_mask = 0xE1FFFFFF; msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 0x810000E0, 0xFFFFFF7E, MSM_ISP_IRQ_ENABLE); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x64); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x68); msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x58); } static void msm_vfe46_clear_status_reg(struct vfe_device *vfe_dev) { vfe_dev->irq0_mask = 0x80000000; vfe_dev->irq1_mask = 0x0; msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 0x80000000, 0, MSM_ISP_IRQ_SET); msm_camera_io_w(0xFFFFFFFF, vfe_dev->vfe_base + 0x64); msm_camera_io_w_mb(0xFFFFFFFF, vfe_dev->vfe_base + 0x68); msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x58); Loading Loading @@ -355,7 +345,6 @@ static void msm_vfe46_read_irq_status(struct vfe_device *vfe_dev, if (*irq_status1 & (1 << 0)) { vfe_dev->error_info.camif_status = msm_camera_io_r(vfe_dev->vfe_base + 0x3D0); vfe_dev->irq1_mask &= ~(1 << 0); msm_vfe46_config_irq(vfe_dev, 0, (1 << 0), MSM_ISP_IRQ_DISABLE); } Loading Loading @@ -587,9 +576,8 @@ static void msm_vfe46_axi_cfg_comp_mask(struct vfe_device *vfe_dev, stream_composite_mask << (comp_mask_index * 8)); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x74); vfe_dev->irq0_mask |= 1 << (comp_mask_index + 25); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << (comp_mask_index + 25), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe46_axi_clear_comp_mask(struct vfe_device *vfe_dev, Loading @@ -601,25 +589,22 @@ static void msm_vfe46_axi_clear_comp_mask(struct vfe_device *vfe_dev, comp_mask &= ~(0x7F << (comp_mask_index * 8)); msm_camera_io_w(comp_mask, vfe_dev->vfe_base + 0x74); vfe_dev->irq0_mask |= 1 << (comp_mask_index + 25); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << (comp_mask_index + 25), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe46_axi_cfg_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (stream_info->wm[0] + 8); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << (stream_info->wm[0] + 8), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe46_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev, struct msm_vfe_axi_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (stream_info->wm[0] + 8)); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, (1 << (stream_info->wm[0] + 8)), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe46_cfg_framedrop(void __iomem *vfe_base, Loading Loading @@ -857,10 +842,8 @@ static void msm_vfe46_cfg_fetch_engine(struct vfe_device *vfe_dev, temp |= (1 << 1); msm_camera_io_w(temp, vfe_dev->vfe_base + 0x84); vfe_dev->irq0_mask &= 0xFEFFFFFF; vfe_dev->irq0_mask |= (1 << 24); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << 24, 0, MSM_ISP_IRQ_ENABLE); temp = fe_cfg->fetch_height - 1; msm_camera_io_w(temp & 0x3FFF, vfe_dev->vfe_base + 0x278); Loading Loading @@ -1120,9 +1103,11 @@ static void msm_vfe46_update_camif_state(struct vfe_device *vfe_dev, return; if (update_state == ENABLE_CAMIF) { vfe_dev->irq0_mask |= 0xF5; msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x64); msm_camera_io_w(0x81, vfe_dev->vfe_base + 0x68); msm_camera_io_w(0x1, vfe_dev->vfe_base + 0x58); msm_vfe46_config_irq(vfe_dev, 0x15, 0x81, MSM_ISP_IRQ_ENABLE); bus_en = ((vfe_dev->axi_data. Loading @@ -1148,7 +1133,8 @@ static void msm_vfe46_update_camif_state(struct vfe_device *vfe_dev, if (vfe_dev->axi_data.src_info[VFE_PIX_0].input_mux == TESTGEN) update_state = DISABLE_CAMIF; msm_vfe46_config_irq(vfe_dev, 0, 0, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 0, 0x81, MSM_ISP_IRQ_DISABLE); /* disable danger signal */ val = msm_camera_io_r(vfe_dev->vfe_base + 0xC18); val &= ~(1 << 8); Loading Loading @@ -1611,6 +1597,9 @@ static void msm_vfe46_stats_cfg_comp_mask( comp_mask_reg |= mask_bf_scale << (16 + request_comp_index * 8); atomic_set(stats_comp_mask, stats_mask | atomic_read(stats_comp_mask)); msm_vfe46_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_ENABLE); } else { if (!(atomic_read(stats_comp_mask) & stats_mask)) return; Loading @@ -1625,6 +1614,9 @@ static void msm_vfe46_stats_cfg_comp_mask( ~stats_mask & atomic_read(stats_comp_mask)); comp_mask_reg &= ~(mask_bf_scale << (16 + request_comp_index * 8)); msm_vfe46_config_irq(vfe_dev, 1 << (request_comp_index + 29), 0, MSM_ISP_IRQ_DISABLE); } msm_camera_io_w(comp_mask_reg, vfe_dev->vfe_base + 0x78); Loading @@ -1640,19 +1632,18 @@ static void msm_vfe46_stats_cfg_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask |= 1 << (STATS_IDX(stream_info->stream_handle) + 15); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << (STATS_IDX(stream_info->stream_handle) + 15), 0, MSM_ISP_IRQ_ENABLE); } static void msm_vfe46_stats_clear_wm_irq_mask( struct vfe_device *vfe_dev, struct msm_vfe_stats_stream *stream_info) { vfe_dev->irq0_mask &= ~(1 << (STATS_IDX(stream_info->stream_handle) + 15)); msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe46_config_irq(vfe_dev, 1 << (STATS_IDX(stream_info->stream_handle) + 15), 0, MSM_ISP_IRQ_DISABLE); } static void msm_vfe46_stats_cfg_wm_reg( Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp47.c +56 −79 File changed.Preview size limit exceeded, changes collapsed. Show changes
drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c +16 −14 Original line number Diff line number Diff line Loading @@ -1188,15 +1188,9 @@ int msm_isp_request_axi_stream(struct vfe_device *vfe_dev, void *arg) vfe_dev->vt_enable = stream_cfg_cmd->vt_enable; msm_isp_start_avtimer(); } if (stream_info->num_planes > 1) { if (stream_info->num_planes > 1) msm_isp_axi_reserve_comp_mask( &vfe_dev->axi_data, stream_info); vfe_dev->hw_info->vfe_ops.axi_ops. cfg_comp_mask(vfe_dev, stream_info); } else { vfe_dev->hw_info->vfe_ops.axi_ops. cfg_wm_irq_mask(vfe_dev, stream_info); } for (i = 0; i < stream_info->num_planes; i++) { vfe_dev->hw_info->vfe_ops.axi_ops. Loading Loading @@ -1252,14 +1246,8 @@ int msm_isp_release_axi_stream(struct vfe_device *vfe_dev, void *arg) clear_wm_xbar_reg(vfe_dev, stream_info, i); } if (stream_info->num_planes > 1) { vfe_dev->hw_info->vfe_ops.axi_ops. clear_comp_mask(vfe_dev, stream_info); if (stream_info->num_planes > 1) msm_isp_axi_free_comp_mask(&vfe_dev->axi_data, stream_info); } else { vfe_dev->hw_info->vfe_ops.axi_ops. clear_wm_irq_mask(vfe_dev, stream_info); } vfe_dev->hw_info->vfe_ops.axi_ops.clear_framedrop(vfe_dev, stream_info); msm_isp_axi_free_wm(axi_data, stream_info); Loading Loading @@ -2617,6 +2605,13 @@ static int msm_isp_start_axi_stream(struct vfe_device *vfe_dev, return rc; } spin_unlock_irqrestore(&stream_info->lock, flags); if (stream_info->num_planes > 1) { vfe_dev->hw_info->vfe_ops.axi_ops. cfg_comp_mask(vfe_dev, stream_info); } else { vfe_dev->hw_info->vfe_ops.axi_ops. cfg_wm_irq_mask(vfe_dev, stream_info); } stream_info->state = START_PENDING; Loading Loading @@ -2733,6 +2728,13 @@ static int msm_isp_stop_axi_stream(struct vfe_device *vfe_dev, spin_unlock_irqrestore(&stream_info->lock, flags); wait_for_complete_for_this_stream = 0; if (stream_info->num_planes > 1) vfe_dev->hw_info->vfe_ops.axi_ops. clear_comp_mask(vfe_dev, stream_info); else vfe_dev->hw_info->vfe_ops.axi_ops. clear_wm_irq_mask(vfe_dev, stream_info); stream_info->state = STOP_PENDING; if (!halt && !ext_read && Loading