xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/phy/samsung-phy.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunSamsung S5P/Exynos SoC series MIPI CSIS/DSIM DPHY
2*4882a593Smuzhiyun-------------------------------------------------
3*4882a593Smuzhiyun
4*4882a593SmuzhiyunRequired properties:
5*4882a593Smuzhiyun- compatible : should be one of the listed compatibles:
6*4882a593Smuzhiyun	- "samsung,s5pv210-mipi-video-phy"
7*4882a593Smuzhiyun	- "samsung,exynos5420-mipi-video-phy"
8*4882a593Smuzhiyun	- "samsung,exynos5433-mipi-video-phy"
9*4882a593Smuzhiyun- #phy-cells : from the generic phy bindings, must be 1;
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunIn case of s5pv210 and exynos5420 compatible PHYs:
12*4882a593Smuzhiyun- syscon - phandle to the PMU system controller
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunIn case of exynos5433 compatible PHY:
15*4882a593Smuzhiyun - samsung,pmu-syscon - phandle to the PMU system controller
16*4882a593Smuzhiyun - samsung,disp-sysreg - phandle to the DISP system registers controller
17*4882a593Smuzhiyun - samsung,cam0-sysreg - phandle to the CAM0 system registers controller
18*4882a593Smuzhiyun - samsung,cam1-sysreg - phandle to the CAM1 system registers controller
19*4882a593Smuzhiyun
20*4882a593SmuzhiyunFor "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in
21*4882a593Smuzhiyunthe PHY specifier identifies the PHY and its meaning is as follows:
22*4882a593Smuzhiyun  0 - MIPI CSIS 0,
23*4882a593Smuzhiyun  1 - MIPI DSIM 0,
24*4882a593Smuzhiyun  2 - MIPI CSIS 1,
25*4882a593Smuzhiyun  3 - MIPI DSIM 1.
26*4882a593Smuzhiyun"samsung,exynos5420-mipi-video-phy" and "samsung,exynos5433-mipi-video-phy"
27*4882a593Smuzhiyunsupports additional fifth PHY:
28*4882a593Smuzhiyun  4 - MIPI CSIS 2.
29*4882a593Smuzhiyun
30*4882a593SmuzhiyunSamsung Exynos SoC series Display Port PHY
31*4882a593Smuzhiyun-------------------------------------------------
32*4882a593Smuzhiyun
33*4882a593SmuzhiyunRequired properties:
34*4882a593Smuzhiyun- compatible : should be one of the following supported values:
35*4882a593Smuzhiyun	 - "samsung,exynos5250-dp-video-phy"
36*4882a593Smuzhiyun	 - "samsung,exynos5420-dp-video-phy"
37*4882a593Smuzhiyun- samsung,pmu-syscon: phandle for PMU system controller interface, used to
38*4882a593Smuzhiyun		      control pmu registers for power isolation.
39*4882a593Smuzhiyun- #phy-cells : from the generic PHY bindings, must be 0;
40*4882a593Smuzhiyun
41*4882a593SmuzhiyunSamsung S5P/Exynos SoC series USB PHY
42*4882a593Smuzhiyun-------------------------------------------------
43*4882a593Smuzhiyun
44*4882a593SmuzhiyunRequired properties:
45*4882a593Smuzhiyun- compatible : should be one of the listed compatibles:
46*4882a593Smuzhiyun	- "samsung,exynos3250-usb2-phy"
47*4882a593Smuzhiyun	- "samsung,exynos4210-usb2-phy"
48*4882a593Smuzhiyun	- "samsung,exynos4x12-usb2-phy"
49*4882a593Smuzhiyun	- "samsung,exynos5250-usb2-phy"
50*4882a593Smuzhiyun	- "samsung,s5pv210-usb2-phy"
51*4882a593Smuzhiyun- reg : a list of registers used by phy driver
52*4882a593Smuzhiyun	- first and obligatory is the location of phy modules registers
53*4882a593Smuzhiyun- samsung,sysreg-phandle - handle to syscon used to control the system registers
54*4882a593Smuzhiyun- samsung,pmureg-phandle - handle to syscon used to control PMU registers
55*4882a593Smuzhiyun- #phy-cells : from the generic phy bindings, must be 1;
56*4882a593Smuzhiyun- clocks and clock-names:
57*4882a593Smuzhiyun	- the "phy" clock is required by the phy module, used as a gate
58*4882a593Smuzhiyun	- the "ref" clock is used to get the rate of the clock provided to the
59*4882a593Smuzhiyun	  PHY module
60*4882a593Smuzhiyun
61*4882a593SmuzhiyunOptional properties:
62*4882a593Smuzhiyun- vbus-supply: power-supply phandle for vbus power source
63*4882a593Smuzhiyun
64*4882a593SmuzhiyunThe first phandle argument in the PHY specifier identifies the PHY, its
65*4882a593Smuzhiyunmeaning is compatible dependent. For the currently supported SoCs (Exynos 4210
66*4882a593Smuzhiyunand Exynos 4212) it is as follows:
67*4882a593Smuzhiyun  0 - USB device ("device"),
68*4882a593Smuzhiyun  1 - USB host ("host"),
69*4882a593Smuzhiyun  2 - HSIC0 ("hsic0"),
70*4882a593Smuzhiyun  3 - HSIC1 ("hsic1"),
71*4882a593SmuzhiyunExynos3250 has only USB device phy available as phy 0.
72*4882a593Smuzhiyun
73*4882a593SmuzhiyunExynos 4210 and Exynos 4212 use mode switching and require that mode switch
74*4882a593Smuzhiyunregister is supplied.
75*4882a593Smuzhiyun
76*4882a593SmuzhiyunExample:
77*4882a593Smuzhiyun
78*4882a593SmuzhiyunFor Exynos 4412 (compatible with Exynos 4212):
79*4882a593Smuzhiyun
80*4882a593Smuzhiyunusbphy: phy@125b0000 {
81*4882a593Smuzhiyun	compatible = "samsung,exynos4x12-usb2-phy";
82*4882a593Smuzhiyun	reg = <0x125b0000 0x100>;
83*4882a593Smuzhiyun	clocks = <&clock 305>, <&clock 2>;
84*4882a593Smuzhiyun	clock-names = "phy", "ref";
85*4882a593Smuzhiyun	#phy-cells = <1>;
86*4882a593Smuzhiyun	samsung,sysreg-phandle = <&sys_reg>;
87*4882a593Smuzhiyun	samsung,pmureg-phandle = <&pmu_reg>;
88*4882a593Smuzhiyun};
89*4882a593Smuzhiyun
90*4882a593SmuzhiyunThen the PHY can be used in other nodes such as:
91*4882a593Smuzhiyun
92*4882a593Smuzhiyunphy-consumer@12340000 {
93*4882a593Smuzhiyun	phys = <&usbphy 2>;
94*4882a593Smuzhiyun	phy-names = "phy";
95*4882a593Smuzhiyun};
96*4882a593Smuzhiyun
97*4882a593SmuzhiyunRefer to DT bindings documentation of particular PHY consumer devices for more
98*4882a593Smuzhiyuninformation about required PHYs and the way of specification.
99*4882a593Smuzhiyun
100*4882a593SmuzhiyunSamsung SATA PHY Controller
101*4882a593Smuzhiyun---------------------------
102*4882a593Smuzhiyun
103*4882a593SmuzhiyunSATA PHY nodes are defined to describe on-chip SATA Physical layer controllers.
104*4882a593SmuzhiyunEach SATA PHY controller should have its own node.
105*4882a593Smuzhiyun
106*4882a593SmuzhiyunRequired properties:
107*4882a593Smuzhiyun- compatible        : compatible list, contains "samsung,exynos5250-sata-phy"
108*4882a593Smuzhiyun- reg : offset and length of the SATA PHY register set;
109*4882a593Smuzhiyun- #phy-cells : must be zero
110*4882a593Smuzhiyun- clocks : must be exactly one entry
111*4882a593Smuzhiyun- clock-names : must be "sata_phyctrl"
112*4882a593Smuzhiyun- samsung,exynos-sataphy-i2c-phandle : a phandle to the I2C device, no arguments
113*4882a593Smuzhiyun- samsung,syscon-phandle : a phandle to the PMU system controller, no arguments
114*4882a593Smuzhiyun
115*4882a593SmuzhiyunExample:
116*4882a593Smuzhiyun	sata_phy: sata-phy@12170000 {
117*4882a593Smuzhiyun		compatible = "samsung,exynos5250-sata-phy";
118*4882a593Smuzhiyun		reg = <0x12170000 0x1ff>;
119*4882a593Smuzhiyun		clocks = <&clock 287>;
120*4882a593Smuzhiyun		clock-names = "sata_phyctrl";
121*4882a593Smuzhiyun		#phy-cells = <0>;
122*4882a593Smuzhiyun		samsung,exynos-sataphy-i2c-phandle = <&sata_phy_i2c>;
123*4882a593Smuzhiyun		samsung,syscon-phandle = <&pmu_syscon>;
124*4882a593Smuzhiyun	};
125*4882a593Smuzhiyun
126*4882a593SmuzhiyunDevice-Tree bindings for sataphy i2c client driver
127*4882a593Smuzhiyun--------------------------------------------------
128*4882a593Smuzhiyun
129*4882a593SmuzhiyunRequired properties:
130*4882a593Smuzhiyuncompatible: Should be "samsung,exynos-sataphy-i2c"
131*4882a593Smuzhiyun- reg: I2C address of the sataphy i2c device.
132*4882a593Smuzhiyun
133*4882a593SmuzhiyunExample:
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun	sata_phy_i2c:sata-phy@38 {
136*4882a593Smuzhiyun		compatible = "samsung,exynos-sataphy-i2c";
137*4882a593Smuzhiyun		reg = <0x38>;
138*4882a593Smuzhiyun	};
139*4882a593Smuzhiyun
140*4882a593SmuzhiyunSamsung Exynos5 SoC series USB DRD PHY controller
141*4882a593Smuzhiyun--------------------------------------------------
142*4882a593Smuzhiyun
143*4882a593SmuzhiyunRequired properties:
144*4882a593Smuzhiyun- compatible : Should be set to one of the following supported values:
145*4882a593Smuzhiyun	- "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC,
146*4882a593Smuzhiyun	- "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC.
147*4882a593Smuzhiyun	- "samsung,exynos5433-usbdrd-phy" - for exynos5433 SoC.
148*4882a593Smuzhiyun	- "samsung,exynos7-usbdrd-phy" - for exynos7 SoC.
149*4882a593Smuzhiyun- reg : Register offset and length of USB DRD PHY register set;
150*4882a593Smuzhiyun- clocks: Clock IDs array as required by the controller
151*4882a593Smuzhiyun- clock-names: names of clocks correseponding to IDs in the clock property;
152*4882a593Smuzhiyun	       Required clocks:
153*4882a593Smuzhiyun	- phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock),
154*4882a593Smuzhiyun	       used for register access.
155*4882a593Smuzhiyun	- ref: PHY's reference clock (usually crystal clock), used for
156*4882a593Smuzhiyun	       PHY operations, associated by phy name. It is used to
157*4882a593Smuzhiyun	       determine bit values for clock settings register.
158*4882a593Smuzhiyun	       For Exynos5420 this is given as 'sclk_usbphy30' in CMU.
159*4882a593Smuzhiyun	- optional clocks: Exynos5433 & Exynos7 SoC has now following additional
160*4882a593Smuzhiyun			   gate clocks available:
161*4882a593Smuzhiyun			   - phy_pipe: for PIPE3 phy
162*4882a593Smuzhiyun			   - phy_utmi: for UTMI+ phy
163*4882a593Smuzhiyun			   - itp: for ITP generation
164*4882a593Smuzhiyun- samsung,pmu-syscon: phandle for PMU system controller interface, used to
165*4882a593Smuzhiyun		      control pmu registers for power isolation.
166*4882a593Smuzhiyun- #phy-cells : from the generic PHY bindings, must be 1;
167*4882a593Smuzhiyun
168*4882a593SmuzhiyunFor "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy"
169*4882a593Smuzhiyuncompatible PHYs, the second cell in the PHY specifier identifies the
170*4882a593SmuzhiyunPHY id, which is interpreted as follows:
171*4882a593Smuzhiyun  0 - UTMI+ type phy,
172*4882a593Smuzhiyun  1 - PIPE3 type phy,
173*4882a593Smuzhiyun
174*4882a593SmuzhiyunExample:
175*4882a593Smuzhiyun	usbdrd_phy: usbphy@12100000 {
176*4882a593Smuzhiyun		compatible = "samsung,exynos5250-usbdrd-phy";
177*4882a593Smuzhiyun		reg = <0x12100000 0x100>;
178*4882a593Smuzhiyun		clocks = <&clock 286>, <&clock 1>;
179*4882a593Smuzhiyun		clock-names = "phy", "ref";
180*4882a593Smuzhiyun		samsung,pmu-syscon = <&pmu_system_controller>;
181*4882a593Smuzhiyun		#phy-cells = <1>;
182*4882a593Smuzhiyun	};
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun- aliases: For SoCs like Exynos5420 having multiple USB 3.0 DRD PHY controllers,
185*4882a593Smuzhiyun	   'usbdrd_phy' nodes should have numbered alias in the aliases node,
186*4882a593Smuzhiyun	   in the form of usbdrdphyN, N = 0, 1... (depending on number of
187*4882a593Smuzhiyun	   controllers).
188*4882a593SmuzhiyunExample:
189*4882a593Smuzhiyun	aliases {
190*4882a593Smuzhiyun		usbdrdphy0 = &usb3_phy0;
191*4882a593Smuzhiyun		usbdrdphy1 = &usb3_phy1;
192*4882a593Smuzhiyun	};
193*4882a593Smuzhiyun
194*4882a593SmuzhiyunSamsung Exynos SoC series PCIe PHY controller
195*4882a593Smuzhiyun--------------------------------------------------
196*4882a593SmuzhiyunRequired properties:
197*4882a593Smuzhiyun- compatible : Should be set to "samsung,exynos5440-pcie-phy"
198*4882a593Smuzhiyun- #phy-cells : Must be zero
199*4882a593Smuzhiyun- reg : a register used by phy driver.
200*4882a593Smuzhiyun	- First is for phy register, second is for block register.
201*4882a593Smuzhiyun- reg-names : Must be set to "phy" and "block".
202*4882a593Smuzhiyun
203*4882a593SmuzhiyunExample:
204*4882a593Smuzhiyun	pcie_phy0: pcie-phy@270000 {
205*4882a593Smuzhiyun		#phy-cells = <0>;
206*4882a593Smuzhiyun		compatible = "samsung,exynos5440-pcie-phy";
207*4882a593Smuzhiyun		reg = <0x270000 0x1000>, <0x271000 0x40>;
208*4882a593Smuzhiyun		reg-names = "phy", "block";
209*4882a593Smuzhiyun	};
210