From mboxrd@z Thu Jan 1 00:00:00 1970 From: gregory.clement@free-electrons.com (Gregory CLEMENT) Date: Wed, 06 Dec 2017 12:50:31 +0100 Subject: [PATCH 0/6] Add CPU Frequency scaling support on Armada 37xx In-Reply-To: (Andre Heider's message of "Sun, 3 Dec 2017 13:23:33 +0100") References: <20171201112508.14121-1-gregory.clement@free-electrons.com> Message-ID: <874lp4ulbs.fsf@free-electrons.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Andre, On dim., d?c. 03 2017, Andre Heider wrote: > Hi Gregory, > > I applied this and the dvfs patch set ([PATCH 0/3] Add DVFS support on > CPU clock for Armada 37xx) on top of 4.14.3 and gave it a try on > espressobin. Thanks for testing. > > Upon modprobe I get: > [ 66.231652] freq_table: Duplicate freq-table entries: 0 > [ 66.236967] cpu cpu0: cpufreq_init: invalid frequency table: -22 > [ 66.243534] freq_table: Duplicate freq-table entries: 0 > [ 66.248575] cpu cpu1: cpufreq_init: invalid frequency table: -22 > > Is this supposed to work already? Do I miss something? I did a last rebase before sending the series to remove the avs part not working yet. And during this rebase I introduced an bug. I will send a v2 soon if you are intersected by testing it right now, here it is the fix: iff --git a/drivers/cpufreq/armada-37xx-cpufreq.c b/drivers/cpufreq/armada-37xx-cpufreq.c index 40c9a744cc6e..96c2600009b5 100644 --- a/drivers/cpufreq/armada-37xx-cpufreq.c +++ b/drivers/cpufreq/armada-37xx-cpufreq.c @@ -219,7 +219,8 @@ static int __init armada37xx_cpufreq_driver_init(void) */ for (load_level = ARMADA_37XX_DVFS_LOAD_0; load_level < LOAD_LEVEL_NR; load_level++) { - unsigned long freq = dvfs->divider[load_level]; + unsigned long freq = cur_frequency / + dvfs->divider[load_level]; ret = dev_pm_opp_add(cpu_dev, freq, 0); if (ret) Gregory > > Oh, and on that scenario it's not possible to rmmod the driver again, EBUSY. > > Thanks, > Andre > > On 01/12/17 12:25, Gregory CLEMENT > wrote: >> Hi, >> >> This series adds the CPU Frequency support on Armada 37xx using >> DVFS. It is based on the initial work of Evan Wang and Victor Gu. >> >> DVFS control is done by a set of registers from the North Bridge Power >> Management block. The binding for this block is documented in patch 1. >> >> While adding a new cpufreq driver I found that the Kconfig and >> Makefile were no more in order, so it is fixed by patch 2 and 3. >> >> The 4th patch is just about updating the MAINTAINERS file with the new >> driver. >> >> The next patch is the real purpose of the series. The main goal of >> this driver is to setup the CPU load level in the hardware to >> associate them to CPU frequencies and register a standard cpufreq >> driver. Note that the hardware also capable of doing AVS (Adaptive >> Voltage Scaling), by associating a voltage on each level beside the >> CPU frequency. However, this support is not yet ready, so it is not >> part of this series. >> >> Finally, the last patch is for arm-soc the arm-soc subsystem through >> mvebu and update the device tree to support the CPU frequency scaling. >> >> An update on the CPU clock driver is needed in order to take into >> account the DVFS setting. It's the purpose of an other series already >> sent, but is no dependencies between the series (for building or at >> runtime). >> >> Thanks, >> >> Gregory >> >> Gregory CLEMENT (6): >> dt-bindings: marvell: Add documentation for the North Bridge PM on >> Armada 37xx >> cpufreq: ARM: sort the Kconfig menu >> cpufreq: sort the drivers in ARM part >> MAINTAINERS: add new entries for Armada 37xx cpufreq driver >> cpufreq: Add DVFS support for Armada 37xx >> arm64: dts: marvell: armada-37xx: add nodes allowing cpufreq support >> >> .../bindings/arm/marvell/armada-37xx.txt | 19 ++ >> MAINTAINERS | 1 + >> arch/arm64/boot/dts/marvell/armada-372x.dtsi | 1 + >> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 7 + >> drivers/cpufreq/Kconfig.arm | 89 ++++---- >> drivers/cpufreq/Makefile | 9 +- >> drivers/cpufreq/armada-37xx-cpufreq.c | 241 +++++++++++++++++++++ >> 7 files changed, 322 insertions(+), 45 deletions(-) >> create mode 100644 drivers/cpufreq/armada-37xx-cpufreq.c >> > -- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com