blob: 7d3d4358cefaf05b1edcb1bd24a1669b60c09fcf [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.
Saket Saurabhb06a8c62013-11-25 15:17:23 +053094-qcom,disable-retention-with-vdd-min: If present dont allow phy retention but allow
95 vdd min.
Vijayavardhan Vennapusa29e88802014-02-17 11:09:23 +053096- qcom,usbin-vadc: Corresponding vadc device's phandle to read usbin voltage using VADC.
97 This will be used to get value of usb power supply's VOLTAGE_NOW property.
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +053098
99Example HSUSB OTG controller device node :
David Brown225abee2012-02-09 22:28:50 -0800100 usb@f9690000 {
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530101 compatible = "qcom,hsusb-otg";
David Brown225abee2012-02-09 22:28:50 -0800102 reg = <0xf9690000 0x400>;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530103 interrupts = <134>;
Jack Pham3f4459e2012-09-28 15:55:16 -0700104 interrupt-names = "core_irq";
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530105
106 qcom,hsusb-otg-phy-type = <2>;
107 qcom,hsusb-otg-mode = <1>;
108 qcom,hsusb-otg-otg-control = <1>;
Manu Gautambd53fba2012-07-31 16:13:06 +0530109 qcom,hsusb-otg-disable-reset;
Manu Gautam0ddbd922012-09-21 17:17:38 +0530110 qcom,hsusb-otg-pnoc-errata-fix;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530111 qcom,hsusb-otg-default-mode = <2>;
David Brown225abee2012-02-09 22:28:50 -0800112 qcom,hsusb-otg-phy-init-seq = <0x01 0x90 0xffffffff>;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530113 qcom,hsusb-otg-power-budget = <500>;
114 qcom,hsusb-otg-pclk-src-name = "dfab_usb_clk";
Ido Shayevitza7114b92013-01-13 13:34:47 +0200115 qcom,hsusb-otg-lpm-on-dev-suspend;
Ido Shayevitz26193352013-01-21 23:16:54 +0200116 qcom,hsusb-otg-clk-always-on-workaround;
Mayank Rana0f286cf2013-02-27 11:43:27 +0530117 hsusb_vdd_dig-supply = <&pm8226_s1_corner>;
118 HSUSB_1p8-supply = <&pm8226_l10>;
119 HSUSB_3p3-supply = <&pm8226_l20>;
120 qcom,vdd-voltage-level = <1 5 7>;
Vamsi Krishna1a1684b2013-03-02 16:14:52 -0800121 qcom,dp-manual-pullup;
Saket Saurabhb06a8c62013-11-25 15:17:23 +0530122 qcom,disable-retention-with-vdd-min;
Vijayavardhan Vennapusa2239b2b2013-06-28 13:16:29 +0530123 qcom,hsusb-otg-dpsehv-int = <49>;
124 qcom,hsusb-otg-dmsehv-int = <58>;
Vijayavardhan Vennapusa29e88802014-02-17 11:09:23 +0530125 qcom,usbin-vadc = <&pm8226_vadc>;
Manu Gautam2e8ac102012-08-31 11:41:16 -0700126 qcom,msm_bus,name = "usb2";
127 qcom,msm_bus,num_cases = <2>;
128 qcom,msm_bus,active_only = <0>;
129 qcom,msm_bus,num_paths = <1>;
130 qcom,msm_bus,vectors =
131 <87 512 0 0>,
132 <87 512 60000000 960000000>;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530133 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300134
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530135MSM HSUSB EHCI controller
136
137Required properties :
138- compatible : should be "qcom,ehci-host"
139- reg : offset and length of the register set in the memory map
140- interrupts: IRQ lines used by this controller
141- interrupt-names : Required interrupt resource entries are:
142 HSUSB EHCI expects "core_irq" and optionally "async_irq".
143- <supply-name>-supply: handle to the regulator device tree node
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530144 Required "supply-name" is either "hsusb_vdd_dig" or "HSUSB_VDDCX"
145 "HSUSB_1p8-supply" "HSUSB_3p3-supply".
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530146- qcom,usb2-power-budget: maximum vbus power (in mA) that can be provided.
147
148Optional properties :
149- qcom,usb2-enable-hsphy2: If present, select second PHY for USB operation.
Hemant Kumara7d531d2013-06-18 22:12:18 -0700150- qcom,resume-gpio: if present then peripheral connected to usb controller
151 cannot wakeup from XO shutdown using in-band usb bus resume. Use resume
152 gpio to wakeup peripheral.
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530153- qcom,vdd-voltage-level: This property must be a list of five integer
154 values (no, 0.5vsuspend, 0.75suspend, min, max) where each value respresents
155 either a voltage in microvolts or a value corresponding to voltage corner.
156 First value represents value to vote when USB is not at all active, second
157 value represents value to vote when target is not connected to dock during low
158 power mode, third value represents vlaue to vote when target is connected to dock
159 and no peripheral connected over dock during low power mode, fourth value represents
160 minimum value to vote when USB is operational, fifth item represents maximum value
161 to vote for USB is operational.
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530162
163Example MSM HSUSB EHCI controller device node :
164 ehci: qcom,ehci-host@f9a55000 {
165 compatible = "qcom,ehci-host";
166 reg = <0xf9a55000 0x400>;
167 interrupts = <0 134 0>, <0 140 0>;
168 interrupt-names = "core_irq", "async_irq";
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530169 hsusb_vdd_dig-supply = <&pm8841_s2_corner>;
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530170 HSUSB_1p8-supply = <&pm8941_l6>;
171 HSUSB_3p3-supply = <&pm8941_l24>;
172 qcom,usb2-enable-hsphy2;
173 qcom,usb2-power-budget = <500>;
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530174 qcom,vdd-voltage-level = <1 2 3 5 7>;
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530175 };
176
Manu Gautam43c61a12012-08-22 17:09:37 -0700177ANDROID USB:
178
179Required properties:
180- compatible: should be "qcom,android-usb"
181
182Optional properties :
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530183- reg : offset and length of memory region that is used by device to
Manu Gautam43c61a12012-08-22 17:09:37 -0700184 update USB PID and serial numbers used by bootloader in DLOAD mode.
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530185- qcom,android-usb-swfi-latency : value to be used by device to vote
186 for DMA latency in microsecs.
Chiranjeevi Velempati9d797662013-04-22 15:45:38 +0530187- qcom,android-usb-cdrom : if this property is present then device creates
188 a new LUN as CD-ROM
wujin269684c2013-09-02 17:51:38 +0800189- qcom,android-usb-internal-ums : if this property is present then device
Mayank Rana142fe412013-11-11 14:16:30 +0530190 creates a new LUN as internal usb mass storage.
191- qcom,streaming-func : add list of usb function name. If mention usb function
192 is being enable as part of USB composition, streaming mode is enable with
193 usb device controller to get better throughput. NOTE: Inverted CRC and
194 turnaround timeout is observed on enabling streaming. Hence it is required
195 to see these errors and number of erros on enabling this at USB level to make
196 final decision to enable this feature or not.
Manu Gautam43c61a12012-08-22 17:09:37 -0700197Example Android USB device node :
198 android_usb@fc42b0c8 {
199 compatible = "qcom,android-usb";
200 reg = <0xfc42b0c8 0xc8>;
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530201 qcom,android-usb-swfi-latency = <1>;
Mayank Rana142fe412013-11-11 14:16:30 +0530202 qcom,streaming-func = "rndis","mtp";
Manu Gautam43c61a12012-08-22 17:09:37 -0700203 };
204
205
Shimrit Malichi255b5342012-08-02 21:01:43 +0300206BAM:
207
208Required properties:
209- compatible: should be "qcom,usb-bam-msm"
Manu Gautam6afd5872012-07-25 09:16:55 +0530210- reg : pairs of physical base addresses and region sizes
211 of all the memory mapped BAM devices present
Jack Phamd61ff562012-11-21 19:25:53 +0200212- reg-names : Register region name(s), in 1-1 correspondence with the
213 registers in 'reg'. This list should contain at least as many names
214 as the number of unique values given in both 'usb-active-bam' and
215 all the subnodes' 'usb-bam-type' properties.
216
217 If SSUSB_BAM is used, "ssusb" should be present.
218 If HSUSB_BAM is used, "hsusb" should be present.
219 If HSIC_BAM is used, "hsic" should be present.
220
221 If a QSCRATCH RAM1 register is designated for providing USB3
222 private memory to use as a BAM FIFO, specify "qscratch_ram1_reg".
Manu Gautam6afd5872012-07-25 09:16:55 +0530223- interrupts: IRQ lines for BAM devices
Jack Phamd61ff562012-11-21 19:25:53 +0200224- interrupt-names: BAM interrupt name(s), in 1-1 correspondence with
225 'interrupts' above.
226
227 If SSUSB_BAM is used, "ssusb" should be present.
228 If HSUSB_BAM is used, "hsusb" should be present.
229 If HSIC_BAM is used, "hsic" should be present.
Shimrit Malichi255b5342012-08-02 21:01:43 +0300230- qcom,usb-bam-num-pipes: max number of pipes that can be used
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700231
232Optional properties:
233- qcom,usb-bam-fifo-baseaddr: base address for bam pipe's data and descriptor
234 fifos. This can be on chip memory (ocimem) or usb private memory. This
235 property is required if sub-node's mem-type is ocimem or usb private mem.
Shimrit Malichi255b5342012-08-02 21:01:43 +0300236
237A number of USB BAM pipe parameters are represented as sub-nodes:
238
239Subnode Required:
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200240- label: a string describing uniquely the usb bam pipe. The string can be
241 constracted as follows: <core>-<peer>-<direction>-<pipe num>.
242 core options: hsusb, ssusb/dwc3, hsic
243 peer options: qdss, ipa, a2
244 direction options: in (from peer to usb), out (from usb to peer)
245 pipe num options: 0..127
Manu Gautam6afd5872012-07-25 09:16:55 +0530246- qcom,usb-bam-mem-type: Type of memory used by this PIPE. Can be one of
247 0 - Uses SPS's dedicated pipe memory
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700248 1 - USB's private memory residing @ 'qcom,usb-bam-fifo-baseaddr'
Manu Gautam6afd5872012-07-25 09:16:55 +0530249 2 - System RAM allocated by driver
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700250 3 - OCI memory residing @ 'qcom,usb-bam-fifo-baseaddr'
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200251- qcom,bam-type: BAM type can be one of
252 0 - SSUSB_BAM
253 1 - HSUSB_BAM
254 2 - HSIC_BAM
255- qcom,dir: pipe direction
256 0 - from usb (out)
257 1 - to usb (in)
258- qcom,pipe-num: pipe number
259- qcom,peer-bam: peer BAM can be one of
260 0 - A2_P_BAM
261 1 - QDSS_P_BAM
262 2 - IPA_P_BAM
Shimrit Malichi255b5342012-08-02 21:01:43 +0300263- qcom,data-fifo-size: data fifo size
Shimrit Malichi255b5342012-08-02 21:01:43 +0300264- qcom,descriptor-fifo-size: descriptor fifo size
265
Manu Gautam355270a2012-12-21 16:52:50 +0530266Optional Properties for Subnode:
267- qcom,reset-bam-on-connect: If present then BAM is RESET before connecting
268 pipe. This may be required if BAM peripheral is also reset before connect.
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200269- qcom,dst-bam-physical-address: destination BAM physical address
270- qcom,dst-bam-pipe-index: destination BAM pipe index
271- qcom,src-bam-physical-address: source BAM physical address
272- qcom,src-bam-pipe-index: source BAM pipe index
273- qcom,data-fifo-offset: data fifo offset address
274- qcom,descriptor-fifo-offset: descriptor fifo offset address
Manu Gautam355270a2012-12-21 16:52:50 +0530275
Manu Gautamd21e2282012-08-23 13:38:50 -0700276Optional properties :
277- qcom,ignore-core-reset-ack: If present then BAM ignores ACK from USB core
278 while performing PIPE RESET
repo sync985819e2013-01-16 19:37:05 +0200279- qcom,disable-clk-gating: If present then disable BAM clock gating.
280
Shimrit Malichi255b5342012-08-02 21:01:43 +0300281Example USB BAM controller device node:
282
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200283 qcom,usbbam@f9a44000 {
Shimrit Malichi255b5342012-08-02 21:01:43 +0300284 compatible = "qcom,usb-bam-msm";
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200285 reg = <0xf9a44000 0x11000>;
286 reg-names = "hsusb";
287 interrupts = <0 135 0>;
288 interrupt-names = "hsusb";
Shimrit Malichi255b5342012-08-02 21:01:43 +0300289 qcom,usb-bam-num-pipes = <16>;
Manu Gautamd21e2282012-08-23 13:38:50 -0700290 qcom,ignore-core-reset-ack;
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200291 qcom,disable-clk-gating;
Shimrit Malichi255b5342012-08-02 21:01:43 +0300292
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200293 qcom,pipe0 {
294 label = "hsusb-ipa-out-0";
295 qcom,usb-bam-mem-type = <0>;
296 qcom,bam-type = <1>;
297 qcom,dir = <0>;
298 qcom,pipe-num = <0>;
299 qcom,peer-bam = <2>;
300 qcom,src-bam-physical-address = <0xf9a44000>;
301 qcom,src-bam-pipe-index = <1>;
302 qcom,data-fifo-offset = <0x2200>;
303 qcom,data-fifo-size = <0x1e00>;
304 qcom,descriptor-fifo-offset = <0x2100>;
305 qcom,descriptor-fifo-size = <0x100>;
306 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300307 qcom,pipe1 {
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200308 label = "hsusb-ipa-in-0";
309 qcom,usb-bam-mem-type = <0>;
310 qcom,bam-type = <1>;
311 qcom,dir = <1>;
312 qcom,pipe-num = <0>;
313 qcom,peer-bam = <2>;
Manu Gautam6afd5872012-07-25 09:16:55 +0530314 qcom,dst-bam-physical-address = <0xf9a44000>;
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200315 qcom,dst-bam-pipe-index = <0>;
316 qcom,data-fifo-offset = <0x300>;
317 qcom,data-fifo-size = <0x1e00>;
318 qcom,descriptor-fifo-offset = <0>;
319 qcom,descriptor-fifo-size = <0x300>;
Manu Gautam6afd5872012-07-25 09:16:55 +0530320 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300321 };