Loading Documentation/devicetree/bindings/thermal/qcom-lmh-dcvs.txt 0 → 100644 +79 −0 Original line number Diff line number Diff line 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_1p8-supply: - isens_vref_0p8-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 hardware needs 1.8v and 0.8v supply regulators. - isens-vref-1p8-settings: - isens-vref-0p8-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_1p8-supply and isens_vref_0p8-supply. - reg: Usage: Required Value type: <a b> Definition: where 'a' is the starting register address of the OSM/LLM and 'b' is the size of OSM/LLM address space. The register space in index 0 should be LLM and index 1 should be OSM. Example: lmh_dcvs0: qcom,limits-dcvs@18350800 { compatible = "qcom,msm-hw-limits"; interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; qcom,affinity = <0>; isens_vref_1p8-supply = <&pm8998_l1_ao>; isens-vref-1p8-settings = <880000 880000 36000>; isens_vref_0p8-supply = <&pm8998_l12_ao>; isens-vref-0p8-settings = <880000 880000 36000>; reg = <0x18350800 0x1000>, //LLM <0x18323000 0x1000>; //OSM }; CPU0: cpu@0 { device_type = "cpu"; compatible = "arm,armv8"; reg = <0x0 0x0>; qcom,lmh-dcvs = <&lmh_dcvs0>;; }; arch/arm64/configs/vendor/kona-perf_defconfig +6 −1 Original line number Diff line number Diff line Loading @@ -303,9 +303,14 @@ CONFIG_QPNP_FG_GEN4=y CONFIG_THERMAL=y CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_GOV_USER_SPACE=y CONFIG_CPU_THERMAL=y CONFIG_THERMAL_GOV_LOW_LIMITS=y CONFIG_DEVFREQ_THERMAL=y CONFIG_QCOM_SPMI_TEMP_ALARM=y CONFIG_QTI_VIRTUAL_SENSOR=y CONFIG_QTI_QMI_SENSOR=y CONFIG_QTI_BCL_PMIC5=y CONFIG_QTI_BCL_SOC_DRIVER=y CONFIG_QTI_QMI_COOLING_DEVICE=y CONFIG_MFD_I2C_PMIC=y CONFIG_MFD_SPMI_PMIC=y CONFIG_REGULATOR_FIXED_VOLTAGE=y Loading arch/arm64/configs/vendor/kona_defconfig +6 −1 Original line number Diff line number Diff line Loading @@ -311,9 +311,14 @@ CONFIG_QPNP_FG_GEN4=y CONFIG_THERMAL=y CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_GOV_USER_SPACE=y CONFIG_CPU_THERMAL=y CONFIG_THERMAL_GOV_LOW_LIMITS=y CONFIG_DEVFREQ_THERMAL=y CONFIG_QCOM_SPMI_TEMP_ALARM=y CONFIG_QTI_VIRTUAL_SENSOR=y CONFIG_QTI_QMI_SENSOR=y CONFIG_QTI_BCL_PMIC5=y CONFIG_QTI_BCL_SOC_DRIVER=y CONFIG_QTI_QMI_COOLING_DEVICE=y CONFIG_MFD_I2C_PMIC=y CONFIG_MFD_SPMI_PMIC=y CONFIG_REGULATOR_FIXED_VOLTAGE=y Loading drivers/thermal/qcom/Kconfig +20 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,26 @@ config QTI_QMI_COOLING_DEVICE The QMI cooling device will interface with remote subsystem using QTI QMI interface. 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. config QTI_AOP_REG_COOLING_DEVICE bool "QTI AOP Regulator cooling device" depends on THERMAL_OF && MSM_QMP help This enables the AOP based Regulator cooling device. This cooling device will be used by QTI chipset to place a floor voltage restriction at low temperatures. The cooling device will message the AOP using mail box to establish the floor voltage. config REGULATOR_COOLING_DEVICE bool "Regulator voltage floor cooling device" depends on REGULATOR && THERMAL_OF Loading drivers/thermal/qcom/Makefile +2 −0 Original line number Diff line number Diff line Loading @@ -5,4 +5,6 @@ obj-$(CONFIG_QTI_QMI_SENSOR) += thermal_sensor_service_v01.o qmi_sensors.o obj-$(CONFIG_QTI_BCL_PMIC5) += bcl_pmic5.o obj-$(CONFIG_QTI_BCL_SOC_DRIVER) += bcl_soc.o obj-$(CONFIG_QTI_QMI_COOLING_DEVICE) += thermal_mitigation_device_service_v01.o qmi_cooling.o obj-$(CONFIG_QTI_THERMAL_LIMITS_DCVS) += msm_lmh_dcvs.o lmh_dbg.o obj-$(CONFIG_QTI_AOP_REG_COOLING_DEVICE) += regulator_aop_cdev.o obj-$(CONFIG_REGULATOR_COOLING_DEVICE) += regulator_cdev.o Loading
Documentation/devicetree/bindings/thermal/qcom-lmh-dcvs.txt 0 → 100644 +79 −0 Original line number Diff line number Diff line 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_1p8-supply: - isens_vref_0p8-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 hardware needs 1.8v and 0.8v supply regulators. - isens-vref-1p8-settings: - isens-vref-0p8-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_1p8-supply and isens_vref_0p8-supply. - reg: Usage: Required Value type: <a b> Definition: where 'a' is the starting register address of the OSM/LLM and 'b' is the size of OSM/LLM address space. The register space in index 0 should be LLM and index 1 should be OSM. Example: lmh_dcvs0: qcom,limits-dcvs@18350800 { compatible = "qcom,msm-hw-limits"; interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; qcom,affinity = <0>; isens_vref_1p8-supply = <&pm8998_l1_ao>; isens-vref-1p8-settings = <880000 880000 36000>; isens_vref_0p8-supply = <&pm8998_l12_ao>; isens-vref-0p8-settings = <880000 880000 36000>; reg = <0x18350800 0x1000>, //LLM <0x18323000 0x1000>; //OSM }; CPU0: cpu@0 { device_type = "cpu"; compatible = "arm,armv8"; reg = <0x0 0x0>; qcom,lmh-dcvs = <&lmh_dcvs0>;; };
arch/arm64/configs/vendor/kona-perf_defconfig +6 −1 Original line number Diff line number Diff line Loading @@ -303,9 +303,14 @@ CONFIG_QPNP_FG_GEN4=y CONFIG_THERMAL=y CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_GOV_USER_SPACE=y CONFIG_CPU_THERMAL=y CONFIG_THERMAL_GOV_LOW_LIMITS=y CONFIG_DEVFREQ_THERMAL=y CONFIG_QCOM_SPMI_TEMP_ALARM=y CONFIG_QTI_VIRTUAL_SENSOR=y CONFIG_QTI_QMI_SENSOR=y CONFIG_QTI_BCL_PMIC5=y CONFIG_QTI_BCL_SOC_DRIVER=y CONFIG_QTI_QMI_COOLING_DEVICE=y CONFIG_MFD_I2C_PMIC=y CONFIG_MFD_SPMI_PMIC=y CONFIG_REGULATOR_FIXED_VOLTAGE=y Loading
arch/arm64/configs/vendor/kona_defconfig +6 −1 Original line number Diff line number Diff line Loading @@ -311,9 +311,14 @@ CONFIG_QPNP_FG_GEN4=y CONFIG_THERMAL=y CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_GOV_USER_SPACE=y CONFIG_CPU_THERMAL=y CONFIG_THERMAL_GOV_LOW_LIMITS=y CONFIG_DEVFREQ_THERMAL=y CONFIG_QCOM_SPMI_TEMP_ALARM=y CONFIG_QTI_VIRTUAL_SENSOR=y CONFIG_QTI_QMI_SENSOR=y CONFIG_QTI_BCL_PMIC5=y CONFIG_QTI_BCL_SOC_DRIVER=y CONFIG_QTI_QMI_COOLING_DEVICE=y CONFIG_MFD_I2C_PMIC=y CONFIG_MFD_SPMI_PMIC=y CONFIG_REGULATOR_FIXED_VOLTAGE=y Loading
drivers/thermal/qcom/Kconfig +20 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,26 @@ config QTI_QMI_COOLING_DEVICE The QMI cooling device will interface with remote subsystem using QTI QMI interface. 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. config QTI_AOP_REG_COOLING_DEVICE bool "QTI AOP Regulator cooling device" depends on THERMAL_OF && MSM_QMP help This enables the AOP based Regulator cooling device. This cooling device will be used by QTI chipset to place a floor voltage restriction at low temperatures. The cooling device will message the AOP using mail box to establish the floor voltage. config REGULATOR_COOLING_DEVICE bool "Regulator voltage floor cooling device" depends on REGULATOR && THERMAL_OF Loading
drivers/thermal/qcom/Makefile +2 −0 Original line number Diff line number Diff line Loading @@ -5,4 +5,6 @@ obj-$(CONFIG_QTI_QMI_SENSOR) += thermal_sensor_service_v01.o qmi_sensors.o obj-$(CONFIG_QTI_BCL_PMIC5) += bcl_pmic5.o obj-$(CONFIG_QTI_BCL_SOC_DRIVER) += bcl_soc.o obj-$(CONFIG_QTI_QMI_COOLING_DEVICE) += thermal_mitigation_device_service_v01.o qmi_cooling.o obj-$(CONFIG_QTI_THERMAL_LIMITS_DCVS) += msm_lmh_dcvs.o lmh_dbg.o obj-$(CONFIG_QTI_AOP_REG_COOLING_DEVICE) += regulator_aop_cdev.o obj-$(CONFIG_REGULATOR_COOLING_DEVICE) += regulator_cdev.o