# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/remoteproc/qcom,msm8916-mss-pil.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm MSM8916 MSS Peripheral Image Loader (and similar) maintainers: - Stephan Gerhold <stephan@gerhold.net> description: This document describes the hardware for a component that loads and boots firmware on the Qualcomm MSM8916 Modem Hexagon Core (and similar). properties: compatible: oneOf: - enum: - qcom,msm8909-mss-pil - qcom,msm8916-mss-pil - qcom,msm8953-mss-pil - qcom,msm8974-mss-pil - const: qcom,q6v5-pil description: Deprecated, prefer using qcom,msm8916-mss-pil deprecated: true reg: items: - description: MSS QDSP6 registers - description: RMB registers reg-names: items: - const: qdsp6 - const: rmb interrupts: items: - description: Watchdog interrupt - description: Fatal interrupt - description: Ready interrupt - description: Handover interrupt - description: Stop acknowledge interrupt interrupt-names: items: - const: wdog - const: fatal - const: ready - const: handover - const: stop-ack clocks: items: - description: Configuration interface (AXI) clock - description: Configuration bus (AHB) clock - description: Boot ROM (AHB) clock - description: XO proxy clock (control handed over after startup) clock-names: items: - const: iface - const: bus - const: mem - const: xo power-domains: items: - description: CX proxy power domain (control handed over after startup) - description: MX proxy power domain (control handed over after startup) - description: MSS proxy power domain (control handed over after startup) (only valid for qcom,msm8953-mss-pil) minItems: 2 power-domain-names: items: - const: cx - const: mx - const: mss # only valid for qcom,msm8953-mss-pil minItems: 2 pll-supply: description: PLL proxy supply (control handed over after startup) mss-supply: description: MSS power domain supply (only valid for qcom,msm8974-mss-pil) resets: items: - description: MSS restart control reset-names: items: - const: mss_restart qcom,smem-states: $ref: /schemas/types.yaml#/definitions/phandle-array description: States used by the AP to signal the Hexagon core items: - description: Stop modem qcom,smem-state-names: description: Names of the states used by the AP to signal the Hexagon core items: - const: stop qcom,halt-regs: $ref: /schemas/types.yaml#/definitions/phandle-array description: Halt registers are used to halt transactions of various sub-components within MSS. items: - items: - description: phandle to TCSR syscon region - description: offset to the Q6 halt register - description: offset to the modem halt register - description: offset to the nc halt register memory-region: items: - description: MBA reserved region - description: MPSS reserved region firmware-name: $ref: /schemas/types.yaml#/definitions/string-array items: - description: Name of MBA firmware - description: Name of modem firmware bam-dmux: $ref: /schemas/net/qcom,bam-dmux.yaml# description: Qualcomm BAM Data Multiplexer (provides network interface to the modem) smd-edge: $ref: qcom,smd-edge.yaml# description: Qualcomm SMD subnode which represents communication edge, channels and devices related to the DSP. properties: label: enum: - modem - hexagon unevaluatedProperties: false # Deprecated properties cx-supply: description: CX power domain regulator supply (prefer using power-domains) deprecated: true mx-supply: description: MX power domain regulator supply (prefer using power-domains) deprecated: true mba: type: object additionalProperties: false description: MBA reserved region (prefer using memory-region with two items) properties: memory-region: true required: - memory-region deprecated: true mpss: type: object additionalProperties: false description: MPSS reserved region (prefer using memory-region with two items) properties: memory-region: true required: - memory-region deprecated: true required: - compatible - reg - reg-names - interrupts - interrupt-names - clocks - clock-names - pll-supply - resets - reset-names - qcom,halt-regs - qcom,smem-states - qcom,smem-state-names - smd-edge allOf: - if: properties: compatible: const: qcom,msm8953-mss-pil then: properties: power-domains: minItems: 3 power-domain-names: minItems: 3 required: - power-domains - power-domain-names else: properties: power-domains: maxItems: 2 power-domain-names: maxItems: 2 - if: properties: compatible: const: qcom,msm8974-mss-pil then: required: - mss-supply else: properties: mss-supply: false # Fallbacks for deprecated properties - oneOf: - required: - memory-region - required: - mba - mpss - oneOf: - required: - power-domains - power-domain-names - required: - cx-supply - mx-supply additionalProperties: false examples: - | #include <dt-bindings/clock/qcom,gcc-msm8916.h> #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/power/qcom-rpmpd.h> remoteproc_mpss: remoteproc@4080000 { compatible = "qcom,msm8916-mss-pil"; reg = <0x04080000 0x100>, <0x04020000 0x40>; reg-names = "qdsp6", "rmb"; interrupts-extended = <&intc GIC_SPI 24 IRQ_TYPE_EDGE_RISING>, <&hexagon_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, <&hexagon_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, <&hexagon_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, <&hexagon_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack"; qcom,smem-states = <&hexagon_smp2p_out 0>; qcom,smem-state-names = "stop"; qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>; clocks = <&gcc GCC_MSS_CFG_AHB_CLK>, <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>, <&gcc GCC_BOOT_ROM_AHB_CLK>, <&xo_board>; clock-names = "iface", "bus", "mem", "xo"; power-domains = <&rpmpd MSM8916_VDDCX>, <&rpmpd MSM8916_VDDMX>; power-domain-names = "cx", "mx"; pll-supply = <&pm8916_l7>; resets = <&scm 0>; reset-names = "mss_restart"; memory-region = <&mba_mem>, <&mpss_mem>; smd-edge { interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>; qcom,smd-edge = <0>; qcom,ipc = <&apcs 8 12>; qcom,remote-pid = <1>; label = "hexagon"; }; };