Revert "msm: camera: isp: Handle frame drop due to delay "
Breaks GCAM This reverts commit 5bf83ce8c3
.
Change-Id: I632497550243e9fc4b69ba4a0199d8a3e939fd36
This commit is contained in:
parent
f217defb38
commit
3d23626712
4 changed files with 11 additions and 30 deletions
|
@ -451,7 +451,7 @@ static int isp_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
|
||||||
{
|
{
|
||||||
struct page *page;
|
struct page *page;
|
||||||
struct vfe_device *vfe_dev = vma->vm_private_data;
|
struct vfe_device *vfe_dev = vma->vm_private_data;
|
||||||
struct isp_kstate *isp_page = NULL;
|
struct isp_proc *isp_page = NULL;
|
||||||
|
|
||||||
isp_page = vfe_dev->isp_page;
|
isp_page = vfe_dev->isp_page;
|
||||||
|
|
||||||
|
@ -732,7 +732,7 @@ int vfe_hw_probe(struct platform_device *pdev)
|
||||||
vfe_dev->buf_mgr->init_done = 1;
|
vfe_dev->buf_mgr->init_done = 1;
|
||||||
vfe_dev->vfe_open_cnt = 0;
|
vfe_dev->vfe_open_cnt = 0;
|
||||||
/*Allocate a page in kernel and map it to camera user process*/
|
/*Allocate a page in kernel and map it to camera user process*/
|
||||||
vfe_dev->isp_page = (struct isp_kstate *)get_zeroed_page(GFP_KERNEL);
|
vfe_dev->isp_page = (struct isp_proc *)get_zeroed_page(GFP_KERNEL);
|
||||||
if (vfe_dev->isp_page == NULL) {
|
if (vfe_dev->isp_page == NULL) {
|
||||||
pr_err("%s: no enough memory\n", __func__);
|
pr_err("%s: no enough memory\n", __func__);
|
||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
|
|
|
@ -759,6 +759,11 @@ struct msm_vfe_common_subdev {
|
||||||
struct msm_vfe_common_dev_data *common_data;
|
struct msm_vfe_common_dev_data *common_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct isp_proc {
|
||||||
|
uint32_t kernel_sofid;
|
||||||
|
uint32_t vfeid;
|
||||||
|
};
|
||||||
|
|
||||||
struct vfe_device {
|
struct vfe_device {
|
||||||
/* Driver private data */
|
/* Driver private data */
|
||||||
struct platform_device *pdev;
|
struct platform_device *pdev;
|
||||||
|
@ -842,7 +847,7 @@ struct vfe_device {
|
||||||
uint32_t recovery_irq1_mask;
|
uint32_t recovery_irq1_mask;
|
||||||
/* total bandwidth per vfe */
|
/* total bandwidth per vfe */
|
||||||
uint64_t total_bandwidth;
|
uint64_t total_bandwidth;
|
||||||
struct isp_kstate *isp_page;
|
struct isp_proc *isp_page;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct vfe_parent_device {
|
struct vfe_parent_device {
|
||||||
|
|
|
@ -3448,14 +3448,6 @@ static int msm_isp_request_frame(struct vfe_device *vfe_dev,
|
||||||
frame_src = SRC_TO_INTF(stream_info->stream_src);
|
frame_src = SRC_TO_INTF(stream_info->stream_src);
|
||||||
pingpong_status = vfe_dev->hw_info->
|
pingpong_status = vfe_dev->hw_info->
|
||||||
vfe_ops.axi_ops.get_pingpong_status(vfe_dev);
|
vfe_ops.axi_ops.get_pingpong_status(vfe_dev);
|
||||||
|
|
||||||
/* As MCT is still processing it, need to drop the additional requests*/
|
|
||||||
if (vfe_dev->isp_page->drop_reconfig) {
|
|
||||||
pr_err("%s: MCT has not yet delayed %d drop request %d\n",
|
|
||||||
__func__, vfe_dev->isp_page->drop_reconfig, frame_id);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If PIX stream is active then RDI path uses SOF frame ID of PIX
|
* If PIX stream is active then RDI path uses SOF frame ID of PIX
|
||||||
* In case of standalone RDI streaming, SOF are used from
|
* In case of standalone RDI streaming, SOF are used from
|
||||||
|
@ -3469,18 +3461,9 @@ static int msm_isp_request_frame(struct vfe_device *vfe_dev,
|
||||||
vfe_dev->axi_data.src_info[frame_src].accept_frame == false) {
|
vfe_dev->axi_data.src_info[frame_src].accept_frame == false) {
|
||||||
pr_debug("%s:%d invalid time to request frame %d\n",
|
pr_debug("%s:%d invalid time to request frame %d\n",
|
||||||
__func__, __LINE__, frame_id);
|
__func__, __LINE__, frame_id);
|
||||||
vfe_dev->isp_page->drop_reconfig = 1;
|
goto error;
|
||||||
} else if ((vfe_dev->axi_data.src_info[frame_src].active) &&
|
}
|
||||||
(frame_id ==
|
if ((vfe_dev->axi_data.src_info[frame_src].active && (frame_id !=
|
||||||
vfe_dev->axi_data.src_info[frame_src].frame_id) &&
|
|
||||||
(stream_info->undelivered_request_cnt <=
|
|
||||||
MAX_BUFFERS_IN_HW)) {
|
|
||||||
vfe_dev->isp_page->drop_reconfig = 1;
|
|
||||||
pr_debug("%s: vfe_%d request_frame %d cur frame id %d pix %d\n",
|
|
||||||
__func__, vfe_dev->pdev->id, frame_id,
|
|
||||||
vfe_dev->axi_data.src_info[VFE_PIX_0].frame_id,
|
|
||||||
vfe_dev->axi_data.src_info[VFE_PIX_0].active);
|
|
||||||
} else if ((vfe_dev->axi_data.src_info[frame_src].active && (frame_id !=
|
|
||||||
vfe_dev->axi_data.src_info[frame_src].frame_id + vfe_dev->
|
vfe_dev->axi_data.src_info[frame_src].frame_id + vfe_dev->
|
||||||
axi_data.src_info[frame_src].sof_counter_step)) ||
|
axi_data.src_info[frame_src].sof_counter_step)) ||
|
||||||
((!vfe_dev->axi_data.src_info[frame_src].active))) {
|
((!vfe_dev->axi_data.src_info[frame_src].active))) {
|
||||||
|
|
|
@ -25,16 +25,9 @@
|
||||||
#define ISP_STATS_STREAM_BIT 0x80000000
|
#define ISP_STATS_STREAM_BIT 0x80000000
|
||||||
|
|
||||||
#define VFE_HW_LIMIT 1
|
#define VFE_HW_LIMIT 1
|
||||||
#define ISP_KERNEL_STATE 1
|
|
||||||
|
|
||||||
struct msm_vfe_cfg_cmd_list;
|
struct msm_vfe_cfg_cmd_list;
|
||||||
|
|
||||||
struct isp_kstate {
|
|
||||||
uint32_t kernel_sofid;
|
|
||||||
uint32_t drop_reconfig;
|
|
||||||
uint32_t vfeid;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum ISP_START_PIXEL_PATTERN {
|
enum ISP_START_PIXEL_PATTERN {
|
||||||
ISP_BAYER_RGRGRG,
|
ISP_BAYER_RGRGRG,
|
||||||
ISP_BAYER_GRGRGR,
|
ISP_BAYER_GRGRGR,
|
||||||
|
|
Loading…
Add table
Reference in a new issue