xref: /freebsd/sys/contrib/device-tree/Bindings/mailbox/mtk-gce.txt (revision 6be3386466ab79a84b48429ae66244f21526d3df)
1MediaTek GCE
2===============
3
4The Global Command Engine (GCE) is used to help read/write registers with
5critical time limitation, such as updating display configuration during the
6vblank. The GCE can be used to implement the Command Queue (CMDQ) driver.
7
8CMDQ driver uses mailbox framework for communication. Please refer to
9mailbox.txt for generic information about mailbox device-tree bindings.
10
11Required properties:
12- compatible: can be "mediatek,mt8173-gce", "mediatek,mt8183-gce" or
13  "mediatek,mt6779-gce".
14- reg: Address range of the GCE unit
15- interrupts: The interrupt signal from the GCE block
16- clock: Clocks according to the common clock binding
17- clock-names: Must be "gce" to stand for GCE clock
18- #mbox-cells: Should be 2.
19	<&phandle channel priority>
20	phandle: Label name of a gce node.
21	channel: Channel of mailbox. Be equal to the thread id of GCE.
22	priority: Priority of GCE thread.
23
24Required properties for a client device:
25- mboxes: Client use mailbox to communicate with GCE, it should have this
26  property and list of phandle, mailbox specifiers.
27Optional properties for a client device:
28- mediatek,gce-client-reg: Specify the sub-system id which is corresponding
29  to the register address, it should have this property and list of phandle,
30  sub-system specifiers.
31  <&phandle subsys_number start_offset size>
32  phandle: Label name of a gce node.
33  subsys_number: specify the sub-system id which is corresponding
34                 to the register address.
35  start_offset: the start offset of register address that GCE can access.
36  size: the total size of register address that GCE can access.
37
38Some vaules of properties are defined in 'dt-bindings/gce/mt8173-gce.h',
39'dt-binding/gce/mt8183-gce.h' or 'dt-bindings/gce/mt6779-gce.h'. Such as
40sub-system ids, thread priority, event ids.
41
42Example:
43
44	gce: gce@10212000 {
45		compatible = "mediatek,mt8173-gce";
46		reg = <0 0x10212000 0 0x1000>;
47		interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_LOW>;
48		clocks = <&infracfg CLK_INFRA_GCE>;
49		clock-names = "gce";
50		#mbox-cells = <2>;
51	};
52
53Example for a client device:
54
55	mmsys: clock-controller@14000000 {
56		compatible = "mediatek,mt8173-mmsys";
57		mboxes = <&gce 0 CMDQ_THR_PRIO_LOWEST>,
58			 <&gce 1 CMDQ_THR_PRIO_LOWEST>;
59		mutex-event-eof = <CMDQ_EVENT_MUTEX0_STREAM_EOF
60				CMDQ_EVENT_MUTEX1_STREAM_EOF>;
61		mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x3000 0x1000>,
62					  <&gce SUBSYS_1401XXXX 0x2000 0x100>;
63		...
64	};
65