# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/remoteproc/qcom,wcnss-pil.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm WCNSS Peripheral Image Loader maintainers: - Bjorn Andersson <andersson@kernel.org> description: This document defines the binding for a component that loads and boots firmware on the Qualcomm WCNSS core. properties: compatible: description: Append "qcom,pronto" if the device is actually pronto, and not riva oneOf: - items: - enum: - qcom,pronto-v1-pil - qcom,pronto-v2-pil - qcom,pronto-v3-pil - const: qcom,pronto - const: qcom,riva-pil reg: maxItems: 3 description: The base address and size of the CCU, DXE and PMU register blocks reg-names: items: - const: ccu - const: dxe - const: pmu interrupts: minItems: 2 maxItems: 5 interrupt-names: minItems: 2 items: - const: wdog - const: fatal - const: ready - const: handover - const: stop-ack firmware-name: $ref: /schemas/types.yaml#/definitions/string description: Relative firmware image path for the WCNSS core. Defaults to "wcnss.mdt". vddpx-supply: description: PX regulator to be held on behalf of the booting of the WCNSS core vddmx-supply: description: MX regulator to be held on behalf of the booting of the WCNSS core. vddcx-supply: description: CX regulator to be held on behalf of the booting of the WCNSS core. power-domains: maxItems: 2 power-domain-names: items: - const: cx - const: mx qcom,smem-states: $ref: /schemas/types.yaml#/definitions/phandle-array description: States used by the AP to signal the WCNSS core that it should shutdown items: - description: Stop the modem qcom,smem-state-names: description: The names of the state bits used for SMP2P output items: - const: stop memory-region: maxItems: 1 description: reserved-memory for the WCNSS core smd-edge: $ref: /schemas/remoteproc/qcom,smd-edge.yaml# description: Qualcomm Shared Memory subnode which represents communication edge, channels and devices related to the ADSP. iris: type: object description: The iris subnode of the WCNSS PIL is used to describe the attached RF module and its resource dependencies. properties: compatible: enum: - qcom,wcn3620 - qcom,wcn3660 - qcom,wcn3660b - qcom,wcn3680 clocks: minItems: 1 items: - description: XO clock - description: RF clock clock-names: minItems: 1 items: - const: xo - const: rf vddxo-supply: description: Reference to the regulator to be held on behalf of the booting WCNSS core vddrfa-supply: description: Reference to the regulator to be held on behalf of the booting WCNSS core vddpa-supply: description: Reference to the regulator to be held on behalf of the booting WCNSS core vdddig-supply: description: Reference to the regulator to be held on behalf of the booting WCNSS core required: - compatible - clocks - clock-names - vddxo-supply - vddrfa-supply - vddpa-supply - vdddig-supply additionalProperties: false required: - compatible - reg - reg-names - interrupts - interrupt-names - iris - vddpx-supply - memory-region - smd-edge additionalProperties: false allOf: - if: properties: compatible: contains: const: qcom,riva-pil then: required: - vddcx-supply - vddmx-supply - if: properties: compatible: contains: enum: - qcom,pronto-v1-pil - qcom,pronto-v2-pil then: properties: vddmx-supply: deprecated: true description: Deprecated for qcom,pronto-v1/2-pil vddcx-supply: deprecated: true description: Deprecated for qcom,pronto-v1/2-pil oneOf: - required: - power-domains - power-domain-names - required: - vddmx-supply - vddcx-supply - if: properties: compatible: contains: enum: - qcom,pronto-v3-pil then: properties: vddmx-supply: false vddcx-supply: false required: - power-domains - power-domain-names examples: - | #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/clock/qcom,rpmcc.h> #include <dt-bindings/power/qcom-rpmpd.h> pronto@a21b000 { compatible = "qcom,pronto-v2-pil", "qcom,pronto"; reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, <0x0a21b000 0x3000>; reg-names = "ccu", "dxe", "pmu"; interrupts-extended = <&intc GIC_SPI 149 IRQ_TYPE_EDGE_RISING>, <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack"; power-domains = <&rpmpd MSM8916_VDDCX>, <&rpmpd MSM8916_VDDMX>; power-domain-names = "cx", "mx"; vddpx-supply = <&pm8916_l7>; qcom,smem-states = <&wcnss_smp2p_out 0>; qcom,smem-state-names = "stop"; memory-region = <&wcnss_region>; pinctrl-names = "default"; pinctrl-0 = <&wcnss_pin_a>; iris { compatible = "qcom,wcn3620"; vddxo-supply = <&pm8916_l7>; vddrfa-supply = <&pm8916_s3>; vddpa-supply = <&pm8916_l9>; vdddig-supply = <&pm8916_l5>; clocks = <&rpmcc RPM_SMD_RF_CLK2>; clock-names = "xo"; }; smd-edge { interrupts = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; qcom,ipc = <&apcs 8 17>; qcom,smd-edge = <6>; qcom,remote-pid = <4>; label = "pronto"; wcnss_ctrl: wcnss { compatible = "qcom,wcnss"; qcom,smd-channels = "WCNSS_CTRL"; qcom,mmio = <&pronto>; bluetooth { compatible = "qcom,wcnss-bt"; }; wifi { compatible = "qcom,wcnss-wlan"; interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "tx", "rx"; qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>; qcom,smem-state-names = "tx-enable", "tx-rings-empty"; }; }; }; };