linux-mediatek.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] Enhance mediatek-cpufreq robustness
@ 2023-03-24 10:11 jia-wei.chang
  2023-03-24 10:11 ` [PATCH v2 1/4] cpufreq: mediatek: fix passing zero to 'PTR_ERR' jia-wei.chang
                   ` (4 more replies)
  0 siblings, 5 replies; 19+ messages in thread
From: jia-wei.chang @ 2023-03-24 10:11 UTC (permalink / raw)
  To: Rafael J . Wysocki, Viresh Kumar, Matthias Brugger,
	AngeloGioacchino Del Regno, Kevin Hilman, Rex-BC Chen,
	Jia-Wei Chang
  Cc: linux-arm-kernel, linux-mediatek, linux-kernel,
	Project_Global_Chrome_Upstream_Group, hsinyi, Nick Hainke,
	Dan Carpenter

From: "Jia-Wei Chang" <jia-wei.chang@mediatek.com>

MediaTek cpufreq driver has some reported problems required to be fixed.

Change since v1:
- Fix error handling in patch [2/3] in a way of "Free the Last Thing
  Style". Refine its commit message tag.
- Remove the change for MT7622/7623 platform data in the patch [3/3].
- Add the patch for MT7622/7623 platform data [1] in this series.
[1]: Message ID: 20221202095227.167492-1-angelogioacchino.delregno@collabora.com/

Tested on:
MT8186 Platform (kernel v5.15)

AngeloGioacchino Del Regno (1):
  cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623

jia-wei.chang (3):
  cpufreq: mediatek: fix passing zero to 'PTR_ERR'
  cpufreq: mediatek: fix KP caused by handler usage after
    regulator_put/clk_put
  cpufreq: mediatek: raise proc/sram max voltage for MT8516

 drivers/cpufreq/mediatek-cpufreq.c | 98 +++++++++++++++++-------------
 1 file changed, 57 insertions(+), 41 deletions(-)

-- 
2.18.0



^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH v2 1/4] cpufreq: mediatek: fix passing zero to 'PTR_ERR'
  2023-03-24 10:11 [PATCH v2 0/4] Enhance mediatek-cpufreq robustness jia-wei.chang
@ 2023-03-24 10:11 ` jia-wei.chang
  2023-03-24 10:11 ` [PATCH v2 2/4] cpufreq: mediatek: fix KP caused by handler usage after regulator_put/clk_put jia-wei.chang
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 19+ messages in thread
From: jia-wei.chang @ 2023-03-24 10:11 UTC (permalink / raw)
  To: Rafael J . Wysocki, Viresh Kumar, Matthias Brugger,
	AngeloGioacchino Del Regno, Kevin Hilman, Rex-BC Chen,
	Jia-Wei Chang
  Cc: linux-arm-kernel, linux-mediatek, linux-kernel,
	Project_Global_Chrome_Upstream_Group, hsinyi, Nick Hainke,
	Dan Carpenter

From: "Jia-Wei Chang" <jia-wei.chang@mediatek.com>

In order to prevent passing zero to 'PTR_ERR' in
mtk_cpu_dvfs_info_init(), we fix the return value of of_get_cci() using
error pointer by explicitly casting error number.

Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
Fixes: 0daa47325bae ("cpufreq: mediatek: Link CCI device to CPU")
Reported-by: Dan Carpenter <error27@gmail.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/cpufreq/mediatek-cpufreq.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
index 7f2680bc9a0f..01d949707c37 100644
--- a/drivers/cpufreq/mediatek-cpufreq.c
+++ b/drivers/cpufreq/mediatek-cpufreq.c
@@ -373,13 +373,13 @@ static struct device *of_get_cci(struct device *cpu_dev)
 	struct platform_device *pdev;
 
 	np = of_parse_phandle(cpu_dev->of_node, "mediatek,cci", 0);
-	if (IS_ERR_OR_NULL(np))
-		return NULL;
+	if (!np)
+		return ERR_PTR(-ENODEV);
 
 	pdev = of_find_device_by_node(np);
 	of_node_put(np);
-	if (IS_ERR_OR_NULL(pdev))
-		return NULL;
+	if (!pdev)
+		return ERR_PTR(-ENODEV);
 
 	return &pdev->dev;
 }
