xref: /freebsd/sys/contrib/device-tree/Bindings/soc/ti/wkup_m3_ipc.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotWakeup M3 IPC Driver
2*c66ec88fSEmmanuel Vadot=====================
3*c66ec88fSEmmanuel Vadot
4*c66ec88fSEmmanuel VadotThe TI AM33xx and AM43xx family of devices use a small Cortex M3 co-processor
5*c66ec88fSEmmanuel Vadot(commonly referred to as Wakeup M3 or CM3) to help with various low power tasks
6*c66ec88fSEmmanuel Vadotthat cannot be controlled from the MPU, like suspend/resume and certain deep
7*c66ec88fSEmmanuel VadotC-states for CPU Idle. Once the wkup_m3_ipc driver uses the wkup_m3_rproc driver
8*c66ec88fSEmmanuel Vadotto boot the wkup_m3, it handles communication with the CM3 using IPC registers
9*c66ec88fSEmmanuel Vadotpresent in the SoC's control module and a mailbox. The wkup_m3_ipc exposes an
10*c66ec88fSEmmanuel VadotAPI to allow the SoC PM code to execute specific PM tasks.
11*c66ec88fSEmmanuel Vadot
12*c66ec88fSEmmanuel VadotWkup M3 Device Node:
13*c66ec88fSEmmanuel Vadot====================
14*c66ec88fSEmmanuel VadotA wkup_m3_ipc device node is used to represent the IPC registers within an
15*c66ec88fSEmmanuel VadotSoC.
16*c66ec88fSEmmanuel Vadot
17*c66ec88fSEmmanuel VadotRequired properties:
18*c66ec88fSEmmanuel Vadot--------------------
19*c66ec88fSEmmanuel Vadot- compatible:		Should be,
20*c66ec88fSEmmanuel Vadot				"ti,am3352-wkup-m3-ipc" for AM33xx SoCs
21*c66ec88fSEmmanuel Vadot				"ti,am4372-wkup-m3-ipc" for AM43xx SoCs
22*c66ec88fSEmmanuel Vadot- reg:			Contains the IPC register address space to communicate
23*c66ec88fSEmmanuel Vadot			with the Wakeup M3 processor
24*c66ec88fSEmmanuel Vadot- interrupts:		Contains the interrupt information for the wkup_m3
25*c66ec88fSEmmanuel Vadot			interrupt that signals the MPU.
26*c66ec88fSEmmanuel Vadot- ti,rproc:		phandle to the wkup_m3 rproc node so the IPC driver
27*c66ec88fSEmmanuel Vadot			can boot it.
28*c66ec88fSEmmanuel Vadot- mboxes:		phandles used by IPC framework to get correct mbox
29*c66ec88fSEmmanuel Vadot			channel for communication. Must point to appropriate
30*c66ec88fSEmmanuel Vadot			mbox_wkupm3 child node.
31*c66ec88fSEmmanuel Vadot
32*c66ec88fSEmmanuel VadotExample:
33*c66ec88fSEmmanuel Vadot--------
34*c66ec88fSEmmanuel Vadot/* AM33xx */
35*c66ec88fSEmmanuel Vadot	l4_wkup: l4_wkup@44c00000 {
36*c66ec88fSEmmanuel Vadot		...
37*c66ec88fSEmmanuel Vadot
38*c66ec88fSEmmanuel Vadot		scm: scm@210000 {
39*c66ec88fSEmmanuel Vadot			compatible = "ti,am3-scm", "simple-bus";
40*c66ec88fSEmmanuel Vadot			reg = <0x210000 0x2000>;
41*c66ec88fSEmmanuel Vadot			#address-cells = <1>;
42*c66ec88fSEmmanuel Vadot			#size-cells = <1>;
43*c66ec88fSEmmanuel Vadot			ranges = <0 0x210000 0x2000>;
44*c66ec88fSEmmanuel Vadot
45*c66ec88fSEmmanuel Vadot			...
46*c66ec88fSEmmanuel Vadot
47*c66ec88fSEmmanuel Vadot			wkup_m3_ipc: wkup_m3_ipc@1324 {
48*c66ec88fSEmmanuel Vadot				compatible = "ti,am3352-wkup-m3-ipc";
49*c66ec88fSEmmanuel Vadot				reg = <0x1324 0x24>;
50*c66ec88fSEmmanuel Vadot				interrupts = <78>;
51*c66ec88fSEmmanuel Vadot				ti,rproc = <&wkup_m3>;
52*c66ec88fSEmmanuel Vadot				mboxes = <&mailbox &mbox_wkupm3>;
53*c66ec88fSEmmanuel Vadot			};
54*c66ec88fSEmmanuel Vadot
55*c66ec88fSEmmanuel Vadot			...
56*c66ec88fSEmmanuel Vadot		};
57*c66ec88fSEmmanuel Vadot	};
58