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

Commit cb02d402 authored by Rishabh Jain's avatar Rishabh Jain
Browse files

msm: camera: cdm: Fix irq_data value in case of inline irq



In case of wrong value of irq_data, cdm will notify all the
clients waiting on that fifo, which will result into early signal.
Fixing the irq_data value by masking the value with proper mask.

CRs-Fixed: 2603834
Change-Id: Id06cba51b3da8733982e7d8a7d2208f094ff0180
Signed-off-by: default avatarRishabh Jain <risjai@codeaurora.org>
parent c5a5fe5e
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
/* 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.
 */

#ifndef _CAM_CDM_H_
@@ -100,6 +100,7 @@
#define CAM_CDM_IRQ_STATUS_ERROR_INV_CMD_MASK 0x10000
#define CAM_CDM_IRQ_STATUS_ERROR_OVER_FLOW_MASK 0x20000
#define CAM_CDM_IRQ_STATUS_ERROR_AHB_BUS_MASK 0x40000
#define CAM_CDM_IRQ_STATUS_USR_DATA_MASK 0xFF

#define CAM_CDM_IRQ_STATUS_ERRORS \
	(CAM_CDM_IRQ_STATUS_ERROR_INV_CMD_MASK | \
+3 −2
Original line number Diff line number Diff line
// 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/delay.h>
@@ -1139,7 +1139,8 @@ irqreturn_t cam_hw_cdm_irq(int irq_num, void *data)
				return IRQ_HANDLED;
			}

			payload[i]->irq_data = user_data >> (i * 0x8);
			payload[i]->irq_data = (user_data >> (i * 0x8)) &
				CAM_CDM_IRQ_STATUS_USR_DATA_MASK;

			if (payload[i]->irq_data ==
					CAM_CDM_DBG_GEN_IRQ_USR_DATA)