@@ -401,7 +401,7 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
 	info->ccifreq_bound = false;
 	if (info->soc_data->ccifreq_supported) {
 		info->cci_dev = of_get_cci(info->cpu_dev);
-		if (IS_ERR_OR_NULL(info->cci_dev)) {
+		if (IS_ERR(info->cci_dev)) {
 			ret = PTR_ERR(info->cci_dev);
 			dev_err(cpu_dev, "cpu%d: failed to get cci device\n", cpu);
 			return -ENODEV;
-- 
2.18.0



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v2 2/4] cpufreq: mediatek: fix KP caused by handler usage after regulator_put/clk_put
  2023-03-24 10:11 [PATCH v2 0/4] Enhance mediatek-cpufreq robustness jia-wei.chang
  2023-03-24 10:11 ` [PATCH v2 1/4] cpufreq: mediatek: fix passing zero to 'PTR_ERR' jia-wei.chang
@ 2023-03-24 10:11 ` jia-wei.chang
  2023-03-24 10:11 ` [PATCH v2 3/4] cpufreq: mediatek: raise proc/sram max voltage for MT8516 jia-wei.chang
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 19+ messages in thread
From: jia-wei.chang @ 2023-03-24 10:11 UTC (permalink / raw)
  To: Rafael J . Wysocki, Viresh Kumar, Matthias Brugger,
	AngeloGioacchino Del Regno, Kevin Hilman, Rex-BC Chen,
	Jia-Wei Chang
  Cc: linux-arm-kernel, linux-mediatek, linux-kernel,
	Project_Global_Chrome_Upstream_Group, hsinyi, Nick Hainke,
	Dan Carpenter

From: "Jia-Wei Chang" <jia-wei.chang@mediatek.com>

Any kind of failure in mtk_cpu_dvfs_info_init() will lead to calling
regulator_put() or clk_put() and the KP will occur since the regulator/clk
handlers are used after released in mtk_cpu_dvfs_info_release().

To prevent the usage after regulator_put()/clk_put(), the regulator/clk
handlers are addressed in a way of "Free the Last Thing Style".

Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
Fixes: 4b9ceb757bbb ("cpufreq: mediatek: Enable clocks and regulators")
Suggested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/linux-arm-kernel/20220921071913.p7kwsjnnuad2jgvk@vireshk-i7/T/
Suggested-by: Dan Carpenter <error27@gmail.com>
Link: https://lore.kernel.org/lkml/67024b47-f3c9-4764-9883-d52602cfefca@kili.mountain/
---
 drivers/cpufreq/mediatek-cpufreq.c | 62 +++++++++++++++---------------
 1 file changed, 30 insertions(+), 32 deletions(-)

diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
index 01d949707c37..6dc225546a8d 100644
--- a/drivers/cpufreq/mediatek-cpufreq.c
+++ b/drivers/cpufreq/mediatek-cpufreq.c
@@ -420,7 +420,7 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
 		ret = PTR_ERR(info->inter_clk);
 		dev_err_probe(cpu_dev, ret,
 			      "cpu%d: failed to get intermediate clk\n", cpu);
-		goto out_free_resources;
+		goto out_free_mux_clock;
 	}
 
 	info->proc_reg = regulator_get_optional(cpu_dev, "proc");
@@ -428,13 +428,13 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
 		ret = PTR_ERR(info->proc_reg);
 		dev_err_probe(cpu_dev, ret,
 			      "cpu%d: failed to get proc regulator\n", cpu);
-		goto out_free_resources;
+		goto out_free_inter_clock;
 	}
 
 	ret = regulator_enable(info->proc_reg);
 	if (ret) {
 		dev_warn(cpu_dev, "cpu%d: failed to enable vproc\n", cpu);
-		goto out_free_resources;
+		goto out_free_proc_reg;
 	}
 
 	/* Both presence and absence of sram regulator are valid cases. */
@@ -442,14 +442,14 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
 	if (IS_ERR(info->sram_reg)) {
 		ret = PTR_ERR(info->sram_reg);
 		if (ret == -EPROBE_DEFER)
-			goto out_free_resources;
+			goto out_disable_proc_reg;
 
 		info->sram_reg = NULL;
 	} else {
 		ret = regulator_enable(info->sram_reg);
 		if (ret) {
 			dev_warn(cpu_dev, "cpu%d: failed to enable vsram\n", cpu);
-			goto out_free_resources;
+			goto out_free_sram_reg;
 		}
 	}
 
@@ -458,13 +458,13 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
 	if (ret) {
 		dev_err(cpu_dev,
 			"cpu%d: failed to get OPP-sharing information\n", cpu);
-		goto out_free_resources;
+		goto out_disable_sram_reg;
 	}
 
 	ret = dev_pm_opp_of_cpumask_add_table(&info->cpus);
 	if (ret) {
 		dev_warn(cpu_dev, "cpu%d: no OPP table\n", cpu);
-		goto out_free_resources;
+		goto out_disable_sram_reg;
 	}
 
 	ret = clk_prepare_enable(info->cpu_clk);
@@ -533,43 +533,41 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
 out_free_opp_table:
 	dev_pm_opp_of_cpumask_remove_table(&info->cpus);
 
-out_free_resources:
-	if (regulator_is_enabled(info->proc_reg))
-		regulator_disable(info->proc_reg);
-	if (info->sram_reg && regulator_is_enabled(info->sram_reg))
+out_disable_sram_reg:
+	if (info->sram_reg)
 		regulator_disable(info->sram_reg);
 
-	if (!IS_ERR(info->proc_reg))
-		regulator_put(info->proc_reg);
-	if (!IS_ERR(info->sram_reg))
+out_free_sram_reg:
+	if (info->sram_reg)
 		regulator_put(info->sram_reg);
-	if (!IS_ERR(info->cpu_clk))
-		clk_put(info->cpu_clk);
-	if (!IS_ERR(info->inter_clk))
-		clk_put(info->inter_clk);
+
+out_disable_proc_reg:
+	regulator_disable(info->proc_reg);
+
+out_free_proc_reg:
+	regulator_put(info->proc_reg);
+
+out_free_inter_clock:
+	clk_put(info->inter_clk);
+
+out_free_mux_clock:
+	clk_put(info->cpu_clk);
 
 	return ret;
 }
 
 static void mtk_cpu_dvfs_info_release(struct mtk_cpu_dvfs_info *info)
 {
-	if (!IS_ERR(info->proc_reg)) {
-		regulator_disable(info->proc_reg);
-		regulator_put(info->proc_reg);
-	}
-	if (!IS_ERR(info->sram_reg)) {
+	regulator_disable(info->proc_reg);
+	regulator_put(info->proc_reg);
+	if (info->sram_reg) {
 		regulator_disable(info->sram_reg);
 		regulator_put(info->sram_reg);
 	}
-	if (!IS_ERR(info->cpu_clk)) {
-		clk_disable_unprepare(info->cpu_clk);
-		clk_put(info->cpu_clk);
-	}
-	if (!IS_ERR(info->inter_clk)) {
-		clk_disable_unprepare(info->inter_clk);
-		clk_put(info->inter_clk);
-	}
-
+	clk_disable_unprepare(info->cpu_clk);
+	clk_put(info->cpu_clk);
+	clk_disable_unprepare(info->inter_clk);
+	clk_put(info->inter_clk);
 	dev_pm_opp_of_cpumask_remove_table(&info->cpus);
 	dev_pm_opp_unregister_notifier(info->cpu_dev, &info->opp_nb);
 }
-- 
2.18.0



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v2 3/4] cpufreq: mediatek: raise proc/sram max voltage for MT8516
  2023-03-24 10:11 [PATCH v2 0/4] Enhance mediatek-cpufreq robustness jia-wei.chang
  2023-03-24 10:11 ` [PATCH v2 1/4] cpufreq: mediatek: fix passing zero to 'PTR_ERR' jia-wei.chang
  2023-03-24 10:11 ` [PATCH v2 2/4] cpufreq: mediatek: fix KP caused by handler usage after regulator_put/clk_put jia-wei.chang
@ 2023-03-24 10:11 ` jia-wei.chang
  2023-03-24 13:11   ` AngeloGioacchino Del Regno
  2023-03-24 10:11 ` [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623 jia-wei.chang
  2023-03-30  3:50 ` [PATCH v2 0/4] Enhance mediatek-cpufreq robustness Viresh Kumar
  4 siblings, 1 reply; 19+ messages in thread
From: jia-wei.chang @ 2023-03-24 10:11 UTC (permalink / raw)
  To: Rafael J . Wysocki, Viresh Kumar, Matthias Brugger,
	AngeloGioacchino Del Regno, Kevin Hilman, Rex-BC Chen,
	Jia-Wei Chang
  Cc: linux-arm-kernel, linux-mediatek, linux-kernel,
	Project_Global_Chrome_Upstream_Group, hsinyi, Nick Hainke,
	Dan Carpenter

From: "Jia-Wei Chang" <jia-wei.chang@mediatek.com>

Since the upper boundary of proc/sram voltage of MT8516 is 1300 mV,
which is greater than the value of MT2701 1150 mV, we fix it by adding
the corresponding platform data and specify proc/sram_max_volt to
support MT8516.

Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage limits to platform data")
Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
Reported-by: Nick Hainke <vincent@systemli.org>
Link: https://lore.kernel.org/lkml/75216e0c-9d36-7ada-1507-1bb4a91a3326@systemli.org/T/
---
 drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
index 6dc225546a8d..764e4fbdd536 100644
--- a/drivers/cpufreq/mediatek-cpufreq.c
+++ b/drivers/cpufreq/mediatek-cpufreq.c
@@ -711,20 +711,29 @@ static const struct mtk_cpufreq_platform_data mt8186_platform_data = {
 	.ccifreq_supported = true,
 };
 
+static const struct mtk_cpufreq_platform_data mt8516_platform_data = {
+	.min_volt_shift = 100000,
+	.max_volt_shift = 200000,
+	.proc_max_volt = 1310000,
+	.sram_min_volt = 0,
+	.sram_max_volt = 1310000,
+	.ccifreq_supported = false,
+};
+
 /* List of machines supported by this driver */
 static const struct of_device_id mtk_cpufreq_machines[] __initconst = {
 	{ .compatible = "mediatek,mt2701", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt2712", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt7622", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt7623", .data = &mt2701_platform_data },
-	{ .compatible = "mediatek,mt8167", .data = &mt2701_platform_data },
+	{ .compatible = "mediatek,mt8167", .data = &mt8516_platform_data },
 	{ .compatible = "mediatek,mt817x", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt8173", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt8176", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt8183", .data = &mt8183_platform_data },
 	{ .compatible = "mediatek,mt8186", .data = &mt8186_platform_data },
 	{ .compatible = "mediatek,mt8365", .data = &mt2701_platform_data },
-	{ .compatible = "mediatek,mt8516", .data = &mt2701_platform_data },
+	{ .compatible = "mediatek,mt8516", .data = &mt8516_platform_data },
 	{ }
 };
 MODULE_DEVICE_TABLE(of, mtk_cpufreq_machines);
-- 
2.18.0



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-03-24 10:11 [PATCH v2 0/4] Enhance mediatek-cpufreq robustness jia-wei.chang
                   ` (2 preceding siblings ...)
  2023-03-24 10:11 ` [PATCH v2 3/4] cpufreq: mediatek: raise proc/sram max voltage for MT8516 jia-wei.chang
@ 2023-03-24 10:11 ` jia-wei.chang
  2023-05-22 18:03   ` Daniel Golle
  2023-03-30  3:50 ` [PATCH v2 0/4] Enhance mediatek-cpufreq robustness Viresh Kumar
  4 siblings, 1 reply; 19+ messages in thread
From: jia-wei.chang @ 2023-03-24 10:11 UTC (permalink / raw)
  To: Rafael J . Wysocki, Viresh Kumar, Matthias Brugger,
	AngeloGioacchino Del Regno, Kevin Hilman, Rex-BC Chen,
	Jia-Wei Chang
  Cc: linux-arm-kernel, linux-mediatek, linux-kernel,
	Project_Global_Chrome_Upstream_Group, hsinyi, Nick Hainke,
	Dan Carpenter

From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>

During the addition of SRAM voltage tracking for CCI scaling, this
driver got some voltage limits set for the vtrack algorithm: these
were moved to platform data first, then enforced in a later commit
6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
using these as max values for the regulator_set_voltage() calls.

In this case, the vsram/vproc constraints for MT7622 and MT7623
were supposed to be the same as MT2701 (and a number of other SoCs),
but that turned out to be a mistake because the aforementioned two
SoCs' maximum voltage for both VPROC and VPROC_SRAM is 1.36V.

Fix that by adding new platform data for MT7622/7623 declaring the
right {proc,sram}_max_volt parameter.

Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage limits to platform data")
Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
---
 drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
index 764e4fbdd536..9a39a7ccfae9 100644
--- a/drivers/cpufreq/mediatek-cpufreq.c
+++ b/drivers/cpufreq/mediatek-cpufreq.c
@@ -693,6 +693,15 @@ static const struct mtk_cpufreq_platform_data mt2701_platform_data = {
 	.ccifreq_supported = false,
 };
 
+static const struct mtk_cpufreq_platform_data mt7622_platform_data = {
+	.min_volt_shift = 100000,
+	.max_volt_shift = 200000,
+	.proc_max_volt = 1360000,
+	.sram_min_volt = 0,
+	.sram_max_volt = 1360000,
+	.ccifreq_supported = false,
+};
+
 static const struct mtk_cpufreq_platform_data mt8183_platform_data = {
 	.min_volt_shift = 100000,
 	.max_volt_shift = 200000,
@@ -724,8 +733,8 @@ static const struct mtk_cpufreq_platform_data mt8516_platform_data = {
 static const struct of_device_id mtk_cpufreq_machines[] __initconst = {
 	{ .compatible = "mediatek,mt2701", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt2712", .data = &mt2701_platform_data },
-	{ .compatible = "mediatek,mt7622", .data = &mt2701_platform_data },
-	{ .compatible = "mediatek,mt7623", .data = &mt2701_platform_data },
+	{ .compatible = "mediatek,mt7622", .data = &mt7622_platform_data },
+	{ .compatible = "mediatek,mt7623", .data = &mt7622_platform_data },
 	{ .compatible = "mediatek,mt8167", .data = &mt8516_platform_data },
 	{ .compatible = "mediatek,mt817x", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt8173", .data = &mt2701_platform_data },
-- 
2.18.0



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 3/4] cpufreq: mediatek: raise proc/sram max voltage for MT8516
  2023-03-24 10:11 ` [PATCH v2 3/4] cpufreq: mediatek: raise proc/sram max voltage for MT8516 jia-wei.chang
@ 2023-03-24 13:11   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 19+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-03-24 13:11 UTC (permalink / raw)
  To: jia-wei.chang, Rafael J . Wysocki, Viresh Kumar, Matthias Brugger,
	Kevin Hilman, Rex-BC Chen
  Cc: linux-arm-kernel, linux-mediatek, linux-kernel,
	Project_Global_Chrome_Upstream_Group, hsinyi, Nick Hainke,
	Dan Carpenter

Il 24/03/23 11:11, jia-wei.chang ha scritto:
> From: "Jia-Wei Chang" <jia-wei.chang@mediatek.com>
> 
> Since the upper boundary of proc/sram voltage of MT8516 is 1300 mV,
> which is greater than the value of MT2701 1150 mV, we fix it by adding
> the corresponding platform data and specify proc/sram_max_volt to
> support MT8516.
> 
> Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
> Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage limits to platform data")
> Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
> Reported-by: Nick Hainke <vincent@systemli.org>
> Link: https://lore.kernel.org/lkml/75216e0c-9d36-7ada-1507-1bb4a91a3326@systemli.org/T/

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>




^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 0/4] Enhance mediatek-cpufreq robustness
  2023-03-24 10:11 [PATCH v2 0/4] Enhance mediatek-cpufreq robustness jia-wei.chang
                   ` (3 preceding siblings ...)
  2023-03-24 10:11 ` [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623 jia-wei.chang
@ 2023-03-30  3:50 ` Viresh Kumar
  4 siblings, 0 replies; 19+ messages in thread
From: Viresh Kumar @ 2023-03-30  3:50 UTC (permalink / raw)
  To: jia-wei.chang
  Cc: Rafael J . Wysocki, Matthias Brugger, AngeloGioacchino Del Regno,
	Kevin Hilman, Rex-BC Chen, linux-arm-kernel, linux-mediatek,
	linux-kernel, Project_Global_Chrome_Upstream_Group, hsinyi,
	Nick Hainke, Dan Carpenter

On 24-03-23, 18:11, jia-wei.chang wrote:
> From: "Jia-Wei Chang" <jia-wei.chang@mediatek.com>
> 
> MediaTek cpufreq driver has some reported problems required to be fixed.
> 
> Change since v1:
> - Fix error handling in patch [2/3] in a way of "Free the Last Thing
>   Style". Refine its commit message tag.
> - Remove the change for MT7622/7623 platform data in the patch [3/3].
> - Add the patch for MT7622/7623 platform data [1] in this series.
> [1]: Message ID: 20221202095227.167492-1-angelogioacchino.delregno@collabora.com/
> 
> Tested on:
> MT8186 Platform (kernel v5.15)

Applied. Thanks.

-- 
viresh


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-03-24 10:11 ` [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623 jia-wei.chang
@ 2023-05-22 18:03   ` Daniel Golle
  2023-05-23 14:56     ` AngeloGioacchino Del Regno
  0 siblings, 1 reply; 19+ messages in thread
From: Daniel Golle @ 2023-05-22 18:03 UTC (permalink / raw)
  To: jia-wei.chang
  Cc: Rafael J . Wysocki, Viresh Kumar, Matthias Brugger,
	AngeloGioacchino Del Regno, Kevin Hilman, Rex-BC Chen,
	linux-arm-kernel, linux-mediatek, linux-kernel,
	Project_Global_Chrome_Upstream_Group, hsinyi, Nick Hainke,
	Dan Carpenter

Hi Jia-Wei,
Hi AngeloGioacchino,

On Fri, Mar 24, 2023 at 06:11:30PM +0800, jia-wei.chang wrote:
> From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> 
> During the addition of SRAM voltage tracking for CCI scaling, this
> driver got some voltage limits set for the vtrack algorithm: these
> were moved to platform data first, then enforced in a later commit
> 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
> using these as max values for the regulator_set_voltage() calls.
> 
> In this case, the vsram/vproc constraints for MT7622 and MT7623
> were supposed to be the same as MT2701 (and a number of other SoCs),
> but that turned out to be a mistake because the aforementioned two
> SoCs' maximum voltage for both VPROC and VPROC_SRAM is 1.36V.
> 
> Fix that by adding new platform data for MT7622/7623 declaring the
> right {proc,sram}_max_volt parameter.
> 
> Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage limits to platform data")
> Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
> ---
>  drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
> index 764e4fbdd536..9a39a7ccfae9 100644
> --- a/drivers/cpufreq/mediatek-cpufreq.c
> +++ b/drivers/cpufreq/mediatek-cpufreq.c
> @@ -693,6 +693,15 @@ static const struct mtk_cpufreq_platform_data mt2701_platform_data = {
>  	.ccifreq_supported = false,
>  };
>  
> +static const struct mtk_cpufreq_platform_data mt7622_platform_data = {
> +	.min_volt_shift = 100000,
> +	.max_volt_shift = 200000,
> +	.proc_max_volt = 1360000,
> +	.sram_min_volt = 0,
> +	.sram_max_volt = 1360000,

This change breaks cpufreq (with ondemand scheduler) on my BPi R64
board (having MT7622AV SoC with MT6380N PMIC).
...
[    2.540091] cpufreq: __target_index: Failed to change cpu frequency: -22
[    2.556985] cpu cpu0: cpu0: failed to scale up voltage!
...
(repeating a lot, every time the highest operating point is selected
by the cpufreq governor)

The reason is that the MT6380N doesn't support 1360000uV on the supply
outputs used for SRAM and processor.

As for some reason cpufreq-mediatek tries to rise the SRAM supply
voltage to the maximum for a short moment (probably a side-effect of
the voltage tracking algorithm), this fails because the PMIC only
supports up to 1350000uV. As the highest operating point is anyway
using only 1310000uV the simple fix is setting 1350000uV as the maximum
instead for both proc_max_volt and sram_max_volt.

A similar situation applies also for BPi R2 (MT7623NI with MT6323L
PMIC), here the maximum supported voltage of the PMIC which also only
supports up to 1350000uV, and the SoC having its highest operating
voltage defined at 1300000uV.

If all agree with the simple fix I will post a patch for that.

However, to me it feels fishy to begin with that the tracking algorithm
tries to rise the voltage above the highest operating point defined in
device tree, see here:

6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei Chang              2022-05-05 19:52:20 +0800 100)    new_vsram = clamp(new_vproc + soc_data->min_volt_shift,
6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei Chang              2022-05-05 19:52:20 +0800 101)                      soc_data->sram_min_volt, soc_data->sram_max_volt);

However, I did not investigate in depth the purpose of this
initial rise and can impossibly test my modifications to the
tracking algorithm on all supported SoCs.


Cheers


Daniel


> +	.ccifreq_supported = false,
> +};
> +
>  static const struct mtk_cpufreq_platform_data mt8183_platform_data = {
>  	.min_volt_shift = 100000,
>  	.max_volt_shift = 200000,
> @@ -724,8 +733,8 @@ static const struct mtk_cpufreq_platform_data mt8516_platform_data = {
>  static const struct of_device_id mtk_cpufreq_machines[] __initconst = {
>  	{ .compatible = "mediatek,mt2701", .data = &mt2701_platform_data },
>  	{ .compatible = "mediatek,mt2712", .data = &mt2701_platform_data },
> -	{ .compatible = "mediatek,mt7622", .data = &mt2701_platform_data },
> -	{ .compatible = "mediatek,mt7623", .data = &mt2701_platform_data },
> +	{ .compatible = "mediatek,mt7622", .data = &mt7622_platform_data },
> +	{ .compatible = "mediatek,mt7623", .data = &mt7622_platform_data },
>  	{ .compatible = "mediatek,mt8167", .data = &mt8516_platform_data },
>  	{ .compatible = "mediatek,mt817x", .data = &mt2701_platform_data },
>  	{ .compatible = "mediatek,mt8173", .data = &mt2701_platform_data },
> -- 
> 2.18.0
> 
> 


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-05-22 18:03   ` Daniel Golle
@ 2023-05-23 14:56     ` AngeloGioacchino Del Regno
  2023-05-23 17:37       ` Daniel Golle
  0 siblings, 1 reply; 19+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-05-23 14:56 UTC (permalink / raw)
  To: Daniel Golle, jia-wei.chang
  Cc: Rafael J . Wysocki, Viresh Kumar, Matthias Brugger, Kevin Hilman,
	Rex-BC Chen, linux-arm-kernel, linux-mediatek, linux-kernel,
	Project_Global_Chrome_Upstream_Group, hsinyi, Nick Hainke,
	Dan Carpenter

Il 22/05/23 20:03, Daniel Golle ha scritto:
> Hi Jia-Wei,
> Hi AngeloGioacchino,
> 
> On Fri, Mar 24, 2023 at 06:11:30PM +0800, jia-wei.chang wrote:
>> From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>>
>> During the addition of SRAM voltage tracking for CCI scaling, this
>> driver got some voltage limits set for the vtrack algorithm: these
>> were moved to platform data first, then enforced in a later commit
>> 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
>> using these as max values for the regulator_set_voltage() calls.
>>
>> In this case, the vsram/vproc constraints for MT7622 and MT7623
>> were supposed to be the same as MT2701 (and a number of other SoCs),
>> but that turned out to be a mistake because the aforementioned two
>> SoCs' maximum voltage for both VPROC and VPROC_SRAM is 1.36V.
>>
>> Fix that by adding new platform data for MT7622/7623 declaring the
>> right {proc,sram}_max_volt parameter.
>>
>> Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage limits to platform data")
>> Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
>> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>> Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
>> ---
>>   drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++--
>>   1 file changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
>> index 764e4fbdd536..9a39a7ccfae9 100644
>> --- a/drivers/cpufreq/mediatek-cpufreq.c
>> +++ b/drivers/cpufreq/mediatek-cpufreq.c
>> @@ -693,6 +693,15 @@ static const struct mtk_cpufreq_platform_data mt2701_platform_data = {
>>   	.ccifreq_supported = false,
>>   };
>>   
>> +static const struct mtk_cpufreq_platform_data mt7622_platform_data = {
>> +	.min_volt_shift = 100000,
>> +	.max_volt_shift = 200000,
>> +	.proc_max_volt = 1360000,
>> +	.sram_min_volt = 0,
>> +	.sram_max_volt = 1360000,
> 
> This change breaks cpufreq (with ondemand scheduler) on my BPi R64
> board (having MT7622AV SoC with MT6380N PMIC).
> ...
> [    2.540091] cpufreq: __target_index: Failed to change cpu frequency: -22
> [    2.556985] cpu cpu0: cpu0: failed to scale up voltage!
> ...
> (repeating a lot, every time the highest operating point is selected
> by the cpufreq governor)
> 
> The reason is that the MT6380N doesn't support 1360000uV on the supply
> outputs used for SRAM and processor.
> 
> As for some reason cpufreq-mediatek tries to rise the SRAM supply
> voltage to the maximum for a short moment (probably a side-effect of
> the voltage tracking algorithm), this fails because the PMIC only
> supports up to 1350000uV. As the highest operating point is anyway
> using only 1310000uV the simple fix is setting 1350000uV as the maximum
> instead for both proc_max_volt and sram_max_volt.
> 
> A similar situation applies also for BPi R2 (MT7623NI with MT6323L
> PMIC), here the maximum supported voltage of the PMIC which also only
> supports up to 1350000uV, and the SoC having its highest operating
> voltage defined at 1300000uV.
> 
> If all agree with the simple fix I will post a patch for that.
> 
> However, to me it feels fishy to begin with that the tracking algorithm
> tries to rise the voltage above the highest operating point defined in
> device tree, see here:
> 
> 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei Chang              2022-05-05 19:52:20 +0800 100)    new_vsram = clamp(new_vproc + soc_data->min_volt_shift,
> 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei Chang              2022-05-05 19:52:20 +0800 101)                      soc_data->sram_min_volt, soc_data->sram_max_volt);
> 
> However, I did not investigate in depth the purpose of this
> initial rise and can impossibly test my modifications to the
> tracking algorithm on all supported SoCs.
> 

Thanks for actually reporting that, I don't think that there's any
valid reason why the algorithm should set a voltage higher than the
maximum votage specified in the fastest OPP.

Anyway - the logic for the platform data of this driver is to declare
the maximum voltage that SoC model X supports, regardless of the actual
board-specific OPPs, so that part is right; to solve this issue, I guess
that the only way is for this driver to parse the OPPs during .probe()
and then always use in the algorithm

	vproc_max = max(proc_max_volt, opp_vproc_max);
	vsram_max = max(sram_max_volt, vsram_vreg_max);

Jia-Wei, can you please handle this?

Thanks,
Angelo



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-05-23 14:56     ` AngeloGioacchino Del Regno
@ 2023-05-23 17:37       ` Daniel Golle
  2023-05-24  7:28         ` AngeloGioacchino Del Regno
  0 siblings, 1 reply; 19+ messages in thread
From: Daniel Golle @ 2023-05-23 17:37 UTC (permalink / raw)
  To: AngeloGioacchino Del Regno
  Cc: jia-wei.chang, Rafael J . Wysocki, Viresh Kumar, Matthias Brugger,
	Kevin Hilman, Rex-BC Chen, linux-arm-kernel, linux-mediatek,
	linux-kernel, Project_Global_Chrome_Upstream_Group, hsinyi,
	Nick Hainke, Dan Carpenter

On Tue, May 23, 2023 at 04:56:47PM +0200, AngeloGioacchino Del Regno wrote:
> Il 22/05/23 20:03, Daniel Golle ha scritto:
> > Hi Jia-Wei,
> > Hi AngeloGioacchino,
> > 
> > On Fri, Mar 24, 2023 at 06:11:30PM +0800, jia-wei.chang wrote:
> > > From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> > > 
> > > During the addition of SRAM voltage tracking for CCI scaling, this
> > > driver got some voltage limits set for the vtrack algorithm: these
> > > were moved to platform data first, then enforced in a later commit
> > > 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
> > > using these as max values for the regulator_set_voltage() calls.
> > > 
> > > In this case, the vsram/vproc constraints for MT7622 and MT7623
> > > were supposed to be the same as MT2701 (and a number of other SoCs),
> > > but that turned out to be a mistake because the aforementioned two
> > > SoCs' maximum voltage for both VPROC and VPROC_SRAM is 1.36V.
> > > 
> > > Fix that by adding new platform data for MT7622/7623 declaring the
> > > right {proc,sram}_max_volt parameter.
> > > 
> > > Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage limits to platform data")
> > > Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
> > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> > > Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
> > > ---
> > >   drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++--
> > >   1 file changed, 11 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
> > > index 764e4fbdd536..9a39a7ccfae9 100644
> > > --- a/drivers/cpufreq/mediatek-cpufreq.c
> > > +++ b/drivers/cpufreq/mediatek-cpufreq.c
> > > @@ -693,6 +693,15 @@ static const struct mtk_cpufreq_platform_data mt2701_platform_data = {
> > >   	.ccifreq_supported = false,
> > >   };
> > > +static const struct mtk_cpufreq_platform_data mt7622_platform_data = {
> > > +	.min_volt_shift = 100000,
> > > +	.max_volt_shift = 200000,
> > > +	.proc_max_volt = 1360000,
> > > +	.sram_min_volt = 0,
> > > +	.sram_max_volt = 1360000,
> > 
> > This change breaks cpufreq (with ondemand scheduler) on my BPi R64
> > board (having MT7622AV SoC with MT6380N PMIC).
> > ...
> > [    2.540091] cpufreq: __target_index: Failed to change cpu frequency: -22
> > [    2.556985] cpu cpu0: cpu0: failed to scale up voltage!
> > ...
> > (repeating a lot, every time the highest operating point is selected
> > by the cpufreq governor)
> > 
> > The reason is that the MT6380N doesn't support 1360000uV on the supply
> > outputs used for SRAM and processor.
> > 
> > As for some reason cpufreq-mediatek tries to rise the SRAM supply
> > voltage to the maximum for a short moment (probably a side-effect of
> > the voltage tracking algorithm), this fails because the PMIC only
> > supports up to 1350000uV. As the highest operating point is anyway
> > using only 1310000uV the simple fix is setting 1350000uV as the maximum
> > instead for both proc_max_volt and sram_max_volt.
> > 
> > A similar situation applies also for BPi R2 (MT7623NI with MT6323L
> > PMIC), here the maximum supported voltage of the PMIC which also only
> > supports up to 1350000uV, and the SoC having its highest operating
> > voltage defined at 1300000uV.
> > 
> > If all agree with the simple fix I will post a patch for that.
> > 
> > However, to me it feels fishy to begin with that the tracking algorithm
> > tries to rise the voltage above the highest operating point defined in
> > device tree, see here:
> > 
> > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei Chang              2022-05-05 19:52:20 +0800 100)    new_vsram = clamp(new_vproc + soc_data->min_volt_shift,
> > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei Chang              2022-05-05 19:52:20 +0800 101)                      soc_data->sram_min_volt, soc_data->sram_max_volt);
> > 
> > However, I did not investigate in depth the purpose of this
> > initial rise and can impossibly test my modifications to the
> > tracking algorithm on all supported SoCs.
> > 
> 
> Thanks for actually reporting that, I don't think that there's any
> valid reason why the algorithm should set a voltage higher than the
> maximum votage specified in the fastest OPP.
> 
> Anyway - the logic for the platform data of this driver is to declare
> the maximum voltage that SoC model X supports, regardless of the actual
> board-specific OPPs, so that part is right; to solve this issue, I guess
> that the only way is for this driver to parse the OPPs during .probe()
> and then always use in the algorithm
> 
> 	vproc_max = max(proc_max_volt, opp_vproc_max);
> 	vsram_max = max(sram_max_volt, vsram_vreg_max);

You probably meant to write
vproc_max = min(proc_max_volt, opp_vproc_max);
vsram_max = min(sram_max_volt, vsram_vreg_max);

right?

> 
> Jia-Wei, can you please handle this?
> 
> Thanks,
> Angelo
> 


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-05-23 17:37       ` Daniel Golle
@ 2023-05-24  7:28         ` AngeloGioacchino Del Regno
  2023-05-24  8:43           ` Jia-wei Chang (張佳偉)
  0 siblings, 1 reply; 19+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-05-24  7:28 UTC (permalink / raw)
  To: Daniel Golle
  Cc: jia-wei.chang, Rafael J . Wysocki, Viresh Kumar, Matthias Brugger,
	Kevin Hilman, Rex-BC Chen, linux-arm-kernel, linux-mediatek,
	linux-kernel, Project_Global_Chrome_Upstream_Group, hsinyi,
	Nick Hainke, Dan Carpenter

Il 23/05/23 19:37, Daniel Golle ha scritto:
> On Tue, May 23, 2023 at 04:56:47PM +0200, AngeloGioacchino Del Regno wrote:
>> Il 22/05/23 20:03, Daniel Golle ha scritto:
>>> Hi Jia-Wei,
>>> Hi AngeloGioacchino,
>>>
>>> On Fri, Mar 24, 2023 at 06:11:30PM +0800, jia-wei.chang wrote:
>>>> From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>>>>
>>>> During the addition of SRAM voltage tracking for CCI scaling, this
>>>> driver got some voltage limits set for the vtrack algorithm: these
>>>> were moved to platform data first, then enforced in a later commit
>>>> 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
>>>> using these as max values for the regulator_set_voltage() calls.
>>>>
>>>> In this case, the vsram/vproc constraints for MT7622 and MT7623
>>>> were supposed to be the same as MT2701 (and a number of other SoCs),
>>>> but that turned out to be a mistake because the aforementioned two
>>>> SoCs' maximum voltage for both VPROC and VPROC_SRAM is 1.36V.
>>>>
>>>> Fix that by adding new platform data for MT7622/7623 declaring the
>>>> right {proc,sram}_max_volt parameter.
>>>>
>>>> Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage limits to platform data")
>>>> Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine mtk_cpufreq_voltage_tracking()")
>>>> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>>>> Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
>>>> ---
>>>>    drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++--
>>>>    1 file changed, 11 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
>>>> index 764e4fbdd536..9a39a7ccfae9 100644
>>>> --- a/drivers/cpufreq/mediatek-cpufreq.c
>>>> +++ b/drivers/cpufreq/mediatek-cpufreq.c
>>>> @@ -693,6 +693,15 @@ static const struct mtk_cpufreq_platform_data mt2701_platform_data = {
>>>>    	.ccifreq_supported = false,
>>>>    };
>>>> +static const struct mtk_cpufreq_platform_data mt7622_platform_data = {
>>>> +	.min_volt_shift = 100000,
>>>> +	.max_volt_shift = 200000,
>>>> +	.proc_max_volt = 1360000,
>>>> +	.sram_min_volt = 0,
>>>> +	.sram_max_volt = 1360000,
>>>
>>> This change breaks cpufreq (with ondemand scheduler) on my BPi R64
>>> board (having MT7622AV SoC with MT6380N PMIC).
>>> ...
>>> [    2.540091] cpufreq: __target_index: Failed to change cpu frequency: -22
>>> [    2.556985] cpu cpu0: cpu0: failed to scale up voltage!
>>> ...
>>> (repeating a lot, every time the highest operating point is selected
>>> by the cpufreq governor)
>>>
>>> The reason is that the MT6380N doesn't support 1360000uV on the supply
>>> outputs used for SRAM and processor.
>>>
>>> As for some reason cpufreq-mediatek tries to rise the SRAM supply
>>> voltage to the maximum for a short moment (probably a side-effect of
>>> the voltage tracking algorithm), this fails because the PMIC only
>>> supports up to 1350000uV. As the highest operating point is anyway
>>> using only 1310000uV the simple fix is setting 1350000uV as the maximum
>>> instead for both proc_max_volt and sram_max_volt.
>>>
>>> A similar situation applies also for BPi R2 (MT7623NI with MT6323L
>>> PMIC), here the maximum supported voltage of the PMIC which also only
>>> supports up to 1350000uV, and the SoC having its highest operating
>>> voltage defined at 1300000uV.
>>>
>>> If all agree with the simple fix I will post a patch for that.
>>>
>>> However, to me it feels fishy to begin with that the tracking algorithm
>>> tries to rise the voltage above the highest operating point defined in
>>> device tree, see here:
>>>
>>> 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei Chang              2022-05-05 19:52:20 +0800 100)    new_vsram = clamp(new_vproc + soc_data->min_volt_shift,
>>> 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei Chang              2022-05-05 19:52:20 +0800 101)                      soc_data->sram_min_volt, soc_data->sram_max_volt);
>>>
>>> However, I did not investigate in depth the purpose of this
>>> initial rise and can impossibly test my modifications to the
>>> tracking algorithm on all supported SoCs.
>>>
>>
>> Thanks for actually reporting that, I don't think that there's any
>> valid reason why the algorithm should set a voltage higher than the
>> maximum votage specified in the fastest OPP.
>>
>> Anyway - the logic for the platform data of this driver is to declare
>> the maximum voltage that SoC model X supports, regardless of the actual
>> board-specific OPPs, so that part is right; to solve this issue, I guess
>> that the only way is for this driver to parse the OPPs during .probe()
>> and then always use in the algorithm
>>
>> 	vproc_max = max(proc_max_volt, opp_vproc_max);
>> 	vsram_max = max(sram_max_volt, vsram_vreg_max);
> 
> You probably meant to write
> vproc_max = min(proc_max_volt, opp_vproc_max);
> vsram_max = min(sram_max_volt, vsram_vreg_max);
> 
> right?
> 

Apparently, some of my braincells was apparently taking a break. :-)

Yes, I was meaning min(), not max() :-)

Cheers!

>>
>> Jia-Wei, can you please handle this?
>>
>> Thanks,
>> Angelo
>>





^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-05-24  7:28         ` AngeloGioacchino Del Regno
@ 2023-05-24  8:43           ` Jia-wei Chang (張佳偉)
  2023-05-24 12:42             ` Daniel Golle
  0 siblings, 1 reply; 19+ messages in thread
From: Jia-wei Chang (張佳偉) @ 2023-05-24  8:43 UTC (permalink / raw)
  To: daniel@makrotopia.org, angelogioacchino.delregno@collabora.com
  Cc: linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
	vincent@systemli.org, hsinyi@google.com, viresh.kumar@linaro.org,
	Project_Global_Chrome_Upstream_Group,
	linux-arm-kernel@lists.infradead.org, khilman@baylibre.com,
	matthias.bgg@gmail.com, rafael@kernel.org,
	Rex-BC Chen (陳柏辰), error27@gmail.com

On Wed, 2023-05-24 at 09:28 +0200, AngeloGioacchino Del Regno wrote:
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
> 
> 
> Il 23/05/23 19:37, Daniel Golle ha scritto:
> > On Tue, May 23, 2023 at 04:56:47PM +0200, AngeloGioacchino Del
> > Regno wrote:
> > > Il 22/05/23 20:03, Daniel Golle ha scritto:
> > > > Hi Jia-Wei,
> > > > Hi AngeloGioacchino,
> > > > 
> > > > On Fri, Mar 24, 2023 at 06:11:30PM +0800, jia-wei.chang wrote:
> > > > > From: AngeloGioacchino Del Regno <
> > > > > angelogioacchino.delregno@collabora.com>
> > > > > 
> > > > > During the addition of SRAM voltage tracking for CCI scaling,
> > > > > this
> > > > > driver got some voltage limits set for the vtrack algorithm:
> > > > > these
> > > > > were moved to platform data first, then enforced in a later
> > > > > commit
> > > > > 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > mtk_cpufreq_voltage_tracking()")
> > > > > using these as max values for the regulator_set_voltage()
> > > > > calls.
> > > > > 
> > > > > In this case, the vsram/vproc constraints for MT7622 and
> > > > > MT7623
> > > > > were supposed to be the same as MT2701 (and a number of other
> > > > > SoCs),
> > > > > but that turned out to be a mistake because the
> > > > > aforementioned two
> > > > > SoCs' maximum voltage for both VPROC and VPROC_SRAM is 1.36V.
> > > > > 
> > > > > Fix that by adding new platform data for MT7622/7623
> > > > > declaring the
> > > > > right {proc,sram}_max_volt parameter.
> > > > > 
> > > > > Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage limits
> > > > > to platform data")
> > > > > Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > mtk_cpufreq_voltage_tracking()")
> > > > > Signed-off-by: AngeloGioacchino Del Regno <
> > > > > angelogioacchino.delregno@collabora.com>
> > > > > Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
> > > > > ---
> > > > >    drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++--
> > > > >    1 file changed, 11 insertions(+), 2 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > index 764e4fbdd536..9a39a7ccfae9 100644
> > > > > --- a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > +++ b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > @@ -693,6 +693,15 @@ static const struct
> > > > > mtk_cpufreq_platform_data mt2701_platform_data = {
> > > > >            .ccifreq_supported = false,
> > > > >    };
> > > > > +static const struct mtk_cpufreq_platform_data
> > > > > mt7622_platform_data = {
> > > > > +  .min_volt_shift = 100000,
> > > > > +  .max_volt_shift = 200000,
> > > > > +  .proc_max_volt = 1360000,
> > > > > +  .sram_min_volt = 0,
> > > > > +  .sram_max_volt = 1360000,
> > > > 
> > > > This change breaks cpufreq (with ondemand scheduler) on my BPi
> > > > R64
> > > > board (having MT7622AV SoC with MT6380N PMIC).
> > > > ...
> > > > [    2.540091] cpufreq: __target_index: Failed to change cpu
> > > > frequency: -22
> > > > [    2.556985] cpu cpu0: cpu0: failed to scale up voltage!
> > > > ...
> > > > (repeating a lot, every time the highest operating point is
> > > > selected
> > > > by the cpufreq governor)
> > > > 
> > > > The reason is that the MT6380N doesn't support 1360000uV on the
> > > > supply
> > > > outputs used for SRAM and processor.
> > > > 
> > > > As for some reason cpufreq-mediatek tries to rise the SRAM
> > > > supply
> > > > voltage to the maximum for a short moment (probably a side-
> > > > effect of
> > > > the voltage tracking algorithm), this fails because the PMIC
> > > > only
> > > > supports up to 1350000uV. As the highest operating point is
> > > > anyway
> > > > using only 1310000uV the simple fix is setting 1350000uV as the
> > > > maximum
> > > > instead for both proc_max_volt and sram_max_volt.
> > > > 
> > > > A similar situation applies also for BPi R2 (MT7623NI with
> > > > MT6323L
> > > > PMIC), here the maximum supported voltage of the PMIC which
> > > > also only
> > > > supports up to 1350000uV, and the SoC having its highest
> > > > operating
> > > > voltage defined at 1300000uV.
> > > > 
> > > > If all agree with the simple fix I will post a patch for that.
> > > > 
> > > > However, to me it feels fishy to begin with that the tracking
> > > > algorithm
> > > > tries to rise the voltage above the highest operating point
> > > > defined in
> > > > device tree, see here:
> > > > 
> > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei
> > > > Chang              2022-05-05 19:52:20 +0800 100)    new_vsram
> > > > = clamp(new_vproc + soc_data->min_volt_shift,
> > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei
> > > > Chang              2022-05-05 19:52:20 +0800
> > > > 101)                      soc_data->sram_min_volt, soc_data-
> > > > >sram_max_volt);
> > > > 
> > > > However, I did not investigate in depth the purpose of this
> > > > initial rise and can impossibly test my modifications to the
> > > > tracking algorithm on all supported SoCs.
> > > > 
> > > 
> > > Thanks for actually reporting that, I don't think that there's
> > > any
> > > valid reason why the algorithm should set a voltage higher than
> > > the
> > > maximum votage specified in the fastest OPP.
> > > 
> > > Anyway - the logic for the platform data of this driver is to
> > > declare
> > > the maximum voltage that SoC model X supports, regardless of the
> > > actual
> > > board-specific OPPs, so that part is right; to solve this issue,
> > > I guess
> > > that the only way is for this driver to parse the OPPs during
> > > .probe()
> > > and then always use in the algorithm
> > > 
> > >      vproc_max = max(proc_max_volt, opp_vproc_max);
> > >      vsram_max = max(sram_max_volt, vsram_vreg_max);

Hi Daniel, Angelo Sir,

Thanks for the issue report and suggestions.

Is it possible to modify the value of proc_max_volt and sram_max_volt
to 1310000 in mt7622_platform_data as the highest voltage declared in
mt7622.dtsi and then give it a try?

Sorry, I need someone help to check this on mt7622 since I don't have
mt7622 platform..

Thanks.

> > 
> > You probably meant to write
> > vproc_max = min(proc_max_volt, opp_vproc_max);
> > vsram_max = min(sram_max_volt, vsram_vreg_max);
> > 
> > right?
> > 
> 
> Apparently, some of my braincells was apparently taking a break. :-)
> 
> Yes, I was meaning min(), not max() :-)
> 
> Cheers!
> 
> > > 
> > > Jia-Wei, can you please handle this?
> > > 
> > > Thanks,
> > > Angelo
> > > 
> 
> 
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-05-24  8:43           ` Jia-wei Chang (張佳偉)
@ 2023-05-24 12:42             ` Daniel Golle
  2023-05-26  8:27               ` Jia-wei Chang (張佳偉)
  0 siblings, 1 reply; 19+ messages in thread
From: Daniel Golle @ 2023-05-24 12:42 UTC (permalink / raw)
  To: Jia-wei Chang (張佳偉)
  Cc: angelogioacchino.delregno@collabora.com,
	linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
	vincent@systemli.org, hsinyi@google.com, viresh.kumar@linaro.org,
	Project_Global_Chrome_Upstream_Group,
	linux-arm-kernel@lists.infradead.org, khilman@baylibre.com,
	matthias.bgg@gmail.com, rafael@kernel.org,
	Rex-BC Chen (陳柏辰), error27@gmail.com

On Wed, May 24, 2023 at 08:43:31AM +0000, Jia-wei Chang (張佳偉) wrote:
> On Wed, 2023-05-24 at 09:28 +0200, AngeloGioacchino Del Regno wrote:
> > External email : Please do not click links or open attachments until
> > you have verified the sender or the content.
> > 
> > 
> > Il 23/05/23 19:37, Daniel Golle ha scritto:
> > > On Tue, May 23, 2023 at 04:56:47PM +0200, AngeloGioacchino Del
> > > Regno wrote:
> > > > Il 22/05/23 20:03, Daniel Golle ha scritto:
> > > > > Hi Jia-Wei,
> > > > > Hi AngeloGioacchino,
> > > > > 
> > > > > On Fri, Mar 24, 2023 at 06:11:30PM +0800, jia-wei.chang wrote:
> > > > > > From: AngeloGioacchino Del Regno <
> > > > > > angelogioacchino.delregno@collabora.com>
> > > > > > 
> > > > > > During the addition of SRAM voltage tracking for CCI scaling,
> > > > > > this
> > > > > > driver got some voltage limits set for the vtrack algorithm:
> > > > > > these
> > > > > > were moved to platform data first, then enforced in a later
> > > > > > commit
> > > > > > 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > > mtk_cpufreq_voltage_tracking()")
> > > > > > using these as max values for the regulator_set_voltage()
> > > > > > calls.
> > > > > > 
> > > > > > In this case, the vsram/vproc constraints for MT7622 and
> > > > > > MT7623
> > > > > > were supposed to be the same as MT2701 (and a number of other
> > > > > > SoCs),
> > > > > > but that turned out to be a mistake because the
> > > > > > aforementioned two
> > > > > > SoCs' maximum voltage for both VPROC and VPROC_SRAM is 1.36V.
> > > > > > 
> > > > > > Fix that by adding new platform data for MT7622/7623
> > > > > > declaring the
> > > > > > right {proc,sram}_max_volt parameter.
> > > > > > 
> > > > > > Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage limits
> > > > > > to platform data")
> > > > > > Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > > mtk_cpufreq_voltage_tracking()")
> > > > > > Signed-off-by: AngeloGioacchino Del Regno <
> > > > > > angelogioacchino.delregno@collabora.com>
> > > > > > Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
> > > > > > ---
> > > > > >    drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++--
> > > > > >    1 file changed, 11 insertions(+), 2 deletions(-)
> > > > > > 
> > > > > > diff --git a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > index 764e4fbdd536..9a39a7ccfae9 100644
> > > > > > --- a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > +++ b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > @@ -693,6 +693,15 @@ static const struct
> > > > > > mtk_cpufreq_platform_data mt2701_platform_data = {
> > > > > >            .ccifreq_supported = false,
> > > > > >    };
> > > > > > +static const struct mtk_cpufreq_platform_data
> > > > > > mt7622_platform_data = {
> > > > > > +  .min_volt_shift = 100000,
> > > > > > +  .max_volt_shift = 200000,
> > > > > > +  .proc_max_volt = 1360000,
> > > > > > +  .sram_min_volt = 0,
> > > > > > +  .sram_max_volt = 1360000,
> > > > > 
> > > > > This change breaks cpufreq (with ondemand scheduler) on my BPi
> > > > > R64
> > > > > board (having MT7622AV SoC with MT6380N PMIC).
> > > > > ...
> > > > > [    2.540091] cpufreq: __target_index: Failed to change cpu
> > > > > frequency: -22
> > > > > [    2.556985] cpu cpu0: cpu0: failed to scale up voltage!
> > > > > ...
> > > > > (repeating a lot, every time the highest operating point is
> > > > > selected
> > > > > by the cpufreq governor)
> > > > > 
> > > > > The reason is that the MT6380N doesn't support 1360000uV on the
> > > > > supply
> > > > > outputs used for SRAM and processor.
> > > > > 
> > > > > As for some reason cpufreq-mediatek tries to rise the SRAM
> > > > > supply
> > > > > voltage to the maximum for a short moment (probably a side-
> > > > > effect of
> > > > > the voltage tracking algorithm), this fails because the PMIC
> > > > > only
> > > > > supports up to 1350000uV. As the highest operating point is
> > > > > anyway
> > > > > using only 1310000uV the simple fix is setting 1350000uV as the
> > > > > maximum
> > > > > instead for both proc_max_volt and sram_max_volt.
> > > > > 
> > > > > A similar situation applies also for BPi R2 (MT7623NI with
> > > > > MT6323L
> > > > > PMIC), here the maximum supported voltage of the PMIC which
> > > > > also only
> > > > > supports up to 1350000uV, and the SoC having its highest
> > > > > operating
> > > > > voltage defined at 1300000uV.
> > > > > 
> > > > > If all agree with the simple fix I will post a patch for that.
> > > > > 
> > > > > However, to me it feels fishy to begin with that the tracking
> > > > > algorithm
> > > > > tries to rise the voltage above the highest operating point
> > > > > defined in
> > > > > device tree, see here:
> > > > > 
> > > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei
> > > > > Chang              2022-05-05 19:52:20 +0800 100)    new_vsram
> > > > > = clamp(new_vproc + soc_data->min_volt_shift,
> > > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei
> > > > > Chang              2022-05-05 19:52:20 +0800
> > > > > 101)                      soc_data->sram_min_volt, soc_data-
> > > > > >sram_max_volt);
> > > > > 
> > > > > However, I did not investigate in depth the purpose of this
> > > > > initial rise and can impossibly test my modifications to the
> > > > > tracking algorithm on all supported SoCs.
> > > > > 
> > > > 
> > > > Thanks for actually reporting that, I don't think that there's
> > > > any
> > > > valid reason why the algorithm should set a voltage higher than
> > > > the
> > > > maximum votage specified in the fastest OPP.
> > > > 
> > > > Anyway - the logic for the platform data of this driver is to
> > > > declare
> > > > the maximum voltage that SoC model X supports, regardless of the
> > > > actual
> > > > board-specific OPPs, so that part is right; to solve this issue,
> > > > I guess
> > > > that the only way is for this driver to parse the OPPs during
> > > > .probe()
> > > > and then always use in the algorithm
> > > > 
> > > >      vproc_max = max(proc_max_volt, opp_vproc_max);
> > > >      vsram_max = max(sram_max_volt, vsram_vreg_max);
> 
> Hi Daniel, Angelo Sir,
> 
> Thanks for the issue report and suggestions.
> 
> Is it possible to modify the value of proc_max_volt and sram_max_volt
> to 1310000 in mt7622_platform_data as the highest voltage declared in
> mt7622.dtsi and then give it a try?
> 
> Sorry, I need someone help to check this on mt7622 since I don't have
> mt7622 platform..

Unfortunately also setting proc_max_volt and sram_max_volt to 1310000
doesn't work:
[    1.983325] cpu cpu0: cpu0: failed to scale up voltage!
[    1.988621] cpufreq: __target_index: Failed to change cpu frequency: -22
::repeating infinitely::

This is because in mt6380-regulator.c you can see
static const unsigned int ldo_volt_table1[] = {
        1400000, 1350000, 1300000, 1250000, 1200000, 1150000, 1100000, 1050000,
};

So 1310000 is not among the supported voltages but mediatek-cpufreq.c
will repeatedly call
regulator_set_voltage(sram_reg, 1310000, 1310000);
which will fail for obvious reasons.

Using 1350000 for proc_max_volt and sram_max_volt like I have suggested
as a simple work-around does work because 1350000 is among the supported
voltages of the MT6380 regulator.

On MT7623 the whole problem is anyway non-existent because there is no
separate sram-supply, hence the tracking algorithm isn't used at all.

> 
> Thanks.
> 
> > > 
> > > You probably meant to write
> > > vproc_max = min(proc_max_volt, opp_vproc_max);
> > > vsram_max = min(sram_max_volt, vsram_vreg_max);
> > > 
> > > right?
> > > 
> > 
> > Apparently, some of my braincells was apparently taking a break. :-)
> > 
> > Yes, I was meaning min(), not max() :-)
> > 
> > Cheers!
> > 
> > > > 
> > > > Jia-Wei, can you please handle this?
> > > > 
> > > > Thanks,
> > > > Angelo
> > > > 
> > 
> > 
> > 


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-05-24 12:42             ` Daniel Golle
@ 2023-05-26  8:27               ` Jia-wei Chang (張佳偉)
  2023-05-26  8:37                 ` Jia-wei Chang (張佳偉)
  2023-05-26 10:27                 ` Daniel Golle
  0 siblings, 2 replies; 19+ messages in thread
