blob: 623a23c0507ae9f928af00d208183ba8e4535379 [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.
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +053096
97Example HSUSB OTG controller device node :
David Brown225abee2012-02-09 22:28:50 -080098 usb@f9690000 {
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +053099 compatible = "qcom,hsusb-otg";
David Brown225abee2012-02-09 22:28:50 -0800100 reg = <0xf9690000 0x400>;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530101 interrupts = <134>;
Jack Pham3f4459e2012-09-28 15:55:16 -0700102 interrupt-names = "core_irq";
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530103
104 qcom,hsusb-otg-phy-type = <2>;
105 qcom,hsusb-otg-mode = <1>;
106 qcom,hsusb-otg-otg-control = <1>;
Manu Gautambd53fba2012-07-31 16:13:06 +0530107 qcom,hsusb-otg-disable-reset;
Manu Gautam0ddbd922012-09-21 17:17:38 +0530108 qcom,hsusb-otg-pnoc-errata-fix;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530109 qcom,hsusb-otg-default-mode = <2>;
David Brown225abee2012-02-09 22:28:50 -0800110 qcom,hsusb-otg-phy-init-seq = <0x01 0x90 0xffffffff>;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530111 qcom,hsusb-otg-power-budget = <500>;
112 qcom,hsusb-otg-pclk-src-name = "dfab_usb_clk";
Ido Shayevitza7114b92013-01-13 13:34:47 +0200113 qcom,hsusb-otg-lpm-on-dev-suspend;
Ido Shayevitz26193352013-01-21 23:16:54 +0200114 qcom,hsusb-otg-clk-always-on-workaround;
Mayank Rana0f286cf2013-02-27 11:43:27 +0530115 hsusb_vdd_dig-supply = <&pm8226_s1_corner>;
116 HSUSB_1p8-supply = <&pm8226_l10>;
117 HSUSB_3p3-supply = <&pm8226_l20>;
118 qcom,vdd-voltage-level = <1 5 7>;
Vamsi Krishna1a1684b2013-03-02 16:14:52 -0800119 qcom,dp-manual-pullup;
Saket Saurabhb06a8c62013-11-25 15:17:23 +0530120 qcom,disable-retention-with-vdd-min;
Vijayavardhan Vennapusa2239b2b2013-06-28 13:16:29 +0530121 qcom,hsusb-otg-dpsehv-int = <49>;
122 qcom,hsusb-otg-dmsehv-int = <58>;
Manu Gautam2e8ac102012-08-31 11:41:16 -0700123 qcom,msm_bus,name = "usb2";
124 qcom,msm_bus,num_cases = <2>;
125 qcom,msm_bus,active_only = <0>;
126 qcom,msm_bus,num_paths = <1>;
127 qcom,msm_bus,vectors =
128 <87 512 0 0>,
129 <87 512 60000000 960000000>;
Pavankumar Kondetieaea7fe2011-10-27 14:46:45 +0530130 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300131
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530132MSM HSUSB EHCI controller
133
134Required properties :
135- compatible : should be "qcom,ehci-host"
136- reg : offset and length of the register set in the memory map
137- interrupts: IRQ lines used by this controller
138- interrupt-names : Required interrupt resource entries are:
139 HSUSB EHCI expects "core_irq" and optionally "async_irq".
140- <supply-name>-supply: handle to the regulator device tree node
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530141 Required "supply-name" is either "hsusb_vdd_dig" or "HSUSB_VDDCX"
142 "HSUSB_1p8-supply" "HSUSB_3p3-supply".
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530143- qcom,usb2-power-budget: maximum vbus power (in mA) that can be provided.
144
145Optional properties :
146- qcom,usb2-enable-hsphy2: If present, select second PHY for USB operation.
Hemant Kumara7d531d2013-06-18 22:12:18 -0700147- qcom,resume-gpio: if present then peripheral connected to usb controller
148 cannot wakeup from XO shutdown using in-band usb bus resume. Use resume
149 gpio to wakeup peripheral.
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530150- qcom,vdd-voltage-level: This property must be a list of five integer
151 values (no, 0.5vsuspend, 0.75suspend, min, max) where each value respresents
152 either a voltage in microvolts or a value corresponding to voltage corner.
153 First value represents value to vote when USB is not at all active, second
154 value represents value to vote when target is not connected to dock during low
155 power mode, third value represents vlaue to vote when target is connected to dock
156 and no peripheral connected over dock during low power mode, fourth value represents
157 minimum value to vote when USB is operational, fifth item represents maximum value
158 to vote for USB is operational.
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530159
160Example MSM HSUSB EHCI controller device node :
161 ehci: qcom,ehci-host@f9a55000 {
162 compatible = "qcom,ehci-host";
163 reg = <0xf9a55000 0x400>;
164 interrupts = <0 134 0>, <0 140 0>;
165 interrupt-names = "core_irq", "async_irq";
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530166 hsusb_vdd_dig-supply = <&pm8841_s2_corner>;
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530167 HSUSB_1p8-supply = <&pm8941_l6>;
168 HSUSB_3p3-supply = <&pm8941_l24>;
169 qcom,usb2-enable-hsphy2;
170 qcom,usb2-power-budget = <500>;
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530171 qcom,vdd-voltage-level = <1 2 3 5 7>;
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530172 };
173
Manu Gautam43c61a12012-08-22 17:09:37 -0700174ANDROID USB:
175
176Required properties:
177- compatible: should be "qcom,android-usb"
178
179Optional properties :
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530180- reg : offset and length of memory region that is used by device to
Manu Gautam43c61a12012-08-22 17:09:37 -0700181 update USB PID and serial numbers used by bootloader in DLOAD mode.
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530182- qcom,android-usb-swfi-latency : value to be used by device to vote
183 for DMA latency in microsecs.
Chiranjeevi Velempati9d797662013-04-22 15:45:38 +0530184- qcom,android-usb-cdrom : if this property is present then device creates
185 a new LUN as CD-ROM
wujin269684c2013-09-02 17:51:38 +0800186- qcom,android-usb-internal-ums : if this property is present then device
Mayank Rana142fe412013-11-11 14:16:30 +0530187 creates a new LUN as internal usb mass storage.
188- qcom,streaming-func : add list of usb function name. If mention usb function
189 is being enable as part of USB composition, streaming mode is enable with
190 usb device controller to get better throughput. NOTE: Inverted CRC and
191 turnaround timeout is observed on enabling streaming. Hence it is required
192 to see these errors and number of erros on enabling this at USB level to make
193 final decision to enable this feature or not.
Manu Gautam43c61a12012-08-22 17:09:37 -0700194Example Android USB device node :
195 android_usb@fc42b0c8 {
196 compatible = "qcom,android-usb";
197 reg = <0xfc42b0c8 0xc8>;
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530198 qcom,android-usb-swfi-latency = <1>;
Mayank Rana142fe412013-11-11 14:16:30 +0530199 qcom,streaming-func = "rndis","mtp";
Manu Gautam43c61a12012-08-22 17:09:37 -0700200 };
201
202
Shimrit Malichi255b5342012-08-02 21:01:43 +0300203BAM:
204
205Required properties:
206- compatible: should be "qcom,usb-bam-msm"
Manu Gautam6afd5872012-07-25 09:16:55 +0530207- reg : pairs of physical base addresses and region sizes
208 of all the memory mapped BAM devices present
Jack Phamd61ff562012-11-21 19:25:53 +0200209- reg-names : Register region name(s), in 1-1 correspondence with the
210 registers in 'reg'. This list should contain at least as many names
211 as the number of unique values given in both 'usb-active-bam' and
212 all the subnodes' 'usb-bam-type' properties.
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.
217
218 If a QSCRATCH RAM1 register is designated for providing USB3
219 private memory to use as a BAM FIFO, specify "qscratch_ram1_reg".
Manu Gautam6afd5872012-07-25 09:16:55 +0530220- interrupts: IRQ lines for BAM devices
Jack Phamd61ff562012-11-21 19:25:53 +0200221- interrupt-names: BAM interrupt name(s), in 1-1 correspondence with
222 'interrupts' above.
223
224 If SSUSB_BAM is used, "ssusb" should be present.
225 If HSUSB_BAM is used, "hsusb" should be present.
226 If HSIC_BAM is used, "hsic" should be present.
Shimrit Malichi255b5342012-08-02 21:01:43 +0300227- qcom,usb-bam-num-pipes: max number of pipes that can be used
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700228
229Optional properties:
230- qcom,usb-bam-fifo-baseaddr: base address for bam pipe's data and descriptor
231 fifos. This can be on chip memory (ocimem) or usb private memory. This
232 property is required if sub-node's mem-type is ocimem or usb private mem.
Shimrit Malichi255b5342012-08-02 21:01:43 +0300233
234A number of USB BAM pipe parameters are represented as sub-nodes:
235
236Subnode Required:
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200237- label: a string describing uniquely the usb bam pipe. The string can be
238 constracted as follows: <core>-<peer>-<direction>-<pipe num>.
239 core options: hsusb, ssusb/dwc3, hsic
240 peer options: qdss, ipa, a2
241 direction options: in (from peer to usb), out (from usb to peer)
242 pipe num options: 0..127
Manu Gautam6afd5872012-07-25 09:16:55 +0530243- qcom,usb-bam-mem-type: Type of memory used by this PIPE. Can be one of
244 0 - Uses SPS's dedicated pipe memory
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700245 1 - USB's private memory residing @ 'qcom,usb-bam-fifo-baseaddr'
Manu Gautam6afd5872012-07-25 09:16:55 +0530246 2 - System RAM allocated by driver
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700247 3 - OCI memory residing @ 'qcom,usb-bam-fifo-baseaddr'
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200248- qcom,bam-type: BAM type can be one of
249 0 - SSUSB_BAM
250 1 - HSUSB_BAM
251 2 - HSIC_BAM
252- qcom,dir: pipe direction
253 0 - from usb (out)
254 1 - to usb (in)
255- qcom,pipe-num: pipe number
256- qcom,peer-bam: peer BAM can be one of
257 0 - A2_P_BAM
258 1 - QDSS_P_BAM
259 2 - IPA_P_BAM
Shimrit Malichi255b5342012-08-02 21:01:43 +0300260- qcom,data-fifo-size: data fifo size
Shimrit Malichi255b5342012-08-02 21:01:43 +0300261- qcom,descriptor-fifo-size: descriptor fifo size
262
Manu Gautam355270a2012-12-21 16:52:50 +0530263Optional Properties for Subnode:
264- qcom,reset-bam-on-connect: If present then BAM is RESET before connecting
265 pipe. This may be required if BAM peripheral is also reset before connect.
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200266- qcom,dst-bam-physical-address: destination BAM physical address
267- qcom,dst-bam-pipe-index: destination BAM pipe index
268- qcom,src-bam-physical-address: source BAM physical address
269- qcom,src-bam-pipe-index: source BAM pipe index
270- qcom,data-fifo-offset: data fifo offset address
271- qcom,descriptor-fifo-offset: descriptor fifo offset address
Manu Gautam355270a2012-12-21 16:52:50 +0530272
Manu Gautamd21e2282012-08-23 13:38:50 -0700273Optional properties :
274- qcom,ignore-core-reset-ack: If present then BAM ignores ACK from USB core
275 while performing PIPE RESET
repo sync985819e2013-01-16 19:37:05 +0200276- qcom,disable-clk-gating: If present then disable BAM clock gating.
277
Shimrit Malichi255b5342012-08-02 21:01:43 +0300278Example USB BAM controller device node:
279
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200280 qcom,usbbam@f9a44000 {
Shimrit Malichi255b5342012-08-02 21:01:43 +0300281 compatible = "qcom,usb-bam-msm";
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200282 reg = <0xf9a44000 0x11000>;
283 reg-names = "hsusb";
284 interrupts = <0 135 0>;
285 interrupt-names = "hsusb";
Shimrit Malichi255b5342012-08-02 21:01:43 +0300286 qcom,usb-bam-num-pipes = <16>;
Manu Gautamd21e2282012-08-23 13:38:50 -0700287 qcom,ignore-core-reset-ack;
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200288 qcom,disable-clk-gating;
Shimrit Malichi255b5342012-08-02 21:01:43 +0300289
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200290 qcom,pipe0 {
291 label = "hsusb-ipa-out-0";
292 qcom,usb-bam-mem-type = <0>;
293 qcom,bam-type = <1>;
294 qcom,dir = <0>;
295 qcom,pipe-num = <0>;
296 qcom,peer-bam = <2>;
297 qcom,src-bam-physical-address = <0xf9a44000>;
298 qcom,src-bam-pipe-index = <1>;
299 qcom,data-fifo-offset = <0x2200>;
300 qcom,data-fifo-size = <0x1e00>;
301 qcom,descriptor-fifo-offset = <0x2100>;
302 qcom,descriptor-fifo-size = <0x100>;
303 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300304 qcom,pipe1 {
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200305 label = "hsusb-ipa-in-0";
306 qcom,usb-bam-mem-type = <0>;
307 qcom,bam-type = <1>;
308 qcom,dir = <1>;
309 qcom,pipe-num = <0>;
310 qcom,peer-bam = <2>;
Manu Gautam6afd5872012-07-25 09:16:55 +0530311 qcom,dst-bam-physical-address = <0xf9a44000>;
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200312 qcom,dst-bam-pipe-index = <0>;
313 qcom,data-fifo-offset = <0x300>;
314 qcom,data-fifo-size = <0x1e00>;
315 qcom,descriptor-fifo-offset = <0>;
316 qcom,descriptor-fifo-size = <0x300>;
Manu Gautam6afd5872012-07-25 09:16:55 +0530317 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300318 };