|
| 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 | + }; |
0 commit comments