blob: fcafe11e7503a6dba9ac78ea504e39e1ac9e63cc [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 Vennapusa94f14432014-03-24 13:45:40 +0530162- qcom,usb2-enable-uicc: If present, usb2 port will be used for uicc card connection.
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530163
164Example MSM HSUSB EHCI controller device node :
165 ehci: qcom,ehci-host@f9a55000 {
166 compatible = "qcom,ehci-host";
167 reg = <0xf9a55000 0x400>;
168 interrupts = <0 134 0>, <0 140 0>;
169 interrupt-names = "core_irq", "async_irq";
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530170 hsusb_vdd_dig-supply = <&pm8841_s2_corner>;
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530171 HSUSB_1p8-supply = <&pm8941_l6>;
172 HSUSB_3p3-supply = <&pm8941_l24>;
173 qcom,usb2-enable-hsphy2;
174 qcom,usb2-power-budget = <500>;
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530175 qcom,vdd-voltage-level = <1 2 3 5 7>;
Vijayavardhan Vennapusa94f14432014-03-24 13:45:40 +0530176 qcom,usb2-enable-uicc;
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530177 };
178
Manu Gautam43c61a12012-08-22 17:09:37 -0700179ANDROID USB:
180
181Required properties:
182- compatible: should be "qcom,android-usb"
183
184Optional properties :
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530185- reg : offset and length of memory region that is used by device to
Manu Gautam43c61a12012-08-22 17:09:37 -0700186 update USB PID and serial numbers used by bootloader in DLOAD mode.
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530187- qcom,android-usb-swfi-latency : value to be used by device to vote
188 for DMA latency in microsecs.
Chiranjeevi Velempati9d797662013-04-22 15:45:38 +0530189- qcom,android-usb-cdrom : if this property is present then device creates
190 a new LUN as CD-ROM
wujin269684c2013-09-02 17:51:38 +0800191- qcom,android-usb-internal-ums : if this property is present then device
Mayank Rana142fe412013-11-11 14:16:30 +0530192 creates a new LUN as internal usb mass storage.
193- qcom,streaming-func : add list of usb function name. If mention usb function
194 is being enable as part of USB composition, streaming mode is enable with
195 usb device controller to get better throughput. NOTE: Inverted CRC and
196 turnaround timeout is observed on enabling streaming. Hence it is required
197 to see these errors and number of erros on enabling this at USB level to make
198 final decision to enable this feature or not.
Manu Gautam43c61a12012-08-22 17:09:37 -0700199Example Android USB device node :
200 android_usb@fc42b0c8 {
201 compatible = "qcom,android-usb";
202 reg = <0xfc42b0c8 0xc8>;
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530203 qcom,android-usb-swfi-latency = <1>;
Mayank Rana142fe412013-11-11 14:16:30 +0530204 qcom,streaming-func = "rndis","mtp";
Manu Gautam43c61a12012-08-22 17:09:37 -0700205 };
206
207
Shimrit Malichi255b5342012-08-02 21:01:43 +0300208BAM:
209
210Required properties:
211- compatible: should be "qcom,usb-bam-msm"
Manu Gautam6afd5872012-07-25 09:16:55 +0530212- reg : pairs of physical base addresses and region sizes
213 of all the memory mapped BAM devices present
Jack Phamd61ff562012-11-21 19:25:53 +0200214- reg-names : Register region name(s), in 1-1 correspondence with the
215 registers in 'reg'. This list should contain at least as many names
216 as the number of unique values given in both 'usb-active-bam' and
217 all the subnodes' 'usb-bam-type' properties.
218
219 If SSUSB_BAM is used, "ssusb" should be present.
220 If HSUSB_BAM is used, "hsusb" should be present.
221 If HSIC_BAM is used, "hsic" should be present.
222
223 If a QSCRATCH RAM1 register is designated for providing USB3
224 private memory to use as a BAM FIFO, specify "qscratch_ram1_reg".
Manu Gautam6afd5872012-07-25 09:16:55 +0530225- interrupts: IRQ lines for BAM devices
Jack Phamd61ff562012-11-21 19:25:53 +0200226- interrupt-names: BAM interrupt name(s), in 1-1 correspondence with
227 'interrupts' above.
228
229 If SSUSB_BAM is used, "ssusb" should be present.
230 If HSUSB_BAM is used, "hsusb" should be present.
231 If HSIC_BAM is used, "hsic" should be present.
Shimrit Malichi255b5342012-08-02 21:01:43 +0300232- qcom,usb-bam-num-pipes: max number of pipes that can be used
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700233
234Optional properties:
235- qcom,usb-bam-fifo-baseaddr: base address for bam pipe's data and descriptor
236 fifos. This can be on chip memory (ocimem) or usb private memory. This
237 property is required if sub-node's mem-type is ocimem or usb private mem.
Shimrit Malichi255b5342012-08-02 21:01:43 +0300238
239A number of USB BAM pipe parameters are represented as sub-nodes:
240
241Subnode Required:
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200242- label: a string describing uniquely the usb bam pipe. The string can be
243 constracted as follows: <core>-<peer>-<direction>-<pipe num>.
244 core options: hsusb, ssusb/dwc3, hsic
245 peer options: qdss, ipa, a2
246 direction options: in (from peer to usb), out (from usb to peer)
247 pipe num options: 0..127
Manu Gautam6afd5872012-07-25 09:16:55 +0530248- qcom,usb-bam-mem-type: Type of memory used by this PIPE. Can be one of
249 0 - Uses SPS's dedicated pipe memory
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700250 1 - USB's private memory residing @ 'qcom,usb-bam-fifo-baseaddr'
Manu Gautam6afd5872012-07-25 09:16:55 +0530251 2 - System RAM allocated by driver
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700252 3 - OCI memory residing @ 'qcom,usb-bam-fifo-baseaddr'
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200253- qcom,bam-type: BAM type can be one of
254 0 - SSUSB_BAM
255 1 - HSUSB_BAM
256 2 - HSIC_BAM
257- qcom,dir: pipe direction
258 0 - from usb (out)
259 1 - to usb (in)
260- qcom,pipe-num: pipe number
261- qcom,peer-bam: peer BAM can be one of
262 0 - A2_P_BAM
263 1 - QDSS_P_BAM
264 2 - IPA_P_BAM
Shimrit Malichi255b5342012-08-02 21:01:43 +0300265- qcom,data-fifo-size: data fifo size
Shimrit Malichi255b5342012-08-02 21:01:43 +0300266- qcom,descriptor-fifo-size: descriptor fifo size
267
Manu Gautam355270a2012-12-21 16:52:50 +0530268Optional Properties for Subnode:
269- qcom,reset-bam-on-connect: If present then BAM is RESET before connecting
270 pipe. This may be required if BAM peripheral is also reset before connect.
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200271- qcom,dst-bam-physical-address: destination BAM physical address
272- qcom,dst-bam-pipe-index: destination BAM pipe index
273- qcom,src-bam-physical-address: source BAM physical address
274- qcom,src-bam-pipe-index: source BAM pipe index
275- qcom,data-fifo-offset: data fifo offset address
276- qcom,descriptor-fifo-offset: descriptor fifo offset address
Manu Gautam355270a2012-12-21 16:52:50 +0530277
Manu Gautamd21e2282012-08-23 13:38:50 -0700278Optional properties :
279- qcom,ignore-core-reset-ack: If present then BAM ignores ACK from USB core
280 while performing PIPE RESET
repo sync985819e2013-01-16 19:37:05 +0200281- qcom,disable-clk-gating: If present then disable BAM clock gating.
282
Shimrit Malichi255b5342012-08-02 21:01:43 +0300283Example USB BAM controller device node:
284
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200285 qcom,usbbam@f9a44000 {
Shimrit Malichi255b5342012-08-02 21:01:43 +0300286 compatible = "qcom,usb-bam-msm";
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200287 reg = <0xf9a44000 0x11000>;
288 reg-names = "hsusb";
289 interrupts = <0 135 0>;
290 interrupt-names = "hsusb";
Shimrit Malichi255b5342012-08-02 21:01:43 +0300291 qcom,usb-bam-num-pipes = <16>;
Manu Gautamd21e2282012-08-23 13:38:50 -0700292 qcom,ignore-core-reset-ack;
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200293 qcom,disable-clk-gating;
Shimrit Malichi255b5342012-08-02 21:01:43 +0300294
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200295 qcom,pipe0 {
296 label = "hsusb-ipa-out-0";
297 qcom,usb-bam-mem-type = <0>;
298 qcom,bam-type = <1>;
299 qcom,dir = <0>;
300 qcom,pipe-num = <0>;
301 qcom,peer-bam = <2>;
302 qcom,src-bam-physical-address = <0xf9a44000>;
303 qcom,src-bam-pipe-index = <1>;
304 qcom,data-fifo-offset = <0x2200>;
305 qcom,data-fifo-size = <0x1e00>;
306 qcom,descriptor-fifo-offset = <0x2100>;
307 qcom,descriptor-fifo-size = <0x100>;
308 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300309 qcom,pipe1 {
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200310 label = "hsusb-ipa-in-0";
311 qcom,usb-bam-mem-type = <0>;
312 qcom,bam-type = <1>;
313 qcom,dir = <1>;
314 qcom,pipe-num = <0>;
315 qcom,peer-bam = <2>;
Manu Gautam6afd5872012-07-25 09:16:55 +0530316 qcom,dst-bam-physical-address = <0xf9a44000>;
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200317 qcom,dst-bam-pipe-index = <0>;
318 qcom,data-fifo-offset = <0x300>;
319 qcom,data-fifo-size = <0x1e00>;
320 qcom,descriptor-fifo-offset = <0>;
321 qcom,descriptor-fifo-size = <0x300>;
Manu Gautam6afd5872012-07-25 09:16:55 +0530322 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300323 };