Loading drivers/cam_isp/cam_isp_context.c +8 −0 Original line number Diff line number Diff line Loading @@ -2446,6 +2446,14 @@ static int __cam_isp_ctx_apply_req_in_activated_state( goto end; } if (apply->re_apply) if (apply->request_id <= ctx_isp->last_applied_req_id) { CAM_INFO(CAM_ISP, "Trying to reapply the same request %llu again", apply->request_id); return 0; } spin_lock_bh(&ctx->lock); req = list_first_entry(&ctx->pending_req_list, struct cam_ctx_request, list); Loading drivers/cam_req_mgr/cam_req_mgr_core.c +5 −0 Original line number Diff line number Diff line Loading @@ -659,6 +659,11 @@ static int __cam_req_mgr_send_req(struct cam_req_mgr_core_link *link, apply_req.link_hdl = link->link_hdl; apply_req.report_if_bubble = 0; apply_req.re_apply = false; if (link->retry_cnt > 0) { if (g_crm_core_dev->recovery_on_apply_fail) apply_req.re_apply = true; } for (i = 0; i < link->num_devs; i++) { dev = &link->l_dev[i]; Loading drivers/cam_req_mgr/cam_req_mgr_core.h +2 −0 Original line number Diff line number Diff line Loading @@ -408,10 +408,12 @@ struct cam_req_mgr_core_session { * - Core camera request manager data struct * @session_head : list head holding sessions * @crm_lock : mutex lock to protect session creation & destruction * @recovery_on_apply_fail : Recovery on apply failure using debugfs. */ struct cam_req_mgr_core_device { struct list_head session_head; struct mutex crm_lock; bool recovery_on_apply_fail; }; /** Loading drivers/cam_req_mgr/cam_req_mgr_debug.c +8 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. */ #include "cam_req_mgr_debug.h" Loading Loading @@ -128,5 +128,12 @@ int cam_req_mgr_debug_register(struct cam_req_mgr_core_device *core_dev) debugfs_root, core_dev, &bubble_recovery)) return -ENOMEM; if (!debugfs_create_bool("recovery_on_apply_fail", 0644, debugfs_root, &core_dev->recovery_on_apply_fail)) { return -ENOMEM; } return 0; } drivers/cam_req_mgr/cam_req_mgr_interface.h +2 −0 Original line number Diff line number Diff line Loading @@ -325,6 +325,7 @@ struct cam_req_mgr_core_dev_link_setup { * @request_id : request id settings to apply * @report_if_bubble : report to crm if failure in applying * @trigger_point : the trigger point of this apply * @re_apply : to skip re_apply for buf_done request * */ struct cam_req_mgr_apply_request { Loading @@ -333,6 +334,7 @@ struct cam_req_mgr_apply_request { uint64_t request_id; int32_t report_if_bubble; uint32_t trigger_point; bool re_apply; }; /** Loading Loading
drivers/cam_isp/cam_isp_context.c +8 −0 Original line number Diff line number Diff line Loading @@ -2446,6 +2446,14 @@ static int __cam_isp_ctx_apply_req_in_activated_state( goto end; } if (apply->re_apply) if (apply->request_id <= ctx_isp->last_applied_req_id) { CAM_INFO(CAM_ISP, "Trying to reapply the same request %llu again", apply->request_id); return 0; } spin_lock_bh(&ctx->lock); req = list_first_entry(&ctx->pending_req_list, struct cam_ctx_request, list); Loading
drivers/cam_req_mgr/cam_req_mgr_core.c +5 −0 Original line number Diff line number Diff line Loading @@ -659,6 +659,11 @@ static int __cam_req_mgr_send_req(struct cam_req_mgr_core_link *link, apply_req.link_hdl = link->link_hdl; apply_req.report_if_bubble = 0; apply_req.re_apply = false; if (link->retry_cnt > 0) { if (g_crm_core_dev->recovery_on_apply_fail) apply_req.re_apply = true; } for (i = 0; i < link->num_devs; i++) { dev = &link->l_dev[i]; Loading
drivers/cam_req_mgr/cam_req_mgr_core.h +2 −0 Original line number Diff line number Diff line Loading @@ -408,10 +408,12 @@ struct cam_req_mgr_core_session { * - Core camera request manager data struct * @session_head : list head holding sessions * @crm_lock : mutex lock to protect session creation & destruction * @recovery_on_apply_fail : Recovery on apply failure using debugfs. */ struct cam_req_mgr_core_device { struct list_head session_head; struct mutex crm_lock; bool recovery_on_apply_fail; }; /** Loading
drivers/cam_req_mgr/cam_req_mgr_debug.c +8 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. */ #include "cam_req_mgr_debug.h" Loading Loading @@ -128,5 +128,12 @@ int cam_req_mgr_debug_register(struct cam_req_mgr_core_device *core_dev) debugfs_root, core_dev, &bubble_recovery)) return -ENOMEM; if (!debugfs_create_bool("recovery_on_apply_fail", 0644, debugfs_root, &core_dev->recovery_on_apply_fail)) { return -ENOMEM; } return 0; }
drivers/cam_req_mgr/cam_req_mgr_interface.h +2 −0 Original line number Diff line number Diff line Loading @@ -325,6 +325,7 @@ struct cam_req_mgr_core_dev_link_setup { * @request_id : request id settings to apply * @report_if_bubble : report to crm if failure in applying * @trigger_point : the trigger point of this apply * @re_apply : to skip re_apply for buf_done request * */ struct cam_req_mgr_apply_request { Loading @@ -333,6 +334,7 @@ struct cam_req_mgr_apply_request { uint64_t request_id; int32_t report_if_bubble; uint32_t trigger_point; bool re_apply; }; /** Loading