@@ -24,14 +24,22 @@ description: |+
2424 A wkup_m3_ipc device node is used to represent the IPC registers within an
2525 SoC.
2626
27- Support for VTT Toggle
28- ==================================
27+ Support for VTT Toggle with GPIO pin
28+ ====================================
2929 On some boards like the AM335x EVM-SK and the AM437x GP EVM, a GPIO pin is
3030 connected to the enable pin on the DDR VTT regulator. This allows the
3131 regulator to be disabled upon suspend and enabled upon resume. Please note
3232 that the GPIO pin must be part of the GPIO0 module as only this GPIO module
3333 is in the wakeup power domain.
3434
35+ Support for IO Isolation
36+ ========================
37+ On AM437x SoCs, certain pins can be forced into an alternate state when IO
38+ isolation is activated. Those pins have pad control registers prefixed by
39+ 'CTRL_CONF_' that contain DS0 (e.g. deep sleep) configuration bits that can
40+ override the pin's existing bias (pull-up/pull-down) and value (high/low) when
41+ IO isolation is active.
42+
3543properties :
3644 compatible :
3745 enum :
@@ -63,6 +71,25 @@ properties:
6371 $ref : /schemas/types.yaml#/definitions/uint32
6472 description : GPIO pin connected to enable pin on VTT regulator
6573
74+ ti,set-io-isolation :
75+ type : boolean
76+ description :
77+ If this property is present, then the wkup_m3_ipc driver will instruct
78+ the CM3 firmware to activate IO isolation when suspending to deep sleep.
79+ This can be leveraged by a board design to put other devices on the board
80+ into a low power state.
81+
82+ allOf :
83+ - if :
84+ properties :
85+ compatible :
86+ not :
87+ contains :
88+ const : ti,am4372-wkup-m3-ipc
89+ then :
90+ properties :
91+ ti,set-io-isolation : false
92+
6693required :
6794 - compatible
6895 - reg
@@ -74,21 +101,63 @@ additionalProperties: false
74101
75102examples :
76103 - |
104+ /* Example for AM335x SoC */
77105 soc {
78106 #address-cells = <1>;
79107 #size-cells = <1>;
80108
81- mailbox : mailbox {
109+ am335x_mailbox : mailbox {
82110 #mbox-cells = <1>;
83111 };
84112
85- wkup_m3_ipc: wkup_m3_ipc @1324 {
113+ wkup_m3_ipc@1324 {
86114 compatible = "ti,am3352-wkup-m3-ipc";
87115 reg = <0x1324 0x24>;
88116 interrupts = <78>;
89117 ti,rproc = <&wkup_m3>;
90- mboxes = <&mailbox &mbox_wkupm3>;
118+ mboxes = <&am335x_mailbox &mbox_wkupm3>;
91119 ti,vtt-gpio-pin = <7>;
92120 };
93121 };
122+
123+ - |
124+ /*
125+ * Example for AM473x SoC:
126+ * On the AM437x-GP-EVM board, gpio5_7 is wired to enable pin of the DDR VTT
127+ * regulator. The 'ddr_vtt_toggle_default' pinmux node configures gpio5_7
128+ * for pull-up during normal system operation. However, the DS0 (deep sleep)
129+ * state of the pin is configured for pull-down and thus the VTT regulator
130+ * will be disabled to save power when IO isolation is active. Note that
131+ * this method is an alternative to using the 'ti,vtt-gpio-pin' property.
132+ */
133+ #include <dt-bindings/pinctrl/am43xx.h>
134+ soc {
135+ #address-cells = <1>;
136+ #size-cells = <1>;
137+
138+ am437x_mailbox: mailbox {
139+ #mbox-cells = <1>;
140+ };
141+
142+ am43xx_pinmux {
143+ pinctrl-names = "default";
144+ pinctrl-0 = <&ddr3_vtt_toggle_default>;
145+
146+ ddr3_vtt_toggle_default: ddr_vtt_toggle_default {
147+ pinctrl-single,pins = <
148+ 0x25C (DS0_PULL_UP_DOWN_EN | PIN_OUTPUT_PULLUP | DS0_FORCE_OFF_MODE | MUX_MODE7)
149+ >;
150+ };
151+ };
152+
153+ wkup_m3_ipc@1324 {
154+ compatible = "ti,am4372-wkup-m3-ipc";
155+ reg = <0x1324 0x24>;
156+ interrupts = <78>;
157+ ti,rproc = <&wkup_m3>;
158+ mboxes = <&am437x_mailbox &mbox_wkupm3>;
159+ ti,set-io-isolation;
160+ };
161+ };
162+
94163 ...
0 commit comments