0001 AM33xx MUSB
0002 ~~~~~~~~~~~~~~~
0003 - compatible: ti,am33xx-usb
0004 - reg: offset and length of the usbss register sets
0005 - ti,hwmods : must be "usb_otg_hs"
0006
0007 The glue layer contains multiple child nodes. It is required to have
0008 at least a control module node, USB node and a PHY node. The second USB
0009 node and its PHY node are optional. The DMA node is also optional.
0010
0011 Reset module
0012 ~~~~~~~~~~~~
0013 - compatible: ti,am335x-usb-ctrl-module
0014 - reg: offset and length of the "USB control registers" in the "Control
0015 Module" block. A second offset and length for the USB wake up control
0016 in the same memory block.
0017 - reg-names: "phy_ctrl" for the "USB control registers" and "wakeup" for
0018 the USB wake up control register.
0019
0020 USB PHY
0021 ~~~~~~~
0022 compatible: ti,am335x-usb-phy
0023 reg: offset and length of the "USB PHY" register space
0024 ti,ctrl_mod: reference to the "reset module" node
0025 reg-names: phy
0026 The PHY should have a "phy" alias numbered properly in the alias
0027 node.
0028
0029 USB
0030 ~~~
0031 - compatible: ti,musb-am33xx
0032 - reg: offset and length of "USB Controller Registers", and offset and
0033 length of "USB Core" register space.
0034 - reg-names: control for the ""USB Controller Registers" and "mc" for
0035 "USB Core" register space
0036 - interrupts: USB interrupt number
0037 - interrupt-names: mc
0038 - dr_mode: Should be one of "host", "peripheral" or "otg".
0039 - mentor,multipoint: Should be "1" indicating the musb controller supports
0040 multipoint. This is a MUSB configuration-specific setting.
0041 - mentor,num-eps: Specifies the number of endpoints. This is also a
0042 MUSB configuration-specific setting. Should be set to "16"
0043 - mentor,ram-bits: Specifies the ram address size. Should be set to "12"
0044 - mentor,power: Should be "500". This signifies the controller can supply up to
0045 500mA when operating in host mode.
0046 - phys: reference to the USB phy
0047 - dmas: specifies the dma channels
0048 - dma-names: specifies the names of the channels. Use "rxN" for receive
0049 and "txN" for transmit endpoints. N specifies the endpoint number.
0050
0051 The controller should have an "usb" alias numbered properly in the alias
0052 node.
0053
0054 DMA
0055 ~~~
0056 - compatible: ti,am3359-cppi41
0057 - reg: offset and length of the following register spaces: USBSS, USB
0058 CPPI DMA Controller, USB CPPI DMA Scheduler, USB Queue Manager
0059 - reg-names: glue, controller, scheduler, queuemgr
0060 - #dma-cells: should be set to 2. The first number represents the
0061 endpoint number (0 … 14 for endpoints 1 … 15 on instance 0 and 15 … 29
0062 for endpoints 1 … 15 on instance 1). The second number is 0 for RX and
0063 1 for TX transfers.
0064 - dma-channels: should be set to 30 representing the 15 endpoints for
0065 each USB instance.
0066 - #dma-channels: deprecated
0067
0068 Example:
0069 ~~~~~~~~
0070 The following example contains all the nodes as used on am335x-evm:
0071
0072 aliases {
0073 usb0 = &usb0;
0074 usb1 = &usb1;
0075 phy0 = &usb0_phy;
0076 phy1 = &usb1_phy;
0077 };
0078
0079 usb: usb@47400000 {
0080 compatible = "ti,am33xx-usb";
0081 reg = <0x47400000 0x1000>;
0082 ranges;
0083 #address-cells = <1>;
0084 #size-cells = <1>;
0085 ti,hwmods = "usb_otg_hs";
0086
0087 ctrl_mod: control@44e10000 {
0088 compatible = "ti,am335x-usb-ctrl-module";
0089 reg = <0x44e10620 0x10
0090 0x44e10648 0x4>;
0091 reg-names = "phy_ctrl", "wakeup";
0092 };
0093
0094 usb0_phy: usb-phy@47401300 {
0095 compatible = "ti,am335x-usb-phy";
0096 reg = <0x47401300 0x100>;
0097 reg-names = "phy";
0098 ti,ctrl_mod = <&ctrl_mod>;
0099 #phy-cells = <0>;
0100 };
0101
0102 usb0: usb@47401000 {
0103 compatible = "ti,musb-am33xx";
0104 reg = <0x47401400 0x400
0105 0x47401000 0x200>;
0106 reg-names = "mc", "control";
0107
0108 interrupts = <18>;
0109 interrupt-names = "mc";
0110 dr_mode = "otg"
0111 mentor,multipoint = <1>;
0112 mentor,num-eps = <16>;
0113 mentor,ram-bits = <12>;
0114 mentor,power = <500>;
0115 phys = <&usb0_phy>;
0116
0117 dmas = <&cppi41dma 0 0 &cppi41dma 1 0
0118 &cppi41dma 2 0 &cppi41dma 3 0
0119 &cppi41dma 4 0 &cppi41dma 5 0
0120 &cppi41dma 6 0 &cppi41dma 7 0
0121 &cppi41dma 8 0 &cppi41dma 9 0
0122 &cppi41dma 10 0 &cppi41dma 11 0
0123 &cppi41dma 12 0 &cppi41dma 13 0
0124 &cppi41dma 14 0 &cppi41dma 0 1
0125 &cppi41dma 1 1 &cppi41dma 2 1
0126 &cppi41dma 3 1 &cppi41dma 4 1
0127 &cppi41dma 5 1 &cppi41dma 6 1
0128 &cppi41dma 7 1 &cppi41dma 8 1
0129 &cppi41dma 9 1 &cppi41dma 10 1
0130 &cppi41dma 11 1 &cppi41dma 12 1
0131 &cppi41dma 13 1 &cppi41dma 14 1>;
0132 dma-names =
0133 "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
0134 "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
0135 "rx14", "rx15",
0136 "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
0137 "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
0138 "tx14", "tx15";
0139 };
0140
0141 usb1_phy: usb-phy@47401b00 {
0142 compatible = "ti,am335x-usb-phy";
0143 reg = <0x47401b00 0x100>;
0144 reg-names = "phy";
0145 ti,ctrl_mod = <&ctrl_mod>;
0146 #phy-cells = <0>;
0147 };
0148
0149 usb1: usb@47401800 {
0150 compatible = "ti,musb-am33xx";
0151 reg = <0x47401c00 0x400
0152 0x47401800 0x200>;
0153 reg-names = "mc", "control";
0154 interrupts = <19>;
0155 interrupt-names = "mc";
0156 dr_mode = "host"
0157 mentor,multipoint = <1>;
0158 mentor,num-eps = <16>;
0159 mentor,ram-bits = <12>;
0160 mentor,power = <500>;
0161 phys = <&usb1_phy>;
0162
0163 dmas = <&cppi41dma 15 0 &cppi41dma 16 0
0164 &cppi41dma 17 0 &cppi41dma 18 0
0165 &cppi41dma 19 0 &cppi41dma 20 0
0166 &cppi41dma 21 0 &cppi41dma 22 0
0167 &cppi41dma 23 0 &cppi41dma 24 0
0168 &cppi41dma 25 0 &cppi41dma 26 0
0169 &cppi41dma 27 0 &cppi41dma 28 0
0170 &cppi41dma 29 0 &cppi41dma 15 1
0171 &cppi41dma 16 1 &cppi41dma 17 1
0172 &cppi41dma 18 1 &cppi41dma 19 1
0173 &cppi41dma 20 1 &cppi41dma 21 1
0174 &cppi41dma 22 1 &cppi41dma 23 1
0175 &cppi41dma 24 1 &cppi41dma 25 1
0176 &cppi41dma 26 1 &cppi41dma 27 1
0177 &cppi41dma 28 1 &cppi41dma 29 1>;
0178 dma-names =
0179 "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
0180 "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
0181 "rx14", "rx15",
0182 "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
0183 "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
0184 "tx14", "tx15";
0185 };
0186
0187 cppi41dma: dma-controller@7402000 {
0188 compatible = "ti,am3359-cppi41";
0189 reg = <0x47400000 0x1000
0190 0x47402000 0x1000
0191 0x47403000 0x1000
0192 0x47404000 0x4000>;
0193 reg-names = "glue", "controller", "scheduler", "queuemgr";
0194 interrupts = <17>;
0195 interrupt-names = "glue";
0196 #dma-cells = <2>;
0197 dma-channels = <30>;
0198 dma-requests = <256>;
0199 };
0200 };