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

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

Merge "msm: camera: isp: dump pingpong mismatch debug info"

parents 1c0295f7 819b2186
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include "msm.h"
#include "msm_buf_mgr.h"
#include "cam_smmu_api.h"
#include "msm_isp_util.h"

#undef CDBG
#define CDBG(fmt, args...) pr_debug(fmt, ##args)
@@ -737,6 +738,7 @@ static int msm_isp_update_put_buf_cnt(struct msm_isp_buf_mgr *buf_mgr,
	if (-ENOTEMPTY == rc) {
		pr_err("%s: Error! Uncleared put_buf_mask for pingpong(%d) from vfe %d bufq 0x%x buf_idx %d\n",
			__func__, pingpong_bit, id, bufq_handle, buf_index);
		msm_isp_dump_ping_pong_mismatch();
		rc = -EFAULT;
	}
	spin_unlock_irqrestore(&bufq->bufq_lock, flags);
+3 −0
Original line number Diff line number Diff line
@@ -133,6 +133,8 @@ struct msm_isp_timestamp {
};

struct msm_vfe_irq_ops {
	void (*read_irq_status_and_clear)(struct vfe_device *vfe_dev,
		uint32_t *irq_status0, uint32_t *irq_status1);
	void (*read_irq_status)(struct vfe_device *vfe_dev,
		uint32_t *irq_status0, uint32_t *irq_status1);
	void (*process_reg_update)(struct vfe_device *vfe_dev,
@@ -182,6 +184,7 @@ struct msm_vfe_axi_ops {
		struct msm_vfe_axi_stream *stream_info);
	void (*clear_wm_irq_mask)(struct vfe_device *vfe_dev,
		struct msm_vfe_axi_stream *stream_info);
	void (*clear_irq_mask)(struct vfe_device *vfe_dev);

	void (*cfg_wm_reg)(struct vfe_device *vfe_dev,
		struct msm_vfe_axi_stream *stream_info,
+17 −1
Original line number Diff line number Diff line
@@ -567,7 +567,7 @@ static void msm_vfe32_process_error_status(struct vfe_device *vfe_dev)
		pr_err("%s: axi error\n", __func__);
}

static void msm_vfe32_read_irq_status(struct vfe_device *vfe_dev,
static void msm_vfe32_read_irq_status_and_clear(struct vfe_device *vfe_dev,
	uint32_t *irq_status0, uint32_t *irq_status1)
{
	*irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x2C);
@@ -585,6 +585,13 @@ static void msm_vfe32_read_irq_status(struct vfe_device *vfe_dev,
			msm_camera_io_r(vfe_dev->vfe_base + 0x7B4);
}

static void msm_vfe32_read_irq_status(struct vfe_device *vfe_dev,
	uint32_t *irq_status0, uint32_t *irq_status1)
{
	*irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x2C);
	*irq_status1 = msm_camera_io_r(vfe_dev->vfe_base + 0x30);
}

static void msm_vfe32_process_reg_update(struct vfe_device *vfe_dev,
	uint32_t irq_status0, uint32_t irq_status1,
	struct msm_isp_timestamp *ts)
@@ -741,6 +748,11 @@ static void msm_vfe32_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev,
	msm_camera_io_w(irq_mask, vfe_dev->vfe_base + 0x1C);
}

static void msm_vfe32_axi_clear_irq_mask(struct vfe_device *vfe_dev)
{
	msm_camera_io_w(0x0, vfe_dev->vfe_base + 0x1C);
}

static void msm_vfe32_cfg_framedrop(void __iomem *vfe_base,
	struct msm_vfe_axi_stream *stream_info, uint32_t framedrop_pattern,
	uint32_t framedrop_period)
@@ -1467,6 +1479,8 @@ struct msm_vfe_hardware_info vfe32_hw_info = {
	.vfe_ops = {
		.irq_ops = {
			.read_irq_status = msm_vfe32_read_irq_status,
			.read_irq_status_and_clear =
				msm_vfe32_read_irq_status_and_clear,
			.process_camif_irq = msm_vfe32_process_camif_irq,
			.process_reset_irq = msm_vfe32_process_reset_irq,
			.process_halt_irq = msm_vfe32_process_halt_irq,
@@ -1483,6 +1497,8 @@ struct msm_vfe_hardware_info vfe32_hw_info = {
			.clear_comp_mask = msm_vfe32_axi_clear_comp_mask,
			.cfg_wm_irq_mask = msm_vfe32_axi_cfg_wm_irq_mask,
			.clear_wm_irq_mask = msm_vfe32_axi_clear_wm_irq_mask,
			.clear_irq_mask =
				msm_vfe32_axi_clear_irq_mask,
			.cfg_framedrop = msm_vfe32_cfg_framedrop,
			.clear_framedrop = msm_vfe32_clear_framedrop,
			.cfg_wm_reg = msm_vfe32_axi_cfg_wm_reg,
+18 −1
Original line number Diff line number Diff line
@@ -552,7 +552,7 @@ static void msm_vfe40_process_error_status(struct vfe_device *vfe_dev)
		msm_isp_update_last_overflow_ab_ib(vfe_dev);
}

static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev,
static void msm_vfe40_read_irq_status_and_clear(struct vfe_device *vfe_dev,
	uint32_t *irq_status0, uint32_t *irq_status1)
{
	*irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38);
@@ -585,6 +585,13 @@ static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev,

}

static void msm_vfe40_read_irq_status(struct vfe_device *vfe_dev,
	uint32_t *irq_status0, uint32_t *irq_status1)
{
	*irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38);
	*irq_status1 = msm_camera_io_r(vfe_dev->vfe_base + 0x3C);
}

static void msm_vfe40_process_reg_update(struct vfe_device *vfe_dev,
	uint32_t irq_status0, uint32_t irq_status1,
	struct msm_isp_timestamp *ts)
@@ -831,6 +838,12 @@ static void msm_vfe40_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev,
				MSM_ISP_IRQ_DISABLE);
}

static void msm_vfe40_axi_clear_irq_mask(struct vfe_device *vfe_dev)
{
	msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x28);
	msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x2C);
}

