# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/qcom,ipa.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm IP Accelerator (IPA)

maintainers:
  - Alex Elder <elder@kernel.org>

description:
  This binding describes the Qualcomm IPA.  The IPA is capable of offloading
  certain network processing tasks (e.g. filtering, routing, and NAT) from
  the main processor.

  The IPA sits between multiple independent "execution environments,"
  including the Application Processor (AP) and the modem.  The IPA presents
  a Generic Software Interface (GSI) to each execution environment.
  The GSI is an integral part of the IPA, but it is logically isolated
  and has a distinct interrupt and a separately-defined address space.

  See also soc/qcom/qcom,smp2p.txt and interconnect/interconnect.txt.  See
  iommu/iommu.txt and iommu/arm,smmu.yaml for more information about SMMU
  bindings.


  - |
    --------             ---------
    |      |             |       |
    |  AP  +<---.   .----+ Modem |
    |      +--. |   | .->+       |
    |      |  | |   | |  |       |
    --------  | |   | |  ---------
              v |   v |
            --+-+---+-+--
            |    GSI    |
            |-----------|
            |           |
            |    IPA    |
            |           |
            -------------

properties:
  compatible:
    oneOf:
      - enum:
          - qcom,msm8998-ipa
          - qcom,sc7180-ipa
          - qcom,sc7280-ipa
          - qcom,sdm845-ipa
          - qcom,sdx55-ipa
          - qcom,sdx65-ipa
          - qcom,sm6350-ipa
          - qcom,sm8350-ipa
          - qcom,sm8550-ipa
      - items:
          - enum:
              - qcom,sm8650-ipa
          - const: qcom,sm8550-ipa

  reg:
    items:
      - description: IPA registers
      - description: IPA shared memory
      - description: GSI registers

  reg-names:
    items:
      - const: ipa-reg
      - const: ipa-shared
      - const: gsi

  iommus:
    minItems: 1
    maxItems: 2

  clocks:
    maxItems: 1

  clock-names:
    const: core

  interrupts:
    items:
      - description: IPA interrupt (hardware IRQ)
      - description: GSI interrupt (hardware IRQ)
      - description: Modem clock query interrupt (smp2p interrupt)
      - description: Modem setup ready interrupt (smp2p interrupt)

  interrupt-names:
    items:
      - const: ipa
      - const: gsi
      - const: ipa-clock-query
      - const: ipa-setup-ready

  interconnects:
    oneOf:
      - items:
          - description: Path leading to system memory
          - description: Path between the AP and IPA config space
      - items:
          - description: Path leading to system memory
          - description: Path leading to internal memory
          - description: Path between the AP and IPA config space

  interconnect-names:
    oneOf:
      - items:
          - const: memory
          - const: config
      - items:
          - const: memory
          - const: imem
          - const: config

  qcom,qmp:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: phandle to the AOSS side-channel message RAM

  qcom,smem-states:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: State bits used in by the AP to signal the modem.
    items:
      - description: Whether the "ipa-clock-enabled" state bit is valid
      - description: Whether the IPA clock is enabled (if valid)

  qcom,smem-state-names:
    description: The names of the state bits used for SMP2P output
    items:
      - const: ipa-clock-enabled-valid
      - const: ipa-clock-enabled

  qcom,gsi-loader:
    enum:
      - self
      - modem
      - skip
    description:
      Indicates how GSI firmware should be loaded.  If the AP loads
      and validates GSI firmware, this property has value "self".
      If the modem does this, this property has value "modem".
      Otherwise, "skip" means GSI firmware loading is not required.

  modem-init:
    deprecated: true
    type: boolean
    description:
      This is the older (deprecated) way of indicating how GSI firmware
      should be loaded.  If present, the modem loads GSI firmware; if
      absent, the AP loads GSI firmware.

  memory-region:
    maxItems: 1
    description:
      If present, a phandle for a reserved memory area that holds
      the firmware passed to Trust Zone for authentication.  Required
      when the AP (not the modem) performs early initialization.

  firmware-name:
    maxItems: 1
    description:
      If present, name (or relative path) of the file within the
      firmware search path containing the firmware image used when
      initializing IPA hardware.  Optional, and only used when
      Trust Zone performs early initialization.

required:
  - compatible
  - iommus
  - reg
  - clocks
  - interrupts
  - interconnects
  - qcom,smem-states

allOf:
  # If qcom,gsi-loader is present, modem-init must not be present
  - if:
      required:
        - qcom,gsi-loader
    then:
      properties:
        modem-init: false

      # If qcom,gsi-loader is "self", the AP loads GSI firmware, and
      # memory-region must be specified
      if:
        properties:
          qcom,gsi-loader:
            contains:
              const: self
      then:
        required:
          - memory-region
    else:
      # If qcom,gsi-loader is not present, we use deprecated behavior.
      # If modem-init is not present, the AP loads GSI firmware, and
      # memory-region must be specified.
      if:
        not:
          required:
            - modem-init
      then:
        required:
          - memory-region

additionalProperties: false

examples:
  - |
        #include <dt-bindings/interrupt-controller/arm-gic.h>
        #include <dt-bindings/clock/qcom,rpmh.h>
        #include <dt-bindings/interconnect/qcom,sdm845.h>

        smp2p-mpss {
                compatible = "qcom,smp2p";
                interrupts = <GIC_SPI 576 IRQ_TYPE_EDGE_RISING>;
                mboxes = <&apss_shared 6>;
                qcom,smem = <94>, <432>;
                qcom,local-pid = <0>;
                qcom,remote-pid = <5>;

                ipa_smp2p_out: ipa-ap-to-modem {
                        qcom,entry-name = "ipa";
                        #qcom,smem-state-cells = <1>;
                };

                ipa_smp2p_in: ipa-modem-to-ap {
                        qcom,entry-name = "ipa";
                        interrupt-controller;
                        #interrupt-cells = <2>;
                };
        };

        ipa@1e40000 {
                compatible = "qcom,sc7180-ipa";

                qcom,gsi-loader = "self";
                memory-region = <&ipa_fw_mem>;
                firmware-name = "qcom/sc7180-trogdor/modem/modem.mdt";

                iommus = <&apps_smmu 0x440 0x0>,
                         <&apps_smmu 0x442 0x0>;
                reg = <0x1e40000 0x7000>,
                      <0x1e47000 0x2000>,
                      <0x1e04000 0x2c000>;
                reg-names = "ipa-reg",
                            "ipa-shared",
                            "gsi";

                interrupts-extended = <&intc GIC_SPI 311 IRQ_TYPE_EDGE_RISING>,
                                      <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>,
                                      <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
                                      <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>;
                interrupt-names = "ipa",
                                  "gsi",
                                  "ipa-clock-query",
                                  "ipa-setup-ready";

                clocks = <&rpmhcc RPMH_IPA_CLK>;
                clock-names = "core";

                interconnects =
                        <&aggre2_noc MASTER_IPA 0 &mc_virt SLAVE_EBI1 0>,
                        <&aggre2_noc MASTER_IPA 0 &system_noc SLAVE_IMEM 0>,
                        <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_IPA_CFG 0>;
                interconnect-names = "memory",
                                     "imem",
                                     "config";

                qcom,qmp = <&aoss_qmp>;

                qcom,smem-states = <&ipa_smp2p_out 0>,
                                   <&ipa_smp2p_out 1>;
                qcom,smem-state-names = "ipa-clock-enabled-valid",
                                        "ipa-clock-enabled";
        };
