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>
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
2c537f74d5
commit
2ebae4fabe
@@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/debugfs.h>
|
||||
@@ -195,6 +195,12 @@ static int __cam_ope_handle_buf_done_in_ready(void *ctx,
|
||||
return cam_context_buf_done_from_hw(ctx, done, evt_id);
|
||||
}
|
||||
|
||||
static int __cam_ope_shutdown_dev(
|
||||
struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
|
||||
{
|
||||
return cam_ope_subdev_close_internal(sd, fh);
|
||||
}
|
||||
|
||||
static struct cam_ctx_ops
|
||||
cam_ope_ctx_state_machine[CAM_CTX_STATE_MAX] = {
|
||||
/* Uninit */
|
||||
@@ -207,6 +213,7 @@ static struct cam_ctx_ops
|
||||
{
|
||||
.ioctl_ops = {
|
||||
.acquire_dev = __cam_ope_acquire_dev_in_available,
|
||||
.shutdown_dev = __cam_ope_shutdown_dev,
|
||||
},
|
||||
.crm_ops = {},
|
||||
.irq_ops = NULL,
|
||||
@@ -219,6 +226,7 @@ static struct cam_ctx_ops
|
||||
.config_dev = __cam_ope_config_dev_in_ready,
|
||||
.flush_dev = __cam_ope_flush_dev_in_ready,
|
||||
.dump_dev = __cam_ope_dump_dev_in_ready,
|
||||
.shutdown_dev = __cam_ope_shutdown_dev,
|
||||
},
|
||||
.crm_ops = {},
|
||||
.irq_ops = __cam_ope_handle_buf_done_in_ready,
|
||||
@@ -232,14 +240,23 @@ static struct cam_ctx_ops
|
||||
.config_dev = __cam_ope_config_dev_in_ready,
|
||||
.flush_dev = __cam_ope_flush_dev_in_ready,
|
||||
.dump_dev = __cam_ope_dump_dev_in_ready,
|
||||
.shutdown_dev = __cam_ope_shutdown_dev,
|
||||
},
|
||||
.crm_ops = {},
|
||||
.irq_ops = __cam_ope_handle_buf_done_in_ready,
|
||||
.pagefault_ops = cam_ope_context_dump_active_request,
|
||||
},
|
||||
/* Flushed */
|
||||
{
|
||||
.ioctl_ops = {
|
||||
.shutdown_dev = __cam_ope_shutdown_dev,
|
||||
},
|
||||
},
|
||||
/* Activated */
|
||||
{
|
||||
.ioctl_ops = {},
|
||||
.ioctl_ops = {
|
||||
.shutdown_dev = __cam_ope_shutdown_dev,
|
||||
},
|
||||
.crm_ops = {},
|
||||
.irq_ops = NULL,
|
||||
.pagefault_ops = cam_ope_context_dump_active_request,
|
||||
|
Reference in New Issue
Block a user