[PATCH v4 0/7] cpufreq-qcom-hw: Implement full OSM programming

From: AngeloGioacchino Del Regno
Date: Tue Jan 19 2021 - 15:08:35 EST


**
** NOTE: To "view the full picture", please look at the following
** patch series:
** https://patchwork.kernel.org/project/linux-arm-msm/list/?series=413355
** This is a subset of that series.
**

Changes in v4:
- Huge patch series has been split for better reviewability,
as suggested by Bjorn
- Rebased code on top of 266991721c15 ("cpufreq: qcom-hw: enable boost
support")

Changes in v3:
- Fixed a test robot build failure for ARCH=arm
- Fixed dt_binding_check YAML doc issues

Changes in v2:
- Rebased dt-binding on top of Manivannan's patches
- Added MSM8998 to cpufreq-dt-platdev blacklist
- Implemented dynamic Memory Accelerator corners support, needed
by MSM8998
- Implemented ACD programming, needed by MSM8998

Tested on the following smartphones:
- Sony Xperia XA2 (SDM630)
- Sony Xperia XA2 Ultra (SDM630)
- Sony Xperia 10 (SDM630)
- Sony Xperia XZ Premium (MSM8998)
- F(x)Tec Pro 1 (MSM8998)

>From SDM845 onwards, SAW, CPRh and OSM are getting setup by the
bootloader/TZ *before* booting the OS, so then all the OS has to do
is to request a specific performance state to the OSM hardware and
forget about all the rest, which is anyway protected by the hypervisor
(so there's no access anyway);

BUT:

In MSM/APQ 8998, SDM/SDA 630/636/660 (and other variants), there is no
setup of any of these puzzle pieces, and they're also (basically) fully
accessible, which means that the OS must do it in order to get in the
same state as the newer ones and to get the entire scaling hardware to
start rolling.

AngeloGioacchino Del Regno (5):
cpufreq: blacklist SDM630/636/660 in cpufreq-dt-platdev
cpufreq: blacklist MSM8998 in cpufreq-dt-platdev
cpufreq: qcom-hw: Implement CPRh aware OSM programming
cpufreq: qcom-hw: Allow getting the maximum transition latency for
OPPs
dt-bindings: cpufreq: qcom-hw: Add bindings for 8998

Manivannan Sadhasivam (2):
dt-bindings: arm: cpus: Document 'qcom,freq-domain' property
dt-bindings: cpufreq: cpufreq-qcom-hw: Convert to YAML bindings

.../devicetree/bindings/arm/cpus.yaml | 6 +
.../bindings/cpufreq/cpufreq-qcom-hw.txt | 172 ---
.../bindings/cpufreq/cpufreq-qcom-hw.yaml | 242 ++++
drivers/cpufreq/cpufreq-dt-platdev.c | 4 +
drivers/cpufreq/qcom-cpufreq-hw.c | 1247 ++++++++++++++++-
5 files changed, 1467 insertions(+), 204 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/cpufreq/cpufreq-qcom-hw.txt
create mode 100644 Documentation/devicetree/bindings/cpufreq/cpufreq-qcom-hw.yaml

--
2.30.0