soc: ti: wkup_m3_ipc: Add support for i2c voltage scaling
[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 I2C PMIC Voltage Scaling
60 --------------------
61 It is possible to pass the name of a binary file to laod to the CM3 firmware
62 in order to provide I2C sequences for the CM3 to send out to the PMIC during
63 low power mode entry.
65 Optional properties:
66 --------------------
67 - scale-data-fw:        Name of the firmware binary in /lib/firmware to copy to m3
68                         aux data.
70 Support for VTT Toggle
71 ==================================
72 In order to enable the support for VTT toggle during Suspend/Resume
73 sequence needed by some boards (like AM335x EVM-SK & AM437x GP EVM),
74 the below DT properties are required. It is possible to toggle VTT
75 using one of two methods depending on the SoC being used, either
76 GPIO0 toggle (AM335x and AM437x), or any GPIO with DS_PAD_CONFIG
77 bits in the control module (AM437x only).
79 VTT Toggle using GPIO0
80 ----------------------------------
81 Supported by: AM335x and AM437x
82 Used on: AM335x EVM-SK
84 Optional properties:
85 - ti,needs-vtt-toggle:  Indicates that the boards requires VTT toggling
86                         during suspend/resume.
87 - ti,vtt-gpio-pin:      Specifies the GPIO0 pin used for VTT toggle.
89 Important Note:
90 - Here it is assumed that VTT Toggle will be done using a pin on GPIO-0 Instance.
91   It will not work on any other GPIO using the above properties, regardless of
92   which part is being used.
94 Example:
95         wkup_m3_ipc: wkup_m3_ipc@1324 {
96                 compatible = "ti,am3352-wkup-m3-ipc";
97                 ...
98                 ...
99                 ti,needs-vtt-toggle;
100                 ti,vtt-gpio-pin = <7>;
101                 ...
102         };
104 VTT Toggle using any GPIO
105 ----------------------------------
106 Supported by: AM437x ONLY
107 Used on: AM437x GP EVM
109 Many of the pins on AM437x have the ability to configure both normal and
110 sleep states. Because of this it is possible to use any pin with a
111 corresponding CTRL_CONF_* register in the control module and the
112 DS_PAD_CONFIG bits to toggle the VTT regulator enable pin. The DS state of
113 the pin must be configured such that the pin disables the VTT regulator. The
114 normal state of the pin must be configured such that the VTT regulator is
115 enabled by the state alone. This is because the VTT regulator must be enabled
116 before context is restored to the controlling GPIO.
118 Optional properties:
119 - ti,set-io-isolation:  Indicates that the IO's should be placed into
120                         isolation and the DS_PAD_CONFIG values should be
121                         used during suspend.
123 Example:
125 On the AM437x GP EVM, the VTT enable line must be held low to disable VTT
126 regulator and held high to enable, so the following pinctrl entry is used.
127 The DS pull is enabled which uses a pull down by default and DS off mode is
128 used which outputs a low by default. For the normal state, a pull up is
129 specified so that the VTT enable line gets pulled high immediately after
130 the DS states are removed upon exit from DeepSleep0.
132         &am43xx_pinmux {
133                 pinctrl-names = "default";
134                 pinctrl-0 = <&ddr3_vtt_toggle_default>;
136                 ddr3_vtt_toggle_default: ddr_vtt_toggle_default {
137                 pinctrl-single,pins = <
138                         0x25C (DS0_PULL_UP_DOWN_EN | PIN_OUTPUT_PULLUP |
139                                DS0_FORCE_OFF_MODE | MUX_MODE7)>;
140                 };
141                 ...
142         };
144         wkup_m3_ipc: wkup_m3_ipc@1324 {
145                 compatible = "ti,am4372-wkup-m3-ipc";
146                 ...
147                 ...
148                 ti,set-io-isolation;
149                 ...
150         };