Qualcomm Camera Subsystem

* Properties

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: Should contain one of:
		- "qcom,msm8916-camss"
		- "qcom,msm8996-camss"
- reg:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: Register ranges as listed in the reg-names property.
- reg-names:
	Usage: required
	Value type: <stringlist>
	Definition: Should contain the following entries:
		- "csiphy0"
		- "csiphy0_clk_mux"
		- "csiphy1"
		- "csiphy1_clk_mux"
		- "csiphy2"		(8996 only)
		- "csiphy2_clk_mux"	(8996 only)
		- "csid0"
		- "csid1"
		- "csid2"		(8996 only)
		- "csid3"		(8996 only)
		- "ispif"
		- "csi_clk_mux"
		- "vfe0"
		- "vfe1"		(8996 only)
- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: Interrupts as listed in the interrupt-names property.
- interrupt-names:
	Usage: required
	Value type: <stringlist>
	Definition: Should contain the following entries:
		- "csiphy0"
		- "csiphy1"
		- "csiphy2"		(8996 only)
		- "csid0"
		- "csid1"
		- "csid2"		(8996 only)
		- "csid3"		(8996 only)
		- "ispif"
		- "vfe0"
		- "vfe1"		(8996 only)
- power-domains:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A phandle and power domain specifier pairs to the
		    power domain which is responsible for collapsing
		    and restoring power to the peripheral.
- clocks:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A list of phandle and clock specifier pairs as listed
		    in clock-names property.
- clock-names:
	Usage: required
	Value type: <stringlist>
	Definition: Should contain the following entries:
		- "top_ahb"
		- "ispif_ahb"
		- "csiphy0_timer"
		- "csiphy1_timer"
		- "csiphy2_timer"	(8996 only)
		- "csi0_ahb"
		- "csi0"
		- "csi0_phy"
		- "csi0_pix"
		- "csi0_rdi"
		- "csi1_ahb"
		- "csi1"
		- "csi1_phy"
		- "csi1_pix"
		- "csi1_rdi"
		- "csi2_ahb"		(8996 only)
		- "csi2"		(8996 only)
		- "csi2_phy"		(8996 only)
		- "csi2_pix"		(8996 only)
		- "csi2_rdi"		(8996 only)
		- "csi3_ahb"		(8996 only)
		- "csi3"		(8996 only)
		- "csi3_phy"		(8996 only)
		- "csi3_pix"		(8996 only)
		- "csi3_rdi"		(8996 only)
		- "ahb"
		- "vfe0"
		- "csi_vfe0"
		- "vfe0_ahb",		(8996 only)
		- "vfe0_stream",	(8996 only)
		- "vfe1",		(8996 only)
		- "csi_vfe1",		(8996 only)
		- "vfe1_ahb",		(8996 only)
		- "vfe1_stream",	(8996 only)
		- "vfe_ahb"
		- "vfe_axi"
- vdda-supply:
	Usage: required
	Value type: <phandle>
	Definition: A phandle to voltage supply for CSI2.
- iommus:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A list of phandle and IOMMU specifier pairs.

* Nodes

- ports:
	Usage: required
	Definition: As described in video-interfaces.txt in same directory.
	Properties:
		- reg:
			Usage: required
			Value type: <u32>
			Definition: Selects CSI2 PHY interface - PHY0, PHY1
				    or PHY2 (8996 only)
	Endpoint node properties:
		- clock-lanes:
			Usage: required
			Value type: <u32>
			Definition: The physical clock lane index. On 8916
				    the value must always be <1> as the physical
				    clock lane is lane 1. On 8996 the value must
				    always be <7> as the hardware supports D-PHY
				    and C-PHY, indexes are in a common set and
				    D-PHY physical clock lane is labeled as 7.
		- data-lanes:
			Usage: required
			Value type: <prop-encoded-array>
			Definition: An array of physical data lanes indexes.
				    Position of an entry determines the logical
				    lane number, while the value of an entry
				    indicates physical lane index. Lane swapping
				    is supported. Physical lane indexes for
				    8916: 0, 2, 3, 4; for 8996: 0, 1, 2, 3.

* An Example

	camss: camss@1b00000 {
		compatible = "qcom,msm8916-camss";
		reg = <0x1b0ac00 0x200>,
			<0x1b00030 0x4>,
			<0x1b0b000 0x200>,
			<0x1b00038 0x4>,
			<0x1b08000 0x100>,
			<0x1b08400 0x100>,
			<0x1b0a000 0x500>,
			<0x1b00020 0x10>,
			<0x1b10000 0x1000>;
		reg-names = "csiphy0",
			"csiphy0_clk_mux",
			"csiphy1",
			"csiphy1_clk_mux",
			"csid0",
			"csid1",
			"ispif",
			"csi_clk_mux",
			"vfe0";
		interrupts = <GIC_SPI 78 0>,
			<GIC_SPI 79 0>,
			<GIC_SPI 51 0>,
			<GIC_SPI 52 0>,
			<GIC_SPI 55 0>,
			<GIC_SPI 57 0>;
		interrupt-names = "csiphy0",
			"csiphy1",
			"csid0",
			"csid1",
			"ispif",
			"vfe0";
		power-domains = <&gcc VFE_GDSC>;
		clocks = <&gcc GCC_CAMSS_TOP_AHB_CLK>,
			<&gcc GCC_CAMSS_ISPIF_AHB_CLK>,
			<&gcc GCC_CAMSS_CSI0PHYTIMER_CLK>,
			<&gcc GCC_CAMSS_CSI1PHYTIMER_CLK>,
			<&gcc GCC_CAMSS_CSI0_AHB_CLK>,
			<&gcc GCC_CAMSS_CSI0_CLK>,
			<&gcc GCC_CAMSS_CSI0PHY_CLK>,
			<&gcc GCC_CAMSS_CSI0PIX_CLK>,
			<&gcc GCC_CAMSS_CSI0RDI_CLK>,
			<&gcc GCC_CAMSS_CSI1_AHB_CLK>,
			<&gcc GCC_CAMSS_CSI1_CLK>,
			<&gcc GCC_CAMSS_CSI1PHY_CLK>,
			<&gcc GCC_CAMSS_CSI1PIX_CLK>,
			<&gcc GCC_CAMSS_CSI1RDI_CLK>,
			<&gcc GCC_CAMSS_AHB_CLK>,
			<&gcc GCC_CAMSS_VFE0_CLK>,
			<&gcc GCC_CAMSS_CSI_VFE0_CLK>,
			<&gcc GCC_CAMSS_VFE_AHB_CLK>,
			<&gcc GCC_CAMSS_VFE_AXI_CLK>;
		clock-names = "top_ahb",
			"ispif_ahb",
			"csiphy0_timer",
			"csiphy1_timer",
			"csi0_ahb",
			"csi0",
			"csi0_phy",
			"csi0_pix",
			"csi0_rdi",
			"csi1_ahb",
			"csi1",
			"csi1_phy",
			"csi1_pix",
			"csi1_rdi",
			"ahb",
			"vfe0",
			"csi_vfe0",
			"vfe_ahb",
			"vfe_axi";
		vdda-supply = <&pm8916_l2>;
		iommus = <&apps_iommu 3>;
		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			port@0 {
				reg = <0>;
				csiphy0_ep: endpoint {
					clock-lanes = <1>;
					data-lanes = <0 2>;
					remote-endpoint = <&ov5645_ep>;
				};
			};
		};
	};
