|
@@ -1,6 +1,6 @@
|
|
|
// SPDX-License-Identifier: GPL-2.0-only
|
|
|
/*
|
|
|
- * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
|
|
|
+ * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
|
|
|
*/
|
|
|
|
|
|
#include <linux/module.h>
|
|
@@ -1243,6 +1243,8 @@ static int cam_fd_mgr_hw_start(void *hw_mgr_priv, void *mgr_start_args)
|
|
|
struct cam_fd_hw_mgr_ctx *hw_ctx;
|
|
|
struct cam_fd_device *hw_device;
|
|
|
struct cam_fd_hw_init_args hw_init_args;
|
|
|
+ struct cam_hw_info *fd_hw;
|
|
|
+ struct cam_fd_core *fd_core;
|
|
|
|
|
|
if (!hw_mgr_priv || !hw_mgr_start_args) {
|
|
|
CAM_ERR(CAM_FD, "Invalid arguments %pK %pK",
|
|
@@ -1265,9 +1267,17 @@ static int cam_fd_mgr_hw_start(void *hw_mgr_priv, void *mgr_start_args)
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
+ fd_hw = (struct cam_hw_info *)hw_device->hw_intf->hw_priv;
|
|
|
+ fd_core = (struct cam_fd_core *)fd_hw->core_info;
|
|
|
+
|
|
|
if (hw_device->hw_intf->hw_ops.init) {
|
|
|
hw_init_args.hw_ctx = hw_ctx;
|
|
|
hw_init_args.ctx_hw_private = hw_ctx->ctx_hw_private;
|
|
|
+ if (fd_core->hw_static_info->enable_errata_wa.skip_reset)
|
|
|
+ hw_init_args.reset_required = false;
|
|
|
+ else
|
|
|
+ hw_init_args.reset_required = true;
|
|
|
+
|
|
|
rc = hw_device->hw_intf->hw_ops.init(
|
|
|
hw_device->hw_intf->hw_priv, &hw_init_args,
|
|
|
sizeof(hw_init_args));
|