Browse Source

soc: Address SWR rate mismatch interrupt

SWR unknown interrupt value: 131072 happens when
disable handset/headphones. Handle DOUT_RATE_MISMATCH
irq to fix this issue.

Change-Id: Ibf3e93df0594eae10dc568bcd4de73526510b963
Signed-off-by: Deepali Jindal <[email protected]>
Deepali Jindal 1 year ago
parent
commit
db2a1f4e28
1 changed files with 9 additions and 1 deletions
  1. 9 1
      soc/swr-mstr-ctrl.c

+ 9 - 1
soc/swr-mstr-ctrl.c

@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
  * Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2024, Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 #include <linux/irq.h>
@@ -2281,6 +2281,14 @@ handle_irq:
 			/* Wait 3.5ms to clear */
 			usleep_range(3500, 3505);
 			break;
+		case SWRM_INTERRUPT_STATUS_DOUT_RATE_MISMATCH:
+			dev_err(swrm->dev,
+				"%s: SWR Port Channel rate mismatch\n", __func__);
+			swrm->intr_mask &=
+				~SWRM_INTERRUPT_STATUS_DOUT_RATE_MISMATCH;
+			swr_master_write(swrm,
+				SWRM_INTERRUPT_EN(swrm->ee_val), swrm->intr_mask);
+			break;
 		default:
 			dev_err_ratelimited(swrm->dev,
 					"%s: SWR unknown interrupt value: %d\n",