# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2021 ARM Ltd.
%YAML 1.2
---
$id: http://devicetree.org/schemas/firmware/arm,scmi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: System Control and Management Interface (SCMI) Message Protocol

maintainers:
  - Sudeep Holla <sudeep.holla@arm.com>

description: |
  The SCMI is intended to allow agents such as OSPM to manage various functions
  that are provided by the hardware platform it is running on, including power
  and performance functions.

  This binding is intended to define the interface the firmware implementing
  the SCMI as described in ARM document number ARM DEN 0056 ("ARM System Control
  and Management Interface Platform Design Document")[0] provide for OSPM in
  the device tree.

  [0] https://developer.arm.com/documentation/den0056/latest

properties:
  $nodename:
    const: scmi

  compatible:
    oneOf:
      - description: SCMI compliant firmware with mailbox transport
        items:
          - const: arm,scmi
      - description: SCMI compliant firmware with ARM SMC/HVC transport
        items:
          - const: arm,scmi-smc
      - description: SCMI compliant firmware with ARM SMC/HVC transport
                     with shmem address(4KB-page, offset) as parameters
        items:
          - const: arm,scmi-smc-param
      - description: SCMI compliant firmware with Qualcomm SMC/HVC transport
        items:
          - const: qcom,scmi-smc
      - description: SCMI compliant firmware with SCMI Virtio transport.
                     The virtio transport only supports a single device.
        items:
          - const: arm,scmi-virtio
      - description: SCMI compliant firmware with OP-TEE transport
        items:
          - const: linaro,scmi-optee

  interrupts:
    description:
      The interrupt that indicates message completion by the platform
      rather than by the return of the smc call. This should not be used
      except when the platform requires such behavior.
    maxItems: 1

  interrupt-names:
    const: a2p

  mbox-names:
    description:
      Specifies the mailboxes used to communicate with SCMI compliant
      firmware.
    oneOf:
      - items:
          - const: tx
          - const: rx
        minItems: 1
      - items:
          - const: tx
          - const: tx_reply
          - const: rx
          - const: rx_reply
        minItems: 2

  mboxes:
    description:
      List of phandle and mailbox channel specifiers. It should contain
      exactly one, two, three or four mailboxes; the first one or two for
      transmitting messages ("tx") and another optional ("rx") for receiving
      notifications and delayed responses, if supported by the platform.
      The optional ("rx_reply") is for notifications completion interrupt,
      if supported by the platform.
      The number of mailboxes needed for transmitting messages depends on the
      type of channels exposed by the specific underlying mailbox controller;
      one single channel descriptor is enough if such channel is bidirectional,
      while two channel descriptors are needed to represent the SCMI ("tx")
      channel if the underlying mailbox channels are of unidirectional type.
      The effective combination in numbers of mboxes and shmem descriptors let
      the SCMI subsystem determine unambiguosly which type of SCMI channels are
      made available by the underlying mailbox controller and how to use them.
       1 mbox / 1 shmem => SCMI TX over 1 mailbox bidirectional channel
       2 mbox / 2 shmem => SCMI TX and RX over 2 mailbox bidirectional channels
       2 mbox / 1 shmem => SCMI TX over 2 mailbox unidirectional channels
       3 mbox / 2 shmem => SCMI TX and RX over 3 mailbox unidirectional channels
       4 mbox / 2 shmem => SCMI TX and RX over 4 mailbox unidirectional channels
      Any other combination of mboxes and shmem is invalid.
    minItems: 1
    maxItems: 4

  shmem:
    description:
      List of phandle pointing to the shared memory(SHM) area, for each
      transport channel specified.
    minItems: 1
    maxItems: 2

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  atomic-threshold-us:
    description:
      An optional time value, expressed in microseconds, representing, on this
      platform, the threshold above which any SCMI command, advertised to have
      an higher-than-threshold execution latency, should not be considered for
      atomic mode of operation, even if requested.
    default: 0

  arm,smc-id:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      SMC id required when using smc or hvc transports

  linaro,optee-channel-id:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      Channel specifier required when using OP-TEE transport.

  protocol@11:
    $ref: '#/$defs/protocol-node'
    unevaluatedProperties: false

    properties:
      reg:
        const: 0x11

      '#power-domain-cells':
        const: 1

    required:
      - '#power-domain-cells'

  protocol@13:
    $ref: '#/$defs/protocol-node'
    unevaluatedProperties: false

    properties:
      reg:
        const: 0x13

      '#clock-cells':
        const: 1

      '#power-domain-cells':
        const: 1

    oneOf:
      - required:
          - '#clock-cells'

      - required:
          - '#power-domain-cells'

  protocol@14:
    $ref: '#/$defs/protocol-node'
    unevaluatedProperties: false

    properties:
      reg:
        const: 0x14

      '#clock-cells':
        const: 1

    required:
      - '#clock-cells'

  protocol@15:
    $ref: '#/$defs/protocol-node'
    unevaluatedProperties: false

    properties:
      reg:
        const: 0x15

      '#thermal-sensor-cells':
        const: 1

    required:
      - '#thermal-sensor-cells'

  protocol@16:
    $ref: '#/$defs/protocol-node'
    unevaluatedProperties: false

    properties:
      reg:
        const: 0x16

      '#reset-cells':
        const: 1

    required:
      - '#reset-cells'

  protocol@17:
    $ref: '#/$defs/protocol-node'
    unevaluatedProperties: false

    properties:
      reg:
        const: 0x17

      regulators:
        type: object
        additionalProperties: false
        description:
          The list of all regulators provided by this SCMI controller.

        properties:
          '#address-cells':
            const: 1

          '#size-cells':
            const: 0

        patternProperties:
          '^regulator@[0-9a-f]+$':
            type: object
            $ref: /schemas/regulator/regulator.yaml#
            unevaluatedProperties: false

            properties:
              reg:
                maxItems: 1
                description: Identifier for the voltage regulator.

            required:
              - reg

  protocol@18:
    $ref: '#/$defs/protocol-node'
    unevaluatedProperties: false

    properties:
      reg:
        const: 0x18

  protocol@19:
    type: object
    allOf:
      - $ref: '#/$defs/protocol-node'
      - anyOf:
          - $ref: /schemas/pinctrl/pinctrl.yaml
          - $ref: /schemas/firmware/nxp,imx95-scmi-pinctrl.yaml

    unevaluatedProperties: false

    properties:
      reg:
        const: 0x19

    patternProperties:
      '-pins$':
        type: object
        allOf:
          - $ref: /schemas/pinctrl/pincfg-node.yaml#
          - $ref: /schemas/pinctrl/pinmux-node.yaml#
        unevaluatedProperties: false

        description:
          A pin multiplexing sub-node describes how to configure a
          set of pins in some desired function.
          A single sub-node may define several pin configurations.
          This sub-node is using the default pinctrl bindings to configure
          pin multiplexing and using SCMI protocol to apply a specified
          configuration.

    required:
      - reg

additionalProperties: false

$defs:
  protocol-node:
    type: object
    description:
      Each sub-node represents a protocol supported. If the platform
      supports a dedicated communication channel for a particular protocol,
      then the corresponding transport properties must be present.
      The virtio transport does not support a dedicated communication channel.

    properties:
      reg:
        maxItems: 1

      mbox-names:
        oneOf:
          - items:
              - const: tx
              - const: rx
            minItems: 1
          - items:
              - const: tx
              - const: tx_reply
              - const: rx
            minItems: 2

      mboxes:
        minItems: 1
        maxItems: 3

      shmem:
        minItems: 1
        maxItems: 2

      linaro,optee-channel-id:
        $ref: /schemas/types.yaml#/definitions/uint32
        description:
          Channel specifier required when using OP-TEE transport and
          protocol has a dedicated communication channel.

    required:
      - reg

required:
  - compatible

if:
  properties:
    compatible:
      contains:
        const: arm,scmi
then:
  properties:
    interrupts: false
    interrupt-names: false

  required:
    - mboxes
    - shmem

else:
  if:
    properties:
      compatible:
        contains:
          enum:
            - arm,scmi-smc
            - arm,scmi-smc-param
            - qcom,scmi-smc
  then:
    required:
      - arm,smc-id
      - shmem

  else:
    if:
      properties:
        compatible:
          contains:
            const: linaro,scmi-optee
    then:
      required:
        - linaro,optee-channel-id

examples:
  - |
    firmware {
        scmi {
            compatible = "arm,scmi";
            mboxes = <&mhuB 0 0>,
                     <&mhuB 0 1>;
            mbox-names = "tx", "rx";
            shmem = <&cpu_scp_lpri0>,
                    <&cpu_scp_lpri1>;

            #address-cells = <1>;
            #size-cells = <0>;

            atomic-threshold-us = <10000>;

            scmi_devpd: protocol@11 {
                reg = <0x11>;
                #power-domain-cells = <1>;
            };

            scmi_dvfs: protocol@13 {
                reg = <0x13>;
                #power-domain-cells = <1>;

                mboxes = <&mhuB 1 0>,
                         <&mhuB 1 1>;
                mbox-names = "tx", "rx";
                shmem = <&cpu_scp_hpri0>,
                        <&cpu_scp_hpri1>;
            };

            scmi_clk: protocol@14 {
                reg = <0x14>;
                #clock-cells = <1>;
            };

            scmi_sensors: protocol@15 {
                reg = <0x15>;
                #thermal-sensor-cells = <1>;
            };

            scmi_reset: protocol@16 {
                reg = <0x16>;
                #reset-cells = <1>;
            };

            scmi_voltage: protocol@17 {
                reg = <0x17>;
                regulators {
                    #address-cells = <1>;
                    #size-cells = <0>;

                    regulator_devX: regulator@0 {
                        reg = <0x0>;
                        regulator-max-microvolt = <3300000>;
                    };

                    regulator_devY: regulator@9 {
                        reg = <0x9>;
                        regulator-min-microvolt = <500000>;
                        regulator-max-microvolt = <4200000>;
                    };
                };
            };

            scmi_powercap: protocol@18 {
                reg = <0x18>;
            };

            scmi_pinctrl: protocol@19 {
                reg = <0x19>;

                i2c2-pins {
                    groups = "g_i2c2_a", "g_i2c2_b";
                    function = "f_i2c2";
                };

                mdio-pins {
                    groups = "g_avb_mdio";
                    drive-strength = <24>;
                };

                keys_pins: keys-pins {
                    pins = "gpio_5_17", "gpio_5_20", "gpio_5_22", "gpio_2_1";
                    bias-pull-up;
                };
            };
        };
    };

    soc {
        #address-cells = <2>;
        #size-cells = <2>;

        sram@50000000 {
            compatible = "mmio-sram";
            reg = <0x0 0x50000000 0x0 0x10000>;

            #address-cells = <1>;
            #size-cells = <1>;
            ranges = <0 0x0 0x50000000 0x10000>;

            cpu_scp_lpri0: scp-sram-section@0 {
                compatible = "arm,scmi-shmem";
                reg = <0x0 0x80>;
            };

            cpu_scp_lpri1: scp-sram-section@80 {
                compatible = "arm,scmi-shmem";
                reg = <0x80 0x80>;
            };

            cpu_scp_hpri0: scp-sram-section@100 {
                compatible = "arm,scmi-shmem";
                reg = <0x100 0x80>;
            };

            cpu_scp_hpri2: scp-sram-section@180 {
                compatible = "arm,scmi-shmem";
                reg = <0x180 0x80>;
            };
        };
    };

  - |
    firmware {
        scmi {
            compatible = "arm,scmi-smc";
            shmem = <&cpu_scp_lpri0>, <&cpu_scp_lpri1>;
            arm,smc-id = <0xc3000001>;

            #address-cells = <1>;
            #size-cells = <0>;

            scmi_devpd1: protocol@11 {
                reg = <0x11>;
                #power-domain-cells = <1>;
            };
        };
    };

  - |
    firmware {
        scmi {
            compatible = "linaro,scmi-optee";
            linaro,optee-channel-id = <0>;

            #address-cells = <1>;
            #size-cells = <0>;

            scmi_dvfs1: protocol@13 {
                reg = <0x13>;
                linaro,optee-channel-id = <1>;
                shmem = <&cpu_optee_lpri0>;
                #power-domain-cells = <1>;
            };

            scmi_clk0: protocol@14 {
                reg = <0x14>;
                #clock-cells = <1>;
            };
        };
    };

    soc {
        #address-cells = <2>;
        #size-cells = <2>;

        sram@51000000 {
            compatible = "mmio-sram";
            reg = <0x0 0x51000000 0x0 0x10000>;

            #address-cells = <1>;
            #size-cells = <1>;
            ranges = <0 0x0 0x51000000 0x10000>;

            cpu_optee_lpri0: optee-sram-section@0 {
                compatible = "arm,scmi-shmem";
                reg = <0x0 0x80>;
            };
        };
    };

...
