Re: [PATCH v3 1/2] dt-bindings: firmware: google,gs101-acpm-ipc: document Exynos850 compatible
From: Sam Protsenko
Date: Tue Oct 06 2026 - 19:47:52 EST
On Mon, Sep 28, 2026 at 9:11 PM Alexey Klimov <alexey.klimov@xxxxxxxxxx> wrote:
>
> 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@xxxxxxxxxx>
> ---
Reviewed-by: Sam Protsenko <semen.protsenko@xxxxxxxxxx>
> .../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
>