12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- Wakeup M3 IPC Driver
- =====================
- The TI AM33xx and AM43xx family of devices use a small Cortex M3 co-processor
- (commonly referred to as Wakeup M3 or CM3) to help with various low power tasks
- that cannot be controlled from the MPU, like suspend/resume and certain deep
- C-states for CPU Idle. Once the wkup_m3_ipc driver uses the wkup_m3_rproc driver
- to boot the wkup_m3, it handles communication with the CM3 using IPC registers
- present in the SoC's control module and a mailbox. The wkup_m3_ipc exposes an
- API to allow the SoC PM code to execute specific PM tasks.
- Wkup M3 Device Node:
- ====================
- A wkup_m3_ipc device node is used to represent the IPC registers within an
- SoC.
- Required properties:
- --------------------
- - compatible: Should be,
- "ti,am3352-wkup-m3-ipc" for AM33xx SoCs
- "ti,am4372-wkup-m3-ipc" for AM43xx SoCs
- - reg: Contains the IPC register address space to communicate
- with the Wakeup M3 processor
- - interrupts: Contains the interrupt information for the wkup_m3
- interrupt that signals the MPU.
- - ti,rproc: phandle to the wkup_m3 rproc node so the IPC driver
- can boot it.
- - mboxes: phandles used by IPC framework to get correct mbox
- channel for communication. Must point to appropriate
- mbox_wkupm3 child node.
- Example:
- --------
- /* AM33xx */
- l4_wkup: l4_wkup@44c00000 {
- ...
- scm: scm@210000 {
- compatible = "ti,am3-scm", "simple-bus";
- reg = <0x210000 0x2000>;
- #address-cells = <1>;
- #size-cells = <1>;
- ranges = <0 0x210000 0x2000>;
- ...
- wkup_m3_ipc: wkup_m3_ipc@1324 {
- compatible = "ti,am3352-wkup-m3-ipc";
- reg = <0x1324 0x24>;
- interrupts = <78>;
- ti,rproc = <&wkup_m3>;
- mboxes = <&mailbox &mbox_wkupm3>;
- };
- ...
- };
- };
|