Loading drivers/media/platform/msm/camera_v2/isp/msm_isp.c +11 −0 Original line number Diff line number Diff line Loading @@ -617,6 +617,7 @@ int vfe_hw_probe(struct platform_device *pdev) /*struct msm_cam_subdev_info sd_info;*/ const struct of_device_id *match_dev; int rc = 0; struct msm_vfe_hardware_info *hw_info; vfe_dev = kzalloc(sizeof(struct vfe_device), GFP_KERNEL); if (!vfe_dev) { Loading Loading @@ -667,6 +668,7 @@ int vfe_hw_probe(struct platform_device *pdev) ISP_DBG("%s: device id = %d\n", __func__, pdev->id); vfe_dev->pdev = pdev; hw_info = &vfe_dev->hw_info; rc = vfe_dev->hw_info->vfe_ops.platform_ops.get_platform_data(vfe_dev); if (rc < 0) { Loading @@ -675,6 +677,15 @@ int vfe_hw_probe(struct platform_device *pdev) goto probe_fail3; } if ( hw_info->vfe_ops.platform_ops.get_dual_sync_platform_data) { rc = hw_info->vfe_ops.platform_ops.get_dual_sync_platform_data( vfe_dev); if (rc < 0) pr_err("%s:fail get dual_sync\n", __func__); } v4l2_subdev_init(&vfe_dev->subdev.sd, &msm_vfe_v4l2_subdev_ops); vfe_dev->subdev.sd.internal_ops = &msm_vfe_subdev_internal_ops; Loading drivers/media/platform/msm/camera_v2/isp/msm_isp.h +19 −0 Original line number Diff line number Diff line Loading @@ -153,10 +153,12 @@ struct msm_vfe_irq_ops { struct msm_isp_timestamp *ts); void (*process_axi_irq)(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, uint32_t dual_irq_status, uint32_t pingpong_status, struct msm_isp_timestamp *ts); void (*process_stats_irq)(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, uint32_t dual_irq_status, uint32_t pingpong_status, struct msm_isp_timestamp *ts); void (*config_irq)(struct vfe_device *vfe_dev, Loading @@ -164,6 +166,11 @@ struct msm_vfe_irq_ops { enum msm_isp_irq_operation); void (*preprocess_camif_irq)(struct vfe_device *vfe_dev, uint32_t irq_status0); void (*dual_config_irq)(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, enum msm_isp_irq_operation); void (*read_and_clear_dual_irq_status)(struct vfe_device *vfe_dev, uint32_t *dual_irq_status0); }; struct msm_vfe_axi_ops { Loading Loading @@ -335,6 +342,9 @@ struct msm_vfe_platform_ops { struct msm_isp_bandwidth_mgr *isp_bandwidth_mgr); int (*update_bw)(struct msm_isp_bandwidth_mgr *isp_bandwidth_mgr); void (*deinit_bw_mgr)(struct msm_isp_bandwidth_mgr *isp_bandwidth_mgr); void (*set_dual_vfe_mode)(struct vfe_device *vfe_dev); void (*clear_dual_vfe_mode)(struct vfe_device *vfe_dev); int (*get_dual_sync_platform_data)(struct vfe_device *vfe_dev); }; struct msm_vfe_ops { Loading Loading @@ -597,6 +607,7 @@ struct msm_vfe_tasklet_queue_cmd { uint32_t vfeInterruptStatus0; uint32_t vfeInterruptStatus1; uint32_t vfe_pingpong_status; uint32_t dualvfeInterruptstatus; struct msm_isp_timestamp ts; uint8_t cmd_used; struct vfe_device *vfe_dev; Loading Loading @@ -828,6 +839,8 @@ struct vfe_device { uint32_t dual_vfe_enable; unsigned long page_fault_addr; uint32_t vfe_hw_limit; uint32_t dual_vfe_sync_mode; uint32_t dual_vfe_sync_enable; /* Debug variables */ int dump_reg; Loading @@ -849,6 +862,12 @@ struct vfe_device { /* total bandwidth per vfe */ uint64_t total_bandwidth; struct isp_proc *isp_page; /* Dual VFE IRQ CAMSS Info*/ void __iomem *camss_base; struct resource *dual_vfe_irq; /* irq info */ uint32_t dual_irq_mask; }; struct vfe_parent_device { Loading drivers/media/platform/msm/camera_v2/isp/msm_isp40.c +6 −0 Original line number Diff line number Diff line Loading @@ -2252,6 +2252,9 @@ struct msm_vfe_hardware_info vfe40_hw_info = { .process_epoch_irq = msm_vfe40_process_epoch_irq, .config_irq = msm_vfe40_config_irq, .preprocess_camif_irq = msm_isp47_preprocess_camif_irq, .dual_config_irq = NULL, .read_and_clear_dual_irq_status = NULL, }, .axi_ops = { .reload_wm = msm_vfe40_axi_reload_wm, Loading Loading @@ -2344,6 +2347,9 @@ struct msm_vfe_hardware_info vfe40_hw_info = { .init_bw_mgr = msm_vfe47_init_bandwidth_mgr, .deinit_bw_mgr = msm_vfe47_deinit_bandwidth_mgr, .update_bw = msm_vfe47_update_bandwidth, .set_dual_vfe_mode = NULL, .clear_dual_vfe_mode = NULL, .get_dual_sync_platform_data = NULL, } }, .dmi_reg_offset = 0x918, Loading drivers/media/platform/msm/camera_v2/isp/msm_isp44.c +6 −0 Original line number Diff line number Diff line Loading @@ -1835,6 +1835,9 @@ struct msm_vfe_hardware_info vfe44_hw_info = { .process_epoch_irq = msm_vfe44_process_epoch_irq, .config_irq = msm_vfe44_config_irq, .preprocess_camif_irq = msm_isp47_preprocess_camif_irq, .dual_config_irq = NULL, .read_and_clear_dual_irq_status = NULL, }, .axi_ops = { .reload_wm = msm_vfe44_axi_reload_wm, Loading Loading @@ -1925,6 +1928,9 @@ struct msm_vfe_hardware_info vfe44_hw_info = { .init_bw_mgr = msm_vfe47_init_bandwidth_mgr, .deinit_bw_mgr = msm_vfe47_deinit_bandwidth_mgr, .update_bw = msm_vfe47_update_bandwidth, .set_dual_vfe_mode = NULL, .clear_dual_vfe_mode = NULL, .get_dual_sync_platform_data = NULL, } }, .dmi_reg_offset = 0x918, Loading drivers/media/platform/msm/camera_v2/isp/msm_isp46.c +6 −0 Original line number Diff line number Diff line Loading @@ -1904,6 +1904,9 @@ struct msm_vfe_hardware_info vfe46_hw_info = { .process_epoch_irq = msm_vfe46_process_epoch_irq, .config_irq = msm_vfe46_config_irq, .preprocess_camif_irq = msm_isp47_preprocess_camif_irq, .dual_config_irq = NULL, .read_and_clear_dual_irq_status = NULL, }, .axi_ops = { .reload_wm = msm_vfe46_axi_reload_wm, Loading Loading @@ -1994,6 +1997,9 @@ struct msm_vfe_hardware_info vfe46_hw_info = { .init_bw_mgr = msm_vfe47_init_bandwidth_mgr, .deinit_bw_mgr = msm_vfe47_deinit_bandwidth_mgr, .update_bw = msm_vfe47_update_bandwidth, .set_dual_vfe_mode = NULL, .clear_dual_vfe_mode = NULL, .get_dual_sync_platform_data = NULL, } }, .dmi_reg_offset = 0xACC, Loading Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp.c +11 −0 Original line number Diff line number Diff line Loading @@ -617,6 +617,7 @@ int vfe_hw_probe(struct platform_device *pdev) /*struct msm_cam_subdev_info sd_info;*/ const struct of_device_id *match_dev; int rc = 0; struct msm_vfe_hardware_info *hw_info; vfe_dev = kzalloc(sizeof(struct vfe_device), GFP_KERNEL); if (!vfe_dev) { Loading Loading @@ -667,6 +668,7 @@ int vfe_hw_probe(struct platform_device *pdev) ISP_DBG("%s: device id = %d\n", __func__, pdev->id); vfe_dev->pdev = pdev; hw_info = &vfe_dev->hw_info; rc = vfe_dev->hw_info->vfe_ops.platform_ops.get_platform_data(vfe_dev); if (rc < 0) { Loading @@ -675,6 +677,15 @@ int vfe_hw_probe(struct platform_device *pdev) goto probe_fail3; } if ( hw_info->vfe_ops.platform_ops.get_dual_sync_platform_data) { rc = hw_info->vfe_ops.platform_ops.get_dual_sync_platform_data( vfe_dev); if (rc < 0) pr_err("%s:fail get dual_sync\n", __func__); } v4l2_subdev_init(&vfe_dev->subdev.sd, &msm_vfe_v4l2_subdev_ops); vfe_dev->subdev.sd.internal_ops = &msm_vfe_subdev_internal_ops; Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp.h +19 −0 Original line number Diff line number Diff line Loading @@ -153,10 +153,12 @@ struct msm_vfe_irq_ops { struct msm_isp_timestamp *ts); void (*process_axi_irq)(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, uint32_t dual_irq_status, uint32_t pingpong_status, struct msm_isp_timestamp *ts); void (*process_stats_irq)(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, uint32_t dual_irq_status, uint32_t pingpong_status, struct msm_isp_timestamp *ts); void (*config_irq)(struct vfe_device *vfe_dev, Loading @@ -164,6 +166,11 @@ struct msm_vfe_irq_ops { enum msm_isp_irq_operation); void (*preprocess_camif_irq)(struct vfe_device *vfe_dev, uint32_t irq_status0); void (*dual_config_irq)(struct vfe_device *vfe_dev, uint32_t irq_status0, uint32_t irq_status1, enum msm_isp_irq_operation); void (*read_and_clear_dual_irq_status)(struct vfe_device *vfe_dev, uint32_t *dual_irq_status0); }; struct msm_vfe_axi_ops { Loading Loading @@ -335,6 +342,9 @@ struct msm_vfe_platform_ops { struct msm_isp_bandwidth_mgr *isp_bandwidth_mgr); int (*update_bw)(struct msm_isp_bandwidth_mgr *isp_bandwidth_mgr); void (*deinit_bw_mgr)(struct msm_isp_bandwidth_mgr *isp_bandwidth_mgr); void (*set_dual_vfe_mode)(struct vfe_device *vfe_dev); void (*clear_dual_vfe_mode)(struct vfe_device *vfe_dev); int (*get_dual_sync_platform_data)(struct vfe_device *vfe_dev); }; struct msm_vfe_ops { Loading Loading @@ -597,6 +607,7 @@ struct msm_vfe_tasklet_queue_cmd { uint32_t vfeInterruptStatus0; uint32_t vfeInterruptStatus1; uint32_t vfe_pingpong_status; uint32_t dualvfeInterruptstatus; struct msm_isp_timestamp ts; uint8_t cmd_used; struct vfe_device *vfe_dev; Loading Loading @@ -828,6 +839,8 @@ struct vfe_device { uint32_t dual_vfe_enable; unsigned long page_fault_addr; uint32_t vfe_hw_limit; uint32_t dual_vfe_sync_mode; uint32_t dual_vfe_sync_enable; /* Debug variables */ int dump_reg; Loading @@ -849,6 +862,12 @@ struct vfe_device { /* total bandwidth per vfe */ uint64_t total_bandwidth; struct isp_proc *isp_page; /* Dual VFE IRQ CAMSS Info*/ void __iomem *camss_base; struct resource *dual_vfe_irq; /* irq info */ uint32_t dual_irq_mask; }; struct vfe_parent_device { Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp40.c +6 −0 Original line number Diff line number Diff line Loading @@ -2252,6 +2252,9 @@ struct msm_vfe_hardware_info vfe40_hw_info = { .process_epoch_irq = msm_vfe40_process_epoch_irq, .config_irq = msm_vfe40_config_irq, .preprocess_camif_irq = msm_isp47_preprocess_camif_irq, .dual_config_irq = NULL, .read_and_clear_dual_irq_status = NULL, }, .axi_ops = { .reload_wm = msm_vfe40_axi_reload_wm, Loading Loading @@ -2344,6 +2347,9 @@ struct msm_vfe_hardware_info vfe40_hw_info = { .init_bw_mgr = msm_vfe47_init_bandwidth_mgr, .deinit_bw_mgr = msm_vfe47_deinit_bandwidth_mgr, .update_bw = msm_vfe47_update_bandwidth, .set_dual_vfe_mode = NULL, .clear_dual_vfe_mode = NULL, .get_dual_sync_platform_data = NULL, } }, .dmi_reg_offset = 0x918, Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp44.c +6 −0 Original line number Diff line number Diff line Loading @@ -1835,6 +1835,9 @@ struct msm_vfe_hardware_info vfe44_hw_info = { .process_epoch_irq = msm_vfe44_process_epoch_irq, .config_irq = msm_vfe44_config_irq, .preprocess_camif_irq = msm_isp47_preprocess_camif_irq, .dual_config_irq = NULL, .read_and_clear_dual_irq_status = NULL, }, .axi_ops = { .reload_wm = msm_vfe44_axi_reload_wm, Loading Loading @@ -1925,6 +1928,9 @@ struct msm_vfe_hardware_info vfe44_hw_info = { .init_bw_mgr = msm_vfe47_init_bandwidth_mgr, .deinit_bw_mgr = msm_vfe47_deinit_bandwidth_mgr, .update_bw = msm_vfe47_update_bandwidth, .set_dual_vfe_mode = NULL, .clear_dual_vfe_mode = NULL, .get_dual_sync_platform_data = NULL, } }, .dmi_reg_offset = 0x918, Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp46.c +6 −0 Original line number Diff line number Diff line Loading @@ -1904,6 +1904,9 @@ struct msm_vfe_hardware_info vfe46_hw_info = { .process_epoch_irq = msm_vfe46_process_epoch_irq, .config_irq = msm_vfe46_config_irq, .preprocess_camif_irq = msm_isp47_preprocess_camif_irq, .dual_config_irq = NULL, .read_and_clear_dual_irq_status = NULL, }, .axi_ops = { .reload_wm = msm_vfe46_axi_reload_wm, Loading Loading @@ -1994,6 +1997,9 @@ struct msm_vfe_hardware_info vfe46_hw_info = { .init_bw_mgr = msm_vfe47_init_bandwidth_mgr, .deinit_bw_mgr = msm_vfe47_deinit_bandwidth_mgr, .update_bw = msm_vfe47_update_bandwidth, .set_dual_vfe_mode = NULL, .clear_dual_vfe_mode = NULL, .get_dual_sync_platform_data = NULL, } }, .dmi_reg_offset = 0xACC, Loading