static void msm_vfe40_cfg_framedrop(void __iomem *vfe_base,
	struct msm_vfe_axi_stream *stream_info, uint32_t framedrop_pattern,
	uint32_t framedrop_period)
@@ -2250,6 +2263,8 @@ struct msm_vfe_hardware_info vfe40_hw_info = {
	.vfe_ops = {
		.irq_ops = {
			.read_irq_status = msm_vfe40_read_irq_status,
			.read_irq_status_and_clear =
				msm_vfe40_read_irq_status_and_clear,
			.process_camif_irq = msm_vfe40_process_input_irq,
			.process_reset_irq = msm_vfe40_process_reset_irq,
			.process_halt_irq = msm_vfe40_process_halt_irq,
@@ -2268,6 +2283,8 @@ struct msm_vfe_hardware_info vfe40_hw_info = {
			.clear_comp_mask = msm_vfe40_axi_clear_comp_mask,
			.cfg_wm_irq_mask = msm_vfe40_axi_cfg_wm_irq_mask,
			.clear_wm_irq_mask = msm_vfe40_axi_clear_wm_irq_mask,
			.clear_irq_mask =
				msm_vfe40_axi_clear_irq_mask,
			.cfg_framedrop = msm_vfe40_cfg_framedrop,
			.clear_framedrop = msm_vfe40_clear_framedrop,
			.cfg_wm_reg = msm_vfe40_axi_cfg_wm_reg,
+18 −1
Original line number Diff line number Diff line
@@ -387,7 +387,7 @@ static void msm_vfe44_process_error_status(struct vfe_device *vfe_dev)
	}
}

static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev,
static void msm_vfe44_read_irq_status_and_clear(struct vfe_device *vfe_dev,
	uint32_t *irq_status0, uint32_t *irq_status1)
{
	*irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38);
@@ -415,6 +415,13 @@ static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev,

}

static void msm_vfe44_read_irq_status(struct vfe_device *vfe_dev,
	uint32_t *irq_status0, uint32_t *irq_status1)
{
	*irq_status0 = msm_camera_io_r(vfe_dev->vfe_base + 0x38);
	*irq_status1 = msm_camera_io_r(vfe_dev->vfe_base + 0x3C);
}

static void msm_vfe44_process_reg_update(struct vfe_device *vfe_dev,
	uint32_t irq_status0, uint32_t irq_status1,
	struct msm_isp_timestamp *ts)
@@ -666,6 +673,12 @@ static void msm_vfe44_axi_clear_wm_irq_mask(struct vfe_device *vfe_dev,
			MSM_ISP_IRQ_DISABLE);
}

static void msm_vfe44_axi_clear_irq_mask(struct vfe_device *vfe_dev)
{
	msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x28);
	msm_camera_io_w_mb(0x0, vfe_dev->vfe_base + 0x2C);
}

static void msm_vfe44_cfg_framedrop(void __iomem *vfe_base,
	struct msm_vfe_axi_stream *stream_info, uint32_t framedrop_pattern,
	uint32_t framedrop_period)
@@ -1823,6 +1836,8 @@ struct msm_vfe_hardware_info vfe44_hw_info = {
	.vfe_ops = {
		.irq_ops = {
			.read_irq_status = msm_vfe44_read_irq_status,
			.read_irq_status_and_clear =
				msm_vfe44_read_irq_status_and_clear,
			.process_camif_irq = msm_vfe44_process_input_irq,
			.process_reset_irq = msm_vfe44_process_reset_irq,
			.process_halt_irq = msm_vfe44_process_halt_irq,
@@ -1841,6 +1856,8 @@ struct msm_vfe_hardware_info vfe44_hw_info = {
			.clear_comp_mask = msm_vfe44_axi_clear_comp_mask,
			.cfg_wm_irq_mask = msm_vfe44_axi_cfg_wm_irq_mask,
			.clear_wm_irq_mask = msm_vfe44_axi_clear_wm_irq_mask,
			.clear_irq_mask =
				msm_vfe44_axi_clear_irq_mask,
			.cfg_framedrop = msm_vfe44_cfg_framedrop,
			.clear_framedrop = msm_vfe44_clear_framedrop,
			.cfg_wm_reg = msm_vfe44_axi_cfg_wm_reg,
Loading