162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/remoteproc/qcom,msm8916-mss-pil.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Qualcomm MSM8916 MSS Peripheral Image Loader (and similar)
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Stephan Gerhold <stephan@gerhold.net>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  This document describes the hardware for a component that loads and boots
1462306a36Sopenharmony_ci  firmware on the Qualcomm MSM8916 Modem Hexagon Core (and similar).
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciproperties:
1762306a36Sopenharmony_ci  compatible:
1862306a36Sopenharmony_ci    oneOf:
1962306a36Sopenharmony_ci      - enum:
2062306a36Sopenharmony_ci          - qcom,msm8909-mss-pil
2162306a36Sopenharmony_ci          - qcom,msm8916-mss-pil
2262306a36Sopenharmony_ci          - qcom,msm8953-mss-pil
2362306a36Sopenharmony_ci          - qcom,msm8974-mss-pil
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci      - const: qcom,q6v5-pil
2662306a36Sopenharmony_ci        description: Deprecated, prefer using qcom,msm8916-mss-pil
2762306a36Sopenharmony_ci        deprecated: true
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  reg:
3062306a36Sopenharmony_ci    items:
3162306a36Sopenharmony_ci      - description: MSS QDSP6 registers
3262306a36Sopenharmony_ci      - description: RMB registers
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci  reg-names:
3562306a36Sopenharmony_ci    items:
3662306a36Sopenharmony_ci      - const: qdsp6
3762306a36Sopenharmony_ci      - const: rmb
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  interrupts:
4062306a36Sopenharmony_ci    items:
4162306a36Sopenharmony_ci      - description: Watchdog interrupt
4262306a36Sopenharmony_ci      - description: Fatal interrupt
4362306a36Sopenharmony_ci      - description: Ready interrupt
4462306a36Sopenharmony_ci      - description: Handover interrupt
4562306a36Sopenharmony_ci      - description: Stop acknowledge interrupt
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  interrupt-names:
4862306a36Sopenharmony_ci    items:
4962306a36Sopenharmony_ci      - const: wdog
5062306a36Sopenharmony_ci      - const: fatal
5162306a36Sopenharmony_ci      - const: ready
5262306a36Sopenharmony_ci      - const: handover
5362306a36Sopenharmony_ci      - const: stop-ack
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  clocks:
5662306a36Sopenharmony_ci    items:
5762306a36Sopenharmony_ci      - description: Configuration interface (AXI) clock
5862306a36Sopenharmony_ci      - description: Configuration bus (AHB) clock
5962306a36Sopenharmony_ci      - description: Boot ROM (AHB) clock
6062306a36Sopenharmony_ci      - description: XO proxy clock (control handed over after startup)
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  clock-names:
6362306a36Sopenharmony_ci    items:
6462306a36Sopenharmony_ci      - const: iface
6562306a36Sopenharmony_ci      - const: bus
6662306a36Sopenharmony_ci      - const: mem
6762306a36Sopenharmony_ci      - const: xo
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci  power-domains:
7062306a36Sopenharmony_ci    items:
7162306a36Sopenharmony_ci      - description: CX proxy power domain (control handed over after startup)
7262306a36Sopenharmony_ci      - description: MX proxy power domain (control handed over after startup)
7362306a36Sopenharmony_ci      - description: MSS proxy power domain (control handed over after startup)
7462306a36Sopenharmony_ci                     (only valid for qcom,msm8953-mss-pil)
7562306a36Sopenharmony_ci    minItems: 2
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci  power-domain-names:
7862306a36Sopenharmony_ci    items:
7962306a36Sopenharmony_ci      - const: cx
8062306a36Sopenharmony_ci      - const: mx
8162306a36Sopenharmony_ci      - const: mss # only valid for qcom,msm8953-mss-pil
8262306a36Sopenharmony_ci    minItems: 2
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci  pll-supply:
8562306a36Sopenharmony_ci    description: PLL proxy supply (control handed over after startup)
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci  mss-supply:
8862306a36Sopenharmony_ci    description: MSS power domain supply (only valid for qcom,msm8974-mss-pil)
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci  resets:
9162306a36Sopenharmony_ci    items:
9262306a36Sopenharmony_ci      - description: MSS restart control
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci  reset-names:
9562306a36Sopenharmony_ci    items:
9662306a36Sopenharmony_ci      - const: mss_restart
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci  qcom,smem-states:
9962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
10062306a36Sopenharmony_ci    description: States used by the AP to signal the Hexagon core
10162306a36Sopenharmony_ci    items:
10262306a36Sopenharmony_ci      - description: Stop modem
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci  qcom,smem-state-names:
10562306a36Sopenharmony_ci    description: Names of the states used by the AP to signal the Hexagon core
10662306a36Sopenharmony_ci    items:
10762306a36Sopenharmony_ci      - const: stop
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci  qcom,halt-regs:
11062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
11162306a36Sopenharmony_ci    description:
11262306a36Sopenharmony_ci      Halt registers are used to halt transactions of various sub-components
11362306a36Sopenharmony_ci      within MSS.
11462306a36Sopenharmony_ci    items:
11562306a36Sopenharmony_ci      - items:
11662306a36Sopenharmony_ci          - description: phandle to TCSR syscon region
11762306a36Sopenharmony_ci          - description: offset to the Q6 halt register
11862306a36Sopenharmony_ci          - description: offset to the modem halt register
11962306a36Sopenharmony_ci          - description: offset to the nc halt register
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci  memory-region:
12262306a36Sopenharmony_ci    items:
12362306a36Sopenharmony_ci      - description: MBA reserved region
12462306a36Sopenharmony_ci      - description: MPSS reserved region
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci  firmware-name:
12762306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string-array
12862306a36Sopenharmony_ci    items:
12962306a36Sopenharmony_ci      - description: Name of MBA firmware
13062306a36Sopenharmony_ci      - description: Name of modem firmware
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci  bam-dmux:
13362306a36Sopenharmony_ci    $ref: /schemas/net/qcom,bam-dmux.yaml#
13462306a36Sopenharmony_ci    description:
13562306a36Sopenharmony_ci      Qualcomm BAM Data Multiplexer (provides network interface to the modem)
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci  smd-edge:
13862306a36Sopenharmony_ci    $ref: qcom,smd-edge.yaml#
13962306a36Sopenharmony_ci    description:
14062306a36Sopenharmony_ci      Qualcomm SMD subnode which represents communication edge, channels
14162306a36Sopenharmony_ci      and devices related to the DSP.
14262306a36Sopenharmony_ci    properties:
14362306a36Sopenharmony_ci      label:
14462306a36Sopenharmony_ci        enum:
14562306a36Sopenharmony_ci          - modem
14662306a36Sopenharmony_ci          - hexagon
14762306a36Sopenharmony_ci    unevaluatedProperties: false
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci  # Deprecated properties
15062306a36Sopenharmony_ci  cx-supply:
15162306a36Sopenharmony_ci    description: CX power domain regulator supply (prefer using power-domains)
15262306a36Sopenharmony_ci    deprecated: true
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci  mx-supply:
15562306a36Sopenharmony_ci    description: MX power domain regulator supply (prefer using power-domains)
15662306a36Sopenharmony_ci    deprecated: true
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci  mba:
15962306a36Sopenharmony_ci    type: object
16062306a36Sopenharmony_ci    additionalProperties: false
16162306a36Sopenharmony_ci    description:
16262306a36Sopenharmony_ci      MBA reserved region (prefer using memory-region with two items)
16362306a36Sopenharmony_ci    properties:
16462306a36Sopenharmony_ci      memory-region: true
16562306a36Sopenharmony_ci    required:
16662306a36Sopenharmony_ci      - memory-region
16762306a36Sopenharmony_ci    deprecated: true
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci  mpss:
17062306a36Sopenharmony_ci    type: object
17162306a36Sopenharmony_ci    additionalProperties: false
17262306a36Sopenharmony_ci    description:
17362306a36Sopenharmony_ci      MPSS reserved region (prefer using memory-region with two items)
17462306a36Sopenharmony_ci    properties:
17562306a36Sopenharmony_ci      memory-region: true
17662306a36Sopenharmony_ci    required:
17762306a36Sopenharmony_ci      - memory-region
17862306a36Sopenharmony_ci    deprecated: true
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_cirequired:
18162306a36Sopenharmony_ci  - compatible
18262306a36Sopenharmony_ci  - reg
18362306a36Sopenharmony_ci  - reg-names
18462306a36Sopenharmony_ci  - interrupts
18562306a36Sopenharmony_ci  - interrupt-names
18662306a36Sopenharmony_ci  - clocks
18762306a36Sopenharmony_ci  - clock-names
18862306a36Sopenharmony_ci  - pll-supply
18962306a36Sopenharmony_ci  - resets
19062306a36Sopenharmony_ci  - reset-names
19162306a36Sopenharmony_ci  - qcom,halt-regs
19262306a36Sopenharmony_ci  - qcom,smem-states
19362306a36Sopenharmony_ci  - qcom,smem-state-names
19462306a36Sopenharmony_ci  - smd-edge
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ciallOf:
19762306a36Sopenharmony_ci  - if:
19862306a36Sopenharmony_ci      properties:
19962306a36Sopenharmony_ci        compatible:
20062306a36Sopenharmony_ci          const: qcom,msm8953-mss-pil
20162306a36Sopenharmony_ci    then:
20262306a36Sopenharmony_ci      properties:
20362306a36Sopenharmony_ci        power-domains:
20462306a36Sopenharmony_ci          minItems: 3
20562306a36Sopenharmony_ci        power-domain-names:
20662306a36Sopenharmony_ci          minItems: 3
20762306a36Sopenharmony_ci      required:
20862306a36Sopenharmony_ci        - power-domains
20962306a36Sopenharmony_ci        - power-domain-names
21062306a36Sopenharmony_ci    else:
21162306a36Sopenharmony_ci      properties:
21262306a36Sopenharmony_ci        power-domains:
21362306a36Sopenharmony_ci          maxItems: 2
21462306a36Sopenharmony_ci        power-domain-names:
21562306a36Sopenharmony_ci          maxItems: 2
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci  - if:
21862306a36Sopenharmony_ci      properties:
21962306a36Sopenharmony_ci        compatible:
22062306a36Sopenharmony_ci          const: qcom,msm8974-mss-pil
22162306a36Sopenharmony_ci    then:
22262306a36Sopenharmony_ci      required:
22362306a36Sopenharmony_ci        - mss-supply
22462306a36Sopenharmony_ci    else:
22562306a36Sopenharmony_ci      properties:
22662306a36Sopenharmony_ci        mss-supply: false
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ci  # Fallbacks for deprecated properties
22962306a36Sopenharmony_ci  - oneOf:
23062306a36Sopenharmony_ci      - required:
23162306a36Sopenharmony_ci          - memory-region
23262306a36Sopenharmony_ci      - required:
23362306a36Sopenharmony_ci          - mba
23462306a36Sopenharmony_ci          - mpss
23562306a36Sopenharmony_ci  - oneOf:
23662306a36Sopenharmony_ci      - required:
23762306a36Sopenharmony_ci          - power-domains
23862306a36Sopenharmony_ci          - power-domain-names
23962306a36Sopenharmony_ci      - required:
24062306a36Sopenharmony_ci          - cx-supply
24162306a36Sopenharmony_ci          - mx-supply
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ciadditionalProperties: false
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ciexamples:
24662306a36Sopenharmony_ci  - |
24762306a36Sopenharmony_ci    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
24862306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
24962306a36Sopenharmony_ci    #include <dt-bindings/power/qcom-rpmpd.h>
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ci    remoteproc_mpss: remoteproc@4080000 {
25262306a36Sopenharmony_ci        compatible = "qcom,msm8916-mss-pil";
25362306a36Sopenharmony_ci        reg = <0x04080000 0x100>, <0x04020000 0x40>;
25462306a36Sopenharmony_ci        reg-names = "qdsp6", "rmb";
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci        interrupts-extended = <&intc GIC_SPI 24 IRQ_TYPE_EDGE_RISING>,
25762306a36Sopenharmony_ci                              <&hexagon_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
25862306a36Sopenharmony_ci                              <&hexagon_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
25962306a36Sopenharmony_ci                              <&hexagon_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
26062306a36Sopenharmony_ci                              <&hexagon_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
26162306a36Sopenharmony_ci        interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci        qcom,smem-states = <&hexagon_smp2p_out 0>;
26462306a36Sopenharmony_ci        qcom,smem-state-names = "stop";
26562306a36Sopenharmony_ci        qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_ci        clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
26862306a36Sopenharmony_ci                 <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
26962306a36Sopenharmony_ci                 <&gcc GCC_BOOT_ROM_AHB_CLK>,
27062306a36Sopenharmony_ci                 <&xo_board>;
27162306a36Sopenharmony_ci        clock-names = "iface", "bus", "mem", "xo";
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci        power-domains = <&rpmpd MSM8916_VDDCX>, <&rpmpd MSM8916_VDDMX>;
27462306a36Sopenharmony_ci        power-domain-names = "cx", "mx";
27562306a36Sopenharmony_ci        pll-supply = <&pm8916_l7>;
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci        resets = <&scm 0>;
27862306a36Sopenharmony_ci        reset-names = "mss_restart";
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci        memory-region = <&mba_mem>, <&mpss_mem>;
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ci        smd-edge {
28362306a36Sopenharmony_ci            interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
28462306a36Sopenharmony_ci
28562306a36Sopenharmony_ci            qcom,smd-edge = <0>;
28662306a36Sopenharmony_ci            qcom,ipc = <&apcs 8 12>;
28762306a36Sopenharmony_ci            qcom,remote-pid = <1>;
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ci            label = "hexagon";
29062306a36Sopenharmony_ci        };
29162306a36Sopenharmony_ci    };
292