Skip to content

Commit

Permalink
drivers: thermal: lmh: Add snapshot of LMH DCVS driver
Browse files Browse the repository at this point in the history
Add a snapshot of LMH DCVSh driver from msm-4.9 as of 'commit
<47f9b50df9> ("drivers: thermal: limits-dcvs: Prevent race in freq
limits polling")'.

Change-Id: I53538f50266439da5ba2605c03c820b927b07824
Signed-off-by: Ram Chandrasekar <rkumbako@codeaurora.org>
  • Loading branch information
Ram Chandrasekar committed Feb 23, 2018
1 parent 66f2205 commit 6f2bfd5
Show file tree
Hide file tree
Showing 7 changed files with 1,405 additions and 0 deletions.
64 changes: 64 additions & 0 deletions Documentation/devicetree/bindings/thermal/qcom-lmh-dcvs.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
Limits Management Hardware - DCVS

The LMH-DCVS block is a hardware IP for every CPU cluster, to handle quick
changes in thermal limits. The hardware responds to thermal variation amongst
the CPUs in the cluster by requesting limits on the clock frequency and
voltage on the OSM hardware.

The LMH DCVS driver exports a virtual sensor that can be used to set the
thermal limits on the hardware. LMH DCVS driver can be a platform CPU Cooling
device, which registers with the CPU cooling device interface. All CPU device
nodes should reference the corresponding LMH DCVS hardware in device tree.
CPUs referencing the same LMH DCVS node will be associated with the
corresponding cooling device as related CPUs.

Properties:

- compatible:
Usage: required
Value type: <string>
Definition: shall be "qcom,msm-hw-limits"
- interrupts:
Usage: required
Value type: <interrupt_type interrupt_number interrupt_trigger_type>
Definition: Should specify interrupt information about the debug
interrupt generated by the LMH DCVSh hardware. LMH
DCVSh hardware will generate this interrupt whenever
it makes a new cpu DCVS decision.
- qcom,affinity:
Usage: Required
Value type: <u32>
Definition: Should specify the cluster affinity this hardware
corresponds to.

- isens_vref-supply:
Usage: optional
Value type: <phandle>
Definition: Should specify the phandle of the vref regulator used by
the isens hardware. This active only regulator will be
enabled by LMH DCVSh.

- isens-vref-settings:
Usage: optional
Value type: <u32 array>
Definition: Should specify the min voltage(uV), max voltage(uV) and
max load(uA) for the isens vref regulator. This
property is valid only if there is valid entry for
isens_vref-supply.

Example:

lmh_dcvs0: qcom,limits-dcvs@0 {
compatible = "qcom,msm-hw-limits";
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
qcom,affinity = <0>;
isens_vref-supply = <&pm8998_l1_ao>;
isens-vref-settings = <880000 880000 36000>;
};

CPU0: cpu@0 {
device_type = "cpu";
compatible = "arm,armv8";
reg = <0x0 0x0>;
qcom,lmh-dcvs = <&lmh_dcvs0>;;
};
11 changes: 11 additions & 0 deletions drivers/thermal/qcom/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,14 @@ config QCOM_TSENS
thermal zone device via the mode file results in disabling the sensor.
Also able to set threshold temperature for both hot and cold and update
when a threshold is reached.

config QTI_THERMAL_LIMITS_DCVS
bool "QTI LMH DCVS Driver"
depends on THERMAL_OF
depends on CPU_THERMAL
help
This enables the driver for Limits Management Hardware - DCVS block
for the application processors. The h/w block that is available for
each cluster can be used to perform quick thermal mitigations by
tracking temperatures of the CPUs and taking thermal action in the
hardware without s/w intervention.
1 change: 1 addition & 0 deletions drivers/thermal/qcom/Makefile
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
obj-$(CONFIG_QCOM_TSENS) += qcom_tsens.o
qcom_tsens-y += tsens.o tsens-common.o tsens-8916.o tsens-8974.o tsens-8960.o tsens-8996.o
obj-$(CONFIG_QTI_THERMAL_LIMITS_DCVS) += msm_lmh_dcvs.o lmh_dbg.o
Loading

0 comments on commit 6f2bfd5

Please sign in to comment.