From 563db68137475d011b355bfe674d1b7a24778091 Mon Sep 17 00:00:00 2001
From: Robert Marko <robimarko@gmail.com>
Date: Sat, 8 Oct 2022 22:26:31 +0200
Subject: [PATCH] psci: dont advertise OSI support for IPQ6018

Some older IPQ60xx SoC series boards ship with TrustZone/QSEE firmware
older than TZ.WNS.5.1-00084 which will advertise OSI[1] but are broken
and trying to use OSI will cause the board to hang until WDT kicks in.

So workaround it by checking for SoC compatible and returning false so
OSI is not used.

[1] https://www.spinics.net/lists/linux-arm-msm/msg79916.html

Signed-off-by: Robert Marko <robimarko@gmail.com>
---
 drivers/firmware/psci/psci.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

--- a/drivers/firmware/psci/psci.c
+++ b/drivers/firmware/psci/psci.c
@@ -87,6 +87,18 @@ static inline bool psci_has_ext_power_st
 
 bool psci_has_osi_support(void)
 {
+	/*
+	 * Some older IPQ60xx SoC series boards ship with
+	 * TrustZone/QSEE firmware older than TZ.WNS.5.1-00084
+	 * which will advertise OSI but is broken and trying
+	 * to use OSI will cause the board to hang until WDT
+	 * kicks in.
+	 * So workaround it by checking for SoC compatible
+	 * and returning false so OSI is not used.
+	 */
+	if (of_machine_is_compatible("qcom,ipq6018"))
+		return false;
+
 	return psci_cpu_suspend_feature & PSCI_1_0_OS_INITIATED;
 }
 
