blob: 0d27cb04d62105c0dc03f6b4df9f990d16871a76 [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 Vennapusa94f14432014-03-24 13:45:40 +0530159- qcom,usb2-enable-uicc: If present, usb2 port will be used for uicc card connection.
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530160
161Example MSM HSUSB EHCI controller device node :
162 ehci: qcom,ehci-host@f9a55000 {
163 compatible = "qcom,ehci-host";
164 reg = <0xf9a55000 0x400>;
165 interrupts = <0 134 0>, <0 140 0>;
166 interrupt-names = "core_irq", "async_irq";
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530167 hsusb_vdd_dig-supply = <&pm8841_s2_corner>;
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530168 HSUSB_1p8-supply = <&pm8941_l6>;
169 HSUSB_3p3-supply = <&pm8941_l24>;
170 qcom,usb2-enable-hsphy2;
171 qcom,usb2-power-budget = <500>;
Vijayavardhan Vennapusa916bcdb2013-08-16 13:25:11 +0530172 qcom,vdd-voltage-level = <1 2 3 5 7>;
Vijayavardhan Vennapusa94f14432014-03-24 13:45:40 +0530173 qcom,usb2-enable-uicc;
Vijayavardhan Vennapusa1f5da0b2013-01-08 20:03:57 +0530174 };
175
Manu Gautam43c61a12012-08-22 17:09:37 -0700176ANDROID USB:
177
178Required properties:
179- compatible: should be "qcom,android-usb"
180
181Optional properties :
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530182- reg : offset and length of memory region that is used by device to
Manu Gautam43c61a12012-08-22 17:09:37 -0700183 update USB PID and serial numbers used by bootloader in DLOAD mode.
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530184- qcom,android-usb-swfi-latency : value to be used by device to vote
185 for DMA latency in microsecs.
Chiranjeevi Velempati9d797662013-04-22 15:45:38 +0530186- qcom,android-usb-cdrom : if this property is present then device creates
187 a new LUN as CD-ROM
wujin269684c2013-09-02 17:51:38 +0800188- qcom,android-usb-internal-ums : if this property is present then device
Mayank Rana142fe412013-11-11 14:16:30 +0530189 creates a new LUN as internal usb mass storage.
190- qcom,streaming-func : add list of usb function name. If mention usb function
191 is being enable as part of USB composition, streaming mode is enable with
192 usb device controller to get better throughput. NOTE: Inverted CRC and
193 turnaround timeout is observed on enabling streaming. Hence it is required
194 to see these errors and number of erros on enabling this at USB level to make
195 final decision to enable this feature or not.
Manu Gautam43c61a12012-08-22 17:09:37 -0700196Example Android USB device node :
197 android_usb@fc42b0c8 {
198 compatible = "qcom,android-usb";
199 reg = <0xfc42b0c8 0xc8>;
Vijayavardhan Vennapusa8ceade82012-11-01 15:11:21 +0530200 qcom,android-usb-swfi-latency = <1>;
Mayank Rana142fe412013-11-11 14:16:30 +0530201 qcom,streaming-func = "rndis","mtp";
Manu Gautam43c61a12012-08-22 17:09:37 -0700202 };
203
204
Shimrit Malichi255b5342012-08-02 21:01:43 +0300205BAM:
206
207Required properties:
208- compatible: should be "qcom,usb-bam-msm"
Manu Gautam6afd5872012-07-25 09:16:55 +0530209- reg : pairs of physical base addresses and region sizes
210 of all the memory mapped BAM devices present
Jack Phamd61ff562012-11-21 19:25:53 +0200211- reg-names : Register region name(s), in 1-1 correspondence with the
212 registers in 'reg'. This list should contain at least as many names
213 as the number of unique values given in both 'usb-active-bam' and
214 all the subnodes' 'usb-bam-type' properties.
215
216 If SSUSB_BAM is used, "ssusb" should be present.
217 If HSUSB_BAM is used, "hsusb" should be present.
218 If HSIC_BAM is used, "hsic" should be present.
219
220 If a QSCRATCH RAM1 register is designated for providing USB3
221 private memory to use as a BAM FIFO, specify "qscratch_ram1_reg".
Manu Gautam6afd5872012-07-25 09:16:55 +0530222- interrupts: IRQ lines for BAM devices
Jack Phamd61ff562012-11-21 19:25:53 +0200223- interrupt-names: BAM interrupt name(s), in 1-1 correspondence with
224 'interrupts' above.
225
226 If SSUSB_BAM is used, "ssusb" should be present.
227 If HSUSB_BAM is used, "hsusb" should be present.
228 If HSIC_BAM is used, "hsic" should be present.
Shimrit Malichi255b5342012-08-02 21:01:43 +0300229- qcom,usb-bam-num-pipes: max number of pipes that can be used
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700230
231Optional properties:
232- qcom,usb-bam-fifo-baseaddr: base address for bam pipe's data and descriptor
233 fifos. This can be on chip memory (ocimem) or usb private memory. This
234 property is required if sub-node's mem-type is ocimem or usb private mem.
Shimrit Malichi255b5342012-08-02 21:01:43 +0300235
236A number of USB BAM pipe parameters are represented as sub-nodes:
237
238Subnode Required:
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200239- label: a string describing uniquely the usb bam pipe. The string can be
240 constracted as follows: <core>-<peer>-<direction>-<pipe num>.
241 core options: hsusb, ssusb/dwc3, hsic
242 peer options: qdss, ipa, a2
243 direction options: in (from peer to usb), out (from usb to peer)
244 pipe num options: 0..127
Manu Gautam6afd5872012-07-25 09:16:55 +0530245- qcom,usb-bam-mem-type: Type of memory used by this PIPE. Can be one of
246 0 - Uses SPS's dedicated pipe memory
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700247 1 - USB's private memory residing @ 'qcom,usb-bam-fifo-baseaddr'
Manu Gautam6afd5872012-07-25 09:16:55 +0530248 2 - System RAM allocated by driver
Vamsi Krishnafd09ddd2013-03-27 15:39:49 -0700249 3 - OCI memory residing @ 'qcom,usb-bam-fifo-baseaddr'
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200250- qcom,bam-type: BAM type can be one of
251 0 - SSUSB_BAM
252 1 - HSUSB_BAM
253 2 - HSIC_BAM
254- qcom,dir: pipe direction
255 0 - from usb (out)
256 1 - to usb (in)
257- qcom,pipe-num: pipe number
258- qcom,peer-bam: peer BAM can be one of
259 0 - A2_P_BAM
260 1 - QDSS_P_BAM
261 2 - IPA_P_BAM
Shimrit Malichi255b5342012-08-02 21:01:43 +0300262- qcom,data-fifo-size: data fifo size
Shimrit Malichi255b5342012-08-02 21:01:43 +0300263- qcom,descriptor-fifo-size: descriptor fifo size
264
Manu Gautam355270a2012-12-21 16:52:50 +0530265Optional Properties for Subnode:
266- qcom,reset-bam-on-connect: If present then BAM is RESET before connecting
267 pipe. This may be required if BAM peripheral is also reset before connect.
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200268- qcom,dst-bam-physical-address: destination BAM physical address
269- qcom,dst-bam-pipe-index: destination BAM pipe index
270- qcom,src-bam-physical-address: source BAM physical address
271- qcom,src-bam-pipe-index: source BAM pipe index
272- qcom,data-fifo-offset: data fifo offset address
273- qcom,descriptor-fifo-offset: descriptor fifo offset address
Manu Gautam355270a2012-12-21 16:52:50 +0530274
Manu Gautamd21e2282012-08-23 13:38:50 -0700275Optional properties :
276- qcom,ignore-core-reset-ack: If present then BAM ignores ACK from USB core
277 while performing PIPE RESET
repo sync985819e2013-01-16 19:37:05 +0200278- qcom,disable-clk-gating: If present then disable BAM clock gating.
279
Shimrit Malichi255b5342012-08-02 21:01:43 +0300280Example USB BAM controller device node:
281
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200282 qcom,usbbam@f9a44000 {
Shimrit Malichi255b5342012-08-02 21:01:43 +0300283 compatible = "qcom,usb-bam-msm";
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200284 reg = <0xf9a44000 0x11000>;
285 reg-names = "hsusb";
286 interrupts = <0 135 0>;
287 interrupt-names = "hsusb";
Shimrit Malichi255b5342012-08-02 21:01:43 +0300288 qcom,usb-bam-num-pipes = <16>;
Manu Gautamd21e2282012-08-23 13:38:50 -0700289 qcom,ignore-core-reset-ack;
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200290 qcom,disable-clk-gating;
Shimrit Malichi255b5342012-08-02 21:01:43 +0300291
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200292 qcom,pipe0 {
293 label = "hsusb-ipa-out-0";
294 qcom,usb-bam-mem-type = <0>;
295 qcom,bam-type = <1>;
296 qcom,dir = <0>;
297 qcom,pipe-num = <0>;
298 qcom,peer-bam = <2>;
299 qcom,src-bam-physical-address = <0xf9a44000>;
300 qcom,src-bam-pipe-index = <1>;
301 qcom,data-fifo-offset = <0x2200>;
302 qcom,data-fifo-size = <0x1e00>;
303 qcom,descriptor-fifo-offset = <0x2100>;
304 qcom,descriptor-fifo-size = <0x100>;
305 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300306 qcom,pipe1 {
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200307 label = "hsusb-ipa-in-0";
308 qcom,usb-bam-mem-type = <0>;
309 qcom,bam-type = <1>;
310 qcom,dir = <1>;
311 qcom,pipe-num = <0>;
312 qcom,peer-bam = <2>;
Manu Gautam6afd5872012-07-25 09:16:55 +0530313 qcom,dst-bam-physical-address = <0xf9a44000>;
Shimrit Malichidbf43d72013-03-16 03:32:27 +0200314 qcom,dst-bam-pipe-index = <0>;
315 qcom,data-fifo-offset = <0x300>;
316 qcom,data-fifo-size = <0x1e00>;
317 qcom,descriptor-fifo-offset = <0>;
318 qcom,descriptor-fifo-size = <0x300>;
Manu Gautam6afd5872012-07-25 09:16:55 +0530319 };
Shimrit Malichi255b5342012-08-02 21:01:43 +0300320 };