cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

qcom,ipa.yaml (7282B)


      1# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
      2%YAML 1.2
      3---
      4$id: http://devicetree.org/schemas/net/qcom,ipa.yaml#
      5$schema: http://devicetree.org/meta-schemas/core.yaml#
      6
      7title: Qualcomm IP Accelerator (IPA)
      8
      9maintainers:
     10  - Alex Elder <elder@kernel.org>
     11
     12description:
     13  This binding describes the Qualcomm IPA.  The IPA is capable of offloading
     14  certain network processing tasks (e.g. filtering, routing, and NAT) from
     15  the main processor.
     16
     17  The IPA sits between multiple independent "execution environments,"
     18  including the Application Processor (AP) and the modem.  The IPA presents
     19  a Generic Software Interface (GSI) to each execution environment.
     20  The GSI is an integral part of the IPA, but it is logically isolated
     21  and has a distinct interrupt and a separately-defined address space.
     22
     23  See also soc/qcom/qcom,smp2p.txt and interconnect/interconnect.txt.  See
     24  iommu/iommu.txt and iommu/arm,smmu.yaml for more information about SMMU
     25  bindings.
     26
     27
     28  - |
     29    --------             ---------
     30    |      |             |       |
     31    |  AP  +<---.   .----+ Modem |
     32    |      +--. |   | .->+       |
     33    |      |  | |   | |  |       |
     34    --------  | |   | |  ---------
     35              v |   v |
     36            --+-+---+-+--
     37            |    GSI    |
     38            |-----------|
     39            |           |
     40            |    IPA    |
     41            |           |
     42            -------------
     43
     44properties:
     45  compatible:
     46    enum:
     47      - qcom,msm8998-ipa
     48      - qcom,sc7180-ipa
     49      - qcom,sc7280-ipa
     50      - qcom,sdm845-ipa
     51      - qcom,sdx55-ipa
     52      - qcom,sm8350-ipa
     53
     54  reg:
     55    items:
     56      - description: IPA registers
     57      - description: IPA shared memory
     58      - description: GSI registers
     59
     60  reg-names:
     61    items:
     62      - const: ipa-reg
     63      - const: ipa-shared
     64      - const: gsi
     65
     66  iommus:
     67    minItems: 1
     68    maxItems: 2
     69
     70  clocks:
     71    maxItems: 1
     72
     73  clock-names:
     74    const: core
     75
     76  interrupts:
     77    items:
     78      - description: IPA interrupt (hardware IRQ)
     79      - description: GSI interrupt (hardware IRQ)
     80      - description: Modem clock query interrupt (smp2p interrupt)
     81      - description: Modem setup ready interrupt (smp2p interrupt)
     82
     83  interrupt-names:
     84    items:
     85      - const: ipa
     86      - const: gsi
     87      - const: ipa-clock-query
     88      - const: ipa-setup-ready
     89
     90  interconnects:
     91    oneOf:
     92      - items:
     93          - description: Path leading to system memory
     94          - description: Path between the AP and IPA config space
     95      - items:
     96          - description: Path leading to system memory
     97          - description: Path leading to internal memory
     98          - description: Path between the AP and IPA config space
     99
    100  interconnect-names:
    101    oneOf:
    102      - items:
    103          - const: memory
    104          - const: config
    105      - items:
    106          - const: memory
    107          - const: imem
    108          - const: config
    109
    110  qcom,qmp:
    111    $ref: /schemas/types.yaml#/definitions/phandle
    112    description: phandle to the AOSS side-channel message RAM
    113
    114  qcom,smem-states:
    115    $ref: /schemas/types.yaml#/definitions/phandle-array
    116    description: State bits used in by the AP to signal the modem.
    117    items:
    118      - description: Whether the "ipa-clock-enabled" state bit is valid
    119      - description: Whether the IPA clock is enabled (if valid)
    120
    121  qcom,smem-state-names:
    122    description: The names of the state bits used for SMP2P output
    123    items:
    124      - const: ipa-clock-enabled-valid
    125      - const: ipa-clock-enabled
    126
    127  modem-init:
    128    type: boolean
    129    description:
    130      If present, it indicates that the modem is responsible for
    131      performing early IPA initialization, including loading and
    132      validating firwmare used by the GSI.
    133
    134  memory-region:
    135    maxItems: 1
    136    description:
    137      If present, a phandle for a reserved memory area that holds
    138      the firmware passed to Trust Zone for authentication.  Required
    139      when Trust Zone (not the modem) performs early initialization.
    140
    141  firmware-name:
    142    $ref: /schemas/types.yaml#/definitions/string
    143    description:
    144      If present, name (or relative path) of the file within the
    145      firmware search path containing the firmware image used when
    146      initializing IPA hardware.  Optional, and only used when
    147      Trust Zone performs early initialization.
    148
    149required:
    150  - compatible
    151  - iommus
    152  - reg
    153  - clocks
    154  - interrupts
    155  - interconnects
    156  - qcom,smem-states
    157
    158# Either modem-init is present, or memory-region must be present.
    159oneOf:
    160  - required:
    161      - modem-init
    162  - required:
    163      - memory-region
    164
    165# If memory-region is present, firmware-name may optionally be present.
    166# But if modem-init is present, firmware-name must not be present.
    167if:
    168  required:
    169    - modem-init
    170then:
    171  not:
    172    required:
    173      - firmware-name
    174
    175additionalProperties: false
    176
    177examples:
    178  - |
    179        #include <dt-bindings/interrupt-controller/arm-gic.h>
    180        #include <dt-bindings/clock/qcom,rpmh.h>
    181        #include <dt-bindings/interconnect/qcom,sdm845.h>
    182
    183        smp2p-mpss {
    184                compatible = "qcom,smp2p";
    185                interrupts = <GIC_SPI 576 IRQ_TYPE_EDGE_RISING>;
    186                mboxes = <&apss_shared 6>;
    187                qcom,smem = <94>, <432>;
    188                qcom,local-pid = <0>;
    189                qcom,remote-pid = <5>;
    190
    191                ipa_smp2p_out: ipa-ap-to-modem {
    192                        qcom,entry-name = "ipa";
    193                        #qcom,smem-state-cells = <1>;
    194                };
    195
    196                ipa_smp2p_in: ipa-modem-to-ap {
    197                        qcom,entry-name = "ipa";
    198                        interrupt-controller;
    199                        #interrupt-cells = <2>;
    200                };
    201        };
    202
    203        ipa@1e40000 {
    204                compatible = "qcom,sdm845-ipa";
    205
    206                modem-init;
    207
    208                iommus = <&apps_smmu 0x720 0x3>;
    209                reg = <0x1e40000 0x7000>,
    210                        <0x1e47000 0x2000>,
    211                        <0x1e04000 0x2c000>;
    212                reg-names = "ipa-reg",
    213                            "ipa-shared",
    214                            "gsi";
    215
    216                interrupts-extended = <&intc GIC_SPI 311 IRQ_TYPE_EDGE_RISING>,
    217                                      <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>,
    218                                      <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
    219                                      <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>;
    220                interrupt-names = "ipa",
    221                                  "gsi",
    222                                  "ipa-clock-query",
    223                                  "ipa-setup-ready";
    224
    225                clocks = <&rpmhcc RPMH_IPA_CLK>;
    226                clock-names = "core";
    227
    228                interconnects =
    229                        <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_EBI1>,
    230                        <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_IMEM>,
    231                        <&rsc_hlos MASTER_APPSS_PROC &rsc_hlos SLAVE_IPA_CFG>;
    232                interconnect-names = "memory",
    233                                     "imem",
    234                                     "config";
    235
    236                qcom,qmp = <&aoss_qmp>;
    237
    238                qcom,smem-states = <&ipa_smp2p_out 0>,
    239                                   <&ipa_smp2p_out 1>;
    240                qcom,smem-state-names = "ipa-clock-enabled-valid",
    241                                        "ipa-clock-enabled";
    242        };