scsi: ufs-qcom: Override devfreq parameters
authorAsutosh Das <asutoshd@codeaurora.org>
Wed, 25 Mar 2020 18:29:02 +0000 (11:29 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 27 Mar 2020 02:18:14 +0000 (22:18 -0400)
Override devfreq parameters for power-performance trade-off.

Link: https://lore.kernel.org/r/b6875729b6072134985c9113a820cf60a2af22e7.1585160616.git.asutoshd@codeaurora.org
Acked-by: Avri Altman <Avri.Altman@wdc.com>
Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufs-qcom.c

index 6115ac6..19aa5c4 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/phy/phy.h>
 #include <linux/gpio/consumer.h>
 #include <linux/reset-controller.h>
+#include <linux/devfreq.h>
 
 #include "ufshcd.h"
 #include "ufshcd-pltfrm.h"
@@ -1689,6 +1690,29 @@ static void ufs_qcom_device_reset(struct ufs_hba *hba)
        usleep_range(10, 15);
 }
 
+#if IS_ENABLED(CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND)
+static void ufs_qcom_config_scaling_param(struct ufs_hba *hba,
+                                         struct devfreq_dev_profile *p,
+                                         void *data)
+{
+       static struct devfreq_simple_ondemand_data *d;
+
+       if (!data)
+               return;
+
+       d = (struct devfreq_simple_ondemand_data *)data;
+       p->polling_ms = 60;
+       d->upthreshold = 70;
+       d->downdifferential = 5;
+}
+#else
+static void ufs_qcom_config_scaling_param(struct ufs_hba *hba,
+                                         struct devfreq_dev_profile *p,
+                                         void *data)
+{
+}
+#endif
+
 /**
  * struct ufs_hba_qcom_vops - UFS QCOM specific variant operations
  *
@@ -1710,6 +1734,7 @@ static const struct ufs_hba_variant_ops ufs_hba_qcom_vops = {
        .resume                 = ufs_qcom_resume,
        .dbg_register_dump      = ufs_qcom_dump_dbg_regs,
        .device_reset           = ufs_qcom_device_reset,
+       .config_scaling_param = ufs_qcom_config_scaling_param,
 };
 
 /**