162306a36Sopenharmony_ci  AM33xx MUSB
262306a36Sopenharmony_ci~~~~~~~~~~~~~~~
362306a36Sopenharmony_ci- compatible: ti,am33xx-usb
462306a36Sopenharmony_ci- reg: offset and length of the usbss register sets
562306a36Sopenharmony_ci- ti,hwmods : must be "usb_otg_hs"
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciThe glue layer contains multiple child nodes. It is required to have
862306a36Sopenharmony_ciat least a control module node, USB node and a PHY node. The second USB
962306a36Sopenharmony_cinode and its PHY node are optional. The DMA node is also optional.
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciReset module
1262306a36Sopenharmony_ci~~~~~~~~~~~~
1362306a36Sopenharmony_ci- compatible: ti,am335x-usb-ctrl-module
1462306a36Sopenharmony_ci- reg: offset and length of the "USB control registers" in the "Control
1562306a36Sopenharmony_ci  Module" block. A second offset and length for the USB wake up control
1662306a36Sopenharmony_ci  in the same memory block.
1762306a36Sopenharmony_ci- reg-names: "phy_ctrl" for the "USB control registers" and "wakeup" for
1862306a36Sopenharmony_ci  the USB wake up control register.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciUSB PHY
2162306a36Sopenharmony_ci~~~~~~~
2262306a36Sopenharmony_cicompatible: ti,am335x-usb-phy
2362306a36Sopenharmony_cireg: offset and length of the "USB PHY" register space
2462306a36Sopenharmony_citi,ctrl_mod: reference to the "reset module" node
2562306a36Sopenharmony_cireg-names: phy
2662306a36Sopenharmony_ciThe PHY should have a "phy" alias numbered properly in the alias
2762306a36Sopenharmony_cinode.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciUSB
3062306a36Sopenharmony_ci~~~
3162306a36Sopenharmony_ci- compatible: ti,musb-am33xx
3262306a36Sopenharmony_ci- reg: offset and length of "USB Controller Registers", and offset and
3362306a36Sopenharmony_ci  length of "USB Core" register space.
3462306a36Sopenharmony_ci- reg-names: control for the ""USB Controller Registers" and "mc" for
3562306a36Sopenharmony_ci  "USB Core" register space
3662306a36Sopenharmony_ci- interrupts: USB interrupt number
3762306a36Sopenharmony_ci- interrupt-names: mc
3862306a36Sopenharmony_ci- dr_mode: Should be one of "host", "peripheral" or "otg".
3962306a36Sopenharmony_ci- mentor,multipoint: Should be "1" indicating the musb controller supports
4062306a36Sopenharmony_ci  multipoint. This is a MUSB configuration-specific setting.
4162306a36Sopenharmony_ci- mentor,num-eps: Specifies the number of endpoints. This is also a
4262306a36Sopenharmony_ci  MUSB configuration-specific setting. Should be set to "16"
4362306a36Sopenharmony_ci- mentor,ram-bits: Specifies the ram address size. Should be set to "12"
4462306a36Sopenharmony_ci- mentor,power: Should be "500". This signifies the controller can supply up to
4562306a36Sopenharmony_ci  500mA when operating in host mode.
4662306a36Sopenharmony_ci- phys: reference to the USB phy
4762306a36Sopenharmony_ci- dmas: specifies the dma channels
4862306a36Sopenharmony_ci- dma-names: specifies the names of the channels. Use "rxN" for receive
4962306a36Sopenharmony_ci  and "txN" for transmit endpoints. N specifies the endpoint number.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciThe controller should have an "usb" alias numbered properly in the alias
5262306a36Sopenharmony_cinode.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciDMA
5562306a36Sopenharmony_ci~~~
5662306a36Sopenharmony_ci- compatible: ti,am3359-cppi41
5762306a36Sopenharmony_ci- reg: offset and length of the following register spaces: USBSS, USB
5862306a36Sopenharmony_ci  CPPI DMA Controller, USB CPPI DMA Scheduler, USB Queue Manager
5962306a36Sopenharmony_ci- reg-names: glue, controller, scheduler, queuemgr
6062306a36Sopenharmony_ci- #dma-cells: should be set to 2. The first number represents the
6162306a36Sopenharmony_ci  endpoint number (0 … 14 for endpoints 1 … 15 on instance 0 and 15 … 29
6262306a36Sopenharmony_ci  for endpoints 1 … 15 on instance 1). The second number is 0 for RX and
6362306a36Sopenharmony_ci  1 for TX transfers.
6462306a36Sopenharmony_ci- dma-channels: should be set to 30 representing the 15 endpoints for
6562306a36Sopenharmony_ci  each USB instance.
6662306a36Sopenharmony_ci- #dma-channels: deprecated
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ciExample:
6962306a36Sopenharmony_ci~~~~~~~~
7062306a36Sopenharmony_ciThe following example contains all the nodes as used on am335x-evm:
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_cialiases {
7362306a36Sopenharmony_ci	usb0 = &usb0;
7462306a36Sopenharmony_ci	usb1 = &usb1;
7562306a36Sopenharmony_ci	phy0 = &usb0_phy;
7662306a36Sopenharmony_ci	phy1 = &usb1_phy;
7762306a36Sopenharmony_ci};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ciusb: usb@47400000 {
8062306a36Sopenharmony_ci	compatible = "ti,am33xx-usb";
8162306a36Sopenharmony_ci	reg = <0x47400000 0x1000>;
8262306a36Sopenharmony_ci	ranges;
8362306a36Sopenharmony_ci	#address-cells = <1>;
8462306a36Sopenharmony_ci	#size-cells = <1>;
8562306a36Sopenharmony_ci	ti,hwmods = "usb_otg_hs";
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci	ctrl_mod: control@44e10000 {
8862306a36Sopenharmony_ci		compatible = "ti,am335x-usb-ctrl-module";
8962306a36Sopenharmony_ci		reg = <0x44e10620 0x10
9062306a36Sopenharmony_ci			0x44e10648 0x4>;
9162306a36Sopenharmony_ci		reg-names = "phy_ctrl", "wakeup";
9262306a36Sopenharmony_ci	};
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci	usb0_phy: usb-phy@47401300 {
9562306a36Sopenharmony_ci		compatible = "ti,am335x-usb-phy";
9662306a36Sopenharmony_ci		reg = <0x47401300 0x100>;
9762306a36Sopenharmony_ci		reg-names = "phy";
9862306a36Sopenharmony_ci		ti,ctrl_mod = <&ctrl_mod>;
9962306a36Sopenharmony_ci		#phy-cells = <0>;
10062306a36Sopenharmony_ci	};
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci	usb0: usb@47401000 {
10362306a36Sopenharmony_ci		compatible = "ti,musb-am33xx";
10462306a36Sopenharmony_ci		reg = <0x47401400 0x400
10562306a36Sopenharmony_ci			0x47401000 0x200>;
10662306a36Sopenharmony_ci		reg-names = "mc", "control";
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci		interrupts = <18>;
10962306a36Sopenharmony_ci		interrupt-names = "mc";
11062306a36Sopenharmony_ci		dr_mode = "otg"
11162306a36Sopenharmony_ci		mentor,multipoint = <1>;
11262306a36Sopenharmony_ci		mentor,num-eps = <16>;
11362306a36Sopenharmony_ci		mentor,ram-bits = <12>;
11462306a36Sopenharmony_ci		mentor,power = <500>;
11562306a36Sopenharmony_ci		phys = <&usb0_phy>;
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci		dmas = <&cppi41dma  0 0 &cppi41dma  1 0
11862306a36Sopenharmony_ci			&cppi41dma  2 0 &cppi41dma  3 0
11962306a36Sopenharmony_ci			&cppi41dma  4 0 &cppi41dma  5 0
12062306a36Sopenharmony_ci			&cppi41dma  6 0 &cppi41dma  7 0
12162306a36Sopenharmony_ci			&cppi41dma  8 0 &cppi41dma  9 0
12262306a36Sopenharmony_ci			&cppi41dma 10 0 &cppi41dma 11 0
12362306a36Sopenharmony_ci			&cppi41dma 12 0 &cppi41dma 13 0
12462306a36Sopenharmony_ci			&cppi41dma 14 0 &cppi41dma  0 1
12562306a36Sopenharmony_ci			&cppi41dma  1 1 &cppi41dma  2 1
12662306a36Sopenharmony_ci			&cppi41dma  3 1 &cppi41dma  4 1
12762306a36Sopenharmony_ci			&cppi41dma  5 1 &cppi41dma  6 1
12862306a36Sopenharmony_ci			&cppi41dma  7 1 &cppi41dma  8 1
12962306a36Sopenharmony_ci			&cppi41dma  9 1 &cppi41dma 10 1
13062306a36Sopenharmony_ci			&cppi41dma 11 1 &cppi41dma 12 1
13162306a36Sopenharmony_ci			&cppi41dma 13 1 &cppi41dma 14 1>;
13262306a36Sopenharmony_ci		dma-names =
13362306a36Sopenharmony_ci			"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
13462306a36Sopenharmony_ci			"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
13562306a36Sopenharmony_ci			"rx14", "rx15",
13662306a36Sopenharmony_ci			"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
13762306a36Sopenharmony_ci			"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
13862306a36Sopenharmony_ci			"tx14", "tx15";
13962306a36Sopenharmony_ci	};
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci	usb1_phy: usb-phy@47401b00 {
14262306a36Sopenharmony_ci		compatible = "ti,am335x-usb-phy";
14362306a36Sopenharmony_ci		reg = <0x47401b00 0x100>;
14462306a36Sopenharmony_ci		reg-names = "phy";
14562306a36Sopenharmony_ci		ti,ctrl_mod = <&ctrl_mod>;
14662306a36Sopenharmony_ci		#phy-cells = <0>;
14762306a36Sopenharmony_ci	};
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci	usb1: usb@47401800 {
15062306a36Sopenharmony_ci		compatible = "ti,musb-am33xx";
15162306a36Sopenharmony_ci		reg = <0x47401c00 0x400
15262306a36Sopenharmony_ci			0x47401800 0x200>;
15362306a36Sopenharmony_ci		reg-names = "mc", "control";
15462306a36Sopenharmony_ci		interrupts = <19>;
15562306a36Sopenharmony_ci		interrupt-names = "mc";
15662306a36Sopenharmony_ci		dr_mode = "host"
15762306a36Sopenharmony_ci		mentor,multipoint = <1>;
15862306a36Sopenharmony_ci		mentor,num-eps = <16>;
15962306a36Sopenharmony_ci		mentor,ram-bits = <12>;
16062306a36Sopenharmony_ci		mentor,power = <500>;
16162306a36Sopenharmony_ci		phys = <&usb1_phy>;
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci		dmas = <&cppi41dma 15 0 &cppi41dma 16 0
16462306a36Sopenharmony_ci			&cppi41dma 17 0 &cppi41dma 18 0
16562306a36Sopenharmony_ci			&cppi41dma 19 0 &cppi41dma 20 0
16662306a36Sopenharmony_ci			&cppi41dma 21 0 &cppi41dma 22 0
16762306a36Sopenharmony_ci			&cppi41dma 23 0 &cppi41dma 24 0
16862306a36Sopenharmony_ci			&cppi41dma 25 0 &cppi41dma 26 0
16962306a36Sopenharmony_ci			&cppi41dma 27 0 &cppi41dma 28 0
17062306a36Sopenharmony_ci			&cppi41dma 29 0 &cppi41dma 15 1
17162306a36Sopenharmony_ci			&cppi41dma 16 1 &cppi41dma 17 1
17262306a36Sopenharmony_ci			&cppi41dma 18 1 &cppi41dma 19 1
17362306a36Sopenharmony_ci			&cppi41dma 20 1 &cppi41dma 21 1
17462306a36Sopenharmony_ci			&cppi41dma 22 1 &cppi41dma 23 1
17562306a36Sopenharmony_ci			&cppi41dma 24 1 &cppi41dma 25 1
17662306a36Sopenharmony_ci			&cppi41dma 26 1 &cppi41dma 27 1
17762306a36Sopenharmony_ci			&cppi41dma 28 1 &cppi41dma 29 1>;
17862306a36Sopenharmony_ci		dma-names =
17962306a36Sopenharmony_ci			"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
18062306a36Sopenharmony_ci			"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
18162306a36Sopenharmony_ci			"rx14", "rx15",
18262306a36Sopenharmony_ci			"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
18362306a36Sopenharmony_ci			"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
18462306a36Sopenharmony_ci			"tx14", "tx15";
18562306a36Sopenharmony_ci	};
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci	cppi41dma: dma-controller@7402000 {
18862306a36Sopenharmony_ci		compatible = "ti,am3359-cppi41";
18962306a36Sopenharmony_ci		reg =  <0x47400000 0x1000
19062306a36Sopenharmony_ci			0x47402000 0x1000
19162306a36Sopenharmony_ci			0x47403000 0x1000
19262306a36Sopenharmony_ci			0x47404000 0x4000>;
19362306a36Sopenharmony_ci		reg-names = "glue", "controller", "scheduler", "queuemgr";
19462306a36Sopenharmony_ci		interrupts = <17>;
19562306a36Sopenharmony_ci		interrupt-names = "glue";
19662306a36Sopenharmony_ci		#dma-cells = <2>;
19762306a36Sopenharmony_ci		dma-channels = <30>;
19862306a36Sopenharmony_ci		dma-requests = <256>;
19962306a36Sopenharmony_ci	};
20062306a36Sopenharmony_ci};
201