summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml
blob: e68f9c3ca5e2619bacc0c8d843ec4984c0947fd8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright 2024 Linaro Ltd.
%YAML 1.2
---
$id: http://devicetree.org/schemas/firmware/google,gs101-acpm-ipc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Samsung Exynos ACPM mailbox protocol

maintainers:
  - Tudor Ambarus <tudor.ambarus@linaro.org>

description: |
  ACPM (Alive Clock and Power Manager) is a firmware that operates on the
  APM (Active Power Management) module that handles overall power management
  activities. ACPM and masters regard each other as independent hardware
  component and communicate with each other using mailbox messages and
  shared memory.

  This binding is intended to define the interface the firmware implementing
  ACPM provides for OSPM in the device tree.

properties:
  compatible:
    const: google,gs101-acpm-ipc

  "#clock-cells":
    const: 1
    description:
      Clocks that are variable and index based. These clocks don't provide
      an entire range of values between the limits but only discrete points
      within the range. The firmware also manages the voltage scaling
      appropriately with the clock scaling. The argument is the ID of the
      clock contained by the firmware messages.

  mboxes:
    maxItems: 1

  pmic:
    deprecated: true
    description: Child node describing the main PMIC.
    type: object
    additionalProperties: true

    properties:
      compatible:
        const: samsung,s2mpg10-pmic

  pmic-1:
    description: Child node describing the main PMIC.
    type: object
    additionalProperties: true

    properties:
      compatible:
        const: samsung,s2mpg10-pmic

  pmic-2:
    description: Child node describing the sub PMIC.
    type: object
    additionalProperties: true

    properties:
      compatible:
        const: samsung,s2mpg11-pmic

  shmem:
    description:
      List of phandle pointing to the shared memory (SHM) area. The memory
      contains channels configuration data and the TX/RX ring buffers that
      are used for passing messages to/from the ACPM firmware.
    maxItems: 1

required:
  - compatible
  - "#clock-cells"
  - mboxes
  - shmem

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/regulator/samsung,s2mpg10-regulator.h>

    power-management {
        compatible = "google,gs101-acpm-ipc";
        #clock-cells = <1>;
        mboxes = <&ap2apm_mailbox>;
        shmem = <&apm_sram>;

        pmic-1 {
            compatible = "samsung,s2mpg10-pmic";
            interrupts-extended = <&gpa0 6 IRQ_TYPE_LEVEL_LOW>;

            vinl3m-supply = <&buck8m>;

            regulators {
                ldo1m {
                    regulator-name = "vdd_ldo1";
                    regulator-min-microvolt = <700000>;
                    regulator-max-microvolt = <1300000>;
                    regulator-always-on;
                };

                ldo20m {
                    regulator-name = "vdd_dmics";
                    regulator-min-microvolt = <700000>;
                    regulator-max-microvolt = <1300000>;
                    regulator-always-on;
                    samsung,ext-control = <S2MPG10_EXTCTRL_LDO20M_EN2>;
                };

                buck8m {
                    regulator-name = "vdd_mif";
                    regulator-min-microvolt = <450000>;
                    regulator-max-microvolt = <1300000>;
                    regulator-always-on;
                    regulator-boot-on;
                };
            };
        };

        pmic-2 {
            compatible = "samsung,s2mpg11-pmic";
            interrupts-extended = <&gpa0 7 IRQ_TYPE_LEVEL_LOW>;

            vinl1s-supply = <&buck8m>;
            vinl2s-supply = <&buck6s>;

            regulators {
                buckd {
                    regulator-name = "vcc_ufs";
                    regulator-ramp-delay = <6250>;
                    enable-gpios = <&gpp0 1 GPIO_ACTIVE_HIGH>;
                    samsung,ext-control = <S2MPG11_EXTCTRL_UFS_EN>;
                };
            };
        };
    };