bcm5301x.dtsi 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580
  1. /*
  2. * Broadcom BCM470X / BCM5301X ARM platform code.
  3. * Generic DTS part for all BCM53010, BCM53011, BCM53012, BCM53014, BCM53015,
  4. * BCM53016, BCM53017, BCM53018, BCM4707, BCM4708 and BCM4709 SoCs
  5. *
  6. * Copyright 2013-2014 Hauke Mehrtens <[email protected]>
  7. *
  8. * Licensed under the GNU/GPL. See COPYING for details.
  9. */
  10. #include <dt-bindings/clock/bcm-nsp.h>
  11. #include <dt-bindings/gpio/gpio.h>
  12. #include <dt-bindings/input/input.h>
  13. #include <dt-bindings/interrupt-controller/irq.h>
  14. #include <dt-bindings/interrupt-controller/arm-gic.h>
  15. / {
  16. #address-cells = <1>;
  17. #size-cells = <1>;
  18. interrupt-parent = <&gic>;
  19. chipcommon-a-bus@18000000 {
  20. compatible = "simple-bus";
  21. ranges = <0x00000000 0x18000000 0x00001000>;
  22. #address-cells = <1>;
  23. #size-cells = <1>;
  24. uart0: serial@300 {
  25. compatible = "ns16550";
  26. reg = <0x0300 0x100>;
  27. interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
  28. clocks = <&iprocslow>;
  29. status = "disabled";
  30. };
  31. uart1: serial@400 {
  32. compatible = "ns16550";
  33. reg = <0x0400 0x100>;
  34. interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
  35. clocks = <&iprocslow>;
  36. pinctrl-names = "default";
  37. pinctrl-0 = <&pinmux_uart1>;
  38. status = "disabled";
  39. };
  40. };
  41. mpcore-bus@19000000 {
  42. compatible = "simple-bus";
  43. ranges = <0x00000000 0x19000000 0x00023000>;
  44. #address-cells = <1>;
  45. #size-cells = <1>;
  46. a9pll: arm_clk@0 {
  47. #clock-cells = <0>;
  48. compatible = "brcm,nsp-armpll";
  49. clocks = <&osc>;
  50. reg = <0x00000 0x1000>;
  51. };
  52. scu@20000 {
  53. compatible = "arm,cortex-a9-scu";
  54. reg = <0x20000 0x100>;
  55. };
  56. timer@20200 {
  57. compatible = "arm,cortex-a9-global-timer";
  58. reg = <0x20200 0x100>;
  59. interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
  60. clocks = <&periph_clk>;
  61. };
  62. timer@20600 {
  63. compatible = "arm,cortex-a9-twd-timer";
  64. reg = <0x20600 0x20>;
  65. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) |
  66. IRQ_TYPE_EDGE_RISING)>;
  67. clocks = <&periph_clk>;
  68. };
  69. watchdog@20620 {
  70. compatible = "arm,cortex-a9-twd-wdt";
  71. reg = <0x20620 0x20>;
  72. interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) |
  73. IRQ_TYPE_EDGE_RISING)>;
  74. clocks = <&periph_clk>;
  75. };
  76. gic: interrupt-controller@21000 {
  77. compatible = "arm,cortex-a9-gic";
  78. #interrupt-cells = <3>;
  79. #address-cells = <0>;
  80. interrupt-controller;
  81. reg = <0x21000 0x1000>,
  82. <0x20100 0x100>;
  83. };
  84. L2: cache-controller@22000 {
  85. compatible = "arm,pl310-cache";
  86. reg = <0x22000 0x1000>;
  87. cache-unified;
  88. arm,shared-override;
  89. prefetch-data = <1>;
  90. prefetch-instr = <1>;
  91. cache-level = <2>;
  92. };
  93. };
  94. pmu {
  95. compatible = "arm,cortex-a9-pmu";
  96. interrupts =
  97. <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
  98. <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
  99. };
  100. clocks {
  101. #address-cells = <1>;
  102. #size-cells = <1>;
  103. ranges;
  104. osc: oscillator {
  105. #clock-cells = <0>;
  106. compatible = "fixed-clock";
  107. clock-frequency = <25000000>;
  108. };
  109. iprocmed: iprocmed {
  110. #clock-cells = <0>;
  111. compatible = "fixed-factor-clock";
  112. clocks = <&genpll BCM_NSP_GENPLL_IPROCFAST_CLK>;
  113. clock-div = <2>;
  114. clock-mult = <1>;
  115. };
  116. iprocslow: iprocslow {
  117. #clock-cells = <0>;
  118. compatible = "fixed-factor-clock";
  119. clocks = <&genpll BCM_NSP_GENPLL_IPROCFAST_CLK>;
  120. clock-div = <4>;
  121. clock-mult = <1>;
  122. };
  123. periph_clk: periph_clk {
  124. #clock-cells = <0>;
  125. compatible = "fixed-factor-clock";
  126. clocks = <&a9pll>;
  127. clock-div = <2>;
  128. clock-mult = <1>;
  129. };
  130. };
  131. axi@18000000 {
  132. compatible = "brcm,bus-axi";
  133. reg = <0x18000000 0x1000>;
  134. ranges = <0x00000000 0x18000000 0x00100000>;
  135. #address-cells = <1>;
  136. #size-cells = <1>;
  137. #interrupt-cells = <1>;
  138. interrupt-map-mask = <0x000fffff 0xffff>;
  139. interrupt-map =
  140. /* ChipCommon */
  141. <0x00000000 0 &gic GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
  142. /* Switch Register Access Block */
  143. <0x00007000 0 &gic GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
  144. <0x00007000 1 &gic GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
  145. <0x00007000 2 &gic GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
  146. <0x00007000 3 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
  147. <0x00007000 4 &gic GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
  148. <0x00007000 5 &gic GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
  149. <0x00007000 6 &gic GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
  150. <0x00007000 7 &gic GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
  151. <0x00007000 8 &gic GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
  152. <0x00007000 9 &gic GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
  153. <0x00007000 10 &gic GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
  154. <0x00007000 11 &gic GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
  155. <0x00007000 12 &gic GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
  156. /* PCIe Controller 0 */
  157. <0x00012000 0 &gic GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
  158. <0x00012000 1 &gic GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>,
  159. <0x00012000 2 &gic GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
  160. <0x00012000 3 &gic GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
  161. <0x00012000 4 &gic GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
  162. <0x00012000 5 &gic GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
  163. /* PCIe Controller 1 */
  164. <0x00013000 0 &gic GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
  165. <0x00013000 1 &gic GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
  166. <0x00013000 2 &gic GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
  167. <0x00013000 3 &gic GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
  168. <0x00013000 4 &gic GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
  169. <0x00013000 5 &gic GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
  170. /* PCIe Controller 2 */
  171. <0x00014000 0 &gic GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
  172. <0x00014000 1 &gic GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
  173. <0x00014000 2 &gic GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
  174. <0x00014000 3 &gic GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
  175. <0x00014000 4 &gic GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
  176. <0x00014000 5 &gic GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>,
  177. /* USB 2.0 Controller */
  178. <0x00021000 0 &gic GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
  179. /* USB 3.0 Controller */
  180. <0x00023000 0 &gic GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
  181. /* Ethernet Controller 0 */
  182. <0x00024000 0 &gic GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
  183. /* Ethernet Controller 1 */
  184. <0x00025000 0 &gic GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
  185. /* Ethernet Controller 2 */
  186. <0x00026000 0 &gic GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
  187. /* Ethernet Controller 3 */
  188. <0x00027000 0 &gic GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>,
  189. /* NAND Controller */
  190. <0x00028000 0 &gic GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
  191. <0x00028000 1 &gic GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
  192. <0x00028000 2 &gic GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
  193. <0x00028000 3 &gic GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
  194. <0x00028000 4 &gic GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
  195. <0x00028000 5 &gic GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
  196. <0x00028000 6 &gic GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
  197. <0x00028000 7 &gic GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
  198. chipcommon: chipcommon@0 {
  199. reg = <0x00000000 0x1000>;
  200. gpio-controller;
  201. #gpio-cells = <2>;
  202. interrupt-controller;
  203. #interrupt-cells = <2>;
  204. };
  205. pcie0: pcie@12000 {
  206. reg = <0x00012000 0x1000>;
  207. };
  208. pcie1: pcie@13000 {
  209. reg = <0x00013000 0x1000>;
  210. };
  211. pcie2: pcie@14000 {
  212. reg = <0x00014000 0x1000>;
  213. };
  214. usb2: usb2@21000 {
  215. reg = <0x00021000 0x1000>;
  216. #address-cells = <1>;
  217. #size-cells = <1>;
  218. ranges;
  219. interrupt-parent = <&gic>;
  220. ehci: usb@21000 {
  221. #usb-cells = <0>;
  222. compatible = "generic-ehci";
  223. reg = <0x00021000 0x1000>;
  224. interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
  225. phys = <&usb2_phy>;
  226. #address-cells = <1>;
  227. #size-cells = <0>;
  228. ehci_port1: port@1 {
  229. reg = <1>;
  230. #trigger-source-cells = <0>;
  231. };
  232. ehci_port2: port@2 {
  233. reg = <2>;
  234. #trigger-source-cells = <0>;
  235. };
  236. };
  237. ohci: usb@22000 {
  238. #usb-cells = <0>;
  239. compatible = "generic-ohci";
  240. reg = <0x00022000 0x1000>;
  241. interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
  242. #address-cells = <1>;
  243. #size-cells = <0>;
  244. ohci_port1: port@1 {
  245. reg = <1>;
  246. #trigger-source-cells = <0>;
  247. };
  248. ohci_port2: port@2 {
  249. reg = <2>;
  250. #trigger-source-cells = <0>;
  251. };
  252. };
  253. };
  254. usb3: usb3@23000 {
  255. reg = <0x00023000 0x1000>;
  256. #address-cells = <1>;
  257. #size-cells = <1>;
  258. ranges;
  259. interrupt-parent = <&gic>;
  260. xhci: usb@23000 {
  261. #usb-cells = <0>;
  262. compatible = "generic-xhci";
  263. reg = <0x00023000 0x1000>;
  264. interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
  265. phys = <&usb3_phy>;
  266. phy-names = "usb";
  267. #address-cells = <1>;
  268. #size-cells = <0>;
  269. xhci_port1: port@1 {
  270. reg = <1>;
  271. #trigger-source-cells = <0>;
  272. };
  273. };
  274. };
  275. gmac0: ethernet@24000 {
  276. reg = <0x24000 0x800>;
  277. };
  278. gmac1: ethernet@25000 {
  279. reg = <0x25000 0x800>;
  280. };
  281. gmac2: ethernet@26000 {
  282. reg = <0x26000 0x800>;
  283. };
  284. gmac3: ethernet@27000 {
  285. reg = <0x27000 0x800>;
  286. };
  287. };
  288. pwm: pwm@18002000 {
  289. compatible = "brcm,iproc-pwm";
  290. reg = <0x18002000 0x28>;
  291. clocks = <&osc>;
  292. #pwm-cells = <3>;
  293. status = "disabled";
  294. };
  295. mdio: mdio@18003000 {
  296. compatible = "brcm,iproc-mdio";
  297. reg = <0x18003000 0x8>;
  298. #size-cells = <0>;
  299. #address-cells = <1>;
  300. };
  301. mdio-mux@18003000 {
  302. compatible = "mdio-mux-mmioreg", "mdio-mux";
  303. mdio-parent-bus = <&mdio>;
  304. #address-cells = <1>;
  305. #size-cells = <0>;
  306. reg = <0x18003000 0x4>;
  307. mux-mask = <0x200>;
  308. mdio@0 {
  309. reg = <0x0>;
  310. #address-cells = <1>;
  311. #size-cells = <0>;
  312. usb3_phy: usb3-phy@10 {
  313. compatible = "brcm,ns-ax-usb3-phy";
  314. reg = <0x10>;
  315. usb3-dmp-syscon = <&usb3_dmp>;
  316. #phy-cells = <0>;
  317. status = "disabled";
  318. };
  319. };
  320. };
  321. usb3_dmp: syscon@18105000 {
  322. reg = <0x18105000 0x1000>;
  323. };
  324. uart2: serial@18008000 {
  325. compatible = "ns16550a";
  326. reg = <0x18008000 0x20>;
  327. clocks = <&iprocslow>;
  328. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  329. reg-shift = <2>;
  330. status = "disabled";
  331. };
  332. i2c0: i2c@18009000 {
  333. compatible = "brcm,iproc-i2c";
  334. reg = <0x18009000 0x50>;
  335. interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
  336. #address-cells = <1>;
  337. #size-cells = <0>;
  338. clock-frequency = <100000>;
  339. status = "disabled";
  340. };
  341. dmu-bus@1800c000 {
  342. compatible = "simple-bus";
  343. ranges = <0 0x1800c000 0x1000>;
  344. #address-cells = <1>;
  345. #size-cells = <1>;
  346. cru-bus@100 {
  347. compatible = "brcm,ns-cru", "simple-mfd";
  348. reg = <0x100 0x1a4>;
  349. ranges;
  350. #address-cells = <1>;
  351. #size-cells = <1>;
  352. lcpll0: clock-controller@100 {
  353. #clock-cells = <1>;
  354. compatible = "brcm,nsp-lcpll0";
  355. reg = <0x100 0x14>;
  356. clocks = <&osc>;
  357. clock-output-names = "lcpll0", "pcie_phy",
  358. "sdio", "ddr_phy";
  359. };
  360. genpll: clock-controller@140 {
  361. #clock-cells = <1>;
  362. compatible = "brcm,nsp-genpll";
  363. reg = <0x140 0x24>;
  364. clocks = <&osc>;
  365. clock-output-names = "genpll", "phy",
  366. "ethernetclk",
  367. "usbclk", "iprocfast",
  368. "sata1", "sata2";
  369. };
  370. usb2_phy: phy@164 {
  371. compatible = "brcm,ns-usb2-phy";
  372. reg = <0x164 0x4>;
  373. brcm,syscon-clkset = <&cru_clkset>;
  374. clocks = <&genpll BCM_NSP_GENPLL_USB_PHY_REF_CLK>;
  375. clock-names = "phy-ref-clk";
  376. #phy-cells = <0>;
  377. };
  378. cru_clkset: syscon@180 {
  379. compatible = "brcm,cru-clkset", "syscon";
  380. reg = <0x180 0x4>;
  381. };
  382. pinctrl: pinctrl@1c0 {
  383. compatible = "brcm,bcm4708-pinmux";
  384. reg = <0x1c0 0x24>;
  385. reg-names = "cru_gpio_control";
  386. spi-pins {
  387. groups = "spi_grp";
  388. function = "spi";
  389. };
  390. pinmux_i2c: i2c-pins {
  391. groups = "i2c_grp";
  392. function = "i2c";
  393. };
  394. pinmux_pwm: pwm-pins {
  395. groups = "pwm0_grp", "pwm1_grp",
  396. "pwm2_grp", "pwm3_grp";
  397. function = "pwm";
  398. };
  399. pinmux_uart1: uart1-pins {
  400. groups = "uart1_grp";
  401. function = "uart1";
  402. };
  403. };
  404. thermal: thermal@2c0 {
  405. compatible = "brcm,ns-thermal";
  406. reg = <0x2c0 0x10>;
  407. #thermal-sensor-cells = <0>;
  408. };
  409. };
  410. };
  411. srab: ethernet-switch@18007000 {
  412. compatible = "brcm,bcm53011-srab", "brcm,bcm5301x-srab";
  413. reg = <0x18007000 0x1000>;
  414. status = "disabled";
  415. /* ports are defined in board DTS */
  416. ports {
  417. #address-cells = <1>;
  418. #size-cells = <0>;
  419. };
  420. };
  421. rng: rng@18004000 {
  422. compatible = "brcm,bcm5301x-rng";
  423. reg = <0x18004000 0x14>;
  424. };
  425. nand_controller: nand-controller@18028000 {
  426. compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1", "brcm,brcmnand";
  427. reg = <0x18028000 0x600>, <0x1811a408 0x600>, <0x18028f00 0x20>;
  428. reg-names = "nand", "iproc-idm", "iproc-ext";
  429. interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
  430. #address-cells = <1>;
  431. #size-cells = <0>;
  432. brcm,nand-has-wp;
  433. };
  434. spi@18029200 {
  435. compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi";
  436. reg = <0x18029200 0x184>,
  437. <0x18029000 0x124>,
  438. <0x1811b408 0x004>,
  439. <0x180293a0 0x01c>;
  440. reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg";
  441. interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
  442. <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
  443. <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
  444. <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
  445. <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>,
  446. <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
  447. <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
  448. interrupt-names = "mspi_done",
  449. "mspi_halted",
  450. "spi_lr_fullness_reached",
  451. "spi_lr_session_aborted",
  452. "spi_lr_impatient",
  453. "spi_lr_session_done",
  454. "spi_lr_overread";
  455. clocks = <&iprocmed>;
  456. num-cs = <2>;
  457. #address-cells = <1>;
  458. #size-cells = <0>;
  459. spi_nor: flash@0 {
  460. compatible = "jedec,spi-nor";
  461. reg = <0>;
  462. spi-max-frequency = <20000000>;
  463. status = "disabled";
  464. partitions {
  465. compatible = "brcm,bcm947xx-cfe-partitions";
  466. };
  467. };
  468. };
  469. thermal-zones {
  470. cpu_thermal: cpu-thermal {
  471. polling-delay-passive = <0>;
  472. polling-delay = <1000>;
  473. coefficients = <(-556) 418000>;
  474. thermal-sensors = <&thermal>;
  475. trips {
  476. cpu-crit {
  477. temperature = <125000>;
  478. hysteresis = <0>;
  479. type = "critical";
  480. };
  481. };
  482. cooling-maps {
  483. };
  484. };
  485. };
  486. };