[PATCH 05/14] drivers/firmware/sdei: Remove sdei_get_conduit()

Gavin Shan gshan at redhat.com
Mon Jul 6 01:47:23 EDT 2020


There are some logics in sdei_get_conduit() can be safely dropped:

   * There are no associated device node with the platform device,
     so it's pointless to check on it.
   * ACPI functionality has been verified when the platform device
     is added in sdei_init(). So it's unnecessary to recheck.

With above logics dropped, sdei_get_conduit() is quite simple and
it's not worthy to maintain a separate function. The logic is merged
to sdei_probe() as it's the only caller.

Signed-off-by: Gavin Shan <gshan at redhat.com>
---
 drivers/firmware/arm_sdei.c | 40 +++----------------------------------
 1 file changed, 3 insertions(+), 37 deletions(-)

diff --git a/drivers/firmware/arm_sdei.c b/drivers/firmware/arm_sdei.c
index 7e7b26b1f91b..ca0e3f5eb907 100644
--- a/drivers/firmware/arm_sdei.c
+++ b/drivers/firmware/arm_sdei.c
@@ -933,49 +933,15 @@ int sdei_unregister_ghes(struct ghes *ghes)
 	return err;
 }
 
-static int sdei_get_conduit(struct platform_device *pdev)
-{
-	const char *method;
-	struct device_node *np = pdev->dev.of_node;
-
-	sdei_firmware_call = NULL;
-	if (np) {
-		if (of_property_read_string(np, "method", &method)) {
-			pr_warn("missing \"method\" property\n");
-			return SMCCC_CONDUIT_NONE;
-		}
-
-		if (!strcmp("hvc", method)) {
-			sdei_firmware_call = &sdei_smccc_hvc;
-			return SMCCC_CONDUIT_HVC;
-		} else if (!strcmp("smc", method)) {
-			sdei_firmware_call = &sdei_smccc_smc;
-			return SMCCC_CONDUIT_SMC;
-		}
-
-		pr_warn("invalid \"method\" property: %s\n", method);
-	} else if (IS_ENABLED(CONFIG_ACPI) && !acpi_disabled) {
-		if (acpi_psci_use_hvc()) {
-			sdei_firmware_call = &sdei_smccc_hvc;
-			return SMCCC_CONDUIT_HVC;
-		} else {
-			sdei_firmware_call = &sdei_smccc_smc;
-			return SMCCC_CONDUIT_SMC;
-		}
-	}
-
-	return SMCCC_CONDUIT_NONE;
-}
-
 static int sdei_probe(struct platform_device *pdev)
 {
 	int err;
 	u64 ver = 0;
 	int conduit;
 
-	conduit = sdei_get_conduit(pdev);
-	if (!sdei_firmware_call)
-		return 0;
+	conduit = acpi_psci_use_hvc() ? SMCCC_CONDUIT_HVC : SMCCC_CONDUIT_SMC;
+	sdei_firmware_call = acpi_psci_use_hvc() ?
+			     &sdei_smccc_hvc : &sdei_smccc_smc;
 
 	err = sdei_api_get_version(&ver);
 	if (err == -EOPNOTSUPP)
-- 
2.23.0




More information about the linux-arm-kernel mailing list