diff mbox series

[v2,08/18] firmware: qcom_scm-64: Remove qcom_scm_call_do_smccc

Message ID 1573593774-12539-9-git-send-email-eberman@codeaurora.org (mailing list archive)
State Superseded
Headers show
Series Restructure, improve target support for qcom_scm driver | expand

Commit Message

Elliot Berman Nov. 12, 2019, 9:22 p.m. UTC
Remove thin wrapper to qcom_scm_call_do_smccc because it doesn't do
enough of anything interesting to dedicate its own function.

Signed-off-by: Elliot Berman <eberman@codeaurora.org>
---
 drivers/firmware/qcom_scm-64.c | 46 ++++++++++++++++++------------------------
 1 file changed, 20 insertions(+), 26 deletions(-)

Comments

Stephen Boyd Nov. 15, 2019, 11:45 p.m. UTC | #1
Quoting Elliot Berman (2019-11-12 13:22:44)
> Remove thin wrapper to qcom_scm_call_do_smccc because it doesn't do
> enough of anything interesting to dedicate its own function.
> 
> Signed-off-by: Elliot Berman <eberman@codeaurora.org>
> ---

I don't see the need for this patch. The function was split out in a
patch earlier this year because it was too nested in the calling
function.

>  drivers/firmware/qcom_scm-64.c | 46 ++++++++++++++++++------------------------
>  1 file changed, 20 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/firmware/qcom_scm-64.c b/drivers/firmware/qcom_scm-64.c
> index f0a5f24..4131093 100644
> --- a/drivers/firmware/qcom_scm-64.c
> +++ b/drivers/firmware/qcom_scm-64.c
> @@ -90,31 +90,6 @@ static void __qcom_scm_call_do_quirk(const struct qcom_scm_desc *desc,
>         } while (res->a0 == QCOM_SCM_INTERRUPTED);
>  }
>  
> -static void qcom_scm_call_do_smccc(const struct qcom_scm_desc *desc,
> -                            struct arm_smccc_res *res, u64 x5, bool atomic)
> -{
> -       int retry_count = 0;

Maybe this can be unsigned given that it's a counter that only
increments.

> -
> -       if (atomic) {
> -               __qcom_scm_call_do_quirk(desc, res, x5, ARM_SMCCC_FAST_CALL);
> -               return;
> -       }
> -
> -       do {
> -               mutex_lock(&qcom_scm_lock);
> -
> -               __qcom_scm_call_do_quirk(desc, res, x5, ARM_SMCCC_STD_CALL);
> -
> -               mutex_unlock(&qcom_scm_lock);
> -
> -               if (res->a0 == QCOM_SCM_V2_EBUSY) {
> -                       if (retry_count++ > QCOM_SCM_EBUSY_MAX_RETRY)
> -                               break;
> -                       msleep(QCOM_SCM_EBUSY_WAIT_MS);
> -               }
> -       }  while (res->a0 == QCOM_SCM_V2_EBUSY);
> -}
> -
>  static int ___qcom_scm_call_smccc(struct device *dev,
>                                   struct qcom_scm_desc *desc, bool atomic)
>  {
diff mbox series

Patch

diff --git a/drivers/firmware/qcom_scm-64.c b/drivers/firmware/qcom_scm-64.c
index f0a5f24..4131093 100644
--- a/drivers/firmware/qcom_scm-64.c
+++ b/drivers/firmware/qcom_scm-64.c
@@ -90,31 +90,6 @@  static void __qcom_scm_call_do_quirk(const struct qcom_scm_desc *desc,
 	} while (res->a0 == QCOM_SCM_INTERRUPTED);
 }
 
-static void qcom_scm_call_do_smccc(const struct qcom_scm_desc *desc,
-			     struct arm_smccc_res *res, u64 x5, bool atomic)
-{
-	int retry_count = 0;
-
-	if (atomic) {
-		__qcom_scm_call_do_quirk(desc, res, x5, ARM_SMCCC_FAST_CALL);
-		return;
-	}
-
-	do {
-		mutex_lock(&qcom_scm_lock);
-
-		__qcom_scm_call_do_quirk(desc, res, x5, ARM_SMCCC_STD_CALL);
-
-		mutex_unlock(&qcom_scm_lock);
-
-		if (res->a0 == QCOM_SCM_V2_EBUSY) {
-			if (retry_count++ > QCOM_SCM_EBUSY_MAX_RETRY)
-				break;
-			msleep(QCOM_SCM_EBUSY_WAIT_MS);
-		}
-	}  while (res->a0 == QCOM_SCM_V2_EBUSY);
-}
-
 static int ___qcom_scm_call_smccc(struct device *dev,
 				  struct qcom_scm_desc *desc, bool atomic)
 {
@@ -159,7 +134,26 @@  static int ___qcom_scm_call_smccc(struct device *dev,
 		x5 = args_phys;
 	}
 
-	qcom_scm_call_do_smccc(desc, &res, x5, atomic);
+	if (atomic) {
+		__qcom_scm_call_do_quirk(desc, &res, x5, ARM_SMCCC_FAST_CALL);
+	} else {
+		int retry_count = 0;
+
+		do {
+			mutex_lock(&qcom_scm_lock);
+
+			__qcom_scm_call_do_quirk(desc, &res, x5,
+						 ARM_SMCCC_STD_CALL);
+
+			mutex_unlock(&qcom_scm_lock);
+
+			if (res.a0 == QCOM_SCM_V2_EBUSY) {
+				if (retry_count++ > QCOM_SCM_EBUSY_MAX_RETRY)
+					break;
+				msleep(QCOM_SCM_EBUSY_WAIT_MS);
+			}
+		} while (res.a0 == QCOM_SCM_V2_EBUSY);
+	}
 
 	if (args_virt) {
 		dma_unmap_single(dev, args_phys, alloc_len, DMA_TO_DEVICE);