From: Jia-wei Chang (張佳偉) @ 2023-05-26  8:27 UTC (permalink / raw)
  To: daniel@makrotopia.org
  Cc: linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
	vincent@systemli.org, hsinyi@google.com, viresh.kumar@linaro.org,
	Project_Global_Chrome_Upstream_Group,
	linux-arm-kernel@lists.infradead.org, khilman@baylibre.com,
	matthias.bgg@gmail.com, rafael@kernel.org,
	Rex-BC Chen (陳柏辰),
	angelogioacchino.delregno@collabora.com,
	Chen Zhong (钟辰), error27@gmail.com

On Wed, 2023-05-24 at 13:42 +0100, Daniel Golle wrote:
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
> 
> 
> On Wed, May 24, 2023 at 08:43:31AM +0000, Jia-wei Chang (張佳偉) wrote:
> > On Wed, 2023-05-24 at 09:28 +0200, AngeloGioacchino Del Regno
> > wrote:
> > > External email : Please do not click links or open attachments
> > > until
> > > you have verified the sender or the content.
> > > 
> > > 
> > > Il 23/05/23 19:37, Daniel Golle ha scritto:
> > > > On Tue, May 23, 2023 at 04:56:47PM +0200, AngeloGioacchino Del
> > > > Regno wrote:
> > > > > Il 22/05/23 20:03, Daniel Golle ha scritto:
> > > > > > Hi Jia-Wei,
> > > > > > Hi AngeloGioacchino,
> > > > > > 
> > > > > > On Fri, Mar 24, 2023 at 06:11:30PM +0800, jia-wei.chang
> > > > > > wrote:
> > > > > > > From: AngeloGioacchino Del Regno <
> > > > > > > angelogioacchino.delregno@collabora.com>
> > > > > > > 
> > > > > > > During the addition of SRAM voltage tracking for CCI
> > > > > > > scaling,
> > > > > > > this
> > > > > > > driver got some voltage limits set for the vtrack
> > > > > > > algorithm:
> > > > > > > these
> > > > > > > were moved to platform data first, then enforced in a
> > > > > > > later
> > > > > > > commit
> > > > > > > 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > > > mtk_cpufreq_voltage_tracking()")
> > > > > > > using these as max values for the regulator_set_voltage()
> > > > > > > calls.
> > > > > > > 
> > > > > > > In this case, the vsram/vproc constraints for MT7622 and
> > > > > > > MT7623
> > > > > > > were supposed to be the same as MT2701 (and a number of
> > > > > > > other
> > > > > > > SoCs),
> > > > > > > but that turned out to be a mistake because the
> > > > > > > aforementioned two
> > > > > > > SoCs' maximum voltage for both VPROC and VPROC_SRAM is
> > > > > > > 1.36V.
> > > > > > > 
> > > > > > > Fix that by adding new platform data for MT7622/7623
> > > > > > > declaring the
> > > > > > > right {proc,sram}_max_volt parameter.
> > > > > > > 
> > > > > > > Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage
> > > > > > > limits
> > > > > > > to platform data")
> > > > > > > Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > > > mtk_cpufreq_voltage_tracking()")
> > > > > > > Signed-off-by: AngeloGioacchino Del Regno <
> > > > > > > angelogioacchino.delregno@collabora.com>
> > > > > > > Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
> > > > > > > ---
> > > > > > >    drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++--
> > > > > > >    1 file changed, 11 insertions(+), 2 deletions(-)
> > > > > > > 
> > > > > > > diff --git a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > index 764e4fbdd536..9a39a7ccfae9 100644
> > > > > > > --- a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > +++ b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > @@ -693,6 +693,15 @@ static const struct
> > > > > > > mtk_cpufreq_platform_data mt2701_platform_data = {
> > > > > > >            .ccifreq_supported = false,
> > > > > > >    };
> > > > > > > +static const struct mtk_cpufreq_platform_data
> > > > > > > mt7622_platform_data = {
> > > > > > > +  .min_volt_shift = 100000,
> > > > > > > +  .max_volt_shift = 200000,
> > > > > > > +  .proc_max_volt = 1360000,
> > > > > > > +  .sram_min_volt = 0,
> > > > > > > +  .sram_max_volt = 1360000,
> > > > > > 
> > > > > > This change breaks cpufreq (with ondemand scheduler) on my
> > > > > > BPi
> > > > > > R64
> > > > > > board (having MT7622AV SoC with MT6380N PMIC).
> > > > > > ...
> > > > > > [    2.540091] cpufreq: __target_index: Failed to change
> > > > > > cpu
> > > > > > frequency: -22
> > > > > > [    2.556985] cpu cpu0: cpu0: failed to scale up voltage!
> > > > > > ...
> > > > > > (repeating a lot, every time the highest operating point is
> > > > > > selected
> > > > > > by the cpufreq governor)
> > > > > > 
> > > > > > The reason is that the MT6380N doesn't support 1360000uV on
> > > > > > the
> > > > > > supply
> > > > > > outputs used for SRAM and processor.
> > > > > > 
> > > > > > As for some reason cpufreq-mediatek tries to rise the SRAM
> > > > > > supply
> > > > > > voltage to the maximum for a short moment (probably a side-
> > > > > > effect of
> > > > > > the voltage tracking algorithm), this fails because the
> > > > > > PMIC
> > > > > > only
> > > > > > supports up to 1350000uV. As the highest operating point is
> > > > > > anyway
> > > > > > using only 1310000uV the simple fix is setting 1350000uV as
> > > > > > the
> > > > > > maximum
> > > > > > instead for both proc_max_volt and sram_max_volt.
> > > > > > 
> > > > > > A similar situation applies also for BPi R2 (MT7623NI with
> > > > > > MT6323L
> > > > > > PMIC), here the maximum supported voltage of the PMIC which
> > > > > > also only
> > > > > > supports up to 1350000uV, and the SoC having its highest
> > > > > > operating
> > > > > > voltage defined at 1300000uV.
> > > > > > 
> > > > > > If all agree with the simple fix I will post a patch for
> > > > > > that.
> > > > > > 
> > > > > > However, to me it feels fishy to begin with that the
> > > > > > tracking
> > > > > > algorithm
> > > > > > tries to rise the voltage above the highest operating point
> > > > > > defined in
> > > > > > device tree, see here:
> > > > > > 
> > > > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei
> > > > > > Chang              2022-05-05 19:52:20 +0800
> > > > > > 100)    new_vsram
> > > > > > = clamp(new_vproc + soc_data->min_volt_shift,
> > > > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei
> > > > > > Chang              2022-05-05 19:52:20 +0800
> > > > > > 101)                      soc_data->sram_min_volt,
> > > > > > soc_data-
> > > > > > > sram_max_volt);
> > > > > > 
> > > > > > However, I did not investigate in depth the purpose of this
> > > > > > initial rise and can impossibly test my modifications to
> > > > > > the
> > > > > > tracking algorithm on all supported SoCs.
> > > > > > 
> > > > > 
> > > > > Thanks for actually reporting that, I don't think that
> > > > > there's
> > > > > any
> > > > > valid reason why the algorithm should set a voltage higher
> > > > > than
> > > > > the
> > > > > maximum votage specified in the fastest OPP.
> > > > > 
> > > > > Anyway - the logic for the platform data of this driver is to
> > > > > declare
> > > > > the maximum voltage that SoC model X supports, regardless of
> > > > > the
> > > > > actual
> > > > > board-specific OPPs, so that part is right; to solve this
> > > > > issue,
> > > > > I guess
> > > > > that the only way is for this driver to parse the OPPs during
> > > > > .probe()
> > > > > and then always use in the algorithm
> > > > > 
> > > > >      vproc_max = max(proc_max_volt, opp_vproc_max);
> > > > >      vsram_max = max(sram_max_volt, vsram_vreg_max);
> > 
> > Hi Daniel, Angelo Sir,
> > 
> > Thanks for the issue report and suggestions.
> > 
> > Is it possible to modify the value of proc_max_volt and
> > sram_max_volt
> > to 1310000 in mt7622_platform_data as the highest voltage declared
> > in
> > mt7622.dtsi and then give it a try?
> > 
> > Sorry, I need someone help to check this on mt7622 since I don't
> > have
> > mt7622 platform..
> 
> Unfortunately also setting proc_max_volt and sram_max_volt to 1310000
> doesn't work:
> [    1.983325] cpu cpu0: cpu0: failed to scale up voltage!
> [    1.988621] cpufreq: __target_index: Failed to change cpu
> frequency: -22
> ::repeating infinitely::
> 
> This is because in mt6380-regulator.c you can see
> static const unsigned int ldo_volt_table1[] = {
>         1400000, 1350000, 1300000, 1250000, 1200000, 1150000,
> 1100000, 1050000,
> };
> 
> So 1310000 is not among the supported voltages but mediatek-cpufreq.c
> will repeatedly call
> regulator_set_voltage(sram_reg, 1310000, 1310000);
> which will fail for obvious reasons.
> 
> Using 1350000 for proc_max_volt and sram_max_volt like I have
> suggested
> as a simple work-around does work because 1350000 is among the
> supported
> voltages of the MT6380 regulator.
> 
> On MT7623 the whole problem is anyway non-existent because there is
> no
> separate sram-supply, hence the tracking algorithm isn't used at all.
> 

