Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2978a2f4 authored by Sridhar Gujje's avatar Sridhar Gujje
Browse files

Merge remote-tracking branch 'dev/msm-4.14-camx' into msm-4.14 09/25



* commit 'a581a6e1':
  msm: camera: isp: schedule tasklet with priority
  msm: camera: cpas: Enable camnoc interrupts
  msm: camera: isp: Reset IFE hardware before active and wait list flush

Change-Id: Ibf14657f527e4b1a269b1ac189b215d56e2e346b
Signed-off-by: default avatarSridhar Gujje <sgujje@codeaurora.org>
parents 432c6504 a581a6e1
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -336,6 +336,9 @@ static int cam_cpastop_reset_irq(struct cam_hw_info *cpas_hw)
{
	int i;

	if (camnoc_info->irq_sbm->sbm_enable.enable == false)
		return 0;

	cam_cpas_util_reg_update(cpas_hw, CAM_CPAS_REG_CAMNOC,
		&camnoc_info->irq_sbm->sbm_clear);
	for (i = 0; i < camnoc_info->irq_err_size; i++) {
@@ -517,6 +520,7 @@ static int cam_cpastop_poweron(struct cam_hw_info *cpas_hw)
{
	int i;

	cam_cpastop_reset_irq(cpas_hw);
	for (i = 0; i < camnoc_info->specific_size; i++) {
		if (camnoc_info->specific[i].enable) {
			cam_cpas_util_reg_update(cpas_hw, CAM_CPAS_REG_CAMNOC,
+8 −8
Original line number Diff line number Diff line
@@ -2097,6 +2097,14 @@ static int __cam_isp_ctx_flush_req_in_top_state(
		ctx->hw_mgr_intf->hw_stop(ctx->hw_mgr_intf->hw_mgr_priv,
				&stop_args);

		CAM_DBG(CAM_ISP, "try to reset hw");
		/* Reset hw */
		reset_args.ctxt_to_hw_map = ctx_isp->hw_ctx;
		rc = ctx->hw_mgr_intf->hw_reset(ctx->hw_mgr_intf->hw_mgr_priv,
			&reset_args);
		if (rc)
			goto end;

		spin_lock_bh(&ctx->lock);
		CAM_DBG(CAM_ISP, "try to flush wait list");
		rc = __cam_isp_ctx_flush_req(ctx, &ctx->wait_req_list,
@@ -2107,14 +2115,6 @@ static int __cam_isp_ctx_flush_req_in_top_state(
		ctx_isp->active_req_cnt = 0;
		spin_unlock_bh(&ctx->lock);

		CAM_DBG(CAM_ISP, "try to reset hw");
		/* Reset hw */
		reset_args.ctxt_to_hw_map = ctx_isp->hw_ctx;
		rc = ctx->hw_mgr_intf->hw_reset(ctx->hw_mgr_intf->hw_mgr_priv,
			&reset_args);
		if (rc)
			goto end;

		CAM_DBG(CAM_ISP, "ctx id%d try to start hw", ctx->ctx_id);
		/* Start hw */
		start_isp.hw_config.ctxt_to_hw_map = ctx_isp->hw_ctx;
+2 −2
Original line number Diff line number Diff line
/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -214,7 +214,7 @@ void cam_tasklet_enqueue_cmd(
	list_add_tail(&tasklet_cmd->list,
		&tasklet->used_cmd_list);
	spin_unlock_irqrestore(&tasklet->tasklet_lock, flags);
	tasklet_schedule(&tasklet->tasklet);
	tasklet_hi_schedule(&tasklet->tasklet);
}

int cam_tasklet_init(