xref: /freebsd/sys/contrib/device-tree/Bindings/soc/ti/wkup_m3_ipc.txt (revision 848ee2a3a8b47c9905fc51fefcf60eb371edbb98)
1Wakeup M3 IPC Driver
2=====================
3
4The 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
6that cannot be controlled from the MPU, like suspend/resume and certain deep
7C-states for CPU Idle. Once the wkup_m3_ipc driver uses the wkup_m3_rproc driver
8to boot the wkup_m3, it handles communication with the CM3 using IPC registers
9present in the SoC's control module and a mailbox. The wkup_m3_ipc exposes an
10API to allow the SoC PM code to execute specific PM tasks.
11
12Wkup M3 Device Node:
13====================
14A wkup_m3_ipc device node is used to represent the IPC registers within an
15SoC.
16
17Required 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.
31
32Example:
33--------
34/* AM33xx */
35	l4_wkup: l4_wkup@44c00000 {
36		...
37
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>;
44
45			...
46
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			};
54
55			...
56		};
57	};
58