Squashed backup commit (no shallow-clone history issues) of xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2 branch, upstream commit 9eece662e) plus all fixes applied to get everpal_defconfig building clean against a modern (GCC 15.2.0) toolchain -- see the previous commit message on the lineage-23.2 branch (also in this repo history is not available here since this is a squashed snapshot; full incremental history lives in the local DL380 checkout and the upstream GitHub remote). Upstream: https://github.com/xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2)
66 lines
2.2 KiB
Plaintext
66 lines
2.2 KiB
Plaintext
MediaTek GCE
|
|
===============
|
|
|
|
The Global Command Engine (GCE) is used to help read/write registers with
|
|
critical time limitation, such as updating display configuration during the
|
|
vblank. The GCE can be used to implement the Command Queue (CMDQ) driver.
|
|
|
|
CMDQ driver uses mailbox framework for communication. Please refer to
|
|
mailbox.txt for generic information about mailbox device-tree bindings.
|
|
|
|
Required properties:
|
|
- compatible: Must be "mediatek,mt8173-gce"
|
|
- reg: Address range of the GCE unit
|
|
- interrupts: The interrupt signal from the GCE block
|
|
- clock: Clocks according to the common clock binding
|
|
- clock-names: Must be "gce" to stand for GCE clock
|
|
- thread-num: Maximum threads count of GCE.
|
|
- #mbox-cells: Should be 4.
|
|
<&phandle channel timeout priority atomic_exec>
|
|
phandle: Label name of a gce node.
|
|
channel: Channel of mailbox. Be equal to the thread id of GCE.
|
|
timeout: Maximum time of software waiting GCE processing done, in unit
|
|
of millisecond.
|
|
priority: Priority of GCE thread.
|
|
atomic_exec: GCE processing continuous packets of commands in atomic
|
|
way.
|
|
|
|
Required properties for a client device:
|
|
- mboxes: Client use mailbox to communicate with GCE, it should have this
|
|
property and list of phandle, mailbox specifiers.
|
|
- gce-subsys: Specify the sub-system id which is corresponding to the register
|
|
address.
|
|
|
|
Optional properties for a client device:
|
|
- gce-event: Specify the event if the client has any. Because the event is
|
|
parsed by client, so client can replace 'gce-event' with other meaningful
|
|
name.
|
|
|
|
Some vaules of properties are defined in 'dt-bindings/gce/mt8173-gce.h'. Such as
|
|
thread number, sub-system ids, thread priority, event ids.
|
|
|
|
Example:
|
|
|
|
gce: gce@10212000 {
|
|
compatible = "mediatek,mt8173-gce";
|
|
reg = <0 0x10212000 0 0x1000>;
|
|
interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_LOW>;
|
|
clocks = <&infracfg CLK_INFRA_GCE>;
|
|
clock-names = "gce";
|
|
thread-num = CMDQ_THR_MAX_COUNT;
|
|
#mbox-cells = <4>;
|
|
};
|
|
|
|
Example for a client device:
|
|
|
|
mmsys: clock-controller@14000000 {
|
|
compatible = "mediatek,mt8173-mmsys";
|
|
mboxes = <&gce 0 2000 CMDQ_THR_PRIO_LOWEST 1>,
|
|
<&gce 1 2000 CMDQ_THR_PRIO_LOWEST 1>;
|
|
gce-subsys = <SUBSYS_1400XXXX>;
|
|
mutex-event-eof = <CMDQ_EVENT_MUTEX0_STREAM_EOF
|
|
CMDQ_EVENT_MUTEX1_STREAM_EOF>;
|
|
|
|
...
|
|
};
|