Exactly.

For MT7622 platform data, I think it is proper to configure as:
.proc_max_volt = 1310000,
.sram_max_volt = 1350000,  // since mt6380_vm_reg ldo only supporting
{..., 1300000, 1350000, 1400000} as you mentioned.

For MT7623 platform data, it is required to add a new one.
.proc_max_volt = 1300000,
.sram_max_volt = 0,  // since no sram-supply like you said.

If MT7622 and MT7623 supplied voltage issues can be fixed by above
platform data, feel free to send the fix patch or inform me to do that.

Thanks for your help! :)

> > 
> > Thanks.
> > 
> > > > 
> > > > You probably meant to write
> > > > vproc_max = min(proc_max_volt, opp_vproc_max);
> > > > vsram_max = min(sram_max_volt, vsram_vreg_max);
> > > > 
> > > > right?
> > > > 
> > > 
> > > Apparently, some of my braincells was apparently taking a break.
> > > :-)
> > > 
> > > Yes, I was meaning min(), not max() :-)
> > > 
> > > Cheers!
> > > 
> > > > > 
> > > > > Jia-Wei, can you please handle this?
> > > > > 
> > > > > Thanks,
> > > > > Angelo
> > > > > 
> > > 
> > > 
> > > 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-05-26  8:27               ` Jia-wei Chang (張佳偉)
@ 2023-05-26  8:37                 ` Jia-wei Chang (張佳偉)
  2023-05-26 10:27                 ` Daniel Golle
  1 sibling, 0 replies; 19+ messages in thread
From: Jia-wei Chang (張佳偉) @ 2023-05-26  8:37 UTC (permalink / raw)
  To: daniel@makrotopia.org
  Cc: linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
	vincent@systemli.org, hsinyi@google.com, viresh.kumar@linaro.org,
	Project_Global_Chrome_Upstream_Group,
	linux-arm-kernel@lists.infradead.org, khilman@baylibre.com,
	matthias.bgg@gmail.com, rafael@kernel.org,
	Rex-BC Chen (陳柏辰),
	angelogioacchino.delregno@collabora.com,
	Chen Zhong (钟辰), error27@gmail.com

On Fri, 2023-05-26 at 16:27 +0800, Jia-Wei Chang wrote:
> On Wed, 2023-05-24 at 13:42 +0100, Daniel Golle wrote:
> > External email : Please do not click links or open attachments
> > until
> > you have verified the sender or the content.
> > 
> > 
> > On Wed, May 24, 2023 at 08:43:31AM +0000, Jia-wei Chang (張佳偉)
> > wrote:
> > > On Wed, 2023-05-24 at 09:28 +0200, AngeloGioacchino Del Regno
> > > wrote:
> > > > External email : Please do not click links or open attachments
> > > > until
> > > > you have verified the sender or the content.
> > > > 
> > > > 
> > > > Il 23/05/23 19:37, Daniel Golle ha scritto:
> > > > > On Tue, May 23, 2023 at 04:56:47PM +0200, AngeloGioacchino
> > > > > Del
> > > > > Regno wrote:
> > > > > > Il 22/05/23 20:03, Daniel Golle ha scritto:
> > > > > > > Hi Jia-Wei,
> > > > > > > Hi AngeloGioacchino,
> > > > > > > 
> > > > > > > On Fri, Mar 24, 2023 at 06:11:30PM +0800, jia-wei.chang
> > > > > > > wrote:
> > > > > > > > From: AngeloGioacchino Del Regno <
> > > > > > > > angelogioacchino.delregno@collabora.com>
> > > > > > > > 
> > > > > > > > During the addition of SRAM voltage tracking for CCI
> > > > > > > > scaling,
> > > > > > > > this
> > > > > > > > driver got some voltage limits set for the vtrack
> > > > > > > > algorithm:
> > > > > > > > these
> > > > > > > > were moved to platform data first, then enforced in a
> > > > > > > > later
> > > > > > > > commit
> > > > > > > > 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > > > > mtk_cpufreq_voltage_tracking()")
> > > > > > > > using these as max values for the
> > > > > > > > regulator_set_voltage()
> > > > > > > > calls.
> > > > > > > > 
> > > > > > > > In this case, the vsram/vproc constraints for MT7622
> > > > > > > > and
> > > > > > > > MT7623
> > > > > > > > were supposed to be the same as MT2701 (and a number of
> > > > > > > > other
> > > > > > > > SoCs),
> > > > > > > > but that turned out to be a mistake because the
> > > > > > > > aforementioned two
> > > > > > > > SoCs' maximum voltage for both VPROC and VPROC_SRAM is
> > > > > > > > 1.36V.
> > > > > > > > 
> > > > > > > > Fix that by adding new platform data for MT7622/7623
> > > > > > > > declaring the
> > > > > > > > right {proc,sram}_max_volt parameter.
> > > > > > > > 
> > > > > > > > Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage
> > > > > > > > limits
> > > > > > > > to platform data")
> > > > > > > > Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > > > > mtk_cpufreq_voltage_tracking()")
> > > > > > > > Signed-off-by: AngeloGioacchino Del Regno <
> > > > > > > > angelogioacchino.delregno@collabora.com>
> > > > > > > > Signed-off-by: Jia-Wei Chang <
> > > > > > > > jia-wei.chang@mediatek.com>
> > > > > > > > ---
> > > > > > > >    drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++-
> > > > > > > > -
> > > > > > > >    1 file changed, 11 insertions(+), 2 deletions(-)
> > > > > > > > 
> > > > > > > > diff --git a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > index 764e4fbdd536..9a39a7ccfae9 100644
> > > > > > > > --- a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > +++ b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > @@ -693,6 +693,15 @@ static const struct
> > > > > > > > mtk_cpufreq_platform_data mt2701_platform_data = {
> > > > > > > >            .ccifreq_supported = false,
> > > > > > > >    };
> > > > > > > > +static const struct mtk_cpufreq_platform_data
> > > > > > > > mt7622_platform_data = {
> > > > > > > > +  .min_volt_shift = 100000,
> > > > > > > > +  .max_volt_shift = 200000,
> > > > > > > > +  .proc_max_volt = 1360000,
> > > > > > > > +  .sram_min_volt = 0,
> > > > > > > > +  .sram_max_volt = 1360000,
> > > > > > > 
> > > > > > > This change breaks cpufreq (with ondemand scheduler) on
> > > > > > > my
> > > > > > > BPi
> > > > > > > R64
> > > > > > > board (having MT7622AV SoC with MT6380N PMIC).
> > > > > > > ...
> > > > > > > [    2.540091] cpufreq: __target_index: Failed to change
> > > > > > > cpu
> > > > > > > frequency: -22
> > > > > > > [    2.556985] cpu cpu0: cpu0: failed to scale up
> > > > > > > voltage!
> > > > > > > ...
> > > > > > > (repeating a lot, every time the highest operating point
> > > > > > > is
> > > > > > > selected
> > > > > > > by the cpufreq governor)
> > > > > > > 
> > > > > > > The reason is that the MT6380N doesn't support 1360000uV
> > > > > > > on
> > > > > > > the
> > > > > > > supply
> > > > > > > outputs used for SRAM and processor.
> > > > > > > 
> > > > > > > As for some reason cpufreq-mediatek tries to rise the
> > > > > > > SRAM
> > > > > > > supply
> > > > > > > voltage to the maximum for a short moment (probably a
> > > > > > > side-
> > > > > > > effect of
> > > > > > > the voltage tracking algorithm), this fails because the
> > > > > > > PMIC
> > > > > > > only
> > > > > > > supports up to 1350000uV. As the highest operating point
> > > > > > > is
> > > > > > > anyway
> > > > > > > using only 1310000uV the simple fix is setting 1350000uV
> > > > > > > as
> > > > > > > the
> > > > > > > maximum
> > > > > > > instead for both proc_max_volt and sram_max_volt.
> > > > > > > 
> > > > > > > A similar situation applies also for BPi R2 (MT7623NI
> > > > > > > with
> > > > > > > MT6323L
> > > > > > > PMIC), here the maximum supported voltage of the PMIC
> > > > > > > which
> > > > > > > also only
> > > > > > > supports up to 1350000uV, and the SoC having its highest
> > > > > > > operating
> > > > > > > voltage defined at 1300000uV.
> > > > > > > 
> > > > > > > If all agree with the simple fix I will post a patch for
> > > > > > > that.
> > > > > > > 
> > > > > > > However, to me it feels fishy to begin with that the
> > > > > > > tracking
> > > > > > > algorithm
> > > > > > > tries to rise the voltage above the highest operating
> > > > > > > point
> > > > > > > defined in
> > > > > > > device tree, see here:
> > > > > > > 
> > > > > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-
> > > > > > > Wei
> > > > > > > Chang              2022-05-05 19:52:20 +0800
> > > > > > > 100)    new_vsram
> > > > > > > = clamp(new_vproc + soc_data->min_volt_shift,
> > > > > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-
> > > > > > > Wei
> > > > > > > Chang              2022-05-05 19:52:20 +0800
> > > > > > > 101)                      soc_data->sram_min_volt,
> > > > > > > soc_data-
> > > > > > > > sram_max_volt);
> > > > > > > 
> > > > > > > However, I did not investigate in depth the purpose of
> > > > > > > this
> > > > > > > initial rise and can impossibly test my modifications to
> > > > > > > the
> > > > > > > tracking algorithm on all supported SoCs.
> > > > > > > 
> > > > > > 
> > > > > > Thanks for actually reporting that, I don't think that
> > > > > > there's
> > > > > > any
> > > > > > valid reason why the algorithm should set a voltage higher
> > > > > > than
> > > > > > the
> > > > > > maximum votage specified in the fastest OPP.
> > > > > > 
> > > > > > Anyway - the logic for the platform data of this driver is
> > > > > > to
> > > > > > declare
> > > > > > the maximum voltage that SoC model X supports, regardless
> > > > > > of
> > > > > > the
> > > > > > actual
> > > > > > board-specific OPPs, so that part is right; to solve this
> > > > > > issue,
> > > > > > I guess
> > > > > > that the only way is for this driver to parse the OPPs
> > > > > > during
> > > > > > .probe()
> > > > > > and then always use in the algorithm
> > > > > > 
> > > > > >      vproc_max = max(proc_max_volt, opp_vproc_max);
> > > > > >      vsram_max = max(sram_max_volt, vsram_vreg_max);
> > > 
> > > Hi Daniel, Angelo Sir,
> > > 
> > > Thanks for the issue report and suggestions.
> > > 
> > > Is it possible to modify the value of proc_max_volt and
> > > sram_max_volt
> > > to 1310000 in mt7622_platform_data as the highest voltage
> > > declared
> > > in
> > > mt7622.dtsi and then give it a try?
> > > 
> > > Sorry, I need someone help to check this on mt7622 since I don't
> > > have
> > > mt7622 platform..
> > 
> > Unfortunately also setting proc_max_volt and sram_max_volt to
> > 1310000
> > doesn't work:
> > [    1.983325] cpu cpu0: cpu0: failed to scale up voltage!
> > [    1.988621] cpufreq: __target_index: Failed to change cpu
> > frequency: -22
> > ::repeating infinitely::
> > 
> > This is because in mt6380-regulator.c you can see
> > static const unsigned int ldo_volt_table1[] = {
> >         1400000, 1350000, 1300000, 1250000, 1200000, 1150000,
> > 1100000, 1050000,
> > };
> > 
> > So 1310000 is not among the supported voltages but mediatek-
> > cpufreq.c
> > will repeatedly call
> > regulator_set_voltage(sram_reg, 1310000, 1310000);
> > which will fail for obvious reasons.
> > 
> > Using 1350000 for proc_max_volt and sram_max_volt like I have
> > suggested
> > as a simple work-around does work because 1350000 is among the
> > supported
> > voltages of the MT6380 regulator.
> > 
> > On MT7623 the whole problem is anyway non-existent because there is
> > no
> > separate sram-supply, hence the tracking algorithm isn't used at
> > all.
> > 
> 
> Exactly.
> 
> For MT7622 platform data, I think it is proper to configure as:
> .proc_max_volt = 1310000,
> .sram_max_volt = 1350000,  // since mt6380_vm_reg ldo only supporting
> {..., 1300000, 1350000, 1400000} as you mentioned.
> 
> For MT7623 platform data, it is required to add a new one.
> .proc_max_volt = 1300000,
> .sram_max_volt = 0,  // since no sram-supply like you said.
> 

Note that:

Actually, proc and sram of MT7623 are supplied by one power rail so
that to add sram-supply in dts or assign sram_max_volt = 1300000 in
driver are NOT necessary.

> If MT7622 and MT7623 supplied voltage issues can be fixed by above
> platform data, feel free to send the fix patch or inform me to do
> that.
> 
> Thanks for your help! :)
> 
> > > 
> > > Thanks.
> > > 
> > > > > 
> > > > > You probably meant to write
> > > > > vproc_max = min(proc_max_volt, opp_vproc_max);
> > > > > vsram_max = min(sram_max_volt, vsram_vreg_max);
> > > > > 
> > > > > right?
> > > > > 
> > > > 
> > > > Apparently, some of my braincells was apparently taking a
> > > > break.
> > > > :-)
> > > > 
> > > > Yes, I was meaning min(), not max() :-)
> > > > 
> > > > Cheers!
> > > > 
> > > > > > 
> > > > > > Jia-Wei, can you please handle this?
> > > > > > 
> > > > > > Thanks,
> > > > > > Angelo
> > > > > > 
> > > > 
> > > > 
> > > > 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-05-26  8:27               ` Jia-wei Chang (張佳偉)
  2023-05-26  8:37                 ` Jia-wei Chang (張佳偉)
@ 2023-05-26 10:27                 ` Daniel Golle
  2023-05-29  4:12                   ` Jia-wei Chang (張佳偉)
  1 sibling, 1 reply; 19+ messages in thread
From: Daniel Golle @ 2023-05-26 10:27 UTC (permalink / raw)
  To: Jia-wei Chang (張佳偉)
  Cc: linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
	vincent@systemli.org, hsinyi@google.com, viresh.kumar@linaro.org,
	Project_Global_Chrome_Upstream_Group,
	linux-arm-kernel@lists.infradead.org, khilman@baylibre.com,
	matthias.bgg@gmail.com, rafael@kernel.org,
	Rex-BC Chen (陳柏辰),
	angelogioacchino.delregno@collabora.com,
	Chen Zhong (钟辰), error27@gmail.com

On Fri, May 26, 2023 at 08:27:25AM +0000, Jia-wei Chang (張佳偉) wrote:
> On Wed, 2023-05-24 at 13:42 +0100, Daniel Golle wrote:
> > On Wed, May 24, 2023 at 08:43:31AM +0000, Jia-wei Chang (張佳偉) wrote:
> > > On Wed, 2023-05-24 at 09:28 +0200, AngeloGioacchino Del Regno wrote:
> > > > Il 23/05/23 19:37, Daniel Golle ha scritto:
> > > > > On Tue, May 23, 2023 at 04:56:47PM +0200, AngeloGioacchino Del
> > > > > Regno wrote:
> > > > > > Il 22/05/23 20:03, Daniel Golle ha scritto:
> > > > > > > Hi Jia-Wei,
> > > > > > > Hi AngeloGioacchino,
> > > > > > > 
> > > > > > > On Fri, Mar 24, 2023 at 06:11:30PM +0800, jia-wei.chang
> > > > > > > wrote:
> > > > > > > > From: AngeloGioacchino Del Regno <
> > > > > > > > angelogioacchino.delregno@collabora.com>
> > > > > > > > 
> > > > > > > > During the addition of SRAM voltage tracking for CCI
> > > > > > > > scaling,
> > > > > > > > this
> > > > > > > > driver got some voltage limits set for the vtrack
> > > > > > > > algorithm:
> > > > > > > > these
> > > > > > > > were moved to platform data first, then enforced in a
> > > > > > > > later
> > > > > > > > commit
> > > > > > > > 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > > > > mtk_cpufreq_voltage_tracking()")
> > > > > > > > using these as max values for the regulator_set_voltage()
> > > > > > > > calls.
> > > > > > > > 
> > > > > > > > In this case, the vsram/vproc constraints for MT7622 and
> > > > > > > > MT7623
> > > > > > > > were supposed to be the same as MT2701 (and a number of
> > > > > > > > other
> > > > > > > > SoCs),
> > > > > > > > but that turned out to be a mistake because the
> > > > > > > > aforementioned two
> > > > > > > > SoCs' maximum voltage for both VPROC and VPROC_SRAM is
> > > > > > > > 1.36V.
> > > > > > > > 
> > > > > > > > Fix that by adding new platform data for MT7622/7623
> > > > > > > > declaring the
> > > > > > > > right {proc,sram}_max_volt parameter.
> > > > > > > > 
> > > > > > > > Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage
> > > > > > > > limits
> > > > > > > > to platform data")
> > > > > > > > Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > > > > mtk_cpufreq_voltage_tracking()")
> > > > > > > > Signed-off-by: AngeloGioacchino Del Regno <
> > > > > > > > angelogioacchino.delregno@collabora.com>
> > > > > > > > Signed-off-by: Jia-Wei Chang <jia-wei.chang@mediatek.com>
> > > > > > > > ---
> > > > > > > >    drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++--
> > > > > > > >    1 file changed, 11 insertions(+), 2 deletions(-)
> > > > > > > > 
> > > > > > > > diff --git a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > index 764e4fbdd536..9a39a7ccfae9 100644
> > > > > > > > --- a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > +++ b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > @@ -693,6 +693,15 @@ static const struct
> > > > > > > > mtk_cpufreq_platform_data mt2701_platform_data = {
> > > > > > > >            .ccifreq_supported = false,
> > > > > > > >    };
> > > > > > > > +static const struct mtk_cpufreq_platform_data
> > > > > > > > mt7622_platform_data = {
> > > > > > > > +  .min_volt_shift = 100000,
> > > > > > > > +  .max_volt_shift = 200000,
> > > > > > > > +  .proc_max_volt = 1360000,
> > > > > > > > +  .sram_min_volt = 0,
> > > > > > > > +  .sram_max_volt = 1360000,
> > > > > > > 
> > > > > > > This change breaks cpufreq (with ondemand scheduler) on my
> > > > > > > BPi
> > > > > > > R64
> > > > > > > board (having MT7622AV SoC with MT6380N PMIC).
> > > > > > > ...
> > > > > > > [    2.540091] cpufreq: __target_index: Failed to change
> > > > > > > cpu
> > > > > > > frequency: -22
> > > > > > > [    2.556985] cpu cpu0: cpu0: failed to scale up voltage!
> > > > > > > ...
> > > > > > > (repeating a lot, every time the highest operating point is
> > > > > > > selected
> > > > > > > by the cpufreq governor)
> > > > > > > 
> > > > > > > The reason is that the MT6380N doesn't support 1360000uV on
> > > > > > > the
> > > > > > > supply
> > > > > > > outputs used for SRAM and processor.
> > > > > > > 
> > > > > > > As for some reason cpufreq-mediatek tries to rise the SRAM
> > > > > > > supply
> > > > > > > voltage to the maximum for a short moment (probably a side-
> > > > > > > effect of
> > > > > > > the voltage tracking algorithm), this fails because the
> > > > > > > PMIC
> > > > > > > only
> > > > > > > supports up to 1350000uV. As the highest operating point is
> > > > > > > anyway
> > > > > > > using only 1310000uV the simple fix is setting 1350000uV as
> > > > > > > the
> > > > > > > maximum
> > > > > > > instead for both proc_max_volt and sram_max_volt.
> > > > > > > 
> > > > > > > A similar situation applies also for BPi R2 (MT7623NI with
> > > > > > > MT6323L
> > > > > > > PMIC), here the maximum supported voltage of the PMIC which
> > > > > > > also only
> > > > > > > supports up to 1350000uV, and the SoC having its highest
> > > > > > > operating
> > > > > > > voltage defined at 1300000uV.
> > > > > > > 
> > > > > > > If all agree with the simple fix I will post a patch for
> > > > > > > that.
> > > > > > > 
> > > > > > > However, to me it feels fishy to begin with that the
> > > > > > > tracking
> > > > > > > algorithm
> > > > > > > tries to rise the voltage above the highest operating point
> > > > > > > defined in
> > > > > > > device tree, see here:
> > > > > > > 
> > > > > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei
> > > > > > > Chang              2022-05-05 19:52:20 +0800
> > > > > > > 100)    new_vsram
> > > > > > > = clamp(new_vproc + soc_data->min_volt_shift,
> > > > > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-Wei
> > > > > > > Chang              2022-05-05 19:52:20 +0800
> > > > > > > 101)                      soc_data->sram_min_volt,
> > > > > > > soc_data-
> > > > > > > > sram_max_volt);
> > > > > > > 
> > > > > > > However, I did not investigate in depth the purpose of this
> > > > > > > initial rise and can impossibly test my modifications to
> > > > > > > the
> > > > > > > tracking algorithm on all supported SoCs.
> > > > > > > 
> > > > > > 
> > > > > > Thanks for actually reporting that, I don't think that
> > > > > > there's
> > > > > > any
> > > > > > valid reason why the algorithm should set a voltage higher
> > > > > > than
> > > > > > the
> > > > > > maximum votage specified in the fastest OPP.
> > > > > > 
> > > > > > Anyway - the logic for the platform data of this driver is to
> > > > > > declare
> > > > > > the maximum voltage that SoC model X supports, regardless of
> > > > > > the
> > > > > > actual
> > > > > > board-specific OPPs, so that part is right; to solve this
> > > > > > issue,
> > > > > > I guess
> > > > > > that the only way is for this driver to parse the OPPs during
> > > > > > .probe()
> > > > > > and then always use in the algorithm
> > > > > > 
> > > > > >      vproc_max = max(proc_max_volt, opp_vproc_max);
> > > > > >      vsram_max = max(sram_max_volt, vsram_vreg_max);
> > > 
> > > Hi Daniel, Angelo Sir,
> > > 
> > > Thanks for the issue report and suggestions.
> > > 
> > > Is it possible to modify the value of proc_max_volt and
> > > sram_max_volt
> > > to 1310000 in mt7622_platform_data as the highest voltage declared
> > > in
> > > mt7622.dtsi and then give it a try?
> > > 
> > > Sorry, I need someone help to check this on mt7622 since I don't
> > > have
> > > mt7622 platform..
> > 
> > Unfortunately also setting proc_max_volt and sram_max_volt to 1310000
> > doesn't work:
> > [    1.983325] cpu cpu0: cpu0: failed to scale up voltage!
> > [    1.988621] cpufreq: __target_index: Failed to change cpu
> > frequency: -22
> > ::repeating infinitely::
> > 
> > This is because in mt6380-regulator.c you can see
> > static const unsigned int ldo_volt_table1[] = {
> >         1400000, 1350000, 1300000, 1250000, 1200000, 1150000,
> > 1100000, 1050000,
> > };
> > 
> > So 1310000 is not among the supported voltages but mediatek-cpufreq.c
> > will repeatedly call
> > regulator_set_voltage(sram_reg, 1310000, 1310000);
> > which will fail for obvious reasons.
> > 
> > Using 1350000 for proc_max_volt and sram_max_volt like I have
> > suggested
> > as a simple work-around does work because 1350000 is among the
> > supported
> > voltages of the MT6380 regulator.
> > 
> > On MT7623 the whole problem is anyway non-existent because there is
> > no
> > separate sram-supply, hence the tracking algorithm isn't used at all.
> > 
> 
> Exactly.
> 
> For MT7622 platform data, I think it is proper to configure as:
> .proc_max_volt = 1310000,
> .sram_max_volt = 1350000,  // since mt6380_vm_reg ldo only supporting
> {..., 1300000, 1350000, 1400000} as you mentioned.

Unfortunately that also doesn't work. The tracking algorithm then
apparently still tries to set unsupported voltages, I assume that
your suggestion will result in SRAM voltage being requested as
1310000uV (proc_max_volt) + 200000uV (max_step_size) = 1330000uV
which also isn't supported by the regulator.

[    1.972654] cpu cpu0: cpu0: failed to scale up voltage!
[    1.977951] cpufreq: __target_index: Failed to change cpu frequency: -22
[    1.984776] cpu cpu0: cpu0: failed to scale up voltage!
[    1.990039] cpufreq: __target_index: Failed to change cpu frequency: -22
...

With my initial suggestion to set both, proc_max_volt and sram_max_volt
to 1350000 it does work.

However, I think we are now botching around with work-arounds not
addressing the underlying problems which are that
 a) the tracking algorithm initially tries to raise the SRAM voltage to
    be **exactly** the minimum of proc_max_volt + max_step_size or
    sram_max_volt.
 b) requesting an exact voltage, ie. regulator_set_voltage(reg, X, X),
    is always problematic in case of regulators only supporting a
    limited set of supported voltages.

While adjusting the voltages in the SoC's platform data as a
work-around may be good enough as a hot-fix for now, imho the best
would be to re-write the tracking algorithm addressing both of the
above flaws.

> For MT7623 platform data, it is required to add a new one.
> .proc_max_volt = 1300000,
> .sram_max_volt = 0,  // since no sram-supply like you said.
> 
> If MT7622 and MT7623 supplied voltage issues can be fixed by above
> platform data, feel free to send the fix patch or inform me to do that.

I've introduced dedicated platform_data for MT7623 setting
proc_max_volt to 1300000, and yes, that does work.
However, on MT7623 there has not been any problem before as well.


> 
> Thanks for your help! :)
> 
> > > 
> > > Thanks.
> > > 
> > > > > 
> > > > > You probably meant to write
> > > > > vproc_max = min(proc_max_volt, opp_vproc_max);
> > > > > vsram_max = min(sram_max_volt, vsram_vreg_max);
> > > > > 
> > > > > right?
> > > > > 
> > > > 
> > > > Apparently, some of my braincells was apparently taking a break.
> > > > :-)
> > > > 
> > > > Yes, I was meaning min(), not max() :-)
> > > > 
> > > > Cheers!
> > > > 
> > > > > > 
> > > > > > Jia-Wei, can you please handle this?
> > > > > > 
> > > > > > Thanks,
> > > > > > Angelo
> > > > > > 
> > > > 
> > > > 
> > > > 


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623
  2023-05-26 10:27                 ` Daniel Golle
