|
|
@@ -0,0 +1,68 @@
|
|
|
+From ba5a61a08d83b18b99c461b4ddb9009947a4aa0e Mon Sep 17 00:00:00 2001
|
|
|
+From: Varadarajan Narayanan <[email protected]>
|
|
|
+Date: Tue, 31 Oct 2023 12:41:38 +0530
|
|
|
+Subject: [PATCH 1/2] cpufreq: qcom-nvmem: Enable cpufreq for ipq53xx
|
|
|
+
|
|
|
+IPQ53xx have different OPPs available for the CPU based on
|
|
|
+SoC variant. This can be determined through use of an eFuse
|
|
|
+register present in the silicon.
|
|
|
+
|
|
|
+Added support for ipq53xx on nvmem driver which helps to
|
|
|
+determine OPPs at runtime based on the eFuse register which
|
|
|
+has the CPU frequency limits. opp-supported-hw dt binding
|
|
|
+can be used to indicate the available OPPs for each limit.
|
|
|
+
|
|
|
+nvmem driver also creates the "cpufreq-dt" platform_device after
|
|
|
+passing the version matching data to the OPP framework so that the
|
|
|
+cpufreq-dt handles the actual cpufreq implementation.
|
|
|
+
|
|
|
+Reviewed-by: Dmitry Baryshkov <[email protected]>
|
|
|
+Reviewed-by: Bryan O'Donoghue <[email protected]>
|
|
|
+Signed-off-by: Kathiravan T <[email protected]>
|
|
|
+Signed-off-by: Varadarajan Narayanan <[email protected]>
|
|
|
+[ Viresh: Fixed subject ]
|
|
|
+Signed-off-by: Viresh Kumar <[email protected]>
|
|
|
+---
|
|
|
+ drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
|
|
|
+ drivers/cpufreq/qcom-cpufreq-nvmem.c | 6 ++++++
|
|
|
+ 2 files changed, 7 insertions(+)
|
|
|
+
|
|
|
+diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c
|
|
|
+index 07181913448f..53da25589e5f 100644
|
|
|
+--- a/drivers/cpufreq/cpufreq-dt-platdev.c
|
|
|
++++ b/drivers/cpufreq/cpufreq-dt-platdev.c
|
|
|
+@@ -180,6 +180,7 @@ static const struct of_device_id blocklist[] __initconst = {
|
|
|
+ { .compatible = "ti,am62a7", },
|
|
|
+ { .compatible = "ti,am62p5", },
|
|
|
+
|
|
|
++ { .compatible = "qcom,ipq5332", },
|
|
|
+ { .compatible = "qcom,ipq8064", },
|
|
|
+ { .compatible = "qcom,apq8064", },
|
|
|
+ { .compatible = "qcom,msm8974", },
|
|
|
+diff --git a/drivers/cpufreq/qcom-cpufreq-nvmem.c b/drivers/cpufreq/qcom-cpufreq-nvmem.c
|
|
|
+index 158c0e139185..4f7af70169e0 100644
|
|
|
+--- a/drivers/cpufreq/qcom-cpufreq-nvmem.c
|
|
|
++++ b/drivers/cpufreq/qcom-cpufreq-nvmem.c
|
|
|
+@@ -183,6 +183,11 @@ static int qcom_cpufreq_kryo_name_version(struct device *cpu_dev,
|
|
|
+ switch (msm_id) {
|
|
|
+ case QCOM_ID_MSM8996:
|
|
|
+ case QCOM_ID_APQ8096:
|
|
|
++ case QCOM_ID_IPQ5332:
|
|
|
++ case QCOM_ID_IPQ5322:
|
|
|
++ case QCOM_ID_IPQ5312:
|
|
|
++ case QCOM_ID_IPQ5302:
|
|
|
++ case QCOM_ID_IPQ5300:
|
|
|
+ drv->versions = 1 << (unsigned int)(*speedbin);
|
|
|
+ break;
|
|
|
+ case QCOM_ID_MSM8996SG:
|
|
|
+@@ -541,6 +546,7 @@ static const struct of_device_id qcom_cpufreq_match_list[] __initconst = {
|
|
|
+ { .compatible = "qcom,apq8096", .data = &match_data_kryo },
|
|
|
+ { .compatible = "qcom,msm8996", .data = &match_data_kryo },
|
|
|
+ { .compatible = "qcom,qcs404", .data = &match_data_qcs404 },
|
|
|
++ { .compatible = "qcom,ipq5332", .data = &match_data_kryo },
|
|
|
+ { .compatible = "qcom,ipq8064", .data = &match_data_krait },
|
|
|
+ { .compatible = "qcom,apq8064", .data = &match_data_krait },
|
|
|
+ { .compatible = "qcom,msm8974", .data = &match_data_krait },
|
|
|
+--
|
|
|
+2.45.2
|
|
|
+
|