Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: soc: Add documentation for the MediaTek GCE unit

This adds documentation for the MediaTek Global Command Engine (GCE) unit
found in MT8173 SoCs.

Signed-off-by: Houlong Wei <houlong.wei@mediatek.com>
Signed-off-by: HS Liao <hs.liao@mediatek.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>

authored by

Houlong Wei and committed by
Jassi Brar
1c82407a a2b79838

+101
+57
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 + };
+44
include/dt-bindings/gce/mt8173-gce.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + /* 3 + * Copyright (c) 2018 MediaTek Inc. 4 + * Author: Houlong Wei <houlong.wei@mediatek.com> 5 + * 6 + */ 7 + 8 + #ifndef _DT_BINDINGS_GCE_MT8173_H 9 + #define _DT_BINDINGS_GCE_MT8173_H 10 + 11 + /* GCE HW thread priority */ 12 + #define CMDQ_THR_PRIO_LOWEST 0 13 + #define CMDQ_THR_PRIO_HIGHEST 1 14 + 15 + /* GCE SUBSYS */ 16 + #define SUBSYS_1400XXXX 1 17 + #define SUBSYS_1401XXXX 2 18 + #define SUBSYS_1402XXXX 3 19 + 20 + /* GCE HW EVENT */ 21 + #define CMDQ_EVENT_DISP_OVL0_SOF 11 22 + #define CMDQ_EVENT_DISP_OVL1_SOF 12 23 + #define CMDQ_EVENT_DISP_RDMA0_SOF 13 24 + #define CMDQ_EVENT_DISP_RDMA1_SOF 14 25 + #define CMDQ_EVENT_DISP_RDMA2_SOF 15 26 + #define CMDQ_EVENT_DISP_WDMA0_SOF 16 27 + #define CMDQ_EVENT_DISP_WDMA1_SOF 17 28 + #define CMDQ_EVENT_DISP_OVL0_EOF 39 29 + #define CMDQ_EVENT_DISP_OVL1_EOF 40 30 + #define CMDQ_EVENT_DISP_RDMA0_EOF 41 31 + #define CMDQ_EVENT_DISP_RDMA1_EOF 42 32 + #define CMDQ_EVENT_DISP_RDMA2_EOF 43 33 + #define CMDQ_EVENT_DISP_WDMA0_EOF 44 34 + #define CMDQ_EVENT_DISP_WDMA1_EOF 45 35 + #define CMDQ_EVENT_MUTEX0_STREAM_EOF 53 36 + #define CMDQ_EVENT_MUTEX1_STREAM_EOF 54 37 + #define CMDQ_EVENT_MUTEX2_STREAM_EOF 55 38 + #define CMDQ_EVENT_MUTEX3_STREAM_EOF 56 39 + #define CMDQ_EVENT_MUTEX4_STREAM_EOF 57 40 + #define CMDQ_EVENT_DISP_RDMA0_UNDERRUN 63 41 + #define CMDQ_EVENT_DISP_RDMA1_UNDERRUN 64 42 + #define CMDQ_EVENT_DISP_RDMA2_UNDERRUN 65 43 + 44 + #endif