wkup_m3_ipc: Add support for toggling VTT regulator
[rpmsg/hwspinlock.git] / Documentation / devicetree / bindings / soc / ti / wkup_m3_ipc.txt
1 Wakeup M3 IPC Driver
2 =====================
4 The TI AM33xx and AM43xx family of devices use a small Cortex M3 co-processor
5 (commonly referred to as Wakeup M3 or CM3) to help with various low power tasks
6 that cannot be controlled from the MPU, like suspend/resume and certain deep
7 C-states for CPU Idle. Once the wkup_m3_ipc driver uses the wkup_m3_rproc driver
8 to boot the wkup_m3, it handles communication with the CM3 using IPC registers
9 present in the SoC's control module and a mailbox. The wkup_m3_ipc exposes an
10 API to allow the SoC PM code to execute specific PM tasks.
12 Wkup M3 Device Node:
13 ====================
14 A wkup_m3_ipc device node is used to represent the IPC registers within an
15 SoC.
17 Required properties:
18 --------------------
19 - compatible:           Should be,
20                                 "ti,am3352-wkup-m3-ipc" for AM33xx SoCs
21                                 "ti,am4372-wkup-m3-ipc" for AM43xx SoCs
22 - reg:                  Contains the IPC register address space to communicate
23                         with the Wakeup M3 processor
24 - interrupts:           Contains the interrupt information for the wkup_m3
25                         interrupt that signals the MPU.
26 - ti,rproc:             phandle to the wkup_m3 rproc node so the IPC driver
27                         can boot it.
28 - mboxes:               phandles used by IPC framework to get correct mbox
29                         channel for communication. Must point to appropriate
30                         mbox_wkupm3 child node.
32 Example:
33 --------
34 /* AM33xx */
35         l4_wkup: l4_wkup@44c00000 {
36                 ...
38                 scm: scm@210000 {
39                         compatible = "ti,am3-scm", "simple-bus";
40                         reg = <0x210000 0x2000>;
41                         #address-cells = <1>;
42                         #size-cells = <1>;
43                         ranges = <0 0x210000 0x2000>;
45                         ...
47                         wkup_m3_ipc: wkup_m3_ipc@1324 {
48                                 compatible = "ti,am3352-wkup-m3-ipc";
49                                 reg = <0x1324 0x24>;
50                                 interrupts = <78>;
51                                 ti,rproc = <&wkup_m3>;
52                                 mboxes = <&mailbox &mbox_wkupm3>;
53                         };
55                         ...
56                 };
57         };
59 Support for VTT Toggle
60 ==================================
61 In order to enable the support for VTT toggle during Suspend/Resume
62 sequence needed by some boards (like AM335x EVM-SK & AM437x GP EVM),
63 the below DT properties are required. It is possible to toggle VTT
64 using one of two methods depending on the SoC being used, either
65 GPIO0 toggle (AM335x and AM437x), or any GPIO with DS_PAD_CONFIG
66 bits in the control module (AM437x only).
68 VTT Toggle using GPIO0
69 ----------------------------------
70 Supported by: AM335x and AM437x
71 Used on: AM335x EVM-SK
73 Optional properties:
74 - ti,needs-vtt-toggle:  Indicates that the boards requires VTT toggling
75                         during suspend/resume.
76 - ti,vtt-gpio-pin:      Specifies the GPIO0 pin used for VTT toggle.
78 Important Note:
79 - Here it is assumed that VTT Toggle will be done using a pin on GPIO-0 Instance.
80   It will not work on any other GPIO using the above properties, regardless of
81   which part is being used.
83 Example:
84         wkup_m3_ipc: wkup_m3_ipc@1324 {
85                 compatible = "ti,am3352-wkup-m3-ipc";
86                 ...
87                 ...
88                 ti,needs-vtt-toggle;
89                 ti,vtt-gpio-pin = <7>;
90                 ...
91         };