Loading drivers/media/platform/msm/camera_v2/isp/msm_isp40.c +39 −59 Original line number Diff line number Diff line Loading @@ -100,29 +100,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 @@ -334,10 +326,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 @@ -345,15 +335,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 @@ -588,7 +576,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 @@ -810,11 +797,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 @@ -826,27 +811,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 @@ -1146,10 +1128,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 @@ -1456,14 +1436,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; vfe_dev->irq1_mask |= 0x81; 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 @@ -1484,9 +1461,8 @@ static void msm_vfe40_update_camif_state(struct vfe_device *vfe_dev, vfe_dev->axi_data.src_info[VFE_PIX_0].active = 1; } else if (update_state == DISABLE_CAMIF || DISABLE_CAMIF_IMMEDIATELY == update_state) { vfe_dev->irq1_mask &= ~0x81; msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, 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 @@ -1965,6 +1941,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 @@ -1972,6 +1951,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 @@ -1987,20 +1969,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 +39 −57 Original line number Diff line number Diff line Loading @@ -69,30 +69,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 @@ -180,10 +172,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 @@ -192,9 +182,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 @@ -418,7 +406,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 @@ -648,9 +635,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 @@ -662,25 +648,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 @@ -916,10 +899,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 @@ -1043,14 +1024,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; vfe_dev->irq1_mask |= 0x81; 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 @@ -1069,9 +1048,8 @@ static void msm_vfe44_update_camif_state(struct vfe_device *vfe_dev, vfe_dev->axi_data.src_info[VFE_PIX_0].active = 1; } else if (update_state == DISABLE_CAMIF || DISABLE_CAMIF_IMMEDIATELY == update_state) { vfe_dev->irq1_mask &= ~0x81; msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 0, 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 @@ -1518,6 +1496,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 @@ -1532,6 +1513,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 @@ -1547,20 +1531,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 −58 Original line number Diff line number Diff line Loading @@ -91,30 +91,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 @@ -207,20 +201,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 @@ -354,7 +344,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 @@ -585,9 +574,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 @@ -599,25 +587,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 @@ -855,10 +840,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 @@ -1118,13 +1101,11 @@ static void msm_vfe46_update_camif_state(struct vfe_device *vfe_dev, return; if (update_state == ENABLE_CAMIF) { msm_camera_io_w(0, vfe_dev->vfe_base + 0x64); msm_camera_io_w((1 << 0), vfe_dev->vfe_base + 0x68); msm_camera_io_w_mb(1, vfe_dev->vfe_base + 0x58); vfe_dev->irq0_mask |= 0xF5; vfe_dev->irq1_mask |= 0x81; 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 @@ -1146,9 +1127,8 @@ static void msm_vfe46_update_camif_state(struct vfe_device *vfe_dev, msm_camera_io_w(1, vfe_dev->vfe_base + 0xAF4); } else if (update_state == DISABLE_CAMIF || DISABLE_CAMIF_IMMEDIATELY == update_state) { vfe_dev->irq1_mask &= ~0x81; msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, 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 @@ -1608,6 +1588,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 @@ -1622,6 +1605,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 @@ -1637,19 +1623,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 +55 −85 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 @@ -1196,15 +1196,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 @@ -1260,14 +1254,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 @@ -2741,6 +2729,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 @@ -2856,6 +2851,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 −59 Original line number Diff line number Diff line Loading @@ -100,29 +100,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 @@ -334,10 +326,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 @@ -345,15 +335,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 @@ -588,7 +576,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 @@ -810,11 +797,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 @@ -826,27 +811,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 @@ -1146,10 +1128,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 @@ -1456,14 +1436,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; vfe_dev->irq1_mask |= 0x81; 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 @@ -1484,9 +1461,8 @@ static void msm_vfe40_update_camif_state(struct vfe_device *vfe_dev, vfe_dev->axi_data.src_info[VFE_PIX_0].active = 1; } else if (update_state == DISABLE_CAMIF || DISABLE_CAMIF_IMMEDIATELY == update_state) { vfe_dev->irq1_mask &= ~0x81; msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, 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 @@ -1965,6 +1941,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 @@ -1972,6 +1951,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 @@ -1987,20 +1969,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 +39 −57 Original line number Diff line number Diff line Loading @@ -69,30 +69,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 @@ -180,10 +172,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 @@ -192,9 +182,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 @@ -418,7 +406,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 @@ -648,9 +635,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 @@ -662,25 +648,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 @@ -916,10 +899,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 @@ -1043,14 +1024,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; vfe_dev->irq1_mask |= 0x81; 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 @@ -1069,9 +1048,8 @@ static void msm_vfe44_update_camif_state(struct vfe_device *vfe_dev, vfe_dev->axi_data.src_info[VFE_PIX_0].active = 1; } else if (update_state == DISABLE_CAMIF || DISABLE_CAMIF_IMMEDIATELY == update_state) { vfe_dev->irq1_mask &= ~0x81; msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, MSM_ISP_IRQ_SET); msm_vfe44_config_irq(vfe_dev, 0, 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 @@ -1518,6 +1496,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 @@ -1532,6 +1513,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 @@ -1547,20 +1531,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 −58 Original line number Diff line number Diff line Loading @@ -91,30 +91,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 @@ -207,20 +201,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 @@ -354,7 +344,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 @@ -585,9 +574,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 @@ -599,25 +587,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 @@ -855,10 +840,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 @@ -1118,13 +1101,11 @@ static void msm_vfe46_update_camif_state(struct vfe_device *vfe_dev, return; if (update_state == ENABLE_CAMIF) { msm_camera_io_w(0, vfe_dev->vfe_base + 0x64); msm_camera_io_w((1 << 0), vfe_dev->vfe_base + 0x68); msm_camera_io_w_mb(1, vfe_dev->vfe_base + 0x58); vfe_dev->irq0_mask |= 0xF5; vfe_dev->irq1_mask |= 0x81; 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 @@ -1146,9 +1127,8 @@ static void msm_vfe46_update_camif_state(struct vfe_device *vfe_dev, msm_camera_io_w(1, vfe_dev->vfe_base + 0xAF4); } else if (update_state == DISABLE_CAMIF || DISABLE_CAMIF_IMMEDIATELY == update_state) { vfe_dev->irq1_mask &= ~0x81; msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask, 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 @@ -1608,6 +1588,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 @@ -1622,6 +1605,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 @@ -1637,19 +1623,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 +55 −85 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 @@ -1196,15 +1196,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 @@ -1260,14 +1254,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 @@ -2741,6 +2729,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 @@ -2856,6 +2851,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