Merge cherrypicks of ['partner-android-review.googlesource.com/2592698'] into android13-msm-pixelwatch-5.15-eos-release.

Change-Id: I7f7eb1db051180144da7e185b6c71e04fa842518
diff --git a/asoc/codecs/bolero/rx-macro.c b/asoc/codecs/bolero/rx-macro.c
index c65ba5a..2465b34 100644
--- a/asoc/codecs/bolero/rx-macro.c
+++ b/asoc/codecs/bolero/rx-macro.c
@@ -3764,6 +3764,8 @@
 	struct rx_macro_priv *rx_priv = (struct rx_macro_priv *) handle;
 	struct regmap *regmap = dev_get_regmap(rx_priv->dev->parent, NULL);
 	int ret = 0;
+	int pm_suspend_ret;
+	int usage_count;
 
 	if (regmap == NULL) {
 		dev_err(rx_priv->dev, "%s: regmap is NULL\n", __func__);
@@ -3838,6 +3840,20 @@
 					__func__);
 				goto exit;
 			}
+
+			// By adding a synchronous call to pm_runtime_suspend() here,
+			// swr_mstr_interrupt() now explicitly turns off the clock rather
+			// than relying on autosuspend.
+			pm_suspend_ret = pm_runtime_suspend(rx_priv->dev);
+			if (pm_suspend_ret < 0) {
+				usage_count = atomic_read(&rx_priv->dev->power.usage_count);
+				trace_printk(
+					"%s: pm_runtime_suspend returned %d, usage_count %d\n",
+					__func__, pm_suspend_ret, usage_count);
+				dev_err(rx_priv->dev,
+					"%s: pm_runtime_suspend returned %d, usage_count %d\n",
+					__func__, pm_suspend_ret, usage_count);
+			}
 		}
 	}
 	trace_printk("%s: swrm clock users %d\n",