Qualcomm WCNSS Peripheral Image Loader

This document defines the binding for a component that loads and boots firmware
on the Qualcomm WCNSS core.

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be one of:
		    "qcom,riva-pil",
		    "qcom,pronto-v1-pil",
		    "qcom,pronto-v2-pil"

- reg:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: must specify the base address and size of the CCU, DXE and
		    PMU register blocks

- reg-names:
	Usage: required
	Value type: <stringlist>
	Definition: must be "ccu", "dxe", "pmu"

- interrupts-extended:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: must list the watchdog and fatal IRQs and may specify the
		    ready, handover and stop-ack IRQs

- interrupt-names:
	Usage: required
	Value type: <stringlist>
	Definition: should be "wdog", "fatal", optionally followed by "ready",
		    "handover", "stop-ack"

- vddmx-supply: (deprecated for qcom,pronto-v1/2-pil)
- vddcx-supply: (deprecated for qcom,pronto-v1/2-pil)
- vddpx-supply:
	Usage: required
	Value type: <phandle>
	Definition: reference to the regulators to be held on behalf of the
		    booting of the WCNSS core

- power-domains:
	Usage: required (for qcom,pronto-v1/2-pil)
	Value type: <phandle>
	Definition: reference to the power domains to be held on behalf of the
		    booting of the WCNSS core

- power-domain-names:
	Usage: required (for qcom,pronto-v1/2-pil)
	Value type: <stringlist>
	Definition: must be "cx", "mx"

- qcom,smem-states:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: reference to the SMEM state used to indicate to WCNSS that
		    it should shut down

- qcom,smem-state-names:
	Usage: optional
	Value type: <stringlist>
	Definition: should be "stop"

- memory-region:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: reference to reserved-memory node for the remote processor
		    see ../reserved-memory/reserved-memory.txt

= SUBNODES
A required subnode of the WCNSS PIL is used to describe the attached rf module
and its resource dependencies. It is described by the following properties:

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be one of:
		    "qcom,wcn3620",
		    "qcom,wcn3660",
		    "qcom,wcn3660b",
		    "qcom,wcn3680"

- clocks:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify the xo clock and optionally the rf clock

- clock-names:
	Usage: required
	Value type: <stringlist>
	Definition: should be "xo", optionally followed by "rf"

- vddxo-supply:
- vddrfa-supply:
- vddpa-supply:
- vdddig-supply:
	Usage: required
	Value type: <phandle>
	Definition: reference to the regulators to be held on behalf of the
		    booting of the WCNSS core


The wcnss node can also have an subnode named "smd-edge" that describes the SMD
edge, channels and devices related to the WCNSS.
See ../soc/qcom/qcom,smd.txt for details on how to describe the SMD edge.

= EXAMPLE
The following example describes the resources needed to boot control the WCNSS,
with attached WCN3680, as it is commonly found on MSM8974 boards.

pronto@fb204000 {
	compatible = "qcom,pronto-v2-pil";
	reg = <0xfb204000 0x2000>, <0xfb202000 0x1000>, <0xfb21b000 0x3000>;
	reg-names = "ccu", "dxe", "pmu";

	interrupts-extended = <&intc 0 149 1>,
			      <&wcnss_smp2p_slave 0 0>,
			      <&wcnss_smp2p_slave 1 0>,
			      <&wcnss_smp2p_slave 2 0>,
			      <&wcnss_smp2p_slave 3 0>;
	interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";

	power-domains = <&rpmpd MSM8974_VDDCX>, <&rpmpd MSM8974_VDDMX>;
	power-domain-names = "cx", "mx";

	vddpx-supply = <&pm8941_s3>;

	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,wcn3680";

		clocks = <&rpmcc RPM_CXO_CLK_SRC>, <&rpmcc RPM_CXO_A2>;
		clock-names = "xo", "rf";

		vddxo-supply = <&pm8941_l6>;
		vddrfa-supply = <&pm8941_l11>;
		vddpa-supply = <&pm8941_l19>;
		vdddig-supply = <&pm8941_s3>;
	};

	smd-edge {
		interrupts = <0 142 1>;

		qcom,ipc = <&apcs 8 17>;
		qcom,smd-edge = <6>;
		qcom,remote-pid = <4>;

		label = "pronto";

		wcnss {
			compatible = "qcom,wcnss";
			qcom,smd-channels = "WCNSS_CTRL";

			qcom,mmio = <&pronto>;

			bt {
				compatible = "qcom,wcnss-bt";
			};
		};
	};
};
