# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/mtk,scp.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Mediatek SCP Bindings

maintainers:
  - Tinghan Shen <tinghan.shen@mediatek.com>

description:
  This binding provides support for ARM Cortex M4 Co-processor found on some
  Mediatek SoCs.

properties:
  compatible:
    enum:
      - mediatek,mt8183-scp
      - mediatek,mt8186-scp
      - mediatek,mt8188-scp
      - mediatek,mt8192-scp
      - mediatek,mt8195-scp

  reg:
    description:
      Should contain the address ranges for memory regions SRAM, CFG, and,
      on some platforms, L1TCM.
    minItems: 2
    maxItems: 3

  reg-names:
    minItems: 2
    items:
      - const: sram
      - const: cfg
      - const: l1tcm

  clocks:
    description:
      Clock for co-processor (see ../clock/clock-bindings.txt).
      Required by mt8183 and mt8192.
    maxItems: 1

  clock-names:
    const: main

  interrupts:
    maxItems: 1

  firmware-name:
    $ref: /schemas/types.yaml#/definitions/string
    description:
      If present, name (or relative path) of the file within the
      firmware search path containing the firmware image used when
      initializing SCP.

  memory-region:
    maxItems: 1

required:
  - compatible
  - reg
  - reg-names

allOf:
  - if:
      properties:
        compatible:
          enum:
            - mediatek,mt8183-scp
            - mediatek,mt8192-scp
    then:
      required:
        - clocks
        - clock-names

  - if:
      properties:
        compatible:
          enum:
            - mediatek,mt8183-scp
            - mediatek,mt8186-scp
            - mediatek,mt8188-scp
    then:
      properties:
        reg:
          maxItems: 2
        reg-names:
          maxItems: 2

additionalProperties:
  type: object
  description:
    Subnodes of the SCP represent rpmsg devices. The names of the devices
    are not important. The properties of these nodes are defined by the
    individual bindings for the rpmsg devices.
  properties:
    mediatek,rpmsg-name:
      $ref: /schemas/types.yaml#/definitions/string-array
      description:
        Contains the name for the rpmsg device. Used to match
        the subnode to rpmsg device announced by SCP.

  required:
    - mediatek,rpmsg-name

examples:
  - |
    #include <dt-bindings/clock/mt8192-clk.h>

    scp@10500000 {
        compatible = "mediatek,mt8192-scp";
        reg = <0x10500000 0x80000>,
              <0x10700000 0x8000>,
              <0x10720000 0xe0000>;
        reg-names = "sram", "cfg", "l1tcm";
        clocks = <&infracfg CLK_INFRA_SCPSYS>;
        clock-names = "main";

        cros_ec {
            mediatek,rpmsg-name = "cros-ec-rpmsg";
        };
    };
