18c2ecf20Sopenharmony_ci  AM33xx MUSB
28c2ecf20Sopenharmony_ci~~~~~~~~~~~~~~~
38c2ecf20Sopenharmony_ci- compatible: ti,am33xx-usb
48c2ecf20Sopenharmony_ci- reg: offset and length of the usbss register sets
58c2ecf20Sopenharmony_ci- ti,hwmods : must be "usb_otg_hs"
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ciThe glue layer contains multiple child nodes. It is required to have
88c2ecf20Sopenharmony_ciat least a control module node, USB node and a PHY node. The second USB
98c2ecf20Sopenharmony_cinode and its PHY node are optional. The DMA node is also optional.
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ciReset module
128c2ecf20Sopenharmony_ci~~~~~~~~~~~~
138c2ecf20Sopenharmony_ci- compatible: ti,am335x-usb-ctrl-module
148c2ecf20Sopenharmony_ci- reg: offset and length of the "USB control registers" in the "Control
158c2ecf20Sopenharmony_ci  Module" block. A second offset and length for the USB wake up control
168c2ecf20Sopenharmony_ci  in the same memory block.
178c2ecf20Sopenharmony_ci- reg-names: "phy_ctrl" for the "USB control registers" and "wakeup" for
188c2ecf20Sopenharmony_ci  the USB wake up control register.
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciUSB PHY
218c2ecf20Sopenharmony_ci~~~~~~~
228c2ecf20Sopenharmony_cicompatible: ti,am335x-usb-phy
238c2ecf20Sopenharmony_cireg: offset and length of the "USB PHY" register space
248c2ecf20Sopenharmony_citi,ctrl_mod: reference to the "reset module" node
258c2ecf20Sopenharmony_cireg-names: phy
268c2ecf20Sopenharmony_ciThe PHY should have a "phy" alias numbered properly in the alias
278c2ecf20Sopenharmony_cinode.
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciUSB
308c2ecf20Sopenharmony_ci~~~
318c2ecf20Sopenharmony_ci- compatible: ti,musb-am33xx
328c2ecf20Sopenharmony_ci- reg: offset and length of "USB Controller Registers", and offset and
338c2ecf20Sopenharmony_ci  length of "USB Core" register space.
348c2ecf20Sopenharmony_ci- reg-names: control for the ""USB Controller Registers" and "mc" for
358c2ecf20Sopenharmony_ci  "USB Core" register space
368c2ecf20Sopenharmony_ci- interrupts: USB interrupt number
378c2ecf20Sopenharmony_ci- interrupt-names: mc
388c2ecf20Sopenharmony_ci- dr_mode: Should be one of "host", "peripheral" or "otg".
398c2ecf20Sopenharmony_ci- mentor,multipoint: Should be "1" indicating the musb controller supports
408c2ecf20Sopenharmony_ci  multipoint. This is a MUSB configuration-specific setting.
418c2ecf20Sopenharmony_ci- mentor,num-eps: Specifies the number of endpoints. This is also a
428c2ecf20Sopenharmony_ci  MUSB configuration-specific setting. Should be set to "16"
438c2ecf20Sopenharmony_ci- mentor,ram-bits: Specifies the ram address size. Should be set to "12"
448c2ecf20Sopenharmony_ci- mentor,power: Should be "500". This signifies the controller can supply up to
458c2ecf20Sopenharmony_ci  500mA when operating in host mode.
468c2ecf20Sopenharmony_ci- phys: reference to the USB phy
478c2ecf20Sopenharmony_ci- dmas: specifies the dma channels
488c2ecf20Sopenharmony_ci- dma-names: specifies the names of the channels. Use "rxN" for receive
498c2ecf20Sopenharmony_ci  and "txN" for transmit endpoints. N specifies the endpoint number.
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ciThe controller should have an "usb" alias numbered properly in the alias
528c2ecf20Sopenharmony_cinode.
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ciDMA
558c2ecf20Sopenharmony_ci~~~
568c2ecf20Sopenharmony_ci- compatible: ti,am3359-cppi41
578c2ecf20Sopenharmony_ci- reg: offset and length of the following register spaces: USBSS, USB
588c2ecf20Sopenharmony_ci  CPPI DMA Controller, USB CPPI DMA Scheduler, USB Queue Manager
598c2ecf20Sopenharmony_ci- reg-names: glue, controller, scheduler, queuemgr
608c2ecf20Sopenharmony_ci- #dma-cells: should be set to 2. The first number represents the
618c2ecf20Sopenharmony_ci  endpoint number (0 … 14 for endpoints 1 … 15 on instance 0 and 15 … 29
628c2ecf20Sopenharmony_ci  for endpoints 1 … 15 on instance 1). The second number is 0 for RX and
638c2ecf20Sopenharmony_ci  1 for TX transfers.
648c2ecf20Sopenharmony_ci- #dma-channels: should be set to 30 representing the 15 endpoints for
658c2ecf20Sopenharmony_ci  each USB instance.
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ciExample:
688c2ecf20Sopenharmony_ci~~~~~~~~
698c2ecf20Sopenharmony_ciThe following example contains all the nodes as used on am335x-evm:
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_cialiases {
728c2ecf20Sopenharmony_ci	usb0 = &usb0;
738c2ecf20Sopenharmony_ci	usb1 = &usb1;
748c2ecf20Sopenharmony_ci	phy0 = &usb0_phy;
758c2ecf20Sopenharmony_ci	phy1 = &usb1_phy;
768c2ecf20Sopenharmony_ci};
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ciusb: usb@47400000 {
798c2ecf20Sopenharmony_ci	compatible = "ti,am33xx-usb";
808c2ecf20Sopenharmony_ci	reg = <0x47400000 0x1000>;
818c2ecf20Sopenharmony_ci	ranges;
828c2ecf20Sopenharmony_ci	#address-cells = <1>;
838c2ecf20Sopenharmony_ci	#size-cells = <1>;
848c2ecf20Sopenharmony_ci	ti,hwmods = "usb_otg_hs";
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci	ctrl_mod: control@44e10000 {
878c2ecf20Sopenharmony_ci		compatible = "ti,am335x-usb-ctrl-module";
888c2ecf20Sopenharmony_ci		reg = <0x44e10620 0x10
898c2ecf20Sopenharmony_ci			0x44e10648 0x4>;
908c2ecf20Sopenharmony_ci		reg-names = "phy_ctrl", "wakeup";
918c2ecf20Sopenharmony_ci	};
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci	usb0_phy: usb-phy@47401300 {
948c2ecf20Sopenharmony_ci		compatible = "ti,am335x-usb-phy";
958c2ecf20Sopenharmony_ci		reg = <0x47401300 0x100>;
968c2ecf20Sopenharmony_ci		reg-names = "phy";
978c2ecf20Sopenharmony_ci		ti,ctrl_mod = <&ctrl_mod>;
988c2ecf20Sopenharmony_ci		#phy-cells = <0>;
998c2ecf20Sopenharmony_ci	};
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci	usb0: usb@47401000 {
1028c2ecf20Sopenharmony_ci		compatible = "ti,musb-am33xx";
1038c2ecf20Sopenharmony_ci		reg = <0x47401400 0x400
1048c2ecf20Sopenharmony_ci			0x47401000 0x200>;
1058c2ecf20Sopenharmony_ci		reg-names = "mc", "control";
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci		interrupts = <18>;
1088c2ecf20Sopenharmony_ci		interrupt-names = "mc";
1098c2ecf20Sopenharmony_ci		dr_mode = "otg"
1108c2ecf20Sopenharmony_ci		mentor,multipoint = <1>;
1118c2ecf20Sopenharmony_ci		mentor,num-eps = <16>;
1128c2ecf20Sopenharmony_ci		mentor,ram-bits = <12>;
1138c2ecf20Sopenharmony_ci		mentor,power = <500>;
1148c2ecf20Sopenharmony_ci		phys = <&usb0_phy>;
1158c2ecf20Sopenharmony_ci
1168c2ecf20Sopenharmony_ci		dmas = <&cppi41dma  0 0 &cppi41dma  1 0
1178c2ecf20Sopenharmony_ci			&cppi41dma  2 0 &cppi41dma  3 0
1188c2ecf20Sopenharmony_ci			&cppi41dma  4 0 &cppi41dma  5 0
1198c2ecf20Sopenharmony_ci			&cppi41dma  6 0 &cppi41dma  7 0
1208c2ecf20Sopenharmony_ci			&cppi41dma  8 0 &cppi41dma  9 0
1218c2ecf20Sopenharmony_ci			&cppi41dma 10 0 &cppi41dma 11 0
1228c2ecf20Sopenharmony_ci			&cppi41dma 12 0 &cppi41dma 13 0
1238c2ecf20Sopenharmony_ci			&cppi41dma 14 0 &cppi41dma  0 1
1248c2ecf20Sopenharmony_ci			&cppi41dma  1 1 &cppi41dma  2 1
1258c2ecf20Sopenharmony_ci			&cppi41dma  3 1 &cppi41dma  4 1
1268c2ecf20Sopenharmony_ci			&cppi41dma  5 1 &cppi41dma  6 1
1278c2ecf20Sopenharmony_ci			&cppi41dma  7 1 &cppi41dma  8 1
1288c2ecf20Sopenharmony_ci			&cppi41dma  9 1 &cppi41dma 10 1
1298c2ecf20Sopenharmony_ci			&cppi41dma 11 1 &cppi41dma 12 1
1308c2ecf20Sopenharmony_ci			&cppi41dma 13 1 &cppi41dma 14 1>;
1318c2ecf20Sopenharmony_ci		dma-names =
1328c2ecf20Sopenharmony_ci			"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
1338c2ecf20Sopenharmony_ci			"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
1348c2ecf20Sopenharmony_ci			"rx14", "rx15",
1358c2ecf20Sopenharmony_ci			"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
1368c2ecf20Sopenharmony_ci			"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
1378c2ecf20Sopenharmony_ci			"tx14", "tx15";
1388c2ecf20Sopenharmony_ci	};
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_ci	usb1_phy: usb-phy@47401b00 {
1418c2ecf20Sopenharmony_ci		compatible = "ti,am335x-usb-phy";
1428c2ecf20Sopenharmony_ci		reg = <0x47401b00 0x100>;
1438c2ecf20Sopenharmony_ci		reg-names = "phy";
1448c2ecf20Sopenharmony_ci		ti,ctrl_mod = <&ctrl_mod>;
1458c2ecf20Sopenharmony_ci		#phy-cells = <0>;
1468c2ecf20Sopenharmony_ci	};
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ci	usb1: usb@47401800 {
1498c2ecf20Sopenharmony_ci		compatible = "ti,musb-am33xx";
1508c2ecf20Sopenharmony_ci		reg = <0x47401c00 0x400
1518c2ecf20Sopenharmony_ci			0x47401800 0x200>;
1528c2ecf20Sopenharmony_ci		reg-names = "mc", "control";
1538c2ecf20Sopenharmony_ci		interrupts = <19>;
1548c2ecf20Sopenharmony_ci		interrupt-names = "mc";
1558c2ecf20Sopenharmony_ci		dr_mode = "host"
1568c2ecf20Sopenharmony_ci		mentor,multipoint = <1>;
1578c2ecf20Sopenharmony_ci		mentor,num-eps = <16>;
1588c2ecf20Sopenharmony_ci		mentor,ram-bits = <12>;
1598c2ecf20Sopenharmony_ci		mentor,power = <500>;
1608c2ecf20Sopenharmony_ci		phys = <&usb1_phy>;
1618c2ecf20Sopenharmony_ci
1628c2ecf20Sopenharmony_ci		dmas = <&cppi41dma 15 0 &cppi41dma 16 0
1638c2ecf20Sopenharmony_ci			&cppi41dma 17 0 &cppi41dma 18 0
1648c2ecf20Sopenharmony_ci			&cppi41dma 19 0 &cppi41dma 20 0
1658c2ecf20Sopenharmony_ci			&cppi41dma 21 0 &cppi41dma 22 0
1668c2ecf20Sopenharmony_ci			&cppi41dma 23 0 &cppi41dma 24 0
1678c2ecf20Sopenharmony_ci			&cppi41dma 25 0 &cppi41dma 26 0
1688c2ecf20Sopenharmony_ci			&cppi41dma 27 0 &cppi41dma 28 0
1698c2ecf20Sopenharmony_ci			&cppi41dma 29 0 &cppi41dma 15 1
1708c2ecf20Sopenharmony_ci			&cppi41dma 16 1 &cppi41dma 17 1
1718c2ecf20Sopenharmony_ci			&cppi41dma 18 1 &cppi41dma 19 1
1728c2ecf20Sopenharmony_ci			&cppi41dma 20 1 &cppi41dma 21 1
1738c2ecf20Sopenharmony_ci			&cppi41dma 22 1 &cppi41dma 23 1
1748c2ecf20Sopenharmony_ci			&cppi41dma 24 1 &cppi41dma 25 1
1758c2ecf20Sopenharmony_ci			&cppi41dma 26 1 &cppi41dma 27 1
1768c2ecf20Sopenharmony_ci			&cppi41dma 28 1 &cppi41dma 29 1>;
1778c2ecf20Sopenharmony_ci		dma-names =
1788c2ecf20Sopenharmony_ci			"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
1798c2ecf20Sopenharmony_ci			"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
1808c2ecf20Sopenharmony_ci			"rx14", "rx15",
1818c2ecf20Sopenharmony_ci			"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
1828c2ecf20Sopenharmony_ci			"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
1838c2ecf20Sopenharmony_ci			"tx14", "tx15";
1848c2ecf20Sopenharmony_ci	};
1858c2ecf20Sopenharmony_ci
1868c2ecf20Sopenharmony_ci	cppi41dma: dma-controller@7402000 {
1878c2ecf20Sopenharmony_ci		compatible = "ti,am3359-cppi41";
1888c2ecf20Sopenharmony_ci		reg =  <0x47400000 0x1000
1898c2ecf20Sopenharmony_ci			0x47402000 0x1000
1908c2ecf20Sopenharmony_ci			0x47403000 0x1000
1918c2ecf20Sopenharmony_ci			0x47404000 0x4000>;
1928c2ecf20Sopenharmony_ci		reg-names = "glue", "controller", "scheduler", "queuemgr";
1938c2ecf20Sopenharmony_ci		interrupts = <17>;
1948c2ecf20Sopenharmony_ci		interrupt-names = "glue";
1958c2ecf20Sopenharmony_ci		#dma-cells = <2>;
1968c2ecf20Sopenharmony_ci		#dma-channels = <30>;
1978c2ecf20Sopenharmony_ci		#dma-requests = <256>;
1988c2ecf20Sopenharmony_ci	};
1998c2ecf20Sopenharmony_ci};
200