msm: camera: req_mgr: Enhance camera v4l2 subdev shutdown sequence

when provider crash occurred, there was a CSID lane overflow
observed due to shutdown sequence from CRM(sensor, csid, csiphy).
To fix the issue need to change the shutdown sequence
(csid, sensor, csiphy).

This change will update the devices sequence in order while registering
and close the sequence accordingly.

CRs-Fixed: 2852076
Change-Id: Ia6d8022e995823bf031400c33528eb8544dc2e29
Signed-off-by: Alok Chauhan <alokc@codeaurora.org>
这个提交包含在:
Alok Chauhan
2020-10-15 20:32:53 +05:30
提交者 Gerrit - the friendly Code Review server
父节点 2c537f74d5
当前提交 2ebae4fabe
修改 38 个文件,包含 867 行新增178 行删除

查看文件

@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
*/
#include <linux/debugfs.h>
@@ -221,6 +221,12 @@ static int __cam_icp_handle_buf_done_in_ready(void *ctx,
return cam_context_buf_done_from_hw(ctx, done, evt_id);
}
static int __cam_icp_shutdown_dev(
struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
{
return cam_icp_subdev_close_internal(sd, fh);
}
static struct cam_ctx_ops
cam_icp_ctx_state_machine[CAM_CTX_STATE_MAX] = {
/* Uninit */
@@ -233,6 +239,7 @@ static struct cam_ctx_ops
{
.ioctl_ops = {
.acquire_dev = __cam_icp_acquire_dev_in_available,
.shutdown_dev = __cam_icp_shutdown_dev,
},
.crm_ops = {},
.irq_ops = NULL,
@@ -245,6 +252,7 @@ static struct cam_ctx_ops
.config_dev = __cam_icp_config_dev_in_ready,
.flush_dev = __cam_icp_flush_dev_in_ready,
.dump_dev = __cam_icp_dump_dev_in_ready,
.shutdown_dev = __cam_icp_shutdown_dev,
},
.crm_ops = {},
.irq_ops = __cam_icp_handle_buf_done_in_ready,
@@ -258,16 +266,23 @@ static struct cam_ctx_ops
.config_dev = __cam_icp_config_dev_in_ready,
.flush_dev = __cam_icp_flush_dev_in_ready,
.dump_dev = __cam_icp_dump_dev_in_ready,
.shutdown_dev = __cam_icp_shutdown_dev,
},
.crm_ops = {},
.irq_ops = __cam_icp_handle_buf_done_in_ready,
.pagefault_ops = cam_icp_context_dump_active_request,
},
/* Flushed */
{},
{
.ioctl_ops = {
.shutdown_dev = __cam_icp_shutdown_dev,
},
},
/* Activated */
{
.ioctl_ops = {},
.ioctl_ops = {
.shutdown_dev = __cam_icp_shutdown_dev,
},
.crm_ops = {},
.irq_ops = NULL,
.pagefault_ops = cam_icp_context_dump_active_request,