xref: /linux/Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml (revision e78f70bad29c5ae1e1076698b690b15794e9b81e)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2# Copyright 2024 Linaro Ltd.
3%YAML 1.2
4---
5$id: http://devicetree.org/schemas/firmware/google,gs101-acpm-ipc.yaml#
6$schema: http://devicetree.org/meta-schemas/core.yaml#
7
8title: Samsung Exynos ACPM mailbox protocol
9
10maintainers:
11  - Tudor Ambarus <tudor.ambarus@linaro.org>
12
13description: |
14  ACPM (Alive Clock and Power Manager) is a firmware that operates on the
15  APM (Active Power Management) module that handles overall power management
16  activities. ACPM and masters regard each other as independent hardware
17  component and communicate with each other using mailbox messages and
18  shared memory.
19
20  This binding is intended to define the interface the firmware implementing
21  ACPM provides for OSPM in the device tree.
22
23properties:
24  compatible:
25    const: google,gs101-acpm-ipc
26
27  mboxes:
28    maxItems: 1
29
30  pmic:
31    description: Child node describing the main PMIC.
32    type: object
33    additionalProperties: true
34
35    properties:
36      compatible:
37        const: samsung,s2mpg10-pmic
38
39  shmem:
40    description:
41      List of phandle pointing to the shared memory (SHM) area. The memory
42      contains channels configuration data and the TX/RX ring buffers that
43      are used for passing messages to/from the ACPM firmware.
44    maxItems: 1
45
46required:
47  - compatible
48  - mboxes
49  - shmem
50
51additionalProperties: false
52
53examples:
54  - |
55    #include <dt-bindings/interrupt-controller/irq.h>
56
57    power-management {
58        compatible = "google,gs101-acpm-ipc";
59        mboxes = <&ap2apm_mailbox>;
60        shmem = <&apm_sram>;
61
62        pmic {
63            compatible = "samsung,s2mpg10-pmic";
64            interrupts-extended = <&gpa0 6 IRQ_TYPE_LEVEL_LOW>;
65
66            regulators {
67                LDO1 {
68                    regulator-name = "vdd_ldo1";
69                    regulator-min-microvolt = <700000>;
70                    regulator-max-microvolt = <1300000>;
71                    regulator-always-on;
72                };
73
74                // ...
75
76                BUCK1 {
77                    regulator-name = "vdd_mif";
78                    regulator-min-microvolt = <450000>;
79                    regulator-max-microvolt = <1300000>;
80                    regulator-always-on;
81                    regulator-boot-on;
82                };
83            };
84        };
85    };
86