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

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
...@@ -124,19 +124,29 @@ properties: ...@@ -124,19 +124,29 @@ properties:
- const: ipa-clock-enabled-valid - const: ipa-clock-enabled-valid
- const: ipa-clock-enabled - 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: modem-init:
deprecated: true
type: boolean type: boolean
description: description:
If present, it indicates that the modem is responsible for This is the older (deprecated) way of indicating how GSI firmware
performing early IPA initialization, including loading and should be loaded. If present, the modem loads GSI firmware; if
validating firwmare used by the GSI. absent, the AP loads GSI firmware.
memory-region: memory-region:
maxItems: 1 maxItems: 1
description: description:
If present, a phandle for a reserved memory area that holds If present, a phandle for a reserved memory area that holds
the firmware passed to Trust Zone for authentication. Required 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: firmware-name:
$ref: /schemas/types.yaml#/definitions/string $ref: /schemas/types.yaml#/definitions/string
...@@ -155,15 +165,36 @@ required: ...@@ -155,15 +165,36 @@ required:
- interconnects - interconnects
- qcom,smem-states - qcom,smem-states
# If modem-init is not present, the AP loads GSI firmware, and allOf:
# memory-region must be specified # If qcom,gsi-loader is present, modem-init must not be present
if: - if:
not: required:
required: - qcom,gsi-loader
- modem-init then:
then: properties:
required: modem-init: false
- memory-region
# 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 additionalProperties: false
...@@ -194,14 +225,17 @@ examples: ...@@ -194,14 +225,17 @@ examples:
}; };
ipa@1e40000 { 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>, reg = <0x1e40000 0x7000>,
<0x1e47000 0x2000>, <0x1e47000 0x2000>,
<0x1e04000 0x2c000>; <0x1e04000 0x2c000>;
reg-names = "ipa-reg", reg-names = "ipa-reg",
"ipa-shared", "ipa-shared",
"gsi"; "gsi";
...@@ -219,9 +253,9 @@ examples: ...@@ -219,9 +253,9 @@ examples:
clock-names = "core"; clock-names = "core";
interconnects = interconnects =
<&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_EBI1>, <&aggre2_noc MASTER_IPA 0 &mc_virt SLAVE_EBI1 0>,
<&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_IMEM>, <&aggre2_noc MASTER_IPA 0 &system_noc SLAVE_IMEM 0>,
<&rsc_hlos MASTER_APPSS_PROC &rsc_hlos SLAVE_IPA_CFG>; <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_IPA_CFG 0>;
interconnect-names = "memory", interconnect-names = "memory",
"imem", "imem",
"config"; "config";
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment