Re: [PATCH v2] arm64: dts: allwinner: h6: Use dummy regulator for Tanix TX6

From: Robin Murphy
Date: Tue Apr 28 2020 - 11:21:40 EST


On 2020-04-28 3:26 pm, ClÃment PÃron wrote:
Tanix TX6 has a fixed regulator. As DVFS is instructed to change
voltage to meet OPP table, the DVFS is not working as expected.

Hmm, isn't that really a bug in the DVFS code? I guess it's just blindly propagating -EINVAL from the fixed regulators not implementing set_voltage, but AFAICS it has no real excuse not to be cleverer and still allow switching frequency as long as the voltage *is* high enough for the given OPP. I wonder how well it works if the regulator is programmable but shared with other consumers... that case probably can't be hacked around in DT.

Robin.

Avoid to introduce a new dedicated OPP Table where voltage are
equals to the fixed regulator as it will only duplicate all the OPPs.
Instead remove the fixed regulator so the DVFS framework will create
dummy regulator and will have the same behavior.

Add some comments to explain this in the device-tree.

Reported-by: Piotr Oniszczuk <warpme@xxxxx>
Fixes: add1e27fb703 ("arm64: dts: allwinner: h6: Enable CPU opp tables for Tanix TX6")
Signed-off-by: ClÃment PÃron <peron.clem@xxxxxxxxx>
---
.../boot/dts/allwinner/sun50i-h6-tanix-tx6.dts | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts
index be81330db14f..3e96fcb317ea 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts
@@ -48,7 +48,15 @@
};
&cpu0 {
- cpu-supply = <&reg_vdd_cpu_gpu>;
+ /*
+ * Don't specify the CPU regulator, as it's a fixed
+ * regulator DVFS will not work as it is intructed
+ * to reach a voltage which can't be reached.
+ * Not specifying a regulator will create a dummy
+ * regulator allowing all OPPs.
+ *
+ * cpu-supply = <&reg_vdd_cpu_gpu>;
+ */
};
&de {
@@ -68,7 +76,13 @@
};
&gpu {
- mali-supply = <&reg_vdd_cpu_gpu>;
+ /*
+ * Don't specify the GPU regulator, see comment
+ * above for the CPU supply.
+ *
+ * mali-supply = <&reg_vdd_cpu_gpu>;
+ */
+
status = "okay";
};