@ 2023-05-29  4:12                   ` Jia-wei Chang (張佳偉)
  2023-06-05 14:18                     ` [PATCH] cpufreq: mediatek: correct voltages for MT7622 and MT7623 Daniel Golle
  0 siblings, 1 reply; 19+ messages in thread
From: Jia-wei Chang (張佳偉) @ 2023-05-29  4:12 UTC (permalink / raw)
  To: daniel@makrotopia.org
  Cc: linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
	vincent@systemli.org, hsinyi@google.com, viresh.kumar@linaro.org,
	Project_Global_Chrome_Upstream_Group, khilman@baylibre.com,
	linux-arm-kernel@lists.infradead.org, matthias.bgg@gmail.com,
	rafael@kernel.org, Rex-BC Chen (陳柏辰),
	angelogioacchino.delregno@collabora.com,
	Chen Zhong (钟辰), error27@gmail.com

[-- Attachment #1: Type: text/plain, Size: 13482 bytes --]

On Fri, 2023-05-26 at 11:27 +0100, Daniel Golle wrote:
>  	 
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
>  On Fri, May 26, 2023 at 08:27:25AM +0000, Jia-wei Chang (張佳偉) wrote:
> > On Wed, 2023-05-24 at 13:42 +0100, Daniel Golle wrote:
> > > On Wed, May 24, 2023 at 08:43:31AM +0000, Jia-wei Chang (張佳偉)
> wrote:
> > > > On Wed, 2023-05-24 at 09:28 +0200, AngeloGioacchino Del Regno
> wrote:
> > > > > Il 23/05/23 19:37, Daniel Golle ha scritto:
> > > > > > On Tue, May 23, 2023 at 04:56:47PM +0200, AngeloGioacchino
> Del
> > > > > > Regno wrote:
> > > > > > > Il 22/05/23 20:03, Daniel Golle ha scritto:
> > > > > > > > Hi Jia-Wei,
> > > > > > > > Hi AngeloGioacchino,
> > > > > > > > 
> > > > > > > > On Fri, Mar 24, 2023 at 06:11:30PM +0800, jia-wei.chang
> > > > > > > > wrote:
> > > > > > > > > From: AngeloGioacchino Del Regno <
> > > > > > > > > angelogioacchino.delregno@collabora.com>
> > > > > > > > > 
> > > > > > > > > During the addition of SRAM voltage tracking for CCI
> > > > > > > > > scaling,
> > > > > > > > > this
> > > > > > > > > driver got some voltage limits set for the vtrack
> > > > > > > > > algorithm:
> > > > > > > > > these
> > > > > > > > > were moved to platform data first, then enforced in a
> > > > > > > > > later
> > > > > > > > > commit
> > > > > > > > > 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > > > > > mtk_cpufreq_voltage_tracking()")
> > > > > > > > > using these as max values for the
> regulator_set_voltage()
> > > > > > > > > calls.
> > > > > > > > > 
> > > > > > > > > In this case, the vsram/vproc constraints for MT7622
> and
> > > > > > > > > MT7623
> > > > > > > > > were supposed to be the same as MT2701 (and a number
> of
> > > > > > > > > other
> > > > > > > > > SoCs),
> > > > > > > > > but that turned out to be a mistake because the
> > > > > > > > > aforementioned two
> > > > > > > > > SoCs' maximum voltage for both VPROC and VPROC_SRAM
> is
> > > > > > > > > 1.36V.
> > > > > > > > > 
> > > > > > > > > Fix that by adding new platform data for MT7622/7623
> > > > > > > > > declaring the
> > > > > > > > > right {proc,sram}_max_volt parameter.
> > > > > > > > > 
> > > > > > > > > Fixes: ead858bd128d ("cpufreq: mediatek: Move voltage
> > > > > > > > > limits
> > > > > > > > > to platform data")
> > > > > > > > > Fixes: 6a17b3876bc8 ("cpufreq: mediatek: Refine
> > > > > > > > > mtk_cpufreq_voltage_tracking()")
> > > > > > > > > Signed-off-by: AngeloGioacchino Del Regno <
> > > > > > > > > angelogioacchino.delregno@collabora.com>
> > > > > > > > > Signed-off-by: Jia-Wei Chang <
> jia-wei.chang@mediatek.com>
> > > > > > > > > ---
> > > > > > > > >    drivers/cpufreq/mediatek-cpufreq.c | 13
> +++++++++++--
> > > > > > > > >    1 file changed, 11 insertions(+), 2 deletions(-)
> > > > > > > > > 
> > > > > > > > > diff --git a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > > b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > > index 764e4fbdd536..9a39a7ccfae9 100644
> > > > > > > > > --- a/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > > +++ b/drivers/cpufreq/mediatek-cpufreq.c
> > > > > > > > > @@ -693,6 +693,15 @@ static const struct
> > > > > > > > > mtk_cpufreq_platform_data mt2701_platform_data = {
> > > > > > > > >            .ccifreq_supported = false,
> > > > > > > > >    };
> > > > > > > > > +static const struct mtk_cpufreq_platform_data
> > > > > > > > > mt7622_platform_data = {
> > > > > > > > > +  .min_volt_shift = 100000,
> > > > > > > > > +  .max_volt_shift = 200000,
> > > > > > > > > +  .proc_max_volt = 1360000,
> > > > > > > > > +  .sram_min_volt = 0,
> > > > > > > > > +  .sram_max_volt = 1360000,
> > > > > > > > 
> > > > > > > > This change breaks cpufreq (with ondemand scheduler) on
> my
> > > > > > > > BPi
> > > > > > > > R64
> > > > > > > > board (having MT7622AV SoC with MT6380N PMIC).
> > > > > > > > ...
> > > > > > > > [    2.540091] cpufreq: __target_index: Failed to
> change
> > > > > > > > cpu
> > > > > > > > frequency: -22
> > > > > > > > [    2.556985] cpu cpu0: cpu0: failed to scale up
> voltage!
> > > > > > > > ...
> > > > > > > > (repeating a lot, every time the highest operating
> point is
> > > > > > > > selected
> > > > > > > > by the cpufreq governor)
> > > > > > > > 
> > > > > > > > The reason is that the MT6380N doesn't support
> 1360000uV on
> > > > > > > > the
> > > > > > > > supply
> > > > > > > > outputs used for SRAM and processor.
> > > > > > > > 
> > > > > > > > As for some reason cpufreq-mediatek tries to rise the
> SRAM
> > > > > > > > supply
> > > > > > > > voltage to the maximum for a short moment (probably a
> side-
> > > > > > > > effect of
> > > > > > > > the voltage tracking algorithm), this fails because the
> > > > > > > > PMIC
> > > > > > > > only
> > > > > > > > supports up to 1350000uV. As the highest operating
> point is
> > > > > > > > anyway
> > > > > > > > using only 1310000uV the simple fix is setting
> 1350000uV as
> > > > > > > > the
> > > > > > > > maximum
> > > > > > > > instead for both proc_max_volt and sram_max_volt.
> > > > > > > > 
> > > > > > > > A similar situation applies also for BPi R2 (MT7623NI
> with
> > > > > > > > MT6323L
> > > > > > > > PMIC), here the maximum supported voltage of the PMIC
> which
> > > > > > > > also only
> > > > > > > > supports up to 1350000uV, and the SoC having its
> highest
> > > > > > > > operating
> > > > > > > > voltage defined at 1300000uV.
> > > > > > > > 
> > > > > > > > If all agree with the simple fix I will post a patch
> for
> > > > > > > > that.
> > > > > > > > 
> > > > > > > > However, to me it feels fishy to begin with that the
> > > > > > > > tracking
> > > > > > > > algorithm
> > > > > > > > tries to rise the voltage above the highest operating
> point
> > > > > > > > defined in
> > > > > > > > device tree, see here:
> > > > > > > > 
> > > > > > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-
> Wei
> > > > > > > > Chang              2022-05-05 19:52:20 +0800
> > > > > > > > 100)    new_vsram
> > > > > > > > = clamp(new_vproc + soc_data->min_volt_shift,
> > > > > > > > 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c (Jia-
> Wei
> > > > > > > > Chang              2022-05-05 19:52:20 +0800
> > > > > > > > 101)                      soc_data->sram_min_volt,
> > > > > > > > soc_data-
> > > > > > > > > sram_max_volt);
> > > > > > > > 
> > > > > > > > However, I did not investigate in depth the purpose of
> this
> > > > > > > > initial rise and can impossibly test my modifications
> to
> > > > > > > > the
> > > > > > > > tracking algorithm on all supported SoCs.
> > > > > > > > 
> > > > > > > 
> > > > > > > Thanks for actually reporting that, I don't think that
> > > > > > > there's
> > > > > > > any
> > > > > > > valid reason why the algorithm should set a voltage
> higher
> > > > > > > than
> > > > > > > the
> > > > > > > maximum votage specified in the fastest OPP.
> > > > > > > 
> > > > > > > Anyway - the logic for the platform data of this driver
> is to
> > > > > > > declare
> > > > > > > the maximum voltage that SoC model X supports, regardless
> of
> > > > > > > the
> > > > > > > actual
> > > > > > > board-specific OPPs, so that part is right; to solve this
> > > > > > > issue,
> > > > > > > I guess
> > > > > > > that the only way is for this driver to parse the OPPs
> during
> > > > > > > .probe()
> > > > > > > and then always use in the algorithm
> > > > > > > 
> > > > > > >      vproc_max = max(proc_max_volt, opp_vproc_max);
> > > > > > >      vsram_max = max(sram_max_volt, vsram_vreg_max);
> > > > 
> > > > Hi Daniel, Angelo Sir,
> > > > 
> > > > Thanks for the issue report and suggestions.
> > > > 
> > > > Is it possible to modify the value of proc_max_volt and
> > > > sram_max_volt
> > > > to 1310000 in mt7622_platform_data as the highest voltage
> declared
> > > > in
> > > > mt7622.dtsi and then give it a try?
> > > > 
> > > > Sorry, I need someone help to check this on mt7622 since I
> don't
> > > > have
> > > > mt7622 platform..
> > > 
> > > Unfortunately also setting proc_max_volt and sram_max_volt to
> 1310000
> > > doesn't work:
> > > [    1.983325] cpu cpu0: cpu0: failed to scale up voltage!
> > > [    1.988621] cpufreq: __target_index: Failed to change cpu
> > > frequency: -22
> > > ::repeating infinitely::
> > > 
> > > This is because in mt6380-regulator.c you can see
> > > static const unsigned int ldo_volt_table1[] = {
> > >         1400000, 1350000, 1300000, 1250000, 1200000, 1150000,
> > > 1100000, 1050000,
> > > };
> > > 
> > > So 1310000 is not among the supported voltages but mediatek-
> cpufreq.c
> > > will repeatedly call
> > > regulator_set_voltage(sram_reg, 1310000, 1310000);
> > > which will fail for obvious reasons.
> > > 
> > > Using 1350000 for proc_max_volt and sram_max_volt like I have
> > > suggested
> > > as a simple work-around does work because 1350000 is among the
> > > supported
> > > voltages of the MT6380 regulator.
> > > 
> > > On MT7623 the whole problem is anyway non-existent because there
> is
> > > no
> > > separate sram-supply, hence the tracking algorithm isn't used at
> all.
> > > 
> > 
> > Exactly.
> > 
> > For MT7622 platform data, I think it is proper to configure as:
> > .proc_max_volt = 1310000,
> > .sram_max_volt = 1350000,  // since mt6380_vm_reg ldo only
> supporting
> > {..., 1300000, 1350000, 1400000} as you mentioned.
> 
> Unfortunately that also doesn't work. The tracking algorithm then
> apparently still tries to set unsupported voltages, I assume that
> your suggestion will result in SRAM voltage being requested as
> 1310000uV (proc_max_volt) + 200000uV (max_step_size) = 1330000uV
> which also isn't supported by the regulator.
> 
> [    1.972654] cpu cpu0: cpu0: failed to scale up voltage!
> [    1.977951] cpufreq: __target_index: Failed to change cpu
> frequency: -22
> [    1.984776] cpu cpu0: cpu0: failed to scale up voltage!
> [    1.990039] cpufreq: __target_index: Failed to change cpu
> frequency: -22
> ...
> 
> With my initial suggestion to set both, proc_max_volt and
> sram_max_volt
> to 1350000 it does work.
> 
> However, I think we are now botching around with work-arounds not
> addressing the underlying problems which are that
>  a) the tracking algorithm initially tries to raise the SRAM voltage
> to
>     be **exactly** the minimum of proc_max_volt + max_step_size or
>     sram_max_volt.
>  b) requesting an exact voltage, ie. regulator_set_voltage(reg, X,
> X),
>     is always problematic in case of regulators only supporting a
>     limited set of supported voltages.
> 
> While adjusting the voltages in the SoC's platform data as a
> work-around may be good enough as a hot-fix for now, imho the best
> would be to re-write the tracking algorithm addressing both of the
> above flaws.
> 

Yes, there will be a short-term, i.e. hot-fix, solution for now, and a
long-term solution to handle the potential risk while cpufreq trying to
set any voltage which is not valid or available on regulator.

The platform data of MT7622 is required to fix anyway.
Actually I would not expect the difference of results by setting
platform data as [2] or [3].

[1]:
.proc_max_volt = 1360000,
.sram_max_volt = 1360000,

[2]:
.proc_max_volt = 1350000,
.sram_max_volt = 1350000,

[3]:
.proc_max_volt = 1310000,
.sram_max_volt = 1350000,

Since SRAM request will be 1310000 + 200000 = 1510000, and then be
clamped between min volt of 0 and max volt of 1350000. Eventually,
'new_vsram' will be assigned to 1350000 in the case [3], before do-
while tracking.

Furthermore, I've tried to use an easy simulator to verify the function
of mtk_cpufreq_voltage_tracking by iterating all possibilities of
voltage transitions.

The simulator results of [1] is failed as expected, but [2] and [3] are
pass!
The test code and test results are available in attachments, feel free
to check them.

If I'm getting wrong, please let me know.. Thanks!

> > For MT7623 platform data, it is required to add a new one.
> > .proc_max_volt = 1300000,
> > .sram_max_volt = 0,  // since no sram-supply like you said.
> > 
> > If MT7622 and MT7623 supplied voltage issues can be fixed by above
> > platform data, feel free to send the fix patch or inform me to do
> that.
> 
> I've introduced dedicated platform_data for MT7623 setting
> proc_max_volt to 1300000, and yes, that does work.
> However, on MT7623 there has not been any problem before as well.
> 
> 
> > 
> > Thanks for your help! :)
> > 
> > > > 
> > > > Thanks.
> > > > 
> > > > > > 
> > > > > > You probably meant to write
> > > > > > vproc_max = min(proc_max_volt, opp_vproc_max);
> > > > > > vsram_max = min(sram_max_volt, vsram_vreg_max);
> > > > > > 
> > > > > > right?
> > > > > > 
> > > > > 
> > > > > Apparently, some of my braincells was apparently taking a
> break.
> > > > > :-)
> > > > > 
> > > > > Yes, I was meaning min(), not max() :-)
> > > > > 
> > > > > Cheers!
> > > > > 
> > > > > > > 
> > > > > > > Jia-Wei, can you please handle this?
> > > > > > > 
> > > > > > > Thanks,
> > > > > > > Angelo
> > > > > > > 
> > > > > 
> > > > > 
> > > > > 

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: mtk_cpufreq_simulator.c --]
[-- Type: text/x-csrc; name="mtk_cpufreq_simulator.c", Size: 5432 bytes --]

