dm816x.dtsi 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. /*
  2. * This file is licensed under the terms of the GNU General Public License
  3. * version 2. This program is licensed "as is" without any warranty of any
  4. * kind, whether express or implied.
  5. */
  6. #include <dt-bindings/gpio/gpio.h>
  7. #include <dt-bindings/pinctrl/omap.h>
  8. #include "skeleton.dtsi"
  9. / {
  10. compatible = "ti,dm816";
  11. interrupt-parent = <&intc>;
  12. aliases {
  13. i2c0 = &i2c1;
  14. i2c1 = &i2c2;
  15. serial0 = &uart1;
  16. serial1 = &uart2;
  17. serial2 = &uart3;
  18. ethernet0 = &eth0;
  19. ethernet1 = &eth1;
  20. };
  21. cpus {
  22. #address-cells = <1>;
  23. #size-cells = <0>;
  24. cpu@0 {
  25. compatible = "arm,cortex-a8";
  26. device_type = "cpu";
  27. reg = <0>;
  28. };
  29. };
  30. pmu {
  31. compatible = "arm,cortex-a8-pmu";
  32. interrupts = <3>;
  33. };
  34. /*
  35. * The soc node represents the soc top level view. It is used for IPs
  36. * that are not memory mapped in the MPU view or for the MPU itself.
  37. */
  38. soc {
  39. compatible = "ti,omap-infra";
  40. mpu {
  41. compatible = "ti,omap3-mpu";
  42. ti,hwmods = "mpu";
  43. };
  44. };
  45. /*
  46. * XXX: Use a flat representation of the dm816x interconnect.
  47. * The real dm816x interconnect network is quite complex. Since
  48. * it will not bring real advantage to represent that in DT
  49. * for the moment, just use a fake OCP bus entry to represent
  50. * the whole bus hierarchy.
  51. */
  52. ocp {
  53. compatible = "simple-bus";
  54. reg = <0x44000000 0x10000>;
  55. interrupts = <9 10>;
  56. #address-cells = <1>;
  57. #size-cells = <1>;
  58. ranges;
  59. ti,hwmods = "l3_main";
  60. prcm: prcm@48180000 {
  61. compatible = "ti,dm816-prcm";
  62. reg = <0x48180000 0x4000>;
  63. prcm_clocks: clocks {
  64. #address-cells = <1>;
  65. #size-cells = <0>;
  66. };
  67. prcm_clockdomains: clockdomains {
  68. };
  69. };
  70. scrm: scrm@48140000 {
  71. compatible = "ti,dm816-scrm", "simple-bus";
  72. reg = <0x48140000 0x21000>;
  73. #address-cells = <1>;
  74. #size-cells = <1>;
  75. ranges = <0 0x48140000 0x21000>;
  76. dm816x_pinmux: pinmux@800 {
  77. compatible = "pinctrl-single";
  78. reg = <0x800 0x50a>;
  79. #address-cells = <1>;
  80. #size-cells = <0>;
  81. pinctrl-single,register-width = <16>;
  82. pinctrl-single,function-mask = <0xf>;
  83. };
  84. /* Device Configuration Registers */
  85. scm_conf: syscon@600 {
  86. compatible = "syscon", "simple-bus";
  87. reg = <0x600 0x110>;
  88. #address-cells = <1>;
  89. #size-cells = <1>;
  90. ranges = <0 0x600 0x110>;
  91. usb_phy0: usb-phy@20 {
  92. compatible = "ti,dm8168-usb-phy";
  93. reg = <0x20 0x8>;
  94. reg-names = "phy";
  95. clocks = <&main_fapll 6>;
  96. clock-names = "refclk";
  97. #phy-cells = <0>;
  98. syscon = <&scm_conf>;
  99. };
  100. usb_phy1: usb-phy@28 {
  101. compatible = "ti,dm8168-usb-phy";
  102. reg = <0x28 0x8>;
  103. reg-names = "phy";
  104. clocks = <&main_fapll 6>;
  105. clock-names = "refclk";
  106. #phy-cells = <0>;
  107. syscon = <&scm_conf>;
  108. };
  109. };
  110. scrm_clocks: clocks {
  111. #address-cells = <1>;
  112. #size-cells = <0>;
  113. };
  114. scrm_clockdomains: clockdomains {
  115. };
  116. };
  117. edma: edma@49000000 {
  118. compatible = "ti,edma3";
  119. ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2", "tptc3";
  120. reg = <0x49000000 0x10000>,
  121. <0x44e10f90 0x40>;
  122. interrupts = <12 13 14>;
  123. #dma-cells = <1>;
  124. };
  125. elm: elm@48080000 {
  126. compatible = "ti,816-elm";
  127. ti,hwmods = "elm";
  128. reg = <0x48080000 0x2000>;
  129. interrupts = <4>;
  130. };
  131. gpio1: gpio@48032000 {
  132. compatible = "ti,omap4-gpio";
  133. ti,hwmods = "gpio1";
  134. ti,gpio-always-on;
  135. reg = <0x48032000 0x1000>;
  136. interrupts = <96>;
  137. gpio-controller;
  138. #gpio-cells = <2>;
  139. interrupt-controller;
  140. #interrupt-cells = <2>;
  141. };
  142. gpio2: gpio@4804c000 {
  143. compatible = "ti,omap4-gpio";
  144. ti,hwmods = "gpio2";
  145. ti,gpio-always-on;
  146. reg = <0x4804c000 0x1000>;
  147. interrupts = <98>;
  148. gpio-controller;
  149. #gpio-cells = <2>;
  150. interrupt-controller;
  151. #interrupt-cells = <2>;
  152. };
  153. gpmc: gpmc@50000000 {
  154. compatible = "ti,am3352-gpmc";
  155. ti,hwmods = "gpmc";
  156. reg = <0x50000000 0x2000>;
  157. #address-cells = <2>;
  158. #size-cells = <1>;
  159. interrupts = <100>;
  160. gpmc,num-cs = <6>;
  161. gpmc,num-waitpins = <2>;
  162. };
  163. i2c1: i2c@48028000 {
  164. compatible = "ti,omap4-i2c";
  165. ti,hwmods = "i2c1";
  166. reg = <0x48028000 0x1000>;
  167. #address-cells = <1>;
  168. #size-cells = <0>;
  169. interrupts = <70>;
  170. dmas = <&edma 58 &edma 59>;
  171. dma-names = "tx", "rx";
  172. };
  173. i2c2: i2c@4802a000 {
  174. compatible = "ti,omap4-i2c";
  175. ti,hwmods = "i2c2";
  176. reg = <0x4802a000 0x1000>;
  177. #address-cells = <1>;
  178. #size-cells = <0>;
  179. interrupts = <71>;
  180. dmas = <&edma 60 &edma 61>;
  181. dma-names = "tx", "rx";
  182. };
  183. intc: interrupt-controller@48200000 {
  184. compatible = "ti,dm816-intc";
  185. interrupt-controller;
  186. #interrupt-cells = <1>;
  187. reg = <0x48200000 0x1000>;
  188. };
  189. mailbox: mailbox@480c8000 {
  190. compatible = "ti,omap4-mailbox";
  191. reg = <0x480c8000 0x2000>;
  192. interrupts = <77>;
  193. ti,hwmods = "mailbox";
  194. #mbox-cells = <1>;
  195. ti,mbox-num-users = <4>;
  196. ti,mbox-num-fifos = <12>;
  197. mbox_dsp: mbox_dsp {
  198. ti,mbox-tx = <3 0 0>;
  199. ti,mbox-rx = <0 0 0>;
  200. };
  201. };
  202. mdio: mdio@4a100800 {
  203. compatible = "ti,davinci_mdio";
  204. #address-cells = <1>;
  205. #size-cells = <0>;
  206. reg = <0x4a100800 0x100>;
  207. ti,hwmods = "davinci_mdio";
  208. bus_freq = <1000000>;
  209. phy0: ethernet-phy@0 {
  210. reg = <1>;
  211. };
  212. phy1: ethernet-phy@1 {
  213. reg = <2>;
  214. };
  215. };
  216. eth0: ethernet@4a100000 {
  217. compatible = "ti,dm816-emac";
  218. ti,hwmods = "emac0";
  219. reg = <0x4a100000 0x800
  220. 0x4a100900 0x3700>;
  221. clocks = <&sysclk24_ck>;
  222. syscon = <&scm_conf>;
  223. ti,davinci-ctrl-reg-offset = <0>;
  224. ti,davinci-ctrl-mod-reg-offset = <0x900>;
  225. ti,davinci-ctrl-ram-offset = <0x2000>;
  226. ti,davinci-ctrl-ram-size = <0x2000>;
  227. interrupts = <40 41 42 43>;
  228. phy-handle = <&phy0>;
  229. };
  230. eth1: ethernet@4a120000 {
  231. compatible = "ti,dm816-emac";
  232. ti,hwmods = "emac1";
  233. reg = <0x4a120000 0x4000>;
  234. clocks = <&sysclk24_ck>;
  235. syscon = <&scm_conf>;
  236. ti,davinci-ctrl-reg-offset = <0>;
  237. ti,davinci-ctrl-mod-reg-offset = <0x900>;
  238. ti,davinci-ctrl-ram-offset = <0x2000>;
  239. ti,davinci-ctrl-ram-size = <0x2000>;
  240. interrupts = <44 45 46 47>;
  241. phy-handle = <&phy1>;
  242. };
  243. mcspi1: spi@48030000 {
  244. compatible = "ti,omap4-mcspi";
  245. reg = <0x48030000 0x1000>;
  246. #address-cells = <1>;
  247. #size-cells = <0>;
  248. interrupts = <65>;
  249. ti,spi-num-cs = <4>;
  250. ti,hwmods = "mcspi1";
  251. dmas = <&edma 16 &edma 17
  252. &edma 18 &edma 19
  253. &edma 20 &edma 21
  254. &edma 22 &edma 23>;
  255. dma-names = "tx0", "rx0", "tx1", "rx1",
  256. "tx2", "rx2", "tx3", "rx3";
  257. };
  258. mmc1: mmc@48060000 {
  259. compatible = "ti,omap4-hsmmc";
  260. reg = <0x48060000 0x11000>;
  261. ti,hwmods = "mmc1";
  262. interrupts = <64>;
  263. dmas = <&edma 24 &edma 25>;
  264. dma-names = "tx", "rx";
  265. };
  266. timer1: timer@4802e000 {
  267. compatible = "ti,dm816-timer";
  268. reg = <0x4802e000 0x2000>;
  269. interrupts = <67>;
  270. ti,hwmods = "timer1";
  271. ti,timer-alwon;
  272. };
  273. timer2: timer@48040000 {
  274. compatible = "ti,dm816-timer";
  275. reg = <0x48040000 0x2000>;
  276. interrupts = <68>;
  277. ti,hwmods = "timer2";
  278. };
  279. timer3: timer@48042000 {
  280. compatible = "ti,dm816-timer";
  281. reg = <0x48042000 0x2000>;
  282. interrupts = <69>;
  283. ti,hwmods = "timer3";
  284. };
  285. timer4: timer@48044000 {
  286. compatible = "ti,dm816-timer";
  287. reg = <0x48044000 0x2000>;
  288. interrupts = <92>;
  289. ti,hwmods = "timer4";
  290. };
  291. timer5: timer@48046000 {
  292. compatible = "ti,dm816-timer";
  293. reg = <0x48046000 0x2000>;
  294. interrupts = <93>;
  295. ti,hwmods = "timer5";
  296. };
  297. timer6: timer@48048000 {
  298. compatible = "ti,dm816-timer";
  299. reg = <0x48048000 0x2000>;
  300. interrupts = <94>;
  301. ti,hwmods = "timer6";
  302. };
  303. timer7: timer@4804a000 {
  304. compatible = "ti,dm816-timer";
  305. reg = <0x4804a000 0x2000>;
  306. interrupts = <95>;
  307. ti,hwmods = "timer7";
  308. };
  309. uart1: uart@48020000 {
  310. compatible = "ti,omap3-uart";
  311. ti,hwmods = "uart1";
  312. reg = <0x48020000 0x2000>;
  313. clock-frequency = <48000000>;
  314. interrupts = <72>;
  315. dmas = <&edma 26 &edma 27>;
  316. dma-names = "tx", "rx";
  317. };
  318. uart2: uart@48022000 {
  319. compatible = "ti,omap3-uart";
  320. ti,hwmods = "uart2";
  321. reg = <0x48022000 0x2000>;
  322. clock-frequency = <48000000>;
  323. interrupts = <73>;
  324. dmas = <&edma 28 &edma 29>;
  325. dma-names = "tx", "rx";
  326. };
  327. uart3: uart@48024000 {
  328. compatible = "ti,omap3-uart";
  329. ti,hwmods = "uart3";
  330. reg = <0x48024000 0x2000>;
  331. clock-frequency = <48000000>;
  332. interrupts = <74>;
  333. dmas = <&edma 30 &edma 31>;
  334. dma-names = "tx", "rx";
  335. };
  336. /* NOTE: USB needs a transceiver driver for phys to work */
  337. usb: usb_otg_hs@47401000 {
  338. compatible = "ti,am33xx-usb";
  339. reg = <0x47401000 0x400000>;
  340. ranges;
  341. #address-cells = <1>;
  342. #size-cells = <1>;
  343. ti,hwmods = "usb_otg_hs";
  344. usb0: usb@47401000 {
  345. compatible = "ti,musb-dm816";
  346. reg = <0x47401400 0x400
  347. 0x47401000 0x200>;
  348. reg-names = "mc", "control";
  349. interrupts = <18>;
  350. interrupt-names = "mc";
  351. dr_mode = "host";
  352. interface-type = <0>;
  353. phys = <&usb_phy0>;
  354. phy-names = "usb2-phy";
  355. mentor,multipoint = <1>;
  356. mentor,num-eps = <16>;
  357. mentor,ram-bits = <12>;
  358. mentor,power = <500>;
  359. dmas = <&cppi41dma 0 0 &cppi41dma 1 0
  360. &cppi41dma 2 0 &cppi41dma 3 0
  361. &cppi41dma 4 0 &cppi41dma 5 0
  362. &cppi41dma 6 0 &cppi41dma 7 0
  363. &cppi41dma 8 0 &cppi41dma 9 0
  364. &cppi41dma 10 0 &cppi41dma 11 0
  365. &cppi41dma 12 0 &cppi41dma 13 0
  366. &cppi41dma 14 0 &cppi41dma 0 1
  367. &cppi41dma 1 1 &cppi41dma 2 1
  368. &cppi41dma 3 1 &cppi41dma 4 1
  369. &cppi41dma 5 1 &cppi41dma 6 1
  370. &cppi41dma 7 1 &cppi41dma 8 1
  371. &cppi41dma 9 1 &cppi41dma 10 1
  372. &cppi41dma 11 1 &cppi41dma 12 1
  373. &cppi41dma 13 1 &cppi41dma 14 1>;
  374. dma-names =
  375. "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
  376. "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
  377. "rx14", "rx15",
  378. "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
  379. "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
  380. "tx14", "tx15";
  381. };
  382. usb1: usb@47401800 {
  383. compatible = "ti,musb-dm816";
  384. reg = <0x47401c00 0x400
  385. 0x47401800 0x200>;
  386. reg-names = "mc", "control";
  387. interrupts = <19>;
  388. interrupt-names = "mc";
  389. dr_mode = "host";
  390. interface-type = <0>;
  391. phys = <&usb_phy1>;
  392. phy-names = "usb2-phy";
  393. mentor,multipoint = <1>;
  394. mentor,num-eps = <16>;
  395. mentor,ram-bits = <12>;
  396. mentor,power = <500>;
  397. dmas = <&cppi41dma 15 0 &cppi41dma 16 0
  398. &cppi41dma 17 0 &cppi41dma 18 0
  399. &cppi41dma 19 0 &cppi41dma 20 0
  400. &cppi41dma 21 0 &cppi41dma 22 0
  401. &cppi41dma 23 0 &cppi41dma 24 0
  402. &cppi41dma 25 0 &cppi41dma 26 0
  403. &cppi41dma 27 0 &cppi41dma 28 0
  404. &cppi41dma 29 0 &cppi41dma 15 1
  405. &cppi41dma 16 1 &cppi41dma 17 1
  406. &cppi41dma 18 1 &cppi41dma 19 1
  407. &cppi41dma 20 1 &cppi41dma 21 1
  408. &cppi41dma 22 1 &cppi41dma 23 1
  409. &cppi41dma 24 1 &cppi41dma 25 1
  410. &cppi41dma 26 1 &cppi41dma 27 1
  411. &cppi41dma 28 1 &cppi41dma 29 1>;
  412. dma-names =
  413. "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
  414. "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
  415. "rx14", "rx15",
  416. "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
  417. "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
  418. "tx14", "tx15";
  419. };
  420. cppi41dma: dma-controller@47402000 {
  421. compatible = "ti,am3359-cppi41";
  422. reg = <0x47400000 0x1000
  423. 0x47402000 0x1000
  424. 0x47403000 0x1000
  425. 0x47404000 0x4000>;
  426. reg-names = "glue", "controller", "scheduler", "queuemgr";
  427. interrupts = <17>;
  428. interrupt-names = "glue";
  429. #dma-cells = <2>;
  430. #dma-channels = <30>;
  431. #dma-requests = <256>;
  432. };
  433. };
  434. wd_timer2: wd_timer@480c2000 {
  435. compatible = "ti,omap3-wdt";
  436. ti,hwmods = "wd_timer";
  437. reg = <0x480c2000 0x1000>;
  438. interrupts = <0>;
  439. };
  440. };
  441. };
  442. #include "dm816x-clocks.dtsi"