18c2ecf20Sopenharmony_ciSamsung S5P/Exynos SoC series MIPI CSIS/DSIM DPHY
28c2ecf20Sopenharmony_ci-------------------------------------------------
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ciRequired properties:
58c2ecf20Sopenharmony_ci- compatible : should be one of the listed compatibles:
68c2ecf20Sopenharmony_ci	- "samsung,s5pv210-mipi-video-phy"
78c2ecf20Sopenharmony_ci	- "samsung,exynos5420-mipi-video-phy"
88c2ecf20Sopenharmony_ci	- "samsung,exynos5433-mipi-video-phy"
98c2ecf20Sopenharmony_ci- #phy-cells : from the generic phy bindings, must be 1;
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ciIn case of s5pv210 and exynos5420 compatible PHYs:
128c2ecf20Sopenharmony_ci- syscon - phandle to the PMU system controller
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ciIn case of exynos5433 compatible PHY:
158c2ecf20Sopenharmony_ci - samsung,pmu-syscon - phandle to the PMU system controller
168c2ecf20Sopenharmony_ci - samsung,disp-sysreg - phandle to the DISP system registers controller
178c2ecf20Sopenharmony_ci - samsung,cam0-sysreg - phandle to the CAM0 system registers controller
188c2ecf20Sopenharmony_ci - samsung,cam1-sysreg - phandle to the CAM1 system registers controller
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciFor "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in
218c2ecf20Sopenharmony_cithe PHY specifier identifies the PHY and its meaning is as follows:
228c2ecf20Sopenharmony_ci  0 - MIPI CSIS 0,
238c2ecf20Sopenharmony_ci  1 - MIPI DSIM 0,
248c2ecf20Sopenharmony_ci  2 - MIPI CSIS 1,
258c2ecf20Sopenharmony_ci  3 - MIPI DSIM 1.
268c2ecf20Sopenharmony_ci"samsung,exynos5420-mipi-video-phy" and "samsung,exynos5433-mipi-video-phy"
278c2ecf20Sopenharmony_cisupports additional fifth PHY:
288c2ecf20Sopenharmony_ci  4 - MIPI CSIS 2.
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ciSamsung Exynos SoC series Display Port PHY
318c2ecf20Sopenharmony_ci-------------------------------------------------
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ciRequired properties:
348c2ecf20Sopenharmony_ci- compatible : should be one of the following supported values:
358c2ecf20Sopenharmony_ci	 - "samsung,exynos5250-dp-video-phy"
368c2ecf20Sopenharmony_ci	 - "samsung,exynos5420-dp-video-phy"
378c2ecf20Sopenharmony_ci- samsung,pmu-syscon: phandle for PMU system controller interface, used to
388c2ecf20Sopenharmony_ci		      control pmu registers for power isolation.
398c2ecf20Sopenharmony_ci- #phy-cells : from the generic PHY bindings, must be 0;
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ciSamsung S5P/Exynos SoC series USB PHY
428c2ecf20Sopenharmony_ci-------------------------------------------------
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciRequired properties:
458c2ecf20Sopenharmony_ci- compatible : should be one of the listed compatibles:
468c2ecf20Sopenharmony_ci	- "samsung,exynos3250-usb2-phy"
478c2ecf20Sopenharmony_ci	- "samsung,exynos4210-usb2-phy"
488c2ecf20Sopenharmony_ci	- "samsung,exynos4x12-usb2-phy"
498c2ecf20Sopenharmony_ci	- "samsung,exynos5250-usb2-phy"
508c2ecf20Sopenharmony_ci	- "samsung,s5pv210-usb2-phy"
518c2ecf20Sopenharmony_ci- reg : a list of registers used by phy driver
528c2ecf20Sopenharmony_ci	- first and obligatory is the location of phy modules registers
538c2ecf20Sopenharmony_ci- samsung,sysreg-phandle - handle to syscon used to control the system registers
548c2ecf20Sopenharmony_ci- samsung,pmureg-phandle - handle to syscon used to control PMU registers
558c2ecf20Sopenharmony_ci- #phy-cells : from the generic phy bindings, must be 1;
568c2ecf20Sopenharmony_ci- clocks and clock-names:
578c2ecf20Sopenharmony_ci	- the "phy" clock is required by the phy module, used as a gate
588c2ecf20Sopenharmony_ci	- the "ref" clock is used to get the rate of the clock provided to the
598c2ecf20Sopenharmony_ci	  PHY module
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ciOptional properties:
628c2ecf20Sopenharmony_ci- vbus-supply: power-supply phandle for vbus power source
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ciThe first phandle argument in the PHY specifier identifies the PHY, its
658c2ecf20Sopenharmony_cimeaning is compatible dependent. For the currently supported SoCs (Exynos 4210
668c2ecf20Sopenharmony_ciand Exynos 4212) it is as follows:
678c2ecf20Sopenharmony_ci  0 - USB device ("device"),
688c2ecf20Sopenharmony_ci  1 - USB host ("host"),
698c2ecf20Sopenharmony_ci  2 - HSIC0 ("hsic0"),
708c2ecf20Sopenharmony_ci  3 - HSIC1 ("hsic1"),
718c2ecf20Sopenharmony_ciExynos3250 has only USB device phy available as phy 0.
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ciExynos 4210 and Exynos 4212 use mode switching and require that mode switch
748c2ecf20Sopenharmony_ciregister is supplied.
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ciExample:
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ciFor Exynos 4412 (compatible with Exynos 4212):
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ciusbphy: phy@125b0000 {
818c2ecf20Sopenharmony_ci	compatible = "samsung,exynos4x12-usb2-phy";
828c2ecf20Sopenharmony_ci	reg = <0x125b0000 0x100>;
838c2ecf20Sopenharmony_ci	clocks = <&clock 305>, <&clock 2>;
848c2ecf20Sopenharmony_ci	clock-names = "phy", "ref";
858c2ecf20Sopenharmony_ci	#phy-cells = <1>;
868c2ecf20Sopenharmony_ci	samsung,sysreg-phandle = <&sys_reg>;
878c2ecf20Sopenharmony_ci	samsung,pmureg-phandle = <&pmu_reg>;
888c2ecf20Sopenharmony_ci};
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ciThen the PHY can be used in other nodes such as:
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ciphy-consumer@12340000 {
938c2ecf20Sopenharmony_ci	phys = <&usbphy 2>;
948c2ecf20Sopenharmony_ci	phy-names = "phy";
958c2ecf20Sopenharmony_ci};
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ciRefer to DT bindings documentation of particular PHY consumer devices for more
988c2ecf20Sopenharmony_ciinformation about required PHYs and the way of specification.
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ciSamsung SATA PHY Controller
1018c2ecf20Sopenharmony_ci---------------------------
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ciSATA PHY nodes are defined to describe on-chip SATA Physical layer controllers.
1048c2ecf20Sopenharmony_ciEach SATA PHY controller should have its own node.
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ciRequired properties:
1078c2ecf20Sopenharmony_ci- compatible        : compatible list, contains "samsung,exynos5250-sata-phy"
1088c2ecf20Sopenharmony_ci- reg : offset and length of the SATA PHY register set;
1098c2ecf20Sopenharmony_ci- #phy-cells : must be zero
1108c2ecf20Sopenharmony_ci- clocks : must be exactly one entry
1118c2ecf20Sopenharmony_ci- clock-names : must be "sata_phyctrl"
1128c2ecf20Sopenharmony_ci- samsung,exynos-sataphy-i2c-phandle : a phandle to the I2C device, no arguments
1138c2ecf20Sopenharmony_ci- samsung,syscon-phandle : a phandle to the PMU system controller, no arguments
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ciExample:
1168c2ecf20Sopenharmony_ci	sata_phy: sata-phy@12170000 {
1178c2ecf20Sopenharmony_ci		compatible = "samsung,exynos5250-sata-phy";
1188c2ecf20Sopenharmony_ci		reg = <0x12170000 0x1ff>;
1198c2ecf20Sopenharmony_ci		clocks = <&clock 287>;
1208c2ecf20Sopenharmony_ci		clock-names = "sata_phyctrl";
1218c2ecf20Sopenharmony_ci		#phy-cells = <0>;
1228c2ecf20Sopenharmony_ci		samsung,exynos-sataphy-i2c-phandle = <&sata_phy_i2c>;
1238c2ecf20Sopenharmony_ci		samsung,syscon-phandle = <&pmu_syscon>;
1248c2ecf20Sopenharmony_ci	};
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ciDevice-Tree bindings for sataphy i2c client driver
1278c2ecf20Sopenharmony_ci--------------------------------------------------
1288c2ecf20Sopenharmony_ci
1298c2ecf20Sopenharmony_ciRequired properties:
1308c2ecf20Sopenharmony_cicompatible: Should be "samsung,exynos-sataphy-i2c"
1318c2ecf20Sopenharmony_ci- reg: I2C address of the sataphy i2c device.
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ciExample:
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci	sata_phy_i2c:sata-phy@38 {
1368c2ecf20Sopenharmony_ci		compatible = "samsung,exynos-sataphy-i2c";
1378c2ecf20Sopenharmony_ci		reg = <0x38>;
1388c2ecf20Sopenharmony_ci	};
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_ciSamsung Exynos5 SoC series USB DRD PHY controller
1418c2ecf20Sopenharmony_ci--------------------------------------------------
1428c2ecf20Sopenharmony_ci
1438c2ecf20Sopenharmony_ciRequired properties:
1448c2ecf20Sopenharmony_ci- compatible : Should be set to one of the following supported values:
1458c2ecf20Sopenharmony_ci	- "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC,
1468c2ecf20Sopenharmony_ci	- "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC.
1478c2ecf20Sopenharmony_ci	- "samsung,exynos5433-usbdrd-phy" - for exynos5433 SoC.
1488c2ecf20Sopenharmony_ci	- "samsung,exynos7-usbdrd-phy" - for exynos7 SoC.
1498c2ecf20Sopenharmony_ci- reg : Register offset and length of USB DRD PHY register set;
1508c2ecf20Sopenharmony_ci- clocks: Clock IDs array as required by the controller
1518c2ecf20Sopenharmony_ci- clock-names: names of clocks correseponding to IDs in the clock property;
1528c2ecf20Sopenharmony_ci	       Required clocks:
1538c2ecf20Sopenharmony_ci	- phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock),
1548c2ecf20Sopenharmony_ci	       used for register access.
1558c2ecf20Sopenharmony_ci	- ref: PHY's reference clock (usually crystal clock), used for
1568c2ecf20Sopenharmony_ci	       PHY operations, associated by phy name. It is used to
1578c2ecf20Sopenharmony_ci	       determine bit values for clock settings register.
1588c2ecf20Sopenharmony_ci	       For Exynos5420 this is given as 'sclk_usbphy30' in CMU.
1598c2ecf20Sopenharmony_ci	- optional clocks: Exynos5433 & Exynos7 SoC has now following additional
1608c2ecf20Sopenharmony_ci			   gate clocks available:
1618c2ecf20Sopenharmony_ci			   - phy_pipe: for PIPE3 phy
1628c2ecf20Sopenharmony_ci			   - phy_utmi: for UTMI+ phy
1638c2ecf20Sopenharmony_ci			   - itp: for ITP generation
1648c2ecf20Sopenharmony_ci- samsung,pmu-syscon: phandle for PMU system controller interface, used to
1658c2ecf20Sopenharmony_ci		      control pmu registers for power isolation.
1668c2ecf20Sopenharmony_ci- #phy-cells : from the generic PHY bindings, must be 1;
1678c2ecf20Sopenharmony_ci
1688c2ecf20Sopenharmony_ciFor "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy"
1698c2ecf20Sopenharmony_cicompatible PHYs, the second cell in the PHY specifier identifies the
1708c2ecf20Sopenharmony_ciPHY id, which is interpreted as follows:
1718c2ecf20Sopenharmony_ci  0 - UTMI+ type phy,
1728c2ecf20Sopenharmony_ci  1 - PIPE3 type phy,
1738c2ecf20Sopenharmony_ci
1748c2ecf20Sopenharmony_ciExample:
1758c2ecf20Sopenharmony_ci	usbdrd_phy: usbphy@12100000 {
1768c2ecf20Sopenharmony_ci		compatible = "samsung,exynos5250-usbdrd-phy";
1778c2ecf20Sopenharmony_ci		reg = <0x12100000 0x100>;
1788c2ecf20Sopenharmony_ci		clocks = <&clock 286>, <&clock 1>;
1798c2ecf20Sopenharmony_ci		clock-names = "phy", "ref";
1808c2ecf20Sopenharmony_ci		samsung,pmu-syscon = <&pmu_system_controller>;
1818c2ecf20Sopenharmony_ci		#phy-cells = <1>;
1828c2ecf20Sopenharmony_ci	};
1838c2ecf20Sopenharmony_ci
1848c2ecf20Sopenharmony_ci- aliases: For SoCs like Exynos5420 having multiple USB 3.0 DRD PHY controllers,
1858c2ecf20Sopenharmony_ci	   'usbdrd_phy' nodes should have numbered alias in the aliases node,
1868c2ecf20Sopenharmony_ci	   in the form of usbdrdphyN, N = 0, 1... (depending on number of
1878c2ecf20Sopenharmony_ci	   controllers).
1888c2ecf20Sopenharmony_ciExample:
1898c2ecf20Sopenharmony_ci	aliases {
1908c2ecf20Sopenharmony_ci		usbdrdphy0 = &usb3_phy0;
1918c2ecf20Sopenharmony_ci		usbdrdphy1 = &usb3_phy1;
1928c2ecf20Sopenharmony_ci	};
1938c2ecf20Sopenharmony_ci
1948c2ecf20Sopenharmony_ciSamsung Exynos SoC series PCIe PHY controller
1958c2ecf20Sopenharmony_ci--------------------------------------------------
1968c2ecf20Sopenharmony_ciRequired properties:
1978c2ecf20Sopenharmony_ci- compatible : Should be set to "samsung,exynos5440-pcie-phy"
1988c2ecf20Sopenharmony_ci- #phy-cells : Must be zero
1998c2ecf20Sopenharmony_ci- reg : a register used by phy driver.
2008c2ecf20Sopenharmony_ci	- First is for phy register, second is for block register.
2018c2ecf20Sopenharmony_ci- reg-names : Must be set to "phy" and "block".
2028c2ecf20Sopenharmony_ci
2038c2ecf20Sopenharmony_ciExample:
2048c2ecf20Sopenharmony_ci	pcie_phy0: pcie-phy@270000 {
2058c2ecf20Sopenharmony_ci		#phy-cells = <0>;
2068c2ecf20Sopenharmony_ci		compatible = "samsung,exynos5440-pcie-phy";
2078c2ecf20Sopenharmony_ci		reg = <0x270000 0x1000>, <0x271000 0x40>;
2088c2ecf20Sopenharmony_ci		reg-names = "phy", "block";
2098c2ecf20Sopenharmony_ci	};
210