[PATCH 5/6] firmware: samsung: acpm: Add TMU protocol support
Tudor Ambarus
tudor.ambarus at linaro.org
Thu May 7 01:31:32 PDT 2026
On 5/6/26 6:13 PM, Alexey Klimov wrote:
> On Wed May 6, 2026 at 12:39 PM BST, Tudor Ambarus wrote:
>> The Thermal Management Unit (TMU) on the Google GS101 SoC is managed
>> through a hybrid model shared between the kernel and the Alive Clock
>> and Power Manager (ACPM) firmware.
>>
>> Add the protocol helpers required to communicate with the ACPM for
>> thermal operations, including initialization, threshold configuration,
>> temperature reading, and system suspend/resume handshakes.
>>
>> Signed-off-by: Tudor Ambarus <tudor.ambarus at linaro.org>
>> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski at oss.qualcomm.com>
>> ---
>> drivers/firmware/samsung/Makefile | 1 +
>> drivers/firmware/samsung/exynos-acpm-tmu.c | 239 +++++++++++++++++++++
>> drivers/firmware/samsung/exynos-acpm-tmu.h | 28 +++
>> drivers/firmware/samsung/exynos-acpm.c | 12 ++
>> .../linux/firmware/samsung/exynos-acpm-protocol.h | 18 ++
>> 5 files changed, 298 insertions(+)
>>
>> diff --git a/drivers/firmware/samsung/Makefile b/drivers/firmware/samsung/Makefile
>> index 80d4f89b33a9..5a6f72bececf 100644
>> --- a/drivers/firmware/samsung/Makefile
>> +++ b/drivers/firmware/samsung/Makefile
>> @@ -3,4 +3,5 @@
>> acpm-protocol-objs := exynos-acpm.o
>> acpm-protocol-objs += exynos-acpm-pmic.o
>> acpm-protocol-objs += exynos-acpm-dvfs.o
>> +acpm-protocol-objs += exynos-acpm-tmu.o
>> obj-$(CONFIG_EXYNOS_ACPM_PROTOCOL) += acpm-protocol.o
>> diff --git a/drivers/firmware/samsung/exynos-acpm-tmu.c b/drivers/firmware/samsung/exynos-acpm-tmu.c
>> new file mode 100644
>> index 000000000000..c68d60b4c0b3
>> --- /dev/null
>> +++ b/drivers/firmware/samsung/exynos-acpm-tmu.c
>
> [..]
>
>> +static int acpm_tmu_to_linux_err(s8 fw_err)
>> +{
>> + /*
>> + * ACPM_TMU_INIT uses BIT(0) and BIT(1) of msg.rx.ret to flag APM
>> + * capabilities. Treat zero and all positive values as success.
>
> ACPM_TMU_INIT returns capabilities inside designated error field?
yes
> What about other messages/commands? They just return error code there?
all the other commands either return -1 for errors, regardless of the error
type, or 0 for success.
>
>> + */
>> + if (fw_err >= 0)
>> + return 0;
>> +
>> + if (fw_err == -1)
>> + return -EACCES;
>> +
>> + return -EIO;
>> +}
>
> Could we map these return values with better granularity instead of
> returning -EIO for everything else that is not minus one?
I think we're good as we are now. The firmware returns either -1 for errors,
zero for success, or BIT(0) and BIT(1) for TMU_INIT to flag some capabilities.
I can't tell if there are other commands that return capabilities as well,
or if there are other capabilities for TMU_INIT, I don't have access to the
firmware code.
>
> Is this error code convertation applies only to TMU protocol?
yes
Cheers,
ta
More information about the linux-arm-kernel
mailing list