hc
2023-11-20 3c9370f7b6bffd697c9907a7139e9df5b0d4b9df
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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>;
           };
 
           ...
       };
   };