[PATCH v8 0/5] thermal: samsung: Add support for Google GS101 TMU
Daniel Lezcano
daniel.lezcano at oss.qualcomm.com
Tue Oct 13 06:33:35 PDT 2026
Hi Tudor,
I noticed I picked up your series without notifying you
However, I did not pay attention but picked also the dts files.
Shall I drop them ? (AFAICS there is one comment) and let you handle
them separately ?
Le 03/06/2026 à 15:00, Tudor Ambarus a écrit :
> Add support for the Thermal Management Unit (TMU) on the Google GS101
> SoC.
>
> The GS101 TMU implementation utilizes a hybrid architecture where
> management is shared between the kernel and the Alive Clock and
> Power Manager (ACPM) firmware. This hybrid ACPM TMU architecture is
> also present on other Samsung Exynos SoCs (e.g., AutoV920, Exynos850).
>
> Dependencies
> ============
> The set depends on the ACPM TMU firmware helper driver that was queued
> via the Samsung SoC tree:
> https://lore.kernel.org/r/20260531115713.19388-2-krzk@kernel.org/T/#u
>
> The bindings, driver and MAINTAINERS are expected to go via the thermal
> tree. The dts and defconfig patches are expected to go via the Samsung
> SoC tree, after the bindings and driver are queued.
>
> Architecture Overview
> =====================
>
> The hardware supports two parallel control paths. For this
> implementation, responsibilities are split as follows:
>
> 1. Kernel Responsibility:
> - maintain direct memory-mapped access to the interrupt pending
> (INTPEND) registers to identify thermal events.
> - map physical hardware interrupts to logical thermal zones.
> - coordinate functional operations through the ACPM IPC protocol.
>
> 2. Firmware Responsibility (ACPM):
> - handle sensor initialization.
> - manage thermal thresholds configuration.
> - perform temperature acquisition and expose data via IPC.
>
> Sensor Mapping (One-to-Many)
> ============================
>
> The SoC contains multiple physical temperature sensors, but the ACPM
> firmware abstracts these into logical groups (Clusters) for reporting:
>
> - ACPM Sensor 0 (Big Cluster): Aggregates physical sensors 0, 6, 7, 8, 9.
> - ACPM Sensor 1 (Mid Cluster): Aggregates physical sensors 4, 5.
> - ACPM Sensor 2 (Little Cluster): Aggregates physical sensors 1, 2.
>
> The driver maps physical interrupt bits back to these logical parents.
> When an interrupt fires, the driver checks the bitmask in the INTPEND
> registers and updates the corresponding logical thermal zone.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus at linaro.org>
> ---
> Changes in v8:
> - reword commit message and Kconfig description (Alexey)
> - adjust Kconfig dependency to require EXYNOS_ACPM_PROTOCOL unconditionally.
> - fix probe error path autosuspend clock leak (Sashiko).
> - fix system sleep clock leak via `pm_runtime_force_suspend` (Sashiko).
> - Link to v7: https://lore.kernel.org/r/20260602-acpm-tmu-v7-0-8047dd54b0e9@linaro.org
>
> Changes in v7, addressed Sashiko's driver review:
> - add a rollback mechanism in `acpm_tmu_control` to prevent leaving hardware in
> a dirty state when we fail to enable a sensor midway during probe or
> resume.
> - prevent calling `ops->read_temp` on a disabled sensor if a concurrent disable
> occurs (e.g. suspend).
> - don't mix mutex guards with goto as per cleanup guidelines
> - fix irq clear order in `acpm_tmu_thread_fn`. Avoid clearing a new interrupt
> that occurs during `thermal_zone_device_update` (which can cause missed
> over-temperature events).
> - initialize hardware thresholds at boot and prevent boot-time spurious
> interrupts (which previously triggered because sensors were enabled before
> thresholds were set).
> - ensure clocks are disabled when removing the driver, even if an autosuspend
> is pending (which would otherwise get cancelled by `pm_runtime_disable()`,
> leaking the clock).
> - add rollback in `acpm_tmu_suspend` on failure. If system suspend fails at
> `ops->suspend`, re-enable the TMU sensors so they don't remain disabled.
> - Link to v6: https://lore.kernel.org/r/20260528-acpm-tmu-v6-0-b4d7ce57594b@linaro.org
>
> Changes in v6:
> - defconfig: reword commit message (Krzysztof).
> - bindings: make samsung,acpm-ipc a required property (Krzysztof,
> sashiko)
> - address sashiko's review feedback on the driver:
> - ensure that the loop continues to disable the rest of the sensors
> on the teardown path in `acpm_tmu_control`.
> - avoid leaving the hardware in an active state during remove by
> s/pm_runtime_put_autosuspend(dev)/pm_runtime_put_sync(dev) in
> `acpm_tmu_control`.
> - initialize `acpm_temp` in `acpm_tmu_get_temp` to mitigate the risk
> of exposing stack memory.
> - fix race condition in `acpm_tmu_update_thresholds`. Guard
> `was_enabled = sensor->enabled;` with the mutex held.
> - prevent keeping the sensor disabled on a threshold setting error
> scenario.
> - allow the IRQ subsystem to correctly detect an interrupt storm by
> returning IRQ_NONE.
> - devres ordering in probe, eliminate a UAF by moving the IRQ request
> after registering the zones.
> - self review on Kconfig:
> - add `depends on HAS_IOMEM`, due to `devm_platform_ioremap_resource`
> - add `default ARCH_EXYNOS`, based on Krzysztof's patch from:
> Link: https://lore.kernel.org/linux-samsung-soc/b20c560f-4bc3-4686-9c91-36d93f1535b2@oss.qualcomm.com/T/#t
> - Link to v5: https://lore.kernel.org/r/20260525-acpm-tmu-v5-0-85fde739752e@linaro.org
>
> Changes in v5:
> - no changes, rebase on top of krzk/for-next branch.
> - Link to v4: https://lore.kernel.org/r/20260423-acpm-tmu-v4-0-8b59f8548634@linaro.org
>
> Changes in v4: address sashiko review:
> - thermal driver: avoid mixing mutex cleanup helpers with goto statements
> - firmware, tmu:
> - remove __packed from union acpm_tmu_msg.
> - return ERR_PTR(-ENODEV) for devm_acpm_get_by_phandle when
> CONFIG_EXYNOS_ACPM_PROTOCOL is disabled.
> - Link to v3: https://lore.kernel.org/r/20260420-acpm-tmu-v3-0-3dc8e93f0b26@linaro.org
>
> Changes in v3:
> - thermal driver: use .set_trips() instead of .set_trip_point()
> - new cleaning/prerequisite patches for firmware/acpm:
> - firmware: samsung: acpm: Make acpm_ops const and access via pointer
> - firmware: samsung: acpm: Drop redundant _ops suffix in acpm_ops members
> - firmware: samsung: acpm: Consolidate transfer initialization helper
> - firmware: acpm: TMU helpers - check return value from the firmware
> - overall change: emphasize that the ACPM TMU hibrid approach applies to
> other Samsung SoCs as well (Exynos850, AutoV920).
> - dts: drop active trip points, update trip point values
> - collect R-b tags
> - Link to v2: https://lore.kernel.org/r/20260119-acpm-tmu-v2-0-e02a834f04c6@linaro.org
>
> Changes in v2:
> - architecture: switch from a syscon/MFD approach to a thermal-sensor
> node with a phandle to the ACPM interface
> - bindings: address Krzysztof's feedback, drop redundencies,
> interrupts description.
> - firmware: introduce devm_acpm_get_by_phandle() to standardize IPC
> handle acquisition.
> - thermal driver: drop compatible's data and use the static data from
> the driver directly.
> - defconfig, make EXYNOS_ACPM_THERMAL a module
> - Link to v1: https://lore.kernel.org/r/20260114-acpm-tmu-v1-0-cfe56d93e90f@linaro.org
>
> ---
> Tudor Ambarus (5):
> dt-bindings: thermal: Add Google GS101 TMU
> thermal: samsung: Add Exynos ACPM TMU driver GS101
> MAINTAINERS: Add entry for Samsung Exynos ACPM thermal driver
> arm64: dts: exynos: gs101: Add thermal management unit
> arm64: defconfig: enable Exynos ACPM thermal support
>
> .../bindings/thermal/google,gs101-tmu-top.yaml | 69 +++
> MAINTAINERS | 8 +
> arch/arm64/boot/dts/exynos/google/gs101-tmu.dtsi | 136 +++++
> arch/arm64/boot/dts/exynos/google/gs101.dtsi | 18 +
> arch/arm64/configs/defconfig | 1 +
> drivers/thermal/samsung/Kconfig | 19 +
> drivers/thermal/samsung/Makefile | 2 +
> drivers/thermal/samsung/acpm-tmu.c | 651 +++++++++++++++++++++
> 8 files changed, 904 insertions(+)
> ---
> base-commit: a1c3227fc1a1cd83cd7fceb93406da4e37fe06eb
> change-id: 20260113-acpm-tmu-27e21f0e2c3b
>
> Best regards,
More information about the linux-arm-kernel
mailing list