Merge tag 'v4.20' into next
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / mailbox / mtk-gce.txt
1 MediaTek GCE
2 ===============
3
4 The Global Command Engine (GCE) is used to help read/write registers with
5 critical time limitation, such as updating display configuration during the
6 vblank. The GCE can be used to implement the Command Queue (CMDQ) driver.
7
8 CMDQ driver uses mailbox framework for communication. Please refer to
9 mailbox.txt for generic information about mailbox device-tree bindings.
10
11 Required properties:
12 - compatible: Must be "mediatek,mt8173-gce"
13 - reg: Address range of the GCE unit
14 - interrupts: The interrupt signal from the GCE block
15 - clock: Clocks according to the common clock binding
16 - clock-names: Must be "gce" to stand for GCE clock
17 - #mbox-cells: Should be 3.
18         <&phandle channel priority atomic_exec>
19         phandle: Label name of a gce node.
20         channel: Channel of mailbox. Be equal to the thread id of GCE.
21         priority: Priority of GCE thread.
22         atomic_exec: GCE processing continuous packets of commands in atomic
23                 way.
24
25 Required properties for a client device:
26 - mboxes: Client use mailbox to communicate with GCE, it should have this
27   property and list of phandle, mailbox specifiers.
28 - mediatek,gce-subsys: u32, specify the sub-system id which is corresponding
29   to the register address.
30
31 Some vaules of properties are defined in 'dt-bindings/gce/mt8173-gce.h'. Such as
32 sub-system ids, thread priority, event ids.
33
34 Example:
35
36         gce: gce@10212000 {
37                 compatible = "mediatek,mt8173-gce";
38                 reg = <0 0x10212000 0 0x1000>;
39                 interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_LOW>;
40                 clocks = <&infracfg CLK_INFRA_GCE>;
41                 clock-names = "gce";
42                 thread-num = CMDQ_THR_MAX_COUNT;
43                 #mbox-cells = <3>;
44         };
45
46 Example for a client device:
47
48         mmsys: clock-controller@14000000 {
49                 compatible = "mediatek,mt8173-mmsys";
50                 mboxes = <&gce 0 CMDQ_THR_PRIO_LOWEST 1>,
51                          <&gce 1 CMDQ_THR_PRIO_LOWEST 1>;
52                 mediatek,gce-subsys = <SUBSYS_1400XXXX>;
53                 mutex-event-eof = <CMDQ_EVENT_MUTEX0_STREAM_EOF
54                                 CMDQ_EVENT_MUTEX1_STREAM_EOF>;
55
56                 ...
57         };