#include <stdio.h>

#define max(x, y)   \
	(((x) > (y)) ? (x) : (y))
#define min(x, y)   \
	(((x) < (y)) ? (x) : (y))
#define clamp(val, lo, hi)  \
	((val) >= (hi) ? (hi) : ((val) <= (lo) ? (lo) : (val)))

#define PROC_NAME	"proc"
#define SRAM_NAME	"sram" 
#define PROC_ID		0
#define SRAM_ID		1
#define proc_reg	PROC_ID
#define sram_reg	SRAM_ID
#define LIST_CSIZE	8
const char *reg_name_list[] = {
	PROC_NAME, SRAM_NAME
};

const int proc_volt_list[LIST_CSIZE] = {
	1310000, 1250000, 1200000, 1150000,
	1100000, 1050000, 1000000,  950000
};

const int sram_volt_list[LIST_CSIZE] = {
	1400000, 1350000, 1300000, 1250000,
	1200000, 1150000, 1100000, 1050000
};
int proc_volt = -1;
int sram_volt = -1;

struct mtk_cpufreq_platform_data {
	int min_volt_shift;
	int max_volt_shift;
	int proc_max_volt;
	int sram_min_volt;
	int sram_max_volt;
};

struct mtk_cpu_dvfs_info {
	const struct mtk_cpufreq_platform_data *soc_data;
};

