Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb730961 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm:isp: add recovery method in case of pingpong mismatch."

parents 064afb57 ef7a2017
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@
#define MAX_BUFFERS_IN_HW 2

#define MAX_VFE 2
#define MAX_RECOVERY_THRESHOLD  5

struct vfe_device;
struct msm_vfe_axi_stream;
@@ -518,6 +519,7 @@ struct msm_vfe_axi_shared_data {
	uint32_t event_mask;
	uint8_t enable_frameid_recovery;
	enum msm_vfe_camif_state camif_state;
	uint32_t recovery_count;
};

struct msm_vfe_stats_hardware_info {
@@ -773,6 +775,9 @@ struct vfe_device {
	/* irq info */
	uint32_t irq0_mask;
	uint32_t irq1_mask;
	/* before halt irq info */
	uint32_t recovery_irq0_mask;
	uint32_t recovery_irq1_mask;
};

struct vfe_parent_device {
+2 −2
Original line number Diff line number Diff line
@@ -1859,8 +1859,8 @@ static int msm_vfe40_axi_restart(struct vfe_device *vfe_dev,
	/* Start AXI */
	msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x2C0);

	msm_vfe40_config_irq(vfe_dev, vfe_dev->irq0_mask,
		vfe_dev->irq1_mask, MSM_ISP_IRQ_SET);
	msm_vfe40_config_irq(vfe_dev, vfe_dev->recovery_irq0_mask,
		vfe_dev->recovery_irq1_mask, MSM_ISP_IRQ_SET);

	vfe_dev->hw_info->vfe_ops.core_ops.reg_update(vfe_dev, VFE_SRC_MAX);
	memset(&vfe_dev->error_info, 0, sizeof(vfe_dev->error_info));
+2 −2
Original line number Diff line number Diff line
@@ -1389,8 +1389,8 @@ static int msm_vfe44_axi_restart(struct vfe_device *vfe_dev,
	/* Start AXI */
	msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x2C0);

	msm_vfe44_config_irq(vfe_dev, vfe_dev->irq0_mask, vfe_dev->irq1_mask,
		MSM_ISP_IRQ_SET);
	msm_vfe44_config_irq(vfe_dev, vfe_dev->recovery_irq0_mask,
		vfe_dev->recovery_irq1_mask, MSM_ISP_IRQ_SET);

	vfe_dev->hw_info->vfe_ops.core_ops.reg_update(vfe_dev, VFE_SRC_MAX);
	memset(&vfe_dev->error_info, 0, sizeof(vfe_dev->error_info));
+2 −2
Original line number Diff line number Diff line
@@ -1483,8 +1483,8 @@ static int msm_vfe46_axi_restart(struct vfe_device *vfe_dev,
	memset(&vfe_dev->error_info, 0, sizeof(vfe_dev->error_info));
	atomic_set(&vfe_dev->error_info.overflow_state, NO_OVERFLOW);

	msm_vfe46_config_irq(vfe_dev, vfe_dev->irq0_mask,
		vfe_dev->irq1_mask, MSM_ISP_IRQ_SET);
	msm_vfe46_config_irq(vfe_dev, vfe_dev->recovery_irq0_mask,
		vfe_dev->recovery_irq1_mask, MSM_ISP_IRQ_SET);

	vfe_dev->hw_info->vfe_ops.core_ops.reg_update(vfe_dev, VFE_SRC_MAX);

+2 −2
Original line number Diff line number Diff line
@@ -1860,8 +1860,8 @@ int msm_vfe47_axi_restart(struct vfe_device *vfe_dev,
	atomic_set(&vfe_dev->error_info.overflow_state, NO_OVERFLOW);

	/* reset the irq masks without camif violation and errors */
	msm_vfe47_config_irq(vfe_dev, vfe_dev->irq0_mask,
		vfe_dev->irq1_mask, MSM_ISP_IRQ_SET);
	msm_vfe47_config_irq(vfe_dev, vfe_dev->recovery_irq0_mask,
		vfe_dev->recovery_irq1_mask, MSM_ISP_IRQ_SET);

	vfe_dev->hw_info->vfe_ops.core_ops.reg_update(vfe_dev, VFE_SRC_MAX);

Loading