Commit 4ca0c647 authored by Alex Elder's avatar Alex Elder Committed by Jakub Kicinski
Browse files

dt-bindings: net: qcom,ipa: deprecate modem-init



GSI firmware for IPA must be loaded during initialization, either by
the AP or by the modem.  The loader is currently specified based on
whether the Boolean modem-init property is present.

Instead, use a new property with an enumerated value to indicate
explicitly how GSI firmware gets loaded.  With this in place, a
third approach can be added in an upcoming patch.

The new qcom,gsi-loader property has two defined values:
  - self:   The AP loads GSI firmware
  - modem:  The modem loads GSI firmware
The modem-init property must still be supported, but is now marked
deprecated.

Update the example so it represents the SC7180 SoC, and provide
examples for the qcom,gsi-loader, memory-region, and firmware-name
properties.

Signed-off-by: default avatarAlex Elder <elder@linaro.org>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 647541ea
Loading
Loading
Loading
Loading
+55 −21
Original line number Diff line number Diff line
@@ -124,19 +124,29 @@ properties:
      - const: ipa-clock-enabled-valid
      - const: ipa-clock-enabled

  qcom,gsi-loader:
    enum:
      - self
      - modem
    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".

  modem-init:
    deprecated: true
    type: boolean
    description:
      If present, it indicates that the modem is responsible for
      performing early IPA initialization, including loading and
      validating firwmare used by the GSI.
      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 Trust Zone (not the modem) performs early initialization.
      when the AP (not the modem) performs early initialization.

  firmware-name:
    $ref: /schemas/types.yaml#/definitions/string
@@ -155,8 +165,29 @@ required:
  - interconnects
  - qcom,smem-states

# If modem-init is not present, the AP loads GSI firmware, and
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:
@@ -194,11 +225,14 @@ examples:
        };

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

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

                iommus = <&apps_smmu 0x720 0x3>;
                iommus = <&apps_smmu 0x440 0x0>,
                         <&apps_smmu 0x442 0x0>;
                reg = <0x1e40000 0x7000>,
                      <0x1e47000 0x2000>,
                      <0x1e04000 0x2c000>;
@@ -219,9 +253,9 @@ examples:
                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>;
                        <&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";