static int regulator_get_voltage(int reg_id)
{
	if (reg_id == PROC_ID)
		return proc_volt;
	else if (reg_id == SRAM_ID)
		return sram_volt;

	printf("### [%s] reg_id: %d not available\n", __func__, reg_id);
	return -1;
}

static int check_sram_valid(int volt)
{
	int found = 0;

	for (int i = 0; i < LIST_CSIZE; ++i)
		if (volt == sram_volt_list[i]) {
			found = 1;
			break;
		}

	return found;
}

static int regulator_set_voltage(int reg_id, int min_uv, int max_uv)
{
	int ret = 0;

	if (reg_id == PROC_ID) {
		proc_volt = min_uv;
		printf("### [%s] set %s volt %d/%d uV\n",
			__func__, reg_name_list[reg_id], min_uv, max_uv);
	} else if (reg_id == SRAM_ID) {
		if (check_sram_valid(min_uv)) {
			sram_volt = min_uv;
			printf("### [%s] set %s volt %d/%d uV\n",
				__func__, reg_name_list[reg_id], min_uv, max_uv);
		} else {
			ret = -1;
			printf("!!! [%s] set %s volt %d uV is not valid\n",
				__func__, reg_name_list[reg_id], min_uv);
		}
	}
	else
		ret = -1;
	
	return ret;
}

static int mtk_cpufreq_voltage_tracking(struct mtk_cpu_dvfs_info *info,
					int new_vproc)
{
	const struct mtk_cpufreq_platform_data *soc_data = info->soc_data;
//	struct regulator *proc_reg = info->proc_reg;
//	struct regulator *sram_reg = info->sram_reg;
	int pre_vproc, pre_vsram, new_vsram, vsram, vproc, ret;
//	int retry = info->vtrack_max;

	pre_vproc = regulator_get_voltage(proc_reg);
//	if (pre_vproc < 0) {
//		dev_err(info->cpu_dev,
//			"invalid Vproc value: %d\n", pre_vproc);
//		return pre_vproc;
//	}

	pre_vsram = regulator_get_voltage(sram_reg);
//	if (pre_vsram < 0) {
//		dev_err(info->cpu_dev, "invalid Vsram value: %d\n", pre_vsram);
//		return pre_vsram;
//	}

	new_vsram = clamp(new_vproc + soc_data->min_volt_shift,
			  soc_data->sram_min_volt, soc_data->sram_max_volt);

	printf("## [%s] target vproc: %d; vsram: %d\n", __func__, new_vproc, new_vsram);
	do {
		if (pre_vproc <= new_vproc) {
			vsram = clamp(pre_vproc + soc_data->max_volt_shift,
				      soc_data->sram_min_volt, new_vsram);
			ret = regulator_set_voltage(sram_reg, vsram,
						    soc_data->sram_max_volt);

			if (ret)
				return ret;

			if (vsram == soc_data->sram_max_volt ||
			    new_vsram == soc_data->sram_min_volt)
				vproc = new_vproc;
			else
				vproc = vsram - soc_data->min_volt_shift;

			ret = regulator_set_voltage(proc_reg, vproc,
						    soc_data->proc_max_volt);
			if (ret) {
				regulator_set_voltage(sram_reg, pre_vsram,
						      soc_data->sram_max_volt);
				return ret;
			}
		} else if (pre_vproc > new_vproc) {
			vproc = max(new_vproc,
				    pre_vsram - soc_data->max_volt_shift);
			ret = regulator_set_voltage(proc_reg, vproc,
						    soc_data->proc_max_volt);
			if (ret)
				return ret;

			if (vproc == new_vproc)
				vsram = new_vsram;
			else
				vsram = max(new_vsram,
					    vproc + soc_data->min_volt_shift);

			ret = regulator_set_voltage(sram_reg, vsram,
						    soc_data->sram_max_volt);
			if (ret) {
				regulator_set_voltage(proc_reg, pre_vproc,
						      soc_data->proc_max_volt);
				return ret;
			}
		}

		pre_vproc = vproc;
		pre_vsram = vsram;

//		if (--retry < 0) {
//			dev_err(info->cpu_dev,
//				"over loop count, failed to set voltage\n");
//			return -EINVAL;
//		}
	} while (vproc != new_vproc || vsram != new_vsram);

	return 0;
}

int main(void)
{
	struct mtk_cpufreq_platform_data soc_data = {
		.min_volt_shift = 100000,
		.max_volt_shift = 200000,
		.proc_max_volt = 1310000,
		.sram_min_volt = 0,
		.sram_max_volt = 1350000,
	};

	struct mtk_cpu_dvfs_info info = {
		.soc_data = &soc_data,
	};

	proc_volt = 950000;
	sram_volt = 1050000;

	printf("[%s] init setting: \n", __func__);
	printf("init proc_volt: %d\n", proc_volt);
	printf("init sram_volt: %d\n", sram_volt);
	printf("min_volt_shift: %d\n", soc_data.min_volt_shift);
	printf("max_volt_shift: %d\n", soc_data.max_volt_shift);
	printf("proc_max_volt : %d\n", soc_data.proc_max_volt );
	printf("sram_min_volt : %d\n", soc_data.sram_min_volt );
	printf("sram_max_volt : %d\n", soc_data.sram_max_volt );

	printf("\n");
	printf("##### Test Start #####\n");
	int fail_count = 0;
	for (int i = 0; i < LIST_CSIZE; ++i) {
		for (int j = 0; j < LIST_CSIZE; ++j) {
			if (i == j)
				continue;
			printf("opp[%d]->[%d]\n", i, j);
			fail_count += mtk_cpufreq_voltage_tracking(&info, proc_volt_list[i]);
			fail_count += mtk_cpufreq_voltage_tracking(&info, proc_volt_list[j]);
			printf("\n");
		}
	}

	printf("##### Test Result: %s. #####\n", fail_count ? "Failed" : "PASS");
	return 0;
}

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: t1_proc1360_sram1360.log --]
[-- Type: text/x-log; name="t1_proc1360_sram1360.log", Size: 31642 bytes --]

[main] init setting: 
init proc_volt: 950000
init sram_volt: 1050000
min_volt_shift: 100000
max_volt_shift: 200000
proc_max_volt : 1360000
sram_min_volt : 0
sram_max_volt : 1360000

##### Test Start #####
opp[0]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV

opp[0]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV

opp[0]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV

opp[0]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV

opp[0]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV

opp[0]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV

opp[0]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV

opp[1]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid

opp[1]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV

opp[1]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV

opp[1]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV

opp[1]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV

opp[1]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV

opp[1]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV

opp[2]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid

opp[2]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV

opp[2]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV

opp[2]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV

opp[2]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV

opp[2]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV

opp[2]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV

opp[3]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid

opp[3]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV

opp[3]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV

opp[3]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV

opp[3]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV

opp[3]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV

opp[3]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV

opp[4]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid

opp[4]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV

opp[4]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV

opp[4]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV

opp[4]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV

opp[4]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV

opp[4]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV

opp[5]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid

opp[5]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV

opp[5]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV

opp[5]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV

opp[5]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV

opp[5]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV

opp[5]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV

opp[6]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid

opp[6]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV

opp[6]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV

opp[6]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV

opp[6]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV

opp[6]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV

opp[6]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV

opp[7]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set sram volt 1050000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1360000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV
!!! [regulator_set_voltage] set sram volt 1360000 uV is not valid

opp[7]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1350000/1360000 uV
### [regulator_set_voltage] set proc volt 1250000/1360000 uV

opp[7]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV
### [regulator_set_voltage] set sram volt 1300000/1360000 uV
### [regulator_set_voltage] set proc volt 1200000/1360000 uV

opp[7]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1100000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1250000/1360000 uV
### [regulator_set_voltage] set proc volt 1150000/1360000 uV

opp[7]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV
### [regulator_set_voltage] set sram volt 1200000/1360000 uV
### [regulator_set_voltage] set proc volt 1100000/1360000 uV

opp[7]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1000000/1360000 uV
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1360000 uV
### [regulator_set_voltage] set proc volt 1050000/1360000 uV

opp[7]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 950000/1360000 uV
### [regulator_set_voltage] set sram volt 1050000/1360000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set sram volt 1100000/1360000 uV
### [regulator_set_voltage] set proc volt 1000000/1360000 uV

##### Test Result: Failed. #####

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: t2_proc1350_sram1350.log --]
[-- Type: text/x-log; name="t2_proc1350_sram1350.log", Size: 31936 bytes --]

[main] init setting: 
init proc_volt: 950000
init sram_volt: 1050000
min_volt_shift: 100000
max_volt_shift: 200000
proc_max_volt : 1350000
sram_min_volt : 0
sram_max_volt : 1350000

##### Test Start #####
opp[0]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set proc volt 1250000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV

opp[0]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV

opp[0]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV

opp[0]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV

opp[0]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV

opp[0]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[0]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[1]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV

opp[1]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set proc volt 1250000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV

opp[1]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV

opp[1]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV

opp[1]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV

opp[1]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[1]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[2]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV

opp[2]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV

opp[2]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV

opp[2]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV

opp[2]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV

opp[2]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[2]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[3]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV

opp[3]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV

opp[3]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV

opp[3]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV

opp[3]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV

opp[3]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[3]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[4]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV

opp[4]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV

opp[4]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV

opp[4]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV

opp[4]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV

opp[4]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[4]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[5]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV

opp[5]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV

opp[5]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV

opp[5]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV

opp[5]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV

opp[5]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[5]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[6]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV

opp[6]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV

opp[6]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV

opp[6]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV

opp[6]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV

opp[6]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV

opp[6]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[7]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1350000 uV

opp[7]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1350000 uV

opp[7]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1350000 uV

opp[7]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1100000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1350000 uV

opp[7]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1350000 uV

opp[7]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1000000/1350000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1350000 uV

opp[7]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 950000/1350000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1350000 uV

##### Test Result: PASS. #####

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: t3_proc1310_sram1350.log --]
[-- Type: text/x-log; name="t3_proc1310_sram1350.log", Size: 31936 bytes --]

[main] init setting: 
init proc_volt: 950000
init sram_volt: 1050000
min_volt_shift: 100000
max_volt_shift: 200000
proc_max_volt : 1310000
sram_min_volt : 0
sram_max_volt : 1350000

##### Test Start #####
opp[0]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set proc volt 1250000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV

opp[0]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV

opp[0]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV

opp[0]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV

opp[0]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV

opp[0]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[0]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[1]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV

opp[1]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set proc volt 1250000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV

opp[1]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV

opp[1]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV

opp[1]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV

opp[1]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[1]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[2]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV

opp[2]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV

opp[2]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV

opp[2]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV

opp[2]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV

opp[2]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[2]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[3]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV

opp[3]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV

opp[3]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV

opp[3]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV

opp[3]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV

opp[3]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[3]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[4]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV

opp[4]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV

opp[4]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV

opp[4]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV

opp[4]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV

opp[4]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[4]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[5]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV

opp[5]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV

opp[5]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV

opp[5]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV

opp[5]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV

opp[5]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV

opp[5]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[6]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV

opp[6]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV

opp[6]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV

opp[6]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV

opp[6]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV

opp[6]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV

opp[6]->[7]
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV

opp[7]->[0]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1310000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1310000/1310000 uV

opp[7]->[1]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1250000; vsram: 1350000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1350000/1350000 uV
### [regulator_set_voltage] set proc volt 1250000/1310000 uV

opp[7]->[2]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1200000; vsram: 1300000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV
### [regulator_set_voltage] set sram volt 1300000/1350000 uV
### [regulator_set_voltage] set proc volt 1200000/1310000 uV

opp[7]->[3]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1100000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1150000; vsram: 1250000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1250000/1350000 uV
### [regulator_set_voltage] set proc volt 1150000/1310000 uV

opp[7]->[4]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1100000; vsram: 1200000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV
### [regulator_set_voltage] set sram volt 1200000/1350000 uV
### [regulator_set_voltage] set proc volt 1100000/1310000 uV

opp[7]->[5]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 1000000/1310000 uV
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1050000; vsram: 1150000
### [regulator_set_voltage] set sram volt 1150000/1350000 uV
### [regulator_set_voltage] set proc volt 1050000/1310000 uV

opp[7]->[6]
## [mtk_cpufreq_voltage_tracking] target vproc: 950000; vsram: 1050000
### [regulator_set_voltage] set proc volt 950000/1310000 uV
### [regulator_set_voltage] set sram volt 1050000/1350000 uV
## [mtk_cpufreq_voltage_tracking] target vproc: 1000000; vsram: 1100000
### [regulator_set_voltage] set sram volt 1100000/1350000 uV
### [regulator_set_voltage] set proc volt 1000000/1310000 uV

##### Test Result: PASS. #####

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH] cpufreq: mediatek: correct voltages for MT7622 and MT7623
  2023-05-29  4:12                   ` Jia-wei Chang (張佳偉)
@ 2023-06-05 14:18                     ` Daniel Golle
  2023-06-06  7:41                       ` AngeloGioacchino Del Regno
  0 siblings, 1 reply; 19+ messages in thread
From: Daniel Golle @ 2023-06-05 14:18 UTC (permalink / raw)
  To: linux-pm, linux-mediatek, linux-arm-kernel, linux-kernel,
	Jia-Wei Chang, AngeloGioacchino Del Regno, Matthias Brugger,
	Viresh Kumar, Rafael J. Wysocki

The MT6380 regulator typically used together with MT7622 does not
support the current maximum processor and SRAM voltage in the cpufreq
driver (1360000uV).
For MT7622 limit processor and SRAM supply voltages to 1350000uV to
avoid having the tracking algorithm request unsupported voltages from
the regulator.

On MT7623 there is no separate SRAM supply and the maximum voltage used
is 1300000uV. Create dedicated platform data for MT7623 to cover that
case as well.

Fixes: 0883426fd07e3 ("cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623")
Suggested-by: Jia-wei Chang <Jia-wei.Chang@mediatek.com>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 drivers/cpufreq/mediatek-cpufreq.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
index 9a39a7ccfae96..fef68cb2b38f7 100644
--- a/drivers/cpufreq/mediatek-cpufreq.c
+++ b/drivers/cpufreq/mediatek-cpufreq.c
@@ -696,9 +696,16 @@ static const struct mtk_cpufreq_platform_data mt2701_platform_data = {
 static const struct mtk_cpufreq_platform_data mt7622_platform_data = {
 	.min_volt_shift = 100000,
 	.max_volt_shift = 200000,
-	.proc_max_volt = 1360000,
+	.proc_max_volt = 1350000,
 	.sram_min_volt = 0,
-	.sram_max_volt = 1360000,
+	.sram_max_volt = 1350000,
+	.ccifreq_supported = false,
+};
+
+static const struct mtk_cpufreq_platform_data mt7623_platform_data = {
+	.min_volt_shift = 100000,
+	.max_volt_shift = 200000,
+	.proc_max_volt = 1300000,
 	.ccifreq_supported = false,
 };
 
@@ -734,7 +741,7 @@ static const struct of_device_id mtk_cpufreq_machines[] __initconst = {
 	{ .compatible = "mediatek,mt2701", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt2712", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt7622", .data = &mt7622_platform_data },
-	{ .compatible = "mediatek,mt7623", .data = &mt7622_platform_data },
+	{ .compatible = "mediatek,mt7623", .data = &mt7623_platform_data },
 	{ .compatible = "mediatek,mt8167", .data = &mt8516_platform_data },
 	{ .compatible = "mediatek,mt817x", .data = &mt2701_platform_data },
 	{ .compatible = "mediatek,mt8173", .data = &mt2701_platform_data },
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH] cpufreq: mediatek: correct voltages for MT7622 and MT7623
  2023-06-05 14:18                     ` [PATCH] cpufreq: mediatek: correct voltages for MT7622 and MT7623 Daniel Golle
@ 2023-06-06  7:41                       ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 19+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-06-06  7:41 UTC (permalink / raw)
  To: Daniel Golle, linux-pm, linux-mediatek, linux-arm-kernel,
	linux-kernel, Jia-Wei Chang, Matthias Brugger, Viresh Kumar,
	Rafael J. Wysocki

Il 05/06/23 16:18, Daniel Golle ha scritto:
> The MT6380 regulator typically used together with MT7622 does not
> support the current maximum processor and SRAM voltage in the cpufreq
> driver (1360000uV).
> For MT7622 limit processor and SRAM supply voltages to 1350000uV to
> avoid having the tracking algorithm request unsupported voltages from
> the regulator.
> 
> On MT7623 there is no separate SRAM supply and the maximum voltage used
> is 1300000uV. Create dedicated platform data for MT7623 to cover that
> case as well.
> 
> Fixes: 0883426fd07e3 ("cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623")
> Suggested-by: Jia-wei Chang <Jia-wei.Chang@mediatek.com>
> Signed-off-by: Daniel Golle <daniel@makrotopia.org>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>




^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2023-06-06  8:45 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-24 10:11 [PATCH v2 0/4] Enhance mediatek-cpufreq robustness jia-wei.chang
2023-03-24 10:11 ` [PATCH v2 1/4] cpufreq: mediatek: fix passing zero to 'PTR_ERR' jia-wei.chang
2023-03-24 10:11 ` [PATCH v2 2/4] cpufreq: mediatek: fix KP caused by handler usage after regulator_put/clk_put jia-wei.chang
2023-03-24 10:11 ` [PATCH v2 3/4] cpufreq: mediatek: raise proc/sram max voltage for MT8516 jia-wei.chang
2023-03-24 13:11   ` AngeloGioacchino Del Regno
2023-03-24 10:11 ` [PATCH v2 4/4] cpufreq: mediatek: Raise proc and sram max voltage for MT7622/7623 jia-wei.chang
2023-05-22 18:03   ` Daniel Golle
2023-05-23 14:56     ` AngeloGioacchino Del Regno
2023-05-23 17:37       ` Daniel Golle
2023-05-24  7:28         ` AngeloGioacchino Del Regno
2023-05-24  8:43           ` Jia-wei Chang (張佳偉)
2023-05-24 12:42             ` Daniel Golle
2023-05-26  8:27               ` Jia-wei Chang (張佳偉)
2023-05-26  8:37                 ` Jia-wei Chang (張佳偉)
2023-05-26 10:27                 ` Daniel Golle
2023-05-29  4:12                   ` Jia-wei Chang (張佳偉)
2023-06-05 14:18                     ` [PATCH] cpufreq: mediatek: correct voltages for MT7622 and MT7623 Daniel Golle
2023-06-06  7:41                       ` AngeloGioacchino Del Regno
2023-03-30  3:50 ` [PATCH v2 0/4] Enhance mediatek-cpufreq robustness Viresh Kumar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).