xref: /openbmc/linux/Documentation/devicetree/bindings/usb/am33xx-usb.txt (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1a0b311efSSebastian Andrzej Siewior  AM33xx MUSB
2a0b311efSSebastian Andrzej Siewior~~~~~~~~~~~~~~~
3a0b311efSSebastian Andrzej Siewior- compatible: ti,am33xx-usb
4a0b311efSSebastian Andrzej Siewior- reg: offset and length of the usbss register sets
565145677SAjay Kumar Gupta- ti,hwmods : must be "usb_otg_hs"
6a0b311efSSebastian Andrzej Siewior
758156258SGeert UytterhoevenThe glue layer contains multiple child nodes. It is required to have
8a0b311efSSebastian Andrzej Siewiorat least a control module node, USB node and a PHY node. The second USB
958156258SGeert Uytterhoevennode and its PHY node are optional. The DMA node is also optional.
10a0b311efSSebastian Andrzej Siewior
11a0b311efSSebastian Andrzej SiewiorReset module
12a0b311efSSebastian Andrzej Siewior~~~~~~~~~~~~
13a0b311efSSebastian Andrzej Siewior- compatible: ti,am335x-usb-ctrl-module
14a0b311efSSebastian Andrzej Siewior- reg: offset and length of the "USB control registers" in the "Control
15a0b311efSSebastian Andrzej Siewior  Module" block. A second offset and length for the USB wake up control
16a0b311efSSebastian Andrzej Siewior  in the same memory block.
17a0b311efSSebastian Andrzej Siewior- reg-names: "phy_ctrl" for the "USB control registers" and "wakeup" for
18a0b311efSSebastian Andrzej Siewior  the USB wake up control register.
19a0b311efSSebastian Andrzej Siewior
20a0b311efSSebastian Andrzej SiewiorUSB PHY
21a0b311efSSebastian Andrzej Siewior~~~~~~~
22a0b311efSSebastian Andrzej Siewiorcompatible: ti,am335x-usb-phy
23a0b311efSSebastian Andrzej Siewiorreg: offset and length of the "USB PHY" register space
24a0b311efSSebastian Andrzej Siewiorti,ctrl_mod: reference to the "reset module" node
25a0b311efSSebastian Andrzej Siewiorreg-names: phy
26a0b311efSSebastian Andrzej SiewiorThe PHY should have a "phy" alias numbered properly in the alias
27a0b311efSSebastian Andrzej Siewiornode.
28a0b311efSSebastian Andrzej Siewior
29a0b311efSSebastian Andrzej SiewiorUSB
30a0b311efSSebastian Andrzej Siewior~~~
31a0b311efSSebastian Andrzej Siewior- compatible: ti,musb-am33xx
32a0b311efSSebastian Andrzej Siewior- reg: offset and length of "USB Controller Registers", and offset and
33a0b311efSSebastian Andrzej Siewior  length of "USB Core" register space.
34a0b311efSSebastian Andrzej Siewior- reg-names: control for the ""USB Controller Registers" and "mc" for
35a0b311efSSebastian Andrzej Siewior  "USB Core" register space
36a0b311efSSebastian Andrzej Siewior- interrupts: USB interrupt number
37a0b311efSSebastian Andrzej Siewior- interrupt-names: mc
38a0b311efSSebastian Andrzej Siewior- dr_mode: Should be one of "host", "peripheral" or "otg".
39a0b311efSSebastian Andrzej Siewior- mentor,multipoint: Should be "1" indicating the musb controller supports
4065145677SAjay Kumar Gupta  multipoint. This is a MUSB configuration-specific setting.
41a0b311efSSebastian Andrzej Siewior- mentor,num-eps: Specifies the number of endpoints. This is also a
4265145677SAjay Kumar Gupta  MUSB configuration-specific setting. Should be set to "16"
43a0b311efSSebastian Andrzej Siewior- mentor,ram-bits: Specifies the ram address size. Should be set to "12"
44a0b311efSSebastian Andrzej Siewior- mentor,power: Should be "500". This signifies the controller can supply up to
4565145677SAjay Kumar Gupta  500mA when operating in host mode.
46a0b311efSSebastian Andrzej Siewior- phys: reference to the USB phy
47a0b311efSSebastian Andrzej Siewior- dmas: specifies the dma channels
48a0b311efSSebastian Andrzej Siewior- dma-names: specifies the names of the channels. Use "rxN" for receive
49a0b311efSSebastian Andrzej Siewior  and "txN" for transmit endpoints. N specifies the endpoint number.
50a0b311efSSebastian Andrzej Siewior
51a0b311efSSebastian Andrzej SiewiorThe controller should have an "usb" alias numbered properly in the alias
52a0b311efSSebastian Andrzej Siewiornode.
53a0b311efSSebastian Andrzej Siewior
54a0b311efSSebastian Andrzej SiewiorDMA
55a0b311efSSebastian Andrzej Siewior~~~
56a0b311efSSebastian Andrzej Siewior- compatible: ti,am3359-cppi41
57a0b311efSSebastian Andrzej Siewior- reg: offset and length of the following register spaces: USBSS, USB
58a0b311efSSebastian Andrzej Siewior  CPPI DMA Controller, USB CPPI DMA Scheduler, USB Queue Manager
59a0b311efSSebastian Andrzej Siewior- reg-names: glue, controller, scheduler, queuemgr
60a0b311efSSebastian Andrzej Siewior- #dma-cells: should be set to 2. The first number represents the
61a0b311efSSebastian Andrzej Siewior  endpoint number (0 … 14 for endpoints 1 … 15 on instance 0 and 15 … 29
62a0b311efSSebastian Andrzej Siewior  for endpoints 1 … 15 on instance 1). The second number is 0 for RX and
63a0b311efSSebastian Andrzej Siewior  1 for TX transfers.
64*3a538f8fSKrzysztof Kozlowski- dma-channels: should be set to 30 representing the 15 endpoints for
65a0b311efSSebastian Andrzej Siewior  each USB instance.
66*3a538f8fSKrzysztof Kozlowski- #dma-channels: deprecated
675a2bc4c6SAfzal Mohammed
685a2bc4c6SAfzal MohammedExample:
69a0b311efSSebastian Andrzej Siewior~~~~~~~~
70a0b311efSSebastian Andrzej SiewiorThe following example contains all the nodes as used on am335x-evm:
715a2bc4c6SAfzal Mohammed
72a0b311efSSebastian Andrzej Siewioraliases {
73a0b311efSSebastian Andrzej Siewior	usb0 = &usb0;
74a0b311efSSebastian Andrzej Siewior	usb1 = &usb1;
75a0b311efSSebastian Andrzej Siewior	phy0 = &usb0_phy;
76a0b311efSSebastian Andrzej Siewior	phy1 = &usb1_phy;
77a0b311efSSebastian Andrzej Siewior};
78a0b311efSSebastian Andrzej Siewior
79a0b311efSSebastian Andrzej Siewiorusb: usb@47400000 {
80a0b311efSSebastian Andrzej Siewior	compatible = "ti,am33xx-usb";
81a0b311efSSebastian Andrzej Siewior	reg = <0x47400000 0x1000>;
82a0b311efSSebastian Andrzej Siewior	ranges;
83a0b311efSSebastian Andrzej Siewior	#address-cells = <1>;
84a0b311efSSebastian Andrzej Siewior	#size-cells = <1>;
855a2bc4c6SAfzal Mohammed	ti,hwmods = "usb_otg_hs";
86a0b311efSSebastian Andrzej Siewior
87a0b311efSSebastian Andrzej Siewior	ctrl_mod: control@44e10000 {
88a0b311efSSebastian Andrzej Siewior		compatible = "ti,am335x-usb-ctrl-module";
89a0b311efSSebastian Andrzej Siewior		reg = <0x44e10620 0x10
90a0b311efSSebastian Andrzej Siewior			0x44e10648 0x4>;
91a0b311efSSebastian Andrzej Siewior		reg-names = "phy_ctrl", "wakeup";
92a0b311efSSebastian Andrzej Siewior	};
93a0b311efSSebastian Andrzej Siewior
94a0b311efSSebastian Andrzej Siewior	usb0_phy: usb-phy@47401300 {
95a0b311efSSebastian Andrzej Siewior		compatible = "ti,am335x-usb-phy";
96a0b311efSSebastian Andrzej Siewior		reg = <0x47401300 0x100>;
97a0b311efSSebastian Andrzej Siewior		reg-names = "phy";
98a0b311efSSebastian Andrzej Siewior		ti,ctrl_mod = <&ctrl_mod>;
99f0e11ff8SRob Herring		#phy-cells = <0>;
100a0b311efSSebastian Andrzej Siewior	};
101a0b311efSSebastian Andrzej Siewior
102a0b311efSSebastian Andrzej Siewior	usb0: usb@47401000 {
103a0b311efSSebastian Andrzej Siewior		compatible = "ti,musb-am33xx";
104a0b311efSSebastian Andrzej Siewior		reg = <0x47401400 0x400
105a0b311efSSebastian Andrzej Siewior			0x47401000 0x200>;
106a0b311efSSebastian Andrzej Siewior		reg-names = "mc", "control";
107a0b311efSSebastian Andrzej Siewior
108a0b311efSSebastian Andrzej Siewior		interrupts = <18>;
109a0b311efSSebastian Andrzej Siewior		interrupt-names = "mc";
110a0b311efSSebastian Andrzej Siewior		dr_mode = "otg"
111a0b311efSSebastian Andrzej Siewior		mentor,multipoint = <1>;
112a0b311efSSebastian Andrzej Siewior		mentor,num-eps = <16>;
113a0b311efSSebastian Andrzej Siewior		mentor,ram-bits = <12>;
114a0b311efSSebastian Andrzej Siewior		mentor,power = <500>;
115a0b311efSSebastian Andrzej Siewior		phys = <&usb0_phy>;
116a0b311efSSebastian Andrzej Siewior
117a0b311efSSebastian Andrzej Siewior		dmas = <&cppi41dma  0 0 &cppi41dma  1 0
118a0b311efSSebastian Andrzej Siewior			&cppi41dma  2 0 &cppi41dma  3 0
119a0b311efSSebastian Andrzej Siewior			&cppi41dma  4 0 &cppi41dma  5 0
120a0b311efSSebastian Andrzej Siewior			&cppi41dma  6 0 &cppi41dma  7 0
121a0b311efSSebastian Andrzej Siewior			&cppi41dma  8 0 &cppi41dma  9 0
122a0b311efSSebastian Andrzej Siewior			&cppi41dma 10 0 &cppi41dma 11 0
123a0b311efSSebastian Andrzej Siewior			&cppi41dma 12 0 &cppi41dma 13 0
124a0b311efSSebastian Andrzej Siewior			&cppi41dma 14 0 &cppi41dma  0 1
125a0b311efSSebastian Andrzej Siewior			&cppi41dma  1 1 &cppi41dma  2 1
126a0b311efSSebastian Andrzej Siewior			&cppi41dma  3 1 &cppi41dma  4 1
127a0b311efSSebastian Andrzej Siewior			&cppi41dma  5 1 &cppi41dma  6 1
128a0b311efSSebastian Andrzej Siewior			&cppi41dma  7 1 &cppi41dma  8 1
129a0b311efSSebastian Andrzej Siewior			&cppi41dma  9 1 &cppi41dma 10 1
130a0b311efSSebastian Andrzej Siewior			&cppi41dma 11 1 &cppi41dma 12 1
131a0b311efSSebastian Andrzej Siewior			&cppi41dma 13 1 &cppi41dma 14 1>;
132a0b311efSSebastian Andrzej Siewior		dma-names =
133a0b311efSSebastian Andrzej Siewior			"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
134a0b311efSSebastian Andrzej Siewior			"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
135a0b311efSSebastian Andrzej Siewior			"rx14", "rx15",
136a0b311efSSebastian Andrzej Siewior			"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
137a0b311efSSebastian Andrzej Siewior			"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
138a0b311efSSebastian Andrzej Siewior			"tx14", "tx15";
139a0b311efSSebastian Andrzej Siewior	};
140a0b311efSSebastian Andrzej Siewior
141a0b311efSSebastian Andrzej Siewior	usb1_phy: usb-phy@47401b00 {
142a0b311efSSebastian Andrzej Siewior		compatible = "ti,am335x-usb-phy";
143a0b311efSSebastian Andrzej Siewior		reg = <0x47401b00 0x100>;
144a0b311efSSebastian Andrzej Siewior		reg-names = "phy";
145a0b311efSSebastian Andrzej Siewior		ti,ctrl_mod = <&ctrl_mod>;
146f0e11ff8SRob Herring		#phy-cells = <0>;
147a0b311efSSebastian Andrzej Siewior	};
148a0b311efSSebastian Andrzej Siewior
149a0b311efSSebastian Andrzej Siewior	usb1: usb@47401800 {
150a0b311efSSebastian Andrzej Siewior		compatible = "ti,musb-am33xx";
151a0b311efSSebastian Andrzej Siewior		reg = <0x47401c00 0x400
152a0b311efSSebastian Andrzej Siewior			0x47401800 0x200>;
153a0b311efSSebastian Andrzej Siewior		reg-names = "mc", "control";
154a0b311efSSebastian Andrzej Siewior		interrupts = <19>;
155a0b311efSSebastian Andrzej Siewior		interrupt-names = "mc";
156a0b311efSSebastian Andrzej Siewior		dr_mode = "host"
157a0b311efSSebastian Andrzej Siewior		mentor,multipoint = <1>;
158a0b311efSSebastian Andrzej Siewior		mentor,num-eps = <16>;
159a0b311efSSebastian Andrzej Siewior		mentor,ram-bits = <12>;
160a0b311efSSebastian Andrzej Siewior		mentor,power = <500>;
161a0b311efSSebastian Andrzej Siewior		phys = <&usb1_phy>;
162a0b311efSSebastian Andrzej Siewior
163a0b311efSSebastian Andrzej Siewior		dmas = <&cppi41dma 15 0 &cppi41dma 16 0
164a0b311efSSebastian Andrzej Siewior			&cppi41dma 17 0 &cppi41dma 18 0
165a0b311efSSebastian Andrzej Siewior			&cppi41dma 19 0 &cppi41dma 20 0
166a0b311efSSebastian Andrzej Siewior			&cppi41dma 21 0 &cppi41dma 22 0
167a0b311efSSebastian Andrzej Siewior			&cppi41dma 23 0 &cppi41dma 24 0
168a0b311efSSebastian Andrzej Siewior			&cppi41dma 25 0 &cppi41dma 26 0
169a0b311efSSebastian Andrzej Siewior			&cppi41dma 27 0 &cppi41dma 28 0
170a0b311efSSebastian Andrzej Siewior			&cppi41dma 29 0 &cppi41dma 15 1
171a0b311efSSebastian Andrzej Siewior			&cppi41dma 16 1 &cppi41dma 17 1
172a0b311efSSebastian Andrzej Siewior			&cppi41dma 18 1 &cppi41dma 19 1
173a0b311efSSebastian Andrzej Siewior			&cppi41dma 20 1 &cppi41dma 21 1
174a0b311efSSebastian Andrzej Siewior			&cppi41dma 22 1 &cppi41dma 23 1
175a0b311efSSebastian Andrzej Siewior			&cppi41dma 24 1 &cppi41dma 25 1
176a0b311efSSebastian Andrzej Siewior			&cppi41dma 26 1 &cppi41dma 27 1
177a0b311efSSebastian Andrzej Siewior			&cppi41dma 28 1 &cppi41dma 29 1>;
178a0b311efSSebastian Andrzej Siewior		dma-names =
179a0b311efSSebastian Andrzej Siewior			"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
180a0b311efSSebastian Andrzej Siewior			"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
181a0b311efSSebastian Andrzej Siewior			"rx14", "rx15",
182a0b311efSSebastian Andrzej Siewior			"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
183a0b311efSSebastian Andrzej Siewior			"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
184a0b311efSSebastian Andrzej Siewior			"tx14", "tx15";
185a0b311efSSebastian Andrzej Siewior	};
186a0b311efSSebastian Andrzej Siewior
18748c926cdSMarco Franchi	cppi41dma: dma-controller@7402000 {
188a0b311efSSebastian Andrzej Siewior		compatible = "ti,am3359-cppi41";
189a0b311efSSebastian Andrzej Siewior		reg =  <0x47400000 0x1000
190a0b311efSSebastian Andrzej Siewior			0x47402000 0x1000
191a0b311efSSebastian Andrzej Siewior			0x47403000 0x1000
192a0b311efSSebastian Andrzej Siewior			0x47404000 0x4000>;
193a0b311efSSebastian Andrzej Siewior		reg-names = "glue", "controller", "scheduler", "queuemgr";
194a0b311efSSebastian Andrzej Siewior		interrupts = <17>;
195a0b311efSSebastian Andrzej Siewior		interrupt-names = "glue";
196a0b311efSSebastian Andrzej Siewior		#dma-cells = <2>;
197*3a538f8fSKrzysztof Kozlowski		dma-channels = <30>;
198*3a538f8fSKrzysztof Kozlowski		dma-requests = <256>;
199a0b311efSSebastian Andrzej Siewior	};
2005a2bc4c6SAfzal Mohammed};
201