[PATCH v3 3/3] riscv: dts: spacemit: Add thermal sensor for K1 SoC

Anand Moon linux.amoon at gmail.com
Tue Apr 21 22:56:56 PDT 2026


Hi Shuwei,

On Mon, 19 Jan 2026 at 08:13, Shuwei Wu <shuweiwoo at 163.com> wrote:
>
> Include the Thermal Sensor node in the SpacemiT K1 dtsi
> with definitions for registers, clocks, and interrupts.
> Additionally, configure thermal zones for the soc, package, gpu, and
> clusters to enable temperature monitoring via the thermal framework.
>
> Signed-off-by: Shuwei Wu <shuweiwoo at 163.com>
> ---
> Changes in v2:
> - Update compatible to "spacemit,k1-tsensor"
> ---
>  arch/riscv/boot/dts/spacemit/k1.dtsi | 101 +++++++++++++++++++++++++++++++++++
>  1 file changed, 101 insertions(+)
>
> diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spacemit/k1.dtsi
> index 7818ca4979b6..0fe7396ea6e4 100644
> --- a/arch/riscv/boot/dts/spacemit/k1.dtsi
> +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi
> @@ -338,6 +338,96 @@ osc_32k: clock-32k {
>                 };
>         };
>
I feel the thermal zones appear to be configured at significantly
higher temperatures
compared to the thresholds typically used in commercial-grade and
industrial-grade device
test environments 1.2 Test Environment

[1] https://www.spacemit.com/community/document/info?lang=en&nodepath=hardware/key_stone/k1/k1_hw/avl_veri_sop.md

Thermal zones should be defined as part of the SBC board design,
with the option to integrate PWM-controlled fan support in the future.

Thanks
-Anand
> +       thermal-zones {
> +               soc-thermal {
> +                       polling-delay-passive = <0>;
> +                       polling-delay = <0>;
> +                       thermal-sensors = <&thermal 0>;
> +
> +                       trips {
> +                               soc-crit {
> +                                       temperature = <115000>;
> +                                       hysteresis = <0>;
> +                                       type = "critical";
> +                               };
> +                       };
> +               };
> +
> +               package-thermal {
> +                       polling-delay-passive = <0>;
> +                       polling-delay = <0>;
> +                       thermal-sensors = <&thermal 1>;
> +
> +                       trips {
> +                               package-crit {
> +                                       temperature = <115000>;
> +                                       hysteresis = <0>;
> +                                       type = "critical";
> +                               };
> +                       };
> +               };
> +
> +               gpu-thermal {
> +                       polling-delay-passive = <100>;
> +                       polling-delay = <0>;
> +                       thermal-sensors = <&thermal 2>;
> +
> +                       trips {
> +                               gpu-alert {
> +                                       temperature = <85000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +
> +                               gpu-crit {
> +                                       temperature = <115000>;
> +                                       hysteresis = <0>;
> +                                       type = "critical";
> +                               };
> +                       };
> +               };
> +
> +               cluster0-thermal {
> +                       polling-delay-passive = <100>;
> +                       polling-delay = <0>;
> +                       thermal-sensors = <&thermal 3>;
> +
> +                       trips {
> +                               cluster0-alert {
> +                                       temperature = <85000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +
> +                               cluster0-crit {
> +                                       temperature = <115000>;
> +                                       hysteresis = <0>;
> +                                       type = "critical";
> +                               };
> +                       };
> +               };
> +
> +               cluster1-thermal {
> +                       polling-delay-passive = <100>;
> +                       polling-delay = <0>;
> +                       thermal-sensors = <&thermal 4>;
> +
> +                       trips {
> +                               cluster1-alert {
> +                                       temperature = <85000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +
> +                               cluster1-crit {
> +                                       temperature = <115000>;
> +                                       hysteresis = <0>;
> +                                       type = "critical";
> +                               };
> +                       };
> +               };
> +       };
> +
>         soc {
>                 compatible = "simple-bus";
>                 interrupt-parent = <&plic>;
> @@ -434,6 +524,17 @@ syscon_apbc: system-controller at d4015000 {
>                         #reset-cells = <1>;
>                 };
>
> +               thermal: thermal at d4018000 {
> +                       compatible = "spacemit,k1-tsensor";
> +                       reg = <0x0 0xd4018000 0x0 0x100>;
> +                       clocks = <&syscon_apbc CLK_TSEN>,
> +                                <&syscon_apbc CLK_TSEN_BUS>;
> +                       clock-names = "core", "bus";
> +                       interrupts = <61>;
> +                       resets = <&syscon_apbc RESET_TSEN>;
> +                       #thermal-sensor-cells = <1>;
> +               };
> +
>                 i2c6: i2c at d4018800 {
>                         compatible = "spacemit,k1-i2c";
>                         reg = <0x0 0xd4018800 0x0 0x38>;
>
> --
> 2.52.0
>
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv



More information about the linux-riscv mailing list