18c2ecf20Sopenharmony_ciQualcomm Camera Subsystem
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ci* Properties
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci- compatible:
68c2ecf20Sopenharmony_ci	Usage: required
78c2ecf20Sopenharmony_ci	Value type: <stringlist>
88c2ecf20Sopenharmony_ci	Definition: Should contain one of:
98c2ecf20Sopenharmony_ci		- "qcom,msm8916-camss"
108c2ecf20Sopenharmony_ci		- "qcom,msm8996-camss"
118c2ecf20Sopenharmony_ci- reg:
128c2ecf20Sopenharmony_ci	Usage: required
138c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
148c2ecf20Sopenharmony_ci	Definition: Register ranges as listed in the reg-names property.
158c2ecf20Sopenharmony_ci- reg-names:
168c2ecf20Sopenharmony_ci	Usage: required
178c2ecf20Sopenharmony_ci	Value type: <stringlist>
188c2ecf20Sopenharmony_ci	Definition: Should contain the following entries:
198c2ecf20Sopenharmony_ci		- "csiphy0"
208c2ecf20Sopenharmony_ci		- "csiphy0_clk_mux"
218c2ecf20Sopenharmony_ci		- "csiphy1"
228c2ecf20Sopenharmony_ci		- "csiphy1_clk_mux"
238c2ecf20Sopenharmony_ci		- "csiphy2"		(8996 only)
248c2ecf20Sopenharmony_ci		- "csiphy2_clk_mux"	(8996 only)
258c2ecf20Sopenharmony_ci		- "csid0"
268c2ecf20Sopenharmony_ci		- "csid1"
278c2ecf20Sopenharmony_ci		- "csid2"		(8996 only)
288c2ecf20Sopenharmony_ci		- "csid3"		(8996 only)
298c2ecf20Sopenharmony_ci		- "ispif"
308c2ecf20Sopenharmony_ci		- "csi_clk_mux"
318c2ecf20Sopenharmony_ci		- "vfe0"
328c2ecf20Sopenharmony_ci		- "vfe1"		(8996 only)
338c2ecf20Sopenharmony_ci- interrupts:
348c2ecf20Sopenharmony_ci	Usage: required
358c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
368c2ecf20Sopenharmony_ci	Definition: Interrupts as listed in the interrupt-names property.
378c2ecf20Sopenharmony_ci- interrupt-names:
388c2ecf20Sopenharmony_ci	Usage: required
398c2ecf20Sopenharmony_ci	Value type: <stringlist>
408c2ecf20Sopenharmony_ci	Definition: Should contain the following entries:
418c2ecf20Sopenharmony_ci		- "csiphy0"
428c2ecf20Sopenharmony_ci		- "csiphy1"
438c2ecf20Sopenharmony_ci		- "csiphy2"		(8996 only)
448c2ecf20Sopenharmony_ci		- "csid0"
458c2ecf20Sopenharmony_ci		- "csid1"
468c2ecf20Sopenharmony_ci		- "csid2"		(8996 only)
478c2ecf20Sopenharmony_ci		- "csid3"		(8996 only)
488c2ecf20Sopenharmony_ci		- "ispif"
498c2ecf20Sopenharmony_ci		- "vfe0"
508c2ecf20Sopenharmony_ci		- "vfe1"		(8996 only)
518c2ecf20Sopenharmony_ci- power-domains:
528c2ecf20Sopenharmony_ci	Usage: required
538c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
548c2ecf20Sopenharmony_ci	Definition: A phandle and power domain specifier pairs to the
558c2ecf20Sopenharmony_ci		    power domain which is responsible for collapsing
568c2ecf20Sopenharmony_ci		    and restoring power to the peripheral.
578c2ecf20Sopenharmony_ci- clocks:
588c2ecf20Sopenharmony_ci	Usage: required
598c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
608c2ecf20Sopenharmony_ci	Definition: A list of phandle and clock specifier pairs as listed
618c2ecf20Sopenharmony_ci		    in clock-names property.
628c2ecf20Sopenharmony_ci- clock-names:
638c2ecf20Sopenharmony_ci	Usage: required
648c2ecf20Sopenharmony_ci	Value type: <stringlist>
658c2ecf20Sopenharmony_ci	Definition: Should contain the following entries:
668c2ecf20Sopenharmony_ci		- "top_ahb"
678c2ecf20Sopenharmony_ci		- "ispif_ahb"
688c2ecf20Sopenharmony_ci		- "csiphy0_timer"
698c2ecf20Sopenharmony_ci		- "csiphy1_timer"
708c2ecf20Sopenharmony_ci		- "csiphy2_timer"	(8996 only)
718c2ecf20Sopenharmony_ci		- "csi0_ahb"
728c2ecf20Sopenharmony_ci		- "csi0"
738c2ecf20Sopenharmony_ci		- "csi0_phy"
748c2ecf20Sopenharmony_ci		- "csi0_pix"
758c2ecf20Sopenharmony_ci		- "csi0_rdi"
768c2ecf20Sopenharmony_ci		- "csi1_ahb"
778c2ecf20Sopenharmony_ci		- "csi1"
788c2ecf20Sopenharmony_ci		- "csi1_phy"
798c2ecf20Sopenharmony_ci		- "csi1_pix"
808c2ecf20Sopenharmony_ci		- "csi1_rdi"
818c2ecf20Sopenharmony_ci		- "csi2_ahb"		(8996 only)
828c2ecf20Sopenharmony_ci		- "csi2"		(8996 only)
838c2ecf20Sopenharmony_ci		- "csi2_phy"		(8996 only)
848c2ecf20Sopenharmony_ci		- "csi2_pix"		(8996 only)
858c2ecf20Sopenharmony_ci		- "csi2_rdi"		(8996 only)
868c2ecf20Sopenharmony_ci		- "csi3_ahb"		(8996 only)
878c2ecf20Sopenharmony_ci		- "csi3"		(8996 only)
888c2ecf20Sopenharmony_ci		- "csi3_phy"		(8996 only)
898c2ecf20Sopenharmony_ci		- "csi3_pix"		(8996 only)
908c2ecf20Sopenharmony_ci		- "csi3_rdi"		(8996 only)
918c2ecf20Sopenharmony_ci		- "ahb"
928c2ecf20Sopenharmony_ci		- "vfe0"
938c2ecf20Sopenharmony_ci		- "csi_vfe0"
948c2ecf20Sopenharmony_ci		- "vfe0_ahb",		(8996 only)
958c2ecf20Sopenharmony_ci		- "vfe0_stream",	(8996 only)
968c2ecf20Sopenharmony_ci		- "vfe1",		(8996 only)
978c2ecf20Sopenharmony_ci		- "csi_vfe1",		(8996 only)
988c2ecf20Sopenharmony_ci		- "vfe1_ahb",		(8996 only)
998c2ecf20Sopenharmony_ci		- "vfe1_stream",	(8996 only)
1008c2ecf20Sopenharmony_ci		- "vfe_ahb"
1018c2ecf20Sopenharmony_ci		- "vfe_axi"
1028c2ecf20Sopenharmony_ci- vdda-supply:
1038c2ecf20Sopenharmony_ci	Usage: required
1048c2ecf20Sopenharmony_ci	Value type: <phandle>
1058c2ecf20Sopenharmony_ci	Definition: A phandle to voltage supply for CSI2.
1068c2ecf20Sopenharmony_ci- iommus:
1078c2ecf20Sopenharmony_ci	Usage: required
1088c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
1098c2ecf20Sopenharmony_ci	Definition: A list of phandle and IOMMU specifier pairs.
1108c2ecf20Sopenharmony_ci
1118c2ecf20Sopenharmony_ci* Nodes
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci- ports:
1148c2ecf20Sopenharmony_ci	Usage: required
1158c2ecf20Sopenharmony_ci	Definition: As described in video-interfaces.txt in same directory.
1168c2ecf20Sopenharmony_ci	Properties:
1178c2ecf20Sopenharmony_ci		- reg:
1188c2ecf20Sopenharmony_ci			Usage: required
1198c2ecf20Sopenharmony_ci			Value type: <u32>
1208c2ecf20Sopenharmony_ci			Definition: Selects CSI2 PHY interface - PHY0, PHY1
1218c2ecf20Sopenharmony_ci				    or PHY2 (8996 only)
1228c2ecf20Sopenharmony_ci	Endpoint node properties:
1238c2ecf20Sopenharmony_ci		- clock-lanes:
1248c2ecf20Sopenharmony_ci			Usage: required
1258c2ecf20Sopenharmony_ci			Value type: <u32>
1268c2ecf20Sopenharmony_ci			Definition: The physical clock lane index. On 8916
1278c2ecf20Sopenharmony_ci				    the value must always be <1> as the physical
1288c2ecf20Sopenharmony_ci				    clock lane is lane 1. On 8996 the value must
1298c2ecf20Sopenharmony_ci				    always be <7> as the hardware supports D-PHY
1308c2ecf20Sopenharmony_ci				    and C-PHY, indexes are in a common set and
1318c2ecf20Sopenharmony_ci				    D-PHY physical clock lane is labeled as 7.
1328c2ecf20Sopenharmony_ci		- data-lanes:
1338c2ecf20Sopenharmony_ci			Usage: required
1348c2ecf20Sopenharmony_ci			Value type: <prop-encoded-array>
1358c2ecf20Sopenharmony_ci			Definition: An array of physical data lanes indexes.
1368c2ecf20Sopenharmony_ci				    Position of an entry determines the logical
1378c2ecf20Sopenharmony_ci				    lane number, while the value of an entry
1388c2ecf20Sopenharmony_ci				    indicates physical lane index. Lane swapping
1398c2ecf20Sopenharmony_ci				    is supported. Physical lane indexes for
1408c2ecf20Sopenharmony_ci				    8916: 0, 2, 3, 4; for 8996: 0, 1, 2, 3.
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ci* An Example
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci	camss: camss@1b00000 {
1458c2ecf20Sopenharmony_ci		compatible = "qcom,msm8916-camss";
1468c2ecf20Sopenharmony_ci		reg = <0x1b0ac00 0x200>,
1478c2ecf20Sopenharmony_ci			<0x1b00030 0x4>,
1488c2ecf20Sopenharmony_ci			<0x1b0b000 0x200>,
1498c2ecf20Sopenharmony_ci			<0x1b00038 0x4>,
1508c2ecf20Sopenharmony_ci			<0x1b08000 0x100>,
1518c2ecf20Sopenharmony_ci			<0x1b08400 0x100>,
1528c2ecf20Sopenharmony_ci			<0x1b0a000 0x500>,
1538c2ecf20Sopenharmony_ci			<0x1b00020 0x10>,
1548c2ecf20Sopenharmony_ci			<0x1b10000 0x1000>;
1558c2ecf20Sopenharmony_ci		reg-names = "csiphy0",
1568c2ecf20Sopenharmony_ci			"csiphy0_clk_mux",
1578c2ecf20Sopenharmony_ci			"csiphy1",
1588c2ecf20Sopenharmony_ci			"csiphy1_clk_mux",
1598c2ecf20Sopenharmony_ci			"csid0",
1608c2ecf20Sopenharmony_ci			"csid1",
1618c2ecf20Sopenharmony_ci			"ispif",
1628c2ecf20Sopenharmony_ci			"csi_clk_mux",
1638c2ecf20Sopenharmony_ci			"vfe0";
1648c2ecf20Sopenharmony_ci		interrupts = <GIC_SPI 78 0>,
1658c2ecf20Sopenharmony_ci			<GIC_SPI 79 0>,
1668c2ecf20Sopenharmony_ci			<GIC_SPI 51 0>,
1678c2ecf20Sopenharmony_ci			<GIC_SPI 52 0>,
1688c2ecf20Sopenharmony_ci			<GIC_SPI 55 0>,
1698c2ecf20Sopenharmony_ci			<GIC_SPI 57 0>;
1708c2ecf20Sopenharmony_ci		interrupt-names = "csiphy0",
1718c2ecf20Sopenharmony_ci			"csiphy1",
1728c2ecf20Sopenharmony_ci			"csid0",
1738c2ecf20Sopenharmony_ci			"csid1",
1748c2ecf20Sopenharmony_ci			"ispif",
1758c2ecf20Sopenharmony_ci			"vfe0";
1768c2ecf20Sopenharmony_ci		power-domains = <&gcc VFE_GDSC>;
1778c2ecf20Sopenharmony_ci		clocks = <&gcc GCC_CAMSS_TOP_AHB_CLK>,
1788c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_ISPIF_AHB_CLK>,
1798c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI0PHYTIMER_CLK>,
1808c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI1PHYTIMER_CLK>,
1818c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI0_AHB_CLK>,
1828c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI0_CLK>,
1838c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI0PHY_CLK>,
1848c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI0PIX_CLK>,
1858c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI0RDI_CLK>,
1868c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI1_AHB_CLK>,
1878c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI1_CLK>,
1888c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI1PHY_CLK>,
1898c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI1PIX_CLK>,
1908c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI1RDI_CLK>,
1918c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_AHB_CLK>,
1928c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_VFE0_CLK>,
1938c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_CSI_VFE0_CLK>,
1948c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_VFE_AHB_CLK>,
1958c2ecf20Sopenharmony_ci			<&gcc GCC_CAMSS_VFE_AXI_CLK>;
1968c2ecf20Sopenharmony_ci		clock-names = "top_ahb",
1978c2ecf20Sopenharmony_ci			"ispif_ahb",
1988c2ecf20Sopenharmony_ci			"csiphy0_timer",
1998c2ecf20Sopenharmony_ci			"csiphy1_timer",
2008c2ecf20Sopenharmony_ci			"csi0_ahb",
2018c2ecf20Sopenharmony_ci			"csi0",
2028c2ecf20Sopenharmony_ci			"csi0_phy",
2038c2ecf20Sopenharmony_ci			"csi0_pix",
2048c2ecf20Sopenharmony_ci			"csi0_rdi",
2058c2ecf20Sopenharmony_ci			"csi1_ahb",
2068c2ecf20Sopenharmony_ci			"csi1",
2078c2ecf20Sopenharmony_ci			"csi1_phy",
2088c2ecf20Sopenharmony_ci			"csi1_pix",
2098c2ecf20Sopenharmony_ci			"csi1_rdi",
2108c2ecf20Sopenharmony_ci			"ahb",
2118c2ecf20Sopenharmony_ci			"vfe0",
2128c2ecf20Sopenharmony_ci			"csi_vfe0",
2138c2ecf20Sopenharmony_ci			"vfe_ahb",
2148c2ecf20Sopenharmony_ci			"vfe_axi";
2158c2ecf20Sopenharmony_ci		vdda-supply = <&pm8916_l2>;
2168c2ecf20Sopenharmony_ci		iommus = <&apps_iommu 3>;
2178c2ecf20Sopenharmony_ci		ports {
2188c2ecf20Sopenharmony_ci			#address-cells = <1>;
2198c2ecf20Sopenharmony_ci			#size-cells = <0>;
2208c2ecf20Sopenharmony_ci			port@0 {
2218c2ecf20Sopenharmony_ci				reg = <0>;
2228c2ecf20Sopenharmony_ci				csiphy0_ep: endpoint {
2238c2ecf20Sopenharmony_ci					clock-lanes = <1>;
2248c2ecf20Sopenharmony_ci					data-lanes = <0 2>;
2258c2ecf20Sopenharmony_ci					remote-endpoint = <&ov5645_ep>;
2268c2ecf20Sopenharmony_ci				};
2278c2ecf20Sopenharmony_ci			};
2288c2ecf20Sopenharmony_ci		};
2298c2ecf20Sopenharmony_ci	};
230