Add the binding definitions for the "qcom,ipa" device tree node.

Signed-off-by: Alex Elder <el...@linaro.org>
---
 .../devicetree/bindings/net/qcom,ipa.txt      | 164 ++++++++++++++++++
 1 file changed, 164 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/net/qcom,ipa.txt

diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.txt 
b/Documentation/devicetree/bindings/net/qcom,ipa.txt
new file mode 100644
index 000000000000..2705e198f12e
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/qcom,ipa.txt
@@ -0,0 +1,164 @@
+Qualcomm IP Accelerator (IPA)
+
+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.
+
+       --------             ---------
+       |      |             |       |
+       |  AP  +<---.   .----+ Modem |
+       |      +--. |   | .->+       |
+       |      |  | |   | |  |       |
+       --------  | |   | |  ---------
+                 v |   v |
+               --+-+---+-+--
+               |    GSI    |
+               |-----------|
+               |           |
+               |    IPA    |
+               |           |
+               -------------
+
+See also:
+  bindings/interrupt-controller/interrupts.txt
+  bindings/interconnect/interconnect.txt
+  bindings/soc/qcom/qcom,smp2p.txt
+  bindings/reserved-memory/reserved-memory.txt
+  bindings/clock/clock-bindings.txt
+
+All properties except "modem-init" defined below are required.
+
+- compatible:
+       Must be "qcom,sdm845-ipa".
+
+- modem-init:
+       This Boolean property is optional.  If present, it indicates that
+       the modem is responsible for performing early IPA initialization,
+       including loading and validating firwmare used by the GSI.  This
+       early initialization is performed by Trust Zone otherwise.
+
+- reg:
+       Resources specifying the physical address spaces of the IPA and GSI.
+
+- reg-names:
+       The names of the two address space ranges defined by the "reg"
+       property.  Must be:
+               "ipa-reg"
+               "ipa-shared"
+               "gsi"
+
+- interrupts:
+       Specifies the IRQs used by the IPA.  Four interrupts are required,
+       specifying: the IPA IRQ; the GSI IRQ; the clock query interrupt
+       from the modem; and the "ready for setup" interrupt from the modem.
+       The first two are hardware IRQs; the third and fourth are SMP2P
+       input interrupts.
+
+- interrupt-names:
+       The names of the interrupts defined by the "interrupts-extended"
+       property.  Must be:
+               "ipa"
+               "gsi"
+               "ipa-clock-query"
+               "ipa-setup-ready"
+
+- clocks:
+       Resource that defines the IPA core clock.
+
+- clock-names:
+       The name used for the IPA core clock.  Must be "core".
+
+- interconnects:
+       Specifies the interconnects used by the IPA.  Three interconnects
+       are required, specifying:  the path from the IPA to memory; from
+       IPA to internal (SoC resident) memory; and between the AP subsystem
+       and IPA for register access.
+
+- interconnect-names:
+       The names of the interconnects defined by the "interconnects"
+       property.  Must be:
+               "memory"
+               "imem"
+               "config"
+
+- qcom,smem-states
+       The state bits used for SMP2P output.  Two states must be specified.
+       The first indicates whether the value in the second bit is valid
+       (1 means valid).  The second, if valid, defines whether the IPA
+       clock is enabled (1 means enabled).
+
+- qcom,smem-state-names
+       The names of the state bits used for SMP2P output.  Must be:
+               "ipa-clock-enabled-valid"
+               "ipa-clock-enabled"
+
+- memory-region
+       A phandle for a reserved memory area that holds the firmware passed
+       to Trust Zone for authentication.  (Note, this is required
+       only when Trust Zone performs early initialization; that is,
+       it is required if "modem-init" is not defined.)
+
+= EXAMPLE
+
+The following example represents the IPA present in the SDM845 SoC.  It
+shows portions of the "modem-smp2p" node to indicate its relationship
+with the interrupts and SMEM states used by the IPA.
+
+       smp2p-mpss {
+               compatible = "qcom,smp2p";
+               . . .
+               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,sdm845-ipa";
+
+               modem-init;
+
+               reg = <0 0x1e40000 0 0x7000>,
+                     <0 0x1e47000 0 0x2000>,
+                     <0 0x1e04000 0 0x2c000>;
+               reg-names = "ipa-reg",
+                           "ipa-shared";
+                           "gsi";
+
+               interrupts-extended = <&intc 0 311 IRQ_TYPE_EDGE_RISING>,
+                                     <&intc 0 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 =
+                       <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_EBI1>,
+                       <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_IMEM>,
+                       <&rsc_hlos MASTER_APPSS_PROC &rsc_hlos SLAVE_IPA_CFG>;
+               interconnect-names = "memory",
+                                    "imem",
+                                    "config";
+
+               qcom,smem-states = <&ipa_smp2p_out 0>,
+                                  <&ipa_smp2p_out 1>;
+               qcom,smem-state-names = "ipa-clock-enabled-valid",
+                                       "ipa-clock-enabled";
+       };
-- 
2.20.1

Reply via email to