Kernel-4.18.0-80.el8_zx2967-thermal

  • ZTE zx2967 family Thermal

Required Properties:

  • compatible: should be one of the following.
    • zte,zx296718-thermal
  • reg: physical base address of the controller and length of memory mapped
    region.
  • clocks : Pairs of phandle and specifier referencing the controller’s clocks.
  • clock-names: “topcrm” for the topcrm clock.
         "apb" for the apb clock.
    
  • #thermal-sensor-cells: must be 0.

Please note: slope coefficient defined in thermal-zones section need to be
multiplied by 1000.

Example for tempsensor:

tempsensor: tempsensor@148a000 {
    compatible = "zte,zx296718-thermal";
    reg = <0x0148a000 0x20>;
    clocks = <&topcrm TEMPSENSOR_GATE>, <&audiocrm AUDIO_TS_PCLK>;
    clock-names = "topcrm", "apb";
    #thermal-sensor-cells = <0>;
};

Example for cooling device:

cooling_dev: cooling_dev {
    cluster0_cooling_dev: cluster0-cooling-dev {
        #cooling-cells = <2>;
        cpumask = <0xf>;
        capacitance = <1500>;
    };

cluster1_cooling_dev: cluster1-cooling-dev {
        #cooling-cells = <2>;
        cpumask = <0x30>;
        capacitance = <2000>;
    };
};

Example for thermal zones:

thermal-zones {
    zx296718_thermal: zx296718_thermal {
        polling-delay-passive = <500>;
        polling-delay = <1000>;
        sustainable-power = <6500>;

        thermal-sensors = <&tempsensor 0>;
        /*
         * slope need to be multiplied by 1000.
         */
        coefficients = <1951 (-922)>;

        trips {
            trip0: switch_on_temperature {
                temperature = <90000>;
                hysteresis = <2000>;
                type = "passive";
            };

            trip1: desired_temperature {
                temperature = <100000>;
                hysteresis = <2000>;
                type = "passive";
            };

            crit: critical_temperature {
                temperature = <110000>;
                hysteresis = <2000>;
                type = "critical";
            };
        };

        cooling-maps {
            map0 {
                trip = <&trip0>;
                cooling-device = <&gpu 2 5>;
            };

            map1 {
                trip = <&trip0>;
                cooling-device = <&cluster0_cooling_dev 1 2>;
            };

            map2 {
                trip = <&trip1>;
                cooling-device = <&cluster0_cooling_dev 1 2>;
            };

            map3 {
                trip = <&crit>;
                cooling-device = <&cluster0_cooling_dev 1 2>;
            };

            map4 {
                trip = <&trip0>;
                cooling-device = <&cluster1_cooling_dev 1 2>;
                contribution = <9000>;
            };

            map5 {
                trip = <&trip1>;
                cooling-device = <&cluster1_cooling_dev 1 2>;
                contribution = <4096>;
            };

            map6 {
                trip = <&crit>;
                cooling-device = <&cluster1_cooling_dev 1 2>;
                contribution = <4096>;
            };
        };
    };
};