From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B1795CCF2F5 for ; Mon, 19 Jan 2026 12:09:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=cMrVLGsKM8H03VwAW6ImvO14/hjO88Z7BKgUWYt5ZPY=; b=ezRzdy9i5rXODkf+IRU1RHOaZ3 vlRc4X5bkvQM/J0VlN+33TiWtQrGnryQnQWRlaG0aE9l/ncHfz1AXyCXspF5Pb6GrCFjm0XQR64Fa UZ2IbBuFU0dNlNbQuVoxhb3vJcc+bN1uUoGLr9SLFpQoOj9EQry40o/IHM2UanDEWRsPu8gNRUCS7 F6vCFZwFcaGKTC8gHPvQw4N/sabvDbTrlmJ2akmVr4aGQgaf+zitEZq9n446MY60LHgn5HdArH2kc UrQbVfbh14d2BZNTPamITPwyyxxxQnnPuSe1ZH9orutAxGdXcrzI0nzN/UizopOjBTqNxU9eLvhbD 3YKjl/zQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vho4O-00000001xaK-1MDp; Mon, 19 Jan 2026 12:09:22 +0000 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vho43-00000001xTe-3GmA for linux-arm-kernel@lists.infradead.org; Mon, 19 Jan 2026 12:09:04 +0000 Received: by mail-wr1-x442.google.com with SMTP id ffacd0b85a97d-42fb6ce71c7so3765429f8f.1 for ; Mon, 19 Jan 2026 04:08:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768824538; x=1769429338; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=cMrVLGsKM8H03VwAW6ImvO14/hjO88Z7BKgUWYt5ZPY=; b=TzqNcmJXW47wSFDwdDBbstOstZMxVqyn4WvyQhugKGQ1TTzSrcd2r3kY12KMFgSLSs GN0Ppx3sE2r2tR+Tmy9V3sNkRuwDdaH7i2CxRg3qJWGnvyb3Er7GtTYzglLpUpZbtnXS GSgr9fxX7SKIZEbriKfNmxv2t5cdGvmGpzo54ZZhhEqEuFbbwdFOpmzSa1J1shvdK8kj lu9W3hGzvkVzagtkFk9crJ4vIviiRXEfG6wmrNo6fJOn2jH8CUNJjxKqrFFDohq3OUaa wUTSgAUtHBvW3/f5FsfUQ+QOjT9yhLm25+n93/sIyVaWIOJIAY1ClqZRqpkZgnY0CNUt qVCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768824538; x=1769429338; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=cMrVLGsKM8H03VwAW6ImvO14/hjO88Z7BKgUWYt5ZPY=; b=wua3NDgDcH5sP5DzPqwfKa1CTIFbMozPWSG9YmXohcmZYPTEVRR1iA4EZ/oShSt41d Lb9jPeuCBGmIQ8LNWrtcy9R5vFSsGA0A6cdZOKUl/sY015QS3vDkDeuUZH1vpcoBFRtP pHINw3zycvGVjXZICpPsLv0VeLnUV1K1Zxpyl+kKYhHgOzT3oXwsw1J7Rbq/yt1tsNcK +A2YLLs10RkqyrSIWCVh2B8hLyWe32YZOSuJJBS4CSMsDsdsecg28EnjDYeoyJ1bgKNc 2PlZRDmht/+HZuojXiPGwPjOwFT1dK8A84oZYHwOmPm60+XrlhI1x73oqo3ocorBVwLv sCDw== X-Forwarded-Encrypted: i=1; AJvYcCXrhrt2fQD6lYmIvZzswJJmSApngYnCP4j/4AFQ6R9kYFWd+1ciKspnjk5wkagiammPehxk/TKAGqT1jFDjP5lB@lists.infradead.org X-Gm-Message-State: AOJu0YwBThJYw2P1A0g7GaN9Dte42j5gDLs7M9eB5UywPKuHGx87vCqH WpY/H4Rj6hg1JxMjyuwBOv5SluWxP+eh59bDhoaLMG7WWAuSSVh/4LIO4sFIk3qw/2E= X-Gm-Gg: AZuq6aLowHwaXXcx6gDX/zDSRsDamQn13HcnbUitti1UgVUqD3vAS9mk1YodzoozCH2 pf3CD2s/7aiU/cyfeklTXDSF9VL2GWvhKwnHj/suvqICmduOiDapP2SFSezCFny+TZq2ap6ZKzO vHmtklEu5Ai/I6mJhWe3+50HgNvqQvhhnbR9Z4Csdwk8J5408VvDcibrHDuGA0W+t0ifEqPjLFS cX0vU/eXu7YL+Eey7/xUXrp710y+UIOHAw8BkbgwKaUiK2j/1TiiEc/HurXAGCp7egBawHhj7BS EHmbYALrg99p0lEMrFgH9ipPsLeGOVW/Bi/jKFKk+ukhzcXLyxOvVv5YtWuW6m+OWuUS0ukuRlw eVggH4jfxQyZATw7FbCsm+SOAshGKWImPhdeErnu+E1wpATazq/FogrfUBNu7fVU8QWA8VQTSqY YrXw/kfylTPZZXd98BdQaoBCDDK9b8e2Ww40fUhAzQvBxVJVzVHRx4ohWIsxr0o956mFD/wg== X-Received: by 2002:a05:6000:2508:b0:42f:a025:92b3 with SMTP id ffacd0b85a97d-4356997f624mr13199095f8f.2.1768824537653; Mon, 19 Jan 2026 04:08:57 -0800 (PST) Received: from ta2.c.googlers.com (164.102.240.35.bc.googleusercontent.com. [35.240.102.164]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356997e664sm20698421f8f.30.2026.01.19.04.08.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 04:08:57 -0800 (PST) From: Tudor Ambarus Date: Mon, 19 Jan 2026 12:08:52 +0000 Subject: [PATCH v2 6/7] arm64: dts: exynos: gs101: Add thermal management unit MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260119-acpm-tmu-v2-6-e02a834f04c6@linaro.org> References: <20260119-acpm-tmu-v2-0-e02a834f04c6@linaro.org> In-Reply-To: <20260119-acpm-tmu-v2-0-e02a834f04c6@linaro.org> To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krzysztof Kozlowski , Alim Akhtar , Bartlomiej Zolnierkiewicz , Kees Cook , "Gustavo A. R. Silva" , Peter Griffin , =?utf-8?q?Andr=C3=A9_Draszik?= Cc: willmcvicker@google.com, jyescas@google.com, shin.son@samsung.com, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-hardening@vger.kernel.org, Tudor Ambarus X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768824532; l=8775; i=tudor.ambarus@linaro.org; s=20241212; h=from:subject:message-id; bh=FbDNXAgPAAbLgVJFNLv0wQaisif895tAwODlc1nDIio=; b=qx+povYGdT0SCFv279IfjgdUWsxoqkhWF6qHZZALvaE22fhrYKhuXAxLzfU98oDlk5mXUiVBU t7OehfZc22vAY1BC+MzyyBUIR9n0Zis/U51nv9beTQD7+vsnuAuPZdD X-Developer-Key: i=tudor.ambarus@linaro.org; a=ed25519; pk=uQzE0NXo3dIjeowMTOPCpIiPHEz12IA/MbyzrZVh9WI= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260119_040859_908075_7D46F702 X-CRM114-Status: GOOD ( 13.76 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add the Thermal Management Unit (TMU) support for the Google GS101 SoC. Describe the TMU using a consolidated SoC node that includes memory resources for interrupt identification and a phandle to the ACPM IPC interface for functional control. Define thermal zones for the little, mid, and big CPU clusters, including associated trip points and cooling-device maps to enable thermal mitigation. Signed-off-by: Tudor Ambarus --- arch/arm64/boot/dts/exynos/google/gs101-tmu.dtsi | 209 +++++++++++++++++++++++ arch/arm64/boot/dts/exynos/google/gs101.dtsi | 18 ++ 2 files changed, 227 insertions(+) diff --git a/arch/arm64/boot/dts/exynos/google/gs101-tmu.dtsi b/arch/arm64/boot/dts/exynos/google/gs101-tmu.dtsi new file mode 100644 index 0000000000000000000000000000000000000000..6262c3b890aa2f7ad572c32b30bf926df804ec1e --- /dev/null +++ b/arch/arm64/boot/dts/exynos/google/gs101-tmu.dtsi @@ -0,0 +1,209 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Google GS101 TMU configurations device tree source + * + * Copyright 2020 Samsung Electronics Co., Ltd. + * Copyright 2020 Google LLC. + * Copyright 2026 Linaro Ltd. + */ + +#include + +/ { + thermal-zones { + cpucl2-thermal { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&tmu_top 0>; + + trips { + big_cold: big-cold { + temperature = <20000>; + hysteresis = <5000>; + type = "active"; + }; + + big_switch_on: big-switch-on { + temperature = <70000>; + hysteresis = <2000>; + type = "active"; + }; + + big_control_temp: big-control-temp { + temperature = <90000>; + hysteresis = <5000>; + type = "passive"; + }; + + big_pre_switch_on: big-pre-switch-on { + temperature = <55000>; + hysteresis = <2000>; + type = "active"; + }; + + big_alert2: big-alert2 { + temperature = <95000>; + hysteresis = <5000>; + type = "active"; + }; + + big_hw_throttling: big-hw-throttling { + temperature = <103000>; + hysteresis = <5000>; + type = "active"; + }; + + big_pause: big-pause { + temperature = <108000>; + hysteresis = <5000>; + type = "active"; + }; + + big_hot: big-hot { + temperature = <115000>; + hysteresis = <3000>; + type = "hot"; + }; + }; + + cooling-maps { + map0 { + trip = <&big_control_temp>; + cooling-device = <&cpu6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, + <&cpu7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; + }; + + cpucl1-thermal { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&tmu_top 1>; + + trips { + mid_cold: mid-cold { + temperature = <20000>; + hysteresis = <5000>; + type = "active"; + }; + + mid_switch_on: mid-switch-on { + temperature = <70000>; + hysteresis = <2000>; + type = "active"; + }; + + mid_control_temp: mid-control-temp { + temperature = <90000>; + hysteresis = <5000>; + type = "passive"; + }; + + mid_pre_switch_on: mid-pre-switch-on { + temperature = <55000>; + hysteresis = <2000>; + type = "active"; + }; + + mid_alert2: mid-alert2 { + temperature = <95000>; + hysteresis = <5000>; + type = "active"; + }; + + mid_hw_throttling: mid-hw-throttling { + temperature = <98000>; + hysteresis = <5000>; + type = "active"; + }; + + mid_pause: mid-pause { + temperature = <108000>; + hysteresis = <5000>; + type = "active"; + }; + + mid_hot: mid-hot { + temperature = <115000>; + hysteresis = <3000>; + type = "hot"; + }; + }; + + cooling-maps { + map0 { + trip = <&mid_control_temp>; + cooling-device = <&cpu4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, + <&cpu5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; + }; + + cpucl0-thermal { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&tmu_top 2>; + + trips { + little_cold: little-cold { + temperature = <20000>; + hysteresis = <5000>; + type = "active"; + }; + + little_switch_on: little-switch-on { + temperature = <70000>; + hysteresis = <2000>; + type = "active"; + }; + + little_control_temp: little-control-temp { + temperature = <95000>; + hysteresis = <5000>; + type = "passive"; + }; + + little_pre_switch_on: little-pre-switch-on { + temperature = <55000>; + hysteresis = <2000>; + type = "active"; + }; + + little_alert2: little-alert2 { + temperature = <100000>; + hysteresis = <5000>; + type = "active"; + }; + + little_alert5: little-alert5 { + temperature = <103000>; + hysteresis = <5000>; + type = "active"; + }; + + little_alert6: little-alert6 { + temperature = <110000>; + hysteresis = <5000>; + type = "active"; + }; + + little_hot: little-hot { + temperature = <115000>; + hysteresis = <3000>; + type = "hot"; + }; + }; + + cooling-maps { + map0 { + trip = <&little_control_temp>; + cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, + <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, + <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, + <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; + }; + + }; +}; diff --git a/arch/arm64/boot/dts/exynos/google/gs101.dtsi b/arch/arm64/boot/dts/exynos/google/gs101.dtsi index d085f9fb0f62ac2f57b104c20880e64d885d0bee..4b8c7edaddb6fd49e61496f2f21f348db0b58f10 100644 --- a/arch/arm64/boot/dts/exynos/google/gs101.dtsi +++ b/arch/arm64/boot/dts/exynos/google/gs101.dtsi @@ -74,6 +74,7 @@ cpu0: cpu@0 { compatible = "arm,cortex-a55"; reg = <0x0000>; clocks = <&acpm_ipc GS101_CLK_ACPM_DVFS_CPUCL0>; + #cooling-cells = <2>; enable-method = "psci"; cpu-idle-states = <&ananke_cpu_sleep>; capacity-dmips-mhz = <250>; @@ -86,6 +87,7 @@ cpu1: cpu@100 { compatible = "arm,cortex-a55"; reg = <0x0100>; clocks = <&acpm_ipc GS101_CLK_ACPM_DVFS_CPUCL0>; + #cooling-cells = <2>; enable-method = "psci"; cpu-idle-states = <&ananke_cpu_sleep>; capacity-dmips-mhz = <250>; @@ -98,6 +100,7 @@ cpu2: cpu@200 { compatible = "arm,cortex-a55"; reg = <0x0200>; clocks = <&acpm_ipc GS101_CLK_ACPM_DVFS_CPUCL0>; + #cooling-cells = <2>; enable-method = "psci"; cpu-idle-states = <&ananke_cpu_sleep>; capacity-dmips-mhz = <250>; @@ -110,6 +113,7 @@ cpu3: cpu@300 { compatible = "arm,cortex-a55"; reg = <0x0300>; clocks = <&acpm_ipc GS101_CLK_ACPM_DVFS_CPUCL0>; + #cooling-cells = <2>; enable-method = "psci"; cpu-idle-states = <&ananke_cpu_sleep>; capacity-dmips-mhz = <250>; @@ -122,6 +126,7 @@ cpu4: cpu@400 { compatible = "arm,cortex-a76"; reg = <0x0400>; clocks = <&acpm_ipc GS101_CLK_ACPM_DVFS_CPUCL1>; + #cooling-cells = <2>; enable-method = "psci"; cpu-idle-states = <&enyo_cpu_sleep>; capacity-dmips-mhz = <620>; @@ -134,6 +139,7 @@ cpu5: cpu@500 { compatible = "arm,cortex-a76"; reg = <0x0500>; clocks = <&acpm_ipc GS101_CLK_ACPM_DVFS_CPUCL1>; + #cooling-cells = <2>; enable-method = "psci"; cpu-idle-states = <&enyo_cpu_sleep>; capacity-dmips-mhz = <620>; @@ -146,6 +152,7 @@ cpu6: cpu@600 { compatible = "arm,cortex-x1"; reg = <0x0600>; clocks = <&acpm_ipc GS101_CLK_ACPM_DVFS_CPUCL2>; + #cooling-cells = <2>; enable-method = "psci"; cpu-idle-states = <&hera_cpu_sleep>; capacity-dmips-mhz = <1024>; @@ -158,6 +165,7 @@ cpu7: cpu@700 { compatible = "arm,cortex-x1"; reg = <0x0700>; clocks = <&acpm_ipc GS101_CLK_ACPM_DVFS_CPUCL2>; + #cooling-cells = <2>; enable-method = "psci"; cpu-idle-states = <&hera_cpu_sleep>; capacity-dmips-mhz = <1024>; @@ -639,6 +647,15 @@ watchdog_cl1: watchdog@10070000 { status = "disabled"; }; + tmu_top: thermal-sensor@100a0000 { + compatible = "google,gs101-tmu-top"; + reg = <0x100a0000 0x800>; + clocks = <&cmu_misc CLK_GOUT_MISC_TMU_TOP_PCLK>; + interrupts = ; + samsung,acpm-ipc = <&acpm_ipc>; + #thermal-sensor-cells = <1>; + }; + trng: rng@10141400 { compatible = "google,gs101-trng", "samsung,exynos850-trng"; @@ -1861,3 +1878,4 @@ timer { }; #include "gs101-pinctrl.dtsi" +#include "gs101-tmu.dtsi" -- 2.52.0.457.g6b5491de43-goog