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