blob: da36f3afd170bebfd24b6ac589f43d396b9c8b72 [file] [log] [blame]
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +05301MSM SoC HSUSB controllers
2
3OTG:
4
5Required properties :
6- compatible : should be "qcom,hsusb-otg"
7- regs : offset and length of the register set in the memory map
8- interrupts: IRQ line
Jack Pham3f4459e2012-09-28 15:55:16 -07009- interrupt-names: OTG interrupt name(s) referenced in interrupts above
Manu Gautam0e0c53f2013-04-04 10:55:20 +053010 HSUSB OTG expects "core_irq" which is IRQ line from CORE and
11 optional ones are described in next section.
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +053012- qcom,hsusb-otg-phy-type: PHY type can be one of
13 1 - Chipidea 45nm PHY
14 2 - Synopsis 28nm PHY
15- qcom,hsusb-otg-mode: Operational mode. Can be one of
16 1 - Peripheral only mode
17 2 - Host only mode
18 3 - OTG mode
19 Based on the mode, OTG driver registers platform devices for
20 gadget and host.
21- qcom,hsusb-otg-control: OTG control (VBUS and ID notifications)
22 can be one of
23 1 - PHY control
24 2 - PMIC control
25 3 - User control (via debugfs)
Manu Gautam57c938e2013-04-04 11:39:13 +053026- <supply-name>-supply: handle to the regulator device tree node
27 Required "supply-name" is "HSUSB_VDDCX" (when voting for VDDCX) or
28 "hsusb_vdd_dig" (when voting for VDDCX Corner voltage),
29 "HSUSB_1p8-supply" and "HSUSB_3p3-supply".
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +053030
31Optional properties :
Manu Gautam0e0c53f2013-04-04 10:55:20 +053032- interrupt-names : Optional interrupt resource entries are:
33 "async_irq" : Interrupt from HSPHY for asynchronous wakeup events in LPM.
34 "pmic_id_irq" : Interrupt from PMIC for external ID pin notification.
Manu Gautam0ddbd922012-09-21 17:17:38 +053035- qcom,hsusb-otg-disable-reset: If present then core is RESET only during
36 init, otherwise core is RESET for every cable disconnect as well
37- qcom,hsusb-otg-pnoc-errata-fix: If present then workaround for PNOC
38 performance issue is applied which requires changing the mem-type
39 attribute via VMIDMT.
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +053040- qcom,hsusb-otg-default-mode: The default USB mode after boot-up.
41 Applicable only when OTG is controlled by user. Can be one of
42 0 - None. Low power mode
43 1 - Peripheral
44 2 - Host
45- qcom,hsusb-otg-phy-init-seq: PHY configuration sequence. val, reg pairs
46 terminate with -1
47- qcom,hsusb-otg-power-budget: VBUS power budget in mA
48 0 will be treated as 500mA
49- qcom,hsusb-otg-pclk-src-name: The source of pclk
Manu Gautam2e8ac102012-08-31 11:41:16 -070050- Refer to "Documentation/devicetree/bindings/arm/msm/msm_bus.txt" for
51 below optional properties:
52 - qcom,msm_bus,name
Manu Gautame3a39082013-06-11 10:42:56 +053053 - qcom,msm_bus,num_cases - There are three valid cases for this: NONE, MAX
54 and MIN bandwidth votes. Minimum two cases must be defined for
55 both NONE and MAX votes. If MIN vote is different from NONE VOTE
56 then specify third case for MIN VOTE.
Manu Gautam2e8ac102012-08-31 11:41:16 -070057 - qcom,msm_bus,active_only
58 - qcom,msm_bus,num_paths
59 - qcom,msm_bus,vectors
Ido Shayevitza7114b92013-01-13 13:34:47 +020060- qcom,hsusb-otg-lpm-on-dev-suspend: If present then USB enter to
61 low power mode upon receiving bus suspend.
Ido Shayevitz26193352013-01-21 23:16:54 +020062- qcom,hsusb-otg-clk-always-on-workaround: If present then USB core clocks
63 remain active upon receiving bus suspend and USB cable is connected.
64 Used for allowing USB to respond for remote wakup.
Shimrit Malichiffab5b02013-03-10 11:06:16 +020065- qcom,hsusb-otg-delay-lpm: If present then USB core will wait one second
66 after disconnect before entering low power mode.
Lena Salmanabde35d2013-04-25 15:29:43 +030067- qcom,hsusb-otg-delay-lpm-hndshk-on-disconnect: If present then USB core will
68 wait for the handshake with the IPA to complete before entering low
69 power mode.
Manu Gautam57c938e2013-04-04 11:39:13 +053070- <supply-name>-supply: handle to the regulator device tree node.
71 Optional "supply-name" is "vbus_otg" to supply vbus in host mode.
Mayank Rana0f286cf2013-02-27 11:43:27 +053072- qcom,vdd-voltage-level: This property must be a list of three integer
73 values (no, min, max) where each value represents either a voltage
74 in microvolts or a value corresponding to voltage corner.
Vamsi Krishna1a1684b2013-03-02 16:14:52 -080075- qcom,dp-manual-pullup: If present, vbus is not routed to USB controller/phy
76 and controller driver therefore enables pull-up explicitly before
77 starting controller using usbcmd run/stop bit.
Manu Gautam0fd2d0e2013-03-26 18:09:11 +053078- qcom,usb2-enable-hsphy2: If present then USB2 controller is connected to 2nd
79 HSPHY.
Amit Blayb4f14532013-06-17 22:33:57 +030080- qcom,hsusb-log2-itc: value of 2^(log2_itc-1) will be used as the
81 interrupt threshold (ITC), when log2_itc is between 1 to 7.
Shimrit Malichi5a2d5b52013-06-20 19:04:28 +030082- qcom,hsusb-l1-supported: If present, the device supports l1 (Link power
83 management).
Hemant Kumarb8fc9592013-04-17 19:29:39 -070084- qcom,no-selective-suspend: If present selective suspend is disabled on hub ports.
Vijayavardhan Vennapusa2239b2b2013-06-28 13:16:29 +053085- qcom,hsusb-otg-dpsehv-int: If present, indicates mpm interrupt to be configured
86 for detection of dp line transition during VDD minimization.
87- qcom,hsusb-otg-dmsehv-int: If present, indicates mpm interrupt to be configured
88 for detection of dm line transition during VDD minimization.
Mayank Rana34f6f3e2013-11-11 12:40:00 +053089- qcom,ahb-async-bridge-bypass: If present, indicates that enable AHB2AHB By Pass
90 mode with device controller for better throughput. With this mode, USB Core
91 runs using PNOC clock and synchronous to it. Hence it is must to have proper
92 "qcom,msm_bus,vectors" to have high bus frequency. User shouldn't try to
93 enable this feature without proper bus voting.
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +053094
95Example HSUSB OTG controller device node :
David Brown225abee2012-02-09 22:28:50 -080096 usb@f9690000 {
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +053097 compatible = "qcom,hsusb-otg";
David Brown225abee2012-02-09 22:28:50 -080098 reg = <0xf9690000 0x400>;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +053099 interrupts = <134>;
Jack Pham3f4459e2012-09-28 15:55:16 -0700100 interrupt-names = "core_irq";
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530101
102 qcom,hsusb-otg-phy-type = <2>;
103 qcom,hsusb-otg-mode = <1>;
104 qcom,hsusb-otg-otg-control = <1>;
Manu Gautambd53fba2012-07-31 16:13:06 +0530105 qcom,hsusb-otg-disable-reset;
Manu Gautam0ddbd922012-09-21 17:17:38 +0530106 qcom,hsusb-otg-pnoc-errata-fix;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530107 qcom,hsusb-otg-default-mode = <2>;
David Brown225abee2012-02-09 22:28:50 -0800108 qcom,hsusb-otg-phy-init-seq = <0x01 0x90 0xffffffff>;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530109 qcom,hsusb-otg-power-budget = <500>;
110 qcom,hsusb-otg-pclk-src-name = "dfab_usb_clk";
Ido Shayevitza7114b92013-01-13 13:34:47 +0200111 qcom,hsusb-otg-lpm-on-dev-suspend;
Ido Shayevitz26193352013-01-21 23:16:54 +0200112 qcom,hsusb-otg-clk-always-on-workaround;
Mayank Rana0f286cf2013-02-27 11:43:27 +0530113 hsusb_vdd_dig-supply = <&pm8226_s1_corner>;
114 HSUSB_1p8-supply = <&pm8226_l10>;
115 HSUSB_3p3-supply = <&pm8226_l20>;
116 qcom,vdd-voltage-level = <1 5 7>;
Vamsi Krishna1a1684b2013-03-02 16:14:52 -0800117 qcom,dp-manual-pullup;
Vijayavardhan Vennapusa2239b2b2013-06-28 13:16:29 +0530118 qcom,hsusb-otg-dpsehv-int = <49>;
119 qcom,hsusb-otg-dmsehv-int = <58>;
Manu Gautam2e8ac102012-08-31 11:41:16 -0700120 qcom,msm_bus,name = "usb2";
121 qcom,msm_bus,num_cases = <2>;
122 qcom,msm_bus,active_only = <0>;
123 qcom,msm_bus,num_paths = <1>;
124 qcom,msm_bus,vectors =
125 <87 512 0 0>,
126 <87 512 60000000 960000000>;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530127 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300128
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530129MSM HSUSB EHCI controller
130
131Required properties :
132- compatible : should be "qcom,ehci-host"
133- reg : offset and length of the register set in the memory map
134- interrupts: IRQ lines used by this controller
135- interrupt-names : Required interrupt resource entries are:
136 HSUSB EHCI expects "core_irq" and optionally "async_irq".
137- <supply-name>-supply: handle to the regulator device tree node
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530138 Required "supply-name" is either "hsusb_vdd_dig" or "HSUSB_VDDCX"
139 "HSUSB_1p8-supply" "HSUSB_3p3-supply".
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530140- qcom,usb2-power-budget: maximum vbus power (in mA) that can be provided.
141
142Optional properties :
143- qcom,usb2-enable-hsphy2: If present, select second PHY for USB operation.
Hemant Kumara7d531d2013-06-18 22:12:18 -0700144- qcom,resume-gpio: if present then peripheral connected to usb controller
145 cannot wakeup from XO shutdown using in-band usb bus resume. Use resume
146 gpio to wakeup peripheral.
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530147- qcom,vdd-voltage-level: This property must be a list of five integer
148 values (no, 0.5vsuspend, 0.75suspend, min, max) where each value respresents
149 either a voltage in microvolts or a value corresponding to voltage corner.
150 First value represents value to vote when USB is not at all active, second
151 value represents value to vote when target is not connected to dock during low
152 power mode, third value represents vlaue to vote when target is connected to dock
153 and no peripheral connected over dock during low power mode, fourth value represents
154 minimum value to vote when USB is operational, fifth item represents maximum value
155 to vote for USB is operational.
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530156
157Example MSM HSUSB EHCI controller device node :
158 ehci: qcom,ehci-host@f9a55000 {
159 compatible = "qcom,ehci-host";
160 reg = <0xf9a55000 0x400>;
161 interrupts = <0 134 0>, <0 140 0>;
162 interrupt-names = "core_irq", "async_irq";
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530163 hsusb_vdd_dig-supply = <&pm8841_s2_corner>;
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530164 HSUSB_1p8-supply = <&pm8941_l6>;
165 HSUSB_3p3-supply = <&pm8941_l24>;
166 qcom,usb2-enable-hsphy2;
167 qcom,usb2-power-budget = <500>;
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530168 qcom,vdd-voltage-level = <1 2 3 5 7>;
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530169 };
170
Manu Gautam43c61a12012-08-22 17:09:37 -0700171ANDROID USB:
172
173Required properties:
174- compatible: should be "qcom,android-usb"
175
176Optional properties :
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530177- reg : offset and length of memory region that is used by device to
Manu Gautam43c61a12012-08-22 17:09:37 -0700178 update USB PID and serial numbers used by bootloader in DLOAD mode.
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530179- qcom,android-usb-swfi-latency : value to be used by device to vote
180 for DMA latency in microsecs.
Chiranjeevi Velempati9d797662013-04-22 15:45:38 +0530181- qcom,android-usb-cdrom : if this property is present then device creates
182 a new LUN as CD-ROM
wujin269684c2013-09-02 17:51:38 +0800183- qcom,android-usb-internal-ums : if this property is present then device
184 creates a new LUN as internal usb mass storage
Manu Gautam43c61a12012-08-22 17:09:37 -0700185Example Android USB device node :
186 android_usb@fc42b0c8 {
187 compatible = "qcom,android-usb";
188 reg = <0xfc42b0c8 0xc8>;
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530189 qcom,android-usb-swfi-latency = <1>;
Manu Gautam43c61a12012-08-22 17:09:37 -0700190 };
191
192
Shimrit Malichi255b5342012-08-02 21:01:43 +0300193BAM:
194
195Required properties:
196- compatible: should be "qcom,usb-bam-msm"
Manu Gautam6afd5872012-07-25 09:16:55 +0530197- reg : pairs of physical base addresses and region sizes
198 of all the memory mapped BAM devices present
Jack Phamd61ff562012-11-21 19:25:53 +0200199- reg-names : Register region name(s), in 1-1 correspondence with the
200 registers in 'reg'. This list should contain at least as many names
201 as the number of unique values given in both 'usb-active-bam' and
202 all the subnodes' 'usb-bam-type' properties.
203
204 If SSUSB_BAM is used, "ssusb" should be present.
205 If HSUSB_BAM is used, "hsusb" should be present.
206 If HSIC_BAM is used, "hsic" should be present.
207
208 If a QSCRATCH RAM1 register is designated for providing USB3
209 private memory to use as a BAM FIFO, specify "qscratch_ram1_reg".
Manu Gautam6afd5872012-07-25 09:16:55 +0530210- interrupts: IRQ lines for BAM devices
Jack Phamd61ff562012-11-21 19:25:53 +0200211- interrupt-names: BAM interrupt name(s), in 1-1 correspondence with
212 'interrupts' above.
213
214 If SSUSB_BAM is used, "ssusb" should be present.
215 If HSUSB_BAM is used, "hsusb" should be present.
216 If HSIC_BAM is used, "hsic" should be present.
Shimrit Malichi255b5342012-08-02 21:01:43 +0300217- qcom,usb-bam-num-pipes: max number of pipes that can be used
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700218
219Optional properties:
220- qcom,usb-bam-fifo-baseaddr: base address for bam pipe's data and descriptor
221 fifos. This can be on chip memory (ocimem) or usb private memory. This
222 property is required if sub-node's mem-type is ocimem or usb private mem.
Shimrit Malichi255b5342012-08-02 21:01:43 +0300223
224A number of USB BAM pipe parameters are represented as sub-nodes:
225
226Subnode Required:
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200227- label: a string describing uniquely the usb bam pipe. The string can be
228 constracted as follows: <core>-<peer>-<direction>-<pipe num>.
229 core options: hsusb, ssusb/dwc3, hsic
230 peer options: qdss, ipa, a2
231 direction options: in (from peer to usb), out (from usb to peer)
232 pipe num options: 0..127
Manu Gautam6afd5872012-07-25 09:16:55 +0530233- qcom,usb-bam-mem-type: Type of memory used by this PIPE. Can be one of
234 0 - Uses SPS's dedicated pipe memory
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700235 1 - USB's private memory residing @ 'qcom,usb-bam-fifo-baseaddr'
Manu Gautam6afd5872012-07-25 09:16:55 +0530236 2 - System RAM allocated by driver
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700237 3 - OCI memory residing @ 'qcom,usb-bam-fifo-baseaddr'
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200238- qcom,bam-type: BAM type can be one of
239 0 - SSUSB_BAM
240 1 - HSUSB_BAM
241 2 - HSIC_BAM
242- qcom,dir: pipe direction
243 0 - from usb (out)
244 1 - to usb (in)
245- qcom,pipe-num: pipe number
246- qcom,peer-bam: peer BAM can be one of
247 0 - A2_P_BAM
248 1 - QDSS_P_BAM
249 2 - IPA_P_BAM
Shimrit Malichi255b5342012-08-02 21:01:43 +0300250- qcom,data-fifo-size: data fifo size
Shimrit Malichi255b5342012-08-02 21:01:43 +0300251- qcom,descriptor-fifo-size: descriptor fifo size
252
Manu Gautam355270a2012-12-21 16:52:50 +0530253Optional Properties for Subnode:
254- qcom,reset-bam-on-connect: If present then BAM is RESET before connecting
255 pipe. This may be required if BAM peripheral is also reset before connect.
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200256- qcom,dst-bam-physical-address: destination BAM physical address
257- qcom,dst-bam-pipe-index: destination BAM pipe index
258- qcom,src-bam-physical-address: source BAM physical address
259- qcom,src-bam-pipe-index: source BAM pipe index
260- qcom,data-fifo-offset: data fifo offset address
261- qcom,descriptor-fifo-offset: descriptor fifo offset address
Manu Gautam355270a2012-12-21 16:52:50 +0530262
Manu Gautamd21e2282012-08-23 13:38:50 -0700263Optional properties :
264- qcom,ignore-core-reset-ack: If present then BAM ignores ACK from USB core
265 while performing PIPE RESET
repo sync985819e2013-01-16 19:37:05 +0200266- qcom,disable-clk-gating: If present then disable BAM clock gating.
267
Shimrit Malichi255b5342012-08-02 21:01:43 +0300268Example USB BAM controller device node:
269
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200270 qcom,usbbam@f9a44000 {
Shimrit Malichi255b5342012-08-02 21:01:43 +0300271 compatible = "qcom,usb-bam-msm";
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200272 reg = <0xf9a44000 0x11000>;
273 reg-names = "hsusb";
274 interrupts = <0 135 0>;
275 interrupt-names = "hsusb";
Shimrit Malichi255b5342012-08-02 21:01:43 +0300276 qcom,usb-bam-num-pipes = <16>;
Manu Gautamd21e2282012-08-23 13:38:50 -0700277 qcom,ignore-core-reset-ack;
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200278 qcom,disable-clk-gating;
Shimrit Malichi255b5342012-08-02 21:01:43 +0300279
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200280 qcom,pipe0 {
281 label = "hsusb-ipa-out-0";
282 qcom,usb-bam-mem-type = <0>;
283 qcom,bam-type = <1>;
284 qcom,dir = <0>;
285 qcom,pipe-num = <0>;
286 qcom,peer-bam = <2>;
287 qcom,src-bam-physical-address = <0xf9a44000>;
288 qcom,src-bam-pipe-index = <1>;
289 qcom,data-fifo-offset = <0x2200>;
290 qcom,data-fifo-size = <0x1e00>;
291 qcom,descriptor-fifo-offset = <0x2100>;
292 qcom,descriptor-fifo-size = <0x100>;
293 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300294 qcom,pipe1 {
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200295 label = "hsusb-ipa-in-0";
296 qcom,usb-bam-mem-type = <0>;
297 qcom,bam-type = <1>;
298 qcom,dir = <1>;
299 qcom,pipe-num = <0>;
300 qcom,peer-bam = <2>;
Manu Gautam6afd5872012-07-25 09:16:55 +0530301 qcom,dst-bam-physical-address = <0xf9a44000>;
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200302 qcom,dst-bam-pipe-index = <0>;
303 qcom,data-fifo-offset = <0x300>;
304 qcom,data-fifo-size = <0x1e00>;
305 qcom,descriptor-fifo-offset = <0>;
306 qcom,descriptor-fifo-size = <0x300>;
Manu Gautam6afd5872012-07-25 09:16:55 +0530307 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300308 };