[PATCH v2 0/7] Add support for Allwinner H6 DVFS

From: ClÃment PÃron
Date: Sun Apr 05 2020 - 13:36:11 EST


Hi Sunxi maintainers and members,

Now that required drivers are merged we can contibute on DVFS
support for Allwinner H6.

This serie is based on Yangtao Li serie[0] and OndÅej Jirman work[1].

Most of the OPP tables are taken from original vendor kernel[2].
Plus there is a new CPU frequencies at 1.6GHz, 1.7GHz and 1.8GHz.

I wrote a simple script to randomly set a frequency during
a random time[3].
With this script and using stress-ng during several hours, I didn't
see any issue. Moreover I have tested specifically the 1.8GHz on my
Beelink GS1, max thermal 85ÂC is reached very quickly and then the
SoC oscillates quickly between 1.5 and 1.8GHz. So i have added
1.6GHz and 1.7GHz my board now oscillate slower between 1.5GHz and
1.6GHz swapping every second and temperature is also morestable.

I also test that that offlining CPU0 and doing DVFS on other CPUs
works. As CPU regulator is only set for CPU0.

But maybe it doesn't cost much to set the regulator for all the CPUs?

Jernej test the GPU devfreq on several H6 board particulary the
Tanix TX6 which doesn't have a proper dedicated PMIC and doesn't
had any trouble with it.

Do you think I can enable GPU OPP for all H6 Boards?

Also Yangtao Li enable DVFS for Pine64, as I can't test it.
I'm waiting for his ack or someone who has a Pine64 and can test this
serie before reenabling this board.

Thanks,
ClÃment

0: https://patchwork.kernel.org/cover/10815117/
1: https://megous.com/git/linux/log/?h=ths-5.7
2: https://github.com/orangepi-xunlong/OrangePiH6_Linux4_9/blob/master/arch/arm64/boot/dts/sunxi/sun50iw6p1.dtsi#L345-L517
3: https://gist.github.com/clementperon/55a055dae3f13bbd14fb39c0069fe2e2

Changes since v1 (thanks to OndÅej Jirman):
- Remove Polling thermal
- Add Orange Pi boards
- Remove minimal voltage change for Beelink GS1
- Add ramp-deplay for GPU and CPU regulators
- Push to thermal point to 85ÂC (Allwinner set them to 100ÂC and 115ÂC)
- Added 1.6GHz and 1.7GHz to OPP table.

ClÃment PÃron (4):
arm64: dts: allwinner: h6: Add GPU Operating Performance Points table
arm64: configs: Enable sun50i cpufreq nvmem
arm64: dts: allwinner: h6: Enable CPU and GPU opp tables for Beelink
GS1
arm64: dts: allwinner: h6: Enable CPU and GPU opp tables for Orange Pi
boards

Ondrej Jirman (2):
arm64: dts: allwinner: h6: Add thermal trip points/cooling map
arm64: dts: allwinner: h6: Add CPU Operating Performance Points table

Yangtao Li (1):
arm64: dts: allwinner: h6: Add clock to CPU cores

.../dts/allwinner/sun50i-h6-beelink-gs1.dts | 10 +-
.../boot/dts/allwinner/sun50i-h6-cpu-opp.dtsi | 121 ++++++++++++++++++
.../boot/dts/allwinner/sun50i-h6-gpu-opp.dtsi | 74 +++++++++++
.../dts/allwinner/sun50i-h6-orangepi.dtsi | 10 +-
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 36 ++++++
arch/arm64/configs/defconfig | 1 +
6 files changed, 250 insertions(+), 2 deletions(-)
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-cpu-opp.dtsi
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-gpu-opp.dtsi

--
2.20.1