162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/soc/mediatek/mediatek,mutex.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Mediatek mutex
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Chun-Kuang Hu <chunkuang.hu@kernel.org>
1162306a36Sopenharmony_ci  - Philipp Zabel <p.zabel@pengutronix.de>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription: |
1462306a36Sopenharmony_ci  Mediatek mutex, namely MUTEX, is used to send the triggers signals called
1562306a36Sopenharmony_ci  Start Of Frame (SOF) / End Of Frame (EOF) to each sub-modules on the display
1662306a36Sopenharmony_ci  data path or MDP data path.
1762306a36Sopenharmony_ci  In some SoC, such as mt2701, MUTEX could be a hardware mutex which protects
1862306a36Sopenharmony_ci  the shadow register.
1962306a36Sopenharmony_ci  MUTEX device node must be siblings to the central MMSYS_CONFIG node.
2062306a36Sopenharmony_ci  For a description of the MMSYS_CONFIG binding, see
2162306a36Sopenharmony_ci  Documentation/devicetree/bindings/arm/mediatek/mediatek,mmsys.yaml
2262306a36Sopenharmony_ci  for details.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciproperties:
2562306a36Sopenharmony_ci  compatible:
2662306a36Sopenharmony_ci    enum:
2762306a36Sopenharmony_ci      - mediatek,mt2701-disp-mutex
2862306a36Sopenharmony_ci      - mediatek,mt2712-disp-mutex
2962306a36Sopenharmony_ci      - mediatek,mt6795-disp-mutex
3062306a36Sopenharmony_ci      - mediatek,mt8167-disp-mutex
3162306a36Sopenharmony_ci      - mediatek,mt8173-disp-mutex
3262306a36Sopenharmony_ci      - mediatek,mt8183-disp-mutex
3362306a36Sopenharmony_ci      - mediatek,mt8186-disp-mutex
3462306a36Sopenharmony_ci      - mediatek,mt8186-mdp3-mutex
3562306a36Sopenharmony_ci      - mediatek,mt8188-disp-mutex
3662306a36Sopenharmony_ci      - mediatek,mt8192-disp-mutex
3762306a36Sopenharmony_ci      - mediatek,mt8195-disp-mutex
3862306a36Sopenharmony_ci      - mediatek,mt8195-vpp-mutex
3962306a36Sopenharmony_ci      - mediatek,mt8365-disp-mutex
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci  reg:
4262306a36Sopenharmony_ci    maxItems: 1
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  interrupts:
4562306a36Sopenharmony_ci    maxItems: 1
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  power-domains:
4862306a36Sopenharmony_ci    description: A phandle and PM domain specifier as defined by bindings of
4962306a36Sopenharmony_ci      the power controller specified by phandle. See
5062306a36Sopenharmony_ci      Documentation/devicetree/bindings/power/power-domain.yaml for details.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  clocks:
5362306a36Sopenharmony_ci    items:
5462306a36Sopenharmony_ci      - description: MUTEX Clock
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  mediatek,gce-events:
5762306a36Sopenharmony_ci    description:
5862306a36Sopenharmony_ci      The event id which is mapping to the specific hardware event signal
5962306a36Sopenharmony_ci      to gce. The event id is defined in the gce header
6062306a36Sopenharmony_ci      include/dt-bindings/gce/<chip>-gce.h of each chips.
6162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  mediatek,gce-client-reg:
6462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
6562306a36Sopenharmony_ci    items:
6662306a36Sopenharmony_ci      items:
6762306a36Sopenharmony_ci        - description: phandle of GCE
6862306a36Sopenharmony_ci        - description: GCE subsys id
6962306a36Sopenharmony_ci        - description: register offset
7062306a36Sopenharmony_ci        - description: register size
7162306a36Sopenharmony_ci    description: The register of client driver can be configured by gce with
7262306a36Sopenharmony_ci      4 arguments defined in this property. Each GCE subsys id is mapping to
7362306a36Sopenharmony_ci      a client defined in the header include/dt-bindings/gce/<chip>-gce.h.
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ciallOf:
7662306a36Sopenharmony_ci  - if:
7762306a36Sopenharmony_ci      properties:
7862306a36Sopenharmony_ci        compatible:
7962306a36Sopenharmony_ci          contains:
8062306a36Sopenharmony_ci            enum:
8162306a36Sopenharmony_ci              - mediatek,mt2701-disp-mutex
8262306a36Sopenharmony_ci              - mediatek,mt2712-disp-mutex
8362306a36Sopenharmony_ci              - mediatek,mt6795-disp-mutex
8462306a36Sopenharmony_ci              - mediatek,mt8173-disp-mutex
8562306a36Sopenharmony_ci              - mediatek,mt8186-disp-mutex
8662306a36Sopenharmony_ci              - mediatek,mt8186-mdp3-mutex
8762306a36Sopenharmony_ci              - mediatek,mt8192-disp-mutex
8862306a36Sopenharmony_ci              - mediatek,mt8195-disp-mutex
8962306a36Sopenharmony_ci    then:
9062306a36Sopenharmony_ci      required:
9162306a36Sopenharmony_ci        - clocks
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_cirequired:
9562306a36Sopenharmony_ci  - compatible
9662306a36Sopenharmony_ci  - reg
9762306a36Sopenharmony_ci  - interrupts
9862306a36Sopenharmony_ci  - power-domains
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ciadditionalProperties: false
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciexamples:
10362306a36Sopenharmony_ci  - |
10462306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
10562306a36Sopenharmony_ci    #include <dt-bindings/clock/mt8173-clk.h>
10662306a36Sopenharmony_ci    #include <dt-bindings/power/mt8173-power.h>
10762306a36Sopenharmony_ci    #include <dt-bindings/gce/mt8173-gce.h>
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci    soc {
11062306a36Sopenharmony_ci        #address-cells = <2>;
11162306a36Sopenharmony_ci        #size-cells = <2>;
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci        mutex: mutex@14020000 {
11462306a36Sopenharmony_ci            compatible = "mediatek,mt8173-disp-mutex";
11562306a36Sopenharmony_ci            reg = <0 0x14020000 0 0x1000>;
11662306a36Sopenharmony_ci            interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_LOW>;
11762306a36Sopenharmony_ci            power-domains = <&spm MT8173_POWER_DOMAIN_MM>;
11862306a36Sopenharmony_ci            clocks = <&mmsys CLK_MM_MUTEX_32K>;
11962306a36Sopenharmony_ci            mediatek,gce-events = <CMDQ_EVENT_MUTEX0_STREAM_EOF>,
12062306a36Sopenharmony_ci                                  <CMDQ_EVENT_MUTEX1_STREAM_EOF>;
12162306a36Sopenharmony_ci        };
12262306a36Sopenharmony_ci    };
123