* [PATCH v3 0/2] Initial Exynos850 ACPM support for exynos-acpm
@ 2026-09-29 2:11 Alexey Klimov
2026-09-29 2:11 ` [PATCH v3 1/2] dt-bindings: firmware: google,gs101-acpm-ipc: document Exynos850 compatible Alexey Klimov
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Alexey Klimov @ 2026-09-29 2:11 UTC (permalink / raw)
To: Sam Protsenko, Tudor Ambarus, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Krzysztof Kozlowski, Alim Akhtar, Peter Griffin
Cc: Sylwester Nawrocki, Chanwoo Choi, Stephen Boyd, Brian Masney,
Jerome Brunet, linux-samsung-soc, devicetree, linux-arm-kernel,
linux-kernel, linux-clk
This series adds support for the Exynos850 SoC to the Samsung ACPM
firmware IPC driver.
The Exynos850 contains an APM co-processor that handles IPC messages for
clocks, power, thermal management, and PMIC control. While it uses the
same underlying ACPM communication machinery and protocols set as
the GS101, the exact implementation details vary between the two SoCs.
Those protocol-specific differences will be managed individually by the
corresponding protocol drivers. However, a dedicated compatible string
is still required for the core IPC driver because the Exynos850 firmware
utilizes a different initialisation data base offset.
First patch updates the google,gs101-acpm-ipc dt-bindings to include the
new "samsung,exynos850-acpm-ipc" compatible string and adds clocks
descriptions for clocks that can be controlled via ACPM or by Linux
directly.
Second patch adds the corresponding match data, base offset, and clock
device name to the exynos-acpm firmware driver.
There is a dependency for driver changes on clk-acpm exynos850 series
which seems to be accepted/merged:
https://lore.kernel.org/linux-samsung-soc/20260915-exynos850-acpm-clk-v2-0-ffad4a6b3fb1@linaro.org/
In v3 I updated the bindings to be more forgiving about missing clocks
in DT to be actually be able to implement this in DT:
firmware {
acpm_ipc: power-management {
compatible = "samsung,exynos850-acpm-ipc";
#clock-cells = <1>;
mboxes = <&ap2apm_mailbox>;
shmem = <&apm_sram>;
clocks = <&cmu_cpucl0 CLK_FOUT_CPUCL0_PLL>,
<&cmu_cpucl1 CLK_FOUT_CPUCL1_PLL>;
clock-names = "cpucl0", "cpucl1";
};
};
and further add cpufreq support on top of these clocks.
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
Changes in v3:
- converted clocks requirements in dt-bindings for e850 into enum instead
of consts, and added uniqueItems:true -- this allows to declare only
supported and tested clocks at this point;
- Link to v2: https://lore.kernel.org/r/20260928-exynos850-acpm-firmware-support-v2-0-717acef9469a@linaro.org
Changes in v2:
- Re-worked bindings update by adding clocks descriptions and hence
re-wording the commit message and adding constraints for clocks
and not yet implemented pmic support;
- Rebased and re-tested with cpufreq;
- Link to v1: https://lore.kernel.org/r/20260513-exynos850-acpm-firmware-support-v1-0-3858d097e433@linaro.org
---
Alexey Klimov (2):
dt-bindings: firmware: google,gs101-acpm-ipc: document Exynos850 compatible
firmware: samsung: acpm: add Exynos850 support
.../bindings/firmware/google,gs101-acpm-ipc.yaml | 56 +++++++++++++++++++++-
drivers/firmware/samsung/exynos-acpm.c | 10 ++++
include/dt-bindings/clock/samsung,exynos850-acpm.h | 21 ++++++++
3 files changed, 86 insertions(+), 1 deletion(-)
---
base-commit: 5a956dde5526a634dca7ccad27c051ebcc306089
change-id: 20260512-exynos850-acpm-firmware-support-0aefaf4104b6
Best regards,
--
Alexey Klimov <alexey.klimov@linaro.org>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/2] dt-bindings: firmware: google,gs101-acpm-ipc: document Exynos850 compatible
2026-09-29 2:11 [PATCH v3 0/2] Initial Exynos850 ACPM support for exynos-acpm Alexey Klimov
@ 2026-09-29 2:11 ` Alexey Klimov
2026-09-29 2:11 ` [PATCH v3 2/2] firmware: samsung: acpm: add Exynos850 support Alexey Klimov
2026-10-03 14:08 ` [PATCH v3 0/2] Initial Exynos850 ACPM support for exynos-acpm Krzysztof Kozlowski
2 siblings, 0 replies; 5+ messages in thread
From: Alexey Klimov @ 2026-09-29 2:11 UTC (permalink / raw)
To: Sam Protsenko, Tudor Ambarus, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Krzysztof Kozlowski, Alim Akhtar, Peter Griffin
Cc: Sylwester Nawrocki, Chanwoo Choi, Stephen Boyd, Brian Masney,
Jerome Brunet, linux-samsung-soc, devicetree, linux-arm-kernel,
linux-kernel, linux-clk
The Exynos850 SoC incorporates an APM co-processor. Communication with this
hardware block is done using the ACPM protocol, which handles IPC messages
for clocks, power, thermal management and PMIC control. In this
architecture, the ACPM firmware running on the APM acts as the central
supervisor or arbiter for shared system resources, handling requests from
clients or agents such as an OSPM. In this design, the OSPM is one of
several clients or agents communicating with APM.
Dedicated compatible string is required for the Exynos850 because
its firmware utilizes a different initialisation data base offset
(0x7000) compared to the existing GS101 implementation (0xa000).
Additionally, the ACPM firmware implementation on Exynos850 does not cover
all clock management operations (such as clock rate reads over ACPM IPC).
To allow the OSPM to resolve rates for these ACPM clock IDs or sometimes
called domains, add 'clocks' and 'clock-names' properties to reference the
underlying physical clocks.
Add the "samsung,exynos850-acpm-ipc" compatible string, binding defines for
Exynos850 ACPM clock IDs, clock property constraints, and disallow GS101-
specific PMIC child nodes for Exynos850.
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
.../bindings/firmware/google,gs101-acpm-ipc.yaml | 56 +++++++++++++++++++++-
include/dt-bindings/clock/samsung,exynos850-acpm.h | 21 ++++++++
2 files changed, 76 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml b/Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml
index e68f9c3ca5e2..0eaa9c881f6f 100644
--- a/Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml
+++ b/Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml
@@ -22,7 +22,9 @@ description: |
properties:
compatible:
- const: google,gs101-acpm-ipc
+ enum:
+ - google,gs101-acpm-ipc
+ - samsung,exynos850-acpm-ipc
"#clock-cells":
const: 1
@@ -33,6 +35,20 @@ properties:
appropriately with the clock scaling. The argument is the ID of the
clock contained by the firmware messages.
+ clocks:
+ minItems: 1
+ maxItems: 9
+ description:
+ List of the underlying clocks associated with each ACPM clock domain.
+ This property relates to ACPM firmware variants where not all clock
+ operations are implemented.
+
+ clock-names:
+ minItems: 1
+ maxItems: 9
+ description:
+ Names of the ACPM clock domains corresponding to entries in 'clocks'.
+
mboxes:
maxItems: 1
@@ -77,6 +93,44 @@ required:
- mboxes
- shmem
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: google,gs101-acpm-ipc
+ then:
+ properties:
+ clocks: false
+ clock-names: false
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: samsung,exynos850-acpm-ipc
+ then:
+ properties:
+ clock-names:
+ items:
+ enum:
+ - mif
+ - int
+ - cpucl0
+ - cpucl1
+ - g3d
+ - aud
+ - cam
+ - disp
+ - cp
+ uniqueItems: true
+ pmic: false
+ pmic-1: false
+ pmic-2: false
+ required:
+ - clocks
+ - clock-names
+
additionalProperties: false
examples:
diff --git a/include/dt-bindings/clock/samsung,exynos850-acpm.h b/include/dt-bindings/clock/samsung,exynos850-acpm.h
new file mode 100644
index 000000000000..87fc6ccc1d99
--- /dev/null
+++ b/include/dt-bindings/clock/samsung,exynos850-acpm.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright 2026 Linaro Ltd.
+ *
+ * Device Tree binding constants for Exynos850 ACPM clock controller.
+ */
+
+#ifndef _DT_BINDINGS_CLOCK_SAMSUNG_EXYNOS850_ACPM_H
+#define _DT_BINDINGS_CLOCK_SAMSUNG_EXYNOS850_ACPM_H
+
+#define EXYNOS850_CLK_ACPM_DVFS_MIF 0
+#define EXYNOS850_CLK_ACPM_DVFS_INT 1
+#define EXYNOS850_CLK_ACPM_DVFS_CPUCL0 2
+#define EXYNOS850_CLK_ACPM_DVFS_CPUCL1 3
+#define EXYNOS850_CLK_ACPM_DVFS_G3D 4
+#define EXYNOS850_CLK_ACPM_DVFS_AUD 5
+#define EXYNOS850_CLK_ACPM_DVFS_CAM 6
+#define EXYNOS850_CLK_ACPM_DVFS_DISP 7
+#define EXYNOS850_CLK_ACPM_DVFS_CP 8
+
+#endif /* _DT_BINDINGS_CLOCK_SAMSUNG_EXYNOS850_ACPM_H */
--
2.51.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 2/2] firmware: samsung: acpm: add Exynos850 support
2026-09-29 2:11 [PATCH v3 0/2] Initial Exynos850 ACPM support for exynos-acpm Alexey Klimov
2026-09-29 2:11 ` [PATCH v3 1/2] dt-bindings: firmware: google,gs101-acpm-ipc: document Exynos850 compatible Alexey Klimov
@ 2026-09-29 2:11 ` Alexey Klimov
2026-10-02 14:43 ` Peter Griffin
2026-10-03 14:08 ` [PATCH v3 0/2] Initial Exynos850 ACPM support for exynos-acpm Krzysztof Kozlowski
2 siblings, 1 reply; 5+ messages in thread
From: Alexey Klimov @ 2026-09-29 2:11 UTC (permalink / raw)
To: Sam Protsenko, Tudor Ambarus, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Krzysztof Kozlowski, Alim Akhtar, Peter Griffin
Cc: Sylwester Nawrocki, Chanwoo Choi, Stephen Boyd, Brian Masney,
Jerome Brunet, linux-samsung-soc, devicetree, linux-arm-kernel,
linux-kernel, linux-clk
The Exynos850 SoC contains an APM co-processor. Communication
with this hardware block is established using the ACPM protocol,
which handles IPC messages for clocks, power, thermal management,
and PMIC control.
Add the "samsung,exynos850-acpm-ipc" compatible string along with
its associated match data. This includes the specific initialisation
data base offset (which differs from the GS101 offset) and the
"exynos850-acpm-clk" device name required to properly instantiate
the clock provider.
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
drivers/firmware/samsung/exynos-acpm.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/firmware/samsung/exynos-acpm.c b/drivers/firmware/samsung/exynos-acpm.c
index 942a2e9f02f5..5a16665e941b 100644
--- a/drivers/firmware/samsung/exynos-acpm.c
+++ b/drivers/firmware/samsung/exynos-acpm.c
@@ -39,6 +39,7 @@
#define ACPM_POLL_TIMEOUT_US (100 * USEC_PER_MSEC)
#define ACPM_TX_TIMEOUT_US 500000
+#define ACPM_EXYNOS850_INITDATA_BASE 0x7000
#define ACPM_GS101_INITDATA_BASE 0xa000
/**
@@ -876,6 +877,11 @@ struct acpm_handle *devm_acpm_get_by_phandle(struct device *dev)
}
EXPORT_SYMBOL_GPL(devm_acpm_get_by_phandle);
+static const struct acpm_match_data acpm_exynos850 = {
+ .initdata_base = ACPM_EXYNOS850_INITDATA_BASE,
+ .acpm_clk_dev_name = "exynos850-acpm-clk",
+};
+
static const struct acpm_match_data acpm_gs101 = {
.initdata_base = ACPM_GS101_INITDATA_BASE,
.acpm_clk_dev_name = "gs101-acpm-clk",
@@ -886,6 +892,10 @@ static const struct of_device_id acpm_match[] = {
.compatible = "google,gs101-acpm-ipc",
.data = &acpm_gs101,
},
+ {
+ .compatible = "samsung,exynos850-acpm-ipc",
+ .data = &acpm_exynos850,
+ },
{},
};
MODULE_DEVICE_TABLE(of, acpm_match);
--
2.51.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 2/2] firmware: samsung: acpm: add Exynos850 support
2026-09-29 2:11 ` [PATCH v3 2/2] firmware: samsung: acpm: add Exynos850 support Alexey Klimov
@ 2026-10-02 14:43 ` Peter Griffin
0 siblings, 0 replies; 5+ messages in thread
From: Peter Griffin @ 2026-10-02 14:43 UTC (permalink / raw)
To: Alexey Klimov
Cc: Sam Protsenko, Tudor Ambarus, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Krzysztof Kozlowski, Alim Akhtar,
Sylwester Nawrocki, Chanwoo Choi, Stephen Boyd, Brian Masney,
Jerome Brunet, linux-samsung-soc, devicetree, linux-arm-kernel,
linux-kernel, linux-clk
On Tue, 29 Sept 2026 at 03:11, Alexey Klimov <alexey.klimov@linaro.org> wrote:
>
> The Exynos850 SoC contains an APM co-processor. Communication
> with this hardware block is established using the ACPM protocol,
> which handles IPC messages for clocks, power, thermal management,
> and PMIC control.
>
> Add the "samsung,exynos850-acpm-ipc" compatible string along with
> its associated match data. This includes the specific initialisation
> data base offset (which differs from the GS101 offset) and the
> "exynos850-acpm-clk" device name required to properly instantiate
> the clock provider.
>
> Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
> Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
> ---
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
> drivers/firmware/samsung/exynos-acpm.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/firmware/samsung/exynos-acpm.c b/drivers/firmware/samsung/exynos-acpm.c
> index 942a2e9f02f5..5a16665e941b 100644
> --- a/drivers/firmware/samsung/exynos-acpm.c
> +++ b/drivers/firmware/samsung/exynos-acpm.c
> @@ -39,6 +39,7 @@
> #define ACPM_POLL_TIMEOUT_US (100 * USEC_PER_MSEC)
> #define ACPM_TX_TIMEOUT_US 500000
>
> +#define ACPM_EXYNOS850_INITDATA_BASE 0x7000
> #define ACPM_GS101_INITDATA_BASE 0xa000
>
> /**
> @@ -876,6 +877,11 @@ struct acpm_handle *devm_acpm_get_by_phandle(struct device *dev)
> }
> EXPORT_SYMBOL_GPL(devm_acpm_get_by_phandle);
>
> +static const struct acpm_match_data acpm_exynos850 = {
> + .initdata_base = ACPM_EXYNOS850_INITDATA_BASE,
> + .acpm_clk_dev_name = "exynos850-acpm-clk",
> +};
> +
> static const struct acpm_match_data acpm_gs101 = {
> .initdata_base = ACPM_GS101_INITDATA_BASE,
> .acpm_clk_dev_name = "gs101-acpm-clk",
> @@ -886,6 +892,10 @@ static const struct of_device_id acpm_match[] = {
> .compatible = "google,gs101-acpm-ipc",
> .data = &acpm_gs101,
> },
> + {
> + .compatible = "samsung,exynos850-acpm-ipc",
> + .data = &acpm_exynos850,
> + },
> {},
> };
> MODULE_DEVICE_TABLE(of, acpm_match);
>
> --
> 2.51.0
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 0/2] Initial Exynos850 ACPM support for exynos-acpm
2026-09-29 2:11 [PATCH v3 0/2] Initial Exynos850 ACPM support for exynos-acpm Alexey Klimov
2026-09-29 2:11 ` [PATCH v3 1/2] dt-bindings: firmware: google,gs101-acpm-ipc: document Exynos850 compatible Alexey Klimov
2026-09-29 2:11 ` [PATCH v3 2/2] firmware: samsung: acpm: add Exynos850 support Alexey Klimov
@ 2026-10-03 14:08 ` Krzysztof Kozlowski
2 siblings, 0 replies; 5+ messages in thread
From: Krzysztof Kozlowski @ 2026-10-03 14:08 UTC (permalink / raw)
To: Alexey Klimov, Sam Protsenko, Tudor Ambarus, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Alim Akhtar, Peter Griffin
Cc: Sylwester Nawrocki, Chanwoo Choi, Stephen Boyd, Brian Masney,
Jerome Brunet, linux-samsung-soc, devicetree, linux-arm-kernel,
linux-kernel, linux-clk
On 29/09/2026 04:11, Alexey Klimov wrote:
> This series adds support for the Exynos850 SoC to the Samsung ACPM
> firmware IPC driver.
>
> The Exynos850 contains an APM co-processor that handles IPC messages for
> clocks, power, thermal management, and PMIC control. While it uses the
> same underlying ACPM communication machinery and protocols set as
> the GS101, the exact implementation details vary between the two SoCs.
>
> Those protocol-specific differences will be managed individually by the
> corresponding protocol drivers. However, a dedicated compatible string
> is still required for the core IPC driver because the Exynos850 firmware
> utilizes a different initialisation data base offset.
>
> First patch updates the google,gs101-acpm-ipc dt-bindings to include the
> new "samsung,exynos850-acpm-ipc" compatible string and adds clocks
> descriptions for clocks that can be controlled via ACPM or by Linux
> directly.
>
> Second patch adds the corresponding match data, base offset, and clock
> device name to the exynos-acpm firmware driver.
>
> There is a dependency for driver changes on clk-acpm exynos850 series
> which seems to be accepted/merged:
> https://lore.kernel.org/linux-samsung-soc/20260915-exynos850-acpm-clk-v2-0-ffad4a6b3fb1@linaro.org/
I don't understand this dependency. Why does a firmware driver depend on
clock one?
You do understand that mentioning fake dependencies only stalls the
patchset? I would have applied it now, but because of this question, it
will wait and due to conferences might miss this merge window.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-10-03 14:08 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-29 2:11 [PATCH v3 0/2] Initial Exynos850 ACPM support for exynos-acpm Alexey Klimov
2026-09-29 2:11 ` [PATCH v3 1/2] dt-bindings: firmware: google,gs101-acpm-ipc: document Exynos850 compatible Alexey Klimov
2026-09-29 2:11 ` [PATCH v3 2/2] firmware: samsung: acpm: add Exynos850 support Alexey Klimov
2026-10-02 14:43 ` Peter Griffin
2026-10-03 14:08 ` [PATCH v3 0/2] Initial Exynos850 ACPM support for exynos-acpm Krzysztof Kozlowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®