bcm7435.dtsi 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603
  1. // SPDX-License-Identifier: GPL-2.0
  2. / {
  3. #address-cells = <1>;
  4. #size-cells = <1>;
  5. compatible = "brcm,bcm7435";
  6. cpus {
  7. #address-cells = <1>;
  8. #size-cells = <0>;
  9. mips-hpt-frequency = <175625000>;
  10. cpu@0 {
  11. compatible = "brcm,bmips5200";
  12. device_type = "cpu";
  13. reg = <0>;
  14. };
  15. cpu@1 {
  16. compatible = "brcm,bmips5200";
  17. device_type = "cpu";
  18. reg = <1>;
  19. };
  20. cpu@2 {
  21. compatible = "brcm,bmips5200";
  22. device_type = "cpu";
  23. reg = <2>;
  24. };
  25. cpu@3 {
  26. compatible = "brcm,bmips5200";
  27. device_type = "cpu";
  28. reg = <3>;
  29. };
  30. };
  31. aliases {
  32. uart0 = &uart0;
  33. };
  34. cpu_intc: interrupt-controller {
  35. #address-cells = <0>;
  36. compatible = "mti,cpu-interrupt-controller";
  37. interrupt-controller;
  38. #interrupt-cells = <1>;
  39. };
  40. clocks {
  41. uart_clk: uart_clk {
  42. compatible = "fixed-clock";
  43. #clock-cells = <0>;
  44. clock-frequency = <81000000>;
  45. };
  46. upg_clk: upg_clk {
  47. compatible = "fixed-clock";
  48. #clock-cells = <0>;
  49. clock-frequency = <27000000>;
  50. };
  51. };
  52. rdb {
  53. #address-cells = <1>;
  54. #size-cells = <1>;
  55. compatible = "simple-bus";
  56. ranges = <0 0x10000000 0x01000000>;
  57. periph_intc: interrupt-controller@41b500 {
  58. compatible = "brcm,bcm7038-l1-intc";
  59. reg = <0x41b500 0x40>, <0x41b600 0x40>,
  60. <0x41b700 0x40>, <0x41b800 0x40>;
  61. interrupt-controller;
  62. #interrupt-cells = <1>;
  63. interrupt-parent = <&cpu_intc>;
  64. interrupts = <2>, <3>, <2>, <3>;
  65. };
  66. sun_l2_intc: interrupt-controller@403000 {
  67. compatible = "brcm,l2-intc";
  68. reg = <0x403000 0x30>;
  69. interrupt-controller;
  70. #interrupt-cells = <1>;
  71. interrupt-parent = <&periph_intc>;
  72. interrupts = <52>;
  73. };
  74. gisb-arb@400000 {
  75. compatible = "brcm,bcm7435-gisb-arb";
  76. reg = <0x400000 0xdc>;
  77. native-endian;
  78. interrupt-parent = <&sun_l2_intc>;
  79. interrupts = <0>, <2>;
  80. brcm,gisb-arb-master-mask = <0xf77f>;
  81. brcm,gisb-arb-master-names = "ssp_0", "cpu_0", "webcpu_0",
  82. "pcie_0", "bsp_0",
  83. "rdc_0", "raaga_0",
  84. "avd_1", "jtag_0",
  85. "svd_0", "vice_0",
  86. "vice_1", "raaga_1",
  87. "scpu";
  88. };
  89. upg_irq0_intc: interrupt-controller@406780 {
  90. compatible = "brcm,bcm7120-l2-intc";
  91. reg = <0x406780 0x8>;
  92. brcm,int-map-mask = <0x44>, <0x7000000>;
  93. brcm,int-fwd-mask = <0x70000>;
  94. interrupt-controller;
  95. #interrupt-cells = <1>;
  96. interrupt-parent = <&periph_intc>;
  97. interrupts = <60>, <58>;
  98. interrupt-names = "upg_main", "upg_bsc";
  99. };
  100. upg_aon_irq0_intc: interrupt-controller@409480 {
  101. compatible = "brcm,bcm7120-l2-intc";
  102. reg = <0x409480 0x8>;
  103. brcm,int-map-mask = <0x40>, <0x18000000>, <0x100000>;
  104. brcm,int-fwd-mask = <0>;
  105. brcm,irq-can-wake;
  106. interrupt-controller;
  107. #interrupt-cells = <1>;
  108. interrupt-parent = <&periph_intc>;
  109. interrupts = <61>, <59>, <64>;
  110. interrupt-names = "upg_main_aon", "upg_bsc_aon",
  111. "upg_spi";
  112. };
  113. sun_top_ctrl: syscon@404000 {
  114. compatible = "brcm,bcm7425-sun-top-ctrl", "syscon";
  115. reg = <0x404000 0x51c>;
  116. native-endian;
  117. };
  118. reboot {
  119. compatible = "brcm,brcmstb-reboot";
  120. syscon = <&sun_top_ctrl 0x304 0x308>;
  121. };
  122. uart0: serial@406b00 {
  123. compatible = "ns16550a";
  124. reg = <0x406b00 0x20>;
  125. reg-io-width = <0x4>;
  126. reg-shift = <0x2>;
  127. interrupt-parent = <&periph_intc>;
  128. interrupts = <66>;
  129. clocks = <&uart_clk>;
  130. status = "disabled";
  131. };
  132. uart1: serial@406b40 {
  133. compatible = "ns16550a";
  134. reg = <0x406b40 0x20>;
  135. reg-io-width = <0x4>;
  136. reg-shift = <0x2>;
  137. interrupt-parent = <&periph_intc>;
  138. interrupts = <67>;
  139. clocks = <&uart_clk>;
  140. status = "disabled";
  141. };
  142. uart2: serial@406b80 {
  143. compatible = "ns16550a";
  144. reg = <0x406b80 0x20>;
  145. reg-io-width = <0x4>;
  146. reg-shift = <0x2>;
  147. interrupt-parent = <&periph_intc>;
  148. interrupts = <68>;
  149. clocks = <&uart_clk>;
  150. status = "disabled";
  151. };
  152. bsca: i2c@406300 {
  153. clock-frequency = <390000>;
  154. compatible = "brcm,brcmstb-i2c";
  155. interrupt-parent = <&upg_irq0_intc>;
  156. reg = <0x406300 0x58>;
  157. interrupts = <26>;
  158. interrupt-names = "upg_bsca";
  159. status = "disabled";
  160. };
  161. bscb: i2c@409400 {
  162. clock-frequency = <390000>;
  163. compatible = "brcm,brcmstb-i2c";
  164. interrupt-parent = <&upg_aon_irq0_intc>;
  165. reg = <0x409400 0x58>;
  166. interrupts = <28>;
  167. interrupt-names = "upg_bscb";
  168. status = "disabled";
  169. };
  170. bscc: i2c@406200 {
  171. clock-frequency = <390000>;
  172. compatible = "brcm,brcmstb-i2c";
  173. interrupt-parent = <&upg_irq0_intc>;
  174. reg = <0x406200 0x58>;
  175. interrupts = <24>;
  176. interrupt-names = "upg_bscc";
  177. status = "disabled";
  178. };
  179. bscd: i2c@406280 {
  180. clock-frequency = <390000>;
  181. compatible = "brcm,brcmstb-i2c";
  182. interrupt-parent = <&upg_irq0_intc>;
  183. reg = <0x406280 0x58>;
  184. interrupts = <25>;
  185. interrupt-names = "upg_bscd";
  186. status = "disabled";
  187. };
  188. bsce: i2c@409180 {
  189. clock-frequency = <390000>;
  190. compatible = "brcm,brcmstb-i2c";
  191. interrupt-parent = <&upg_aon_irq0_intc>;
  192. reg = <0x409180 0x58>;
  193. interrupts = <27>;
  194. interrupt-names = "upg_bsce";
  195. status = "disabled";
  196. };
  197. pwma: pwm@406580 {
  198. compatible = "brcm,bcm7038-pwm";
  199. reg = <0x406580 0x28>;
  200. #pwm-cells = <2>;
  201. clocks = <&upg_clk>;
  202. status = "disabled";
  203. };
  204. pwmb: pwm@406800 {
  205. compatible = "brcm,bcm7038-pwm";
  206. reg = <0x406800 0x28>;
  207. #pwm-cells = <2>;
  208. clocks = <&upg_clk>;
  209. status = "disabled";
  210. };
  211. watchdog: watchdog@4067e8 {
  212. clocks = <&upg_clk>;
  213. compatible = "brcm,bcm7038-wdt";
  214. reg = <0x4067e8 0x14>;
  215. status = "disabled";
  216. };
  217. aon_pm_l2_intc: interrupt-controller@408440 {
  218. compatible = "brcm,l2-intc";
  219. reg = <0x408440 0x30>;
  220. interrupt-controller;
  221. #interrupt-cells = <1>;
  222. interrupt-parent = <&periph_intc>;
  223. interrupts = <54>;
  224. brcm,irq-can-wake;
  225. };
  226. aon_ctrl: syscon@408000 {
  227. compatible = "brcm,brcmstb-aon-ctrl";
  228. reg = <0x408000 0x100>, <0x408200 0x200>;
  229. reg-names = "aon-ctrl", "aon-sram";
  230. };
  231. timers: timer@4067c0 {
  232. compatible = "brcm,brcmstb-timers";
  233. reg = <0x4067c0 0x40>;
  234. };
  235. upg_gio: gpio@406700 {
  236. compatible = "brcm,brcmstb-gpio";
  237. reg = <0x406700 0x80>;
  238. #gpio-cells = <2>;
  239. #interrupt-cells = <2>;
  240. gpio-controller;
  241. interrupt-controller;
  242. interrupt-parent = <&upg_irq0_intc>;
  243. interrupts = <6>;
  244. brcm,gpio-bank-widths = <32 32 32 21>;
  245. };
  246. upg_gio_aon: gpio@4094c0 {
  247. compatible = "brcm,brcmstb-gpio";
  248. reg = <0x4094c0 0x40>;
  249. #gpio-cells = <2>;
  250. #interrupt-cells = <2>;
  251. gpio-controller;
  252. interrupt-controller;
  253. interrupt-parent = <&upg_aon_irq0_intc>;
  254. interrupts = <6>;
  255. interrupts-extended = <&upg_aon_irq0_intc 6>,
  256. <&aon_pm_l2_intc 5>;
  257. wakeup-source;
  258. brcm,gpio-bank-widths = <18 4>;
  259. };
  260. enet0: ethernet@b80000 {
  261. phy-mode = "internal";
  262. phy-handle = <&phy1>;
  263. mac-address = [ 00 10 18 36 23 1a ];
  264. compatible = "brcm,genet-v3";
  265. #address-cells = <0x1>;
  266. #size-cells = <0x1>;
  267. reg = <0xb80000 0x11c88>;
  268. interrupts = <17>, <18>;
  269. interrupt-parent = <&periph_intc>;
  270. status = "disabled";
  271. mdio@e14 {
  272. compatible = "brcm,genet-mdio-v3";
  273. #address-cells = <0x1>;
  274. #size-cells = <0x0>;
  275. reg = <0xe14 0x8>;
  276. phy1: ethernet-phy@1 {
  277. max-speed = <100>;
  278. reg = <0x1>;
  279. compatible = "brcm,40nm-ephy",
  280. "ethernet-phy-ieee802.3-c22";
  281. };
  282. };
  283. };
  284. ehci0: usb@480300 {
  285. compatible = "brcm,bcm7435-ehci", "generic-ehci";
  286. reg = <0x480300 0x100>;
  287. native-endian;
  288. interrupt-parent = <&periph_intc>;
  289. interrupts = <70>;
  290. status = "disabled";
  291. };
  292. ohci0: usb@480400 {
  293. compatible = "brcm,bcm7435-ohci", "generic-ohci";
  294. reg = <0x480400 0x100>;
  295. native-endian;
  296. no-big-frame-no;
  297. interrupt-parent = <&periph_intc>;
  298. interrupts = <72>;
  299. status = "disabled";
  300. };
  301. ehci1: usb@480500 {
  302. compatible = "brcm,bcm7435-ehci", "generic-ehci";
  303. reg = <0x480500 0x100>;
  304. native-endian;
  305. interrupt-parent = <&periph_intc>;
  306. interrupts = <71>;
  307. status = "disabled";
  308. };
  309. ohci1: usb@480600 {
  310. compatible = "brcm,bcm7435-ohci", "generic-ohci";
  311. reg = <0x480600 0x100>;
  312. native-endian;
  313. no-big-frame-no;
  314. interrupt-parent = <&periph_intc>;
  315. interrupts = <73>;
  316. status = "disabled";
  317. };
  318. ehci2: usb@490300 {
  319. compatible = "brcm,bcm7435-ehci", "generic-ehci";
  320. reg = <0x490300 0x100>;
  321. native-endian;
  322. interrupt-parent = <&periph_intc>;
  323. interrupts = <75>;
  324. status = "disabled";
  325. };
  326. ohci2: usb@490400 {
  327. compatible = "brcm,bcm7435-ohci", "generic-ohci";
  328. reg = <0x490400 0x100>;
  329. native-endian;
  330. no-big-frame-no;
  331. interrupt-parent = <&periph_intc>;
  332. interrupts = <77>;
  333. status = "disabled";
  334. };
  335. ehci3: usb@490500 {
  336. compatible = "brcm,bcm7435-ehci", "generic-ehci";
  337. reg = <0x490500 0x100>;
  338. native-endian;
  339. interrupt-parent = <&periph_intc>;
  340. interrupts = <76>;
  341. status = "disabled";
  342. };
  343. ohci3: usb@490600 {
  344. compatible = "brcm,bcm7435-ohci", "generic-ohci";
  345. reg = <0x490600 0x100>;
  346. native-endian;
  347. no-big-frame-no;
  348. interrupt-parent = <&periph_intc>;
  349. interrupts = <78>;
  350. status = "disabled";
  351. };
  352. hif_l2_intc: interrupt-controller@41b000 {
  353. compatible = "brcm,l2-intc";
  354. reg = <0x41b000 0x30>;
  355. interrupt-controller;
  356. #interrupt-cells = <1>;
  357. interrupt-parent = <&periph_intc>;
  358. interrupts = <24>;
  359. };
  360. nand: nand@41c800 {
  361. compatible = "brcm,brcmnand-v6.2", "brcm,brcmnand";
  362. #address-cells = <1>;
  363. #size-cells = <0>;
  364. reg-names = "nand", "flash-dma";
  365. reg = <0x41c800 0x600>, <0x41d000 0x100>;
  366. interrupt-parent = <&hif_l2_intc>;
  367. interrupts = <24>, <4>;
  368. status = "disabled";
  369. };
  370. sata: sata@181000 {
  371. compatible = "brcm,bcm7425-ahci", "brcm,sata3-ahci";
  372. reg-names = "ahci", "top-ctrl";
  373. reg = <0x181000 0xa9c>, <0x180020 0x1c>;
  374. interrupt-parent = <&periph_intc>;
  375. interrupts = <45>;
  376. #address-cells = <1>;
  377. #size-cells = <0>;
  378. status = "disabled";
  379. sata0: sata-port@0 {
  380. reg = <0>;
  381. phys = <&sata_phy0>;
  382. };
  383. sata1: sata-port@1 {
  384. reg = <1>;
  385. phys = <&sata_phy1>;
  386. };
  387. };
  388. sata_phy: sata-phy@180100 {
  389. compatible = "brcm,bcm7425-sata-phy", "brcm,phy-sata3";
  390. reg = <0x180100 0x0eff>;
  391. reg-names = "phy";
  392. #address-cells = <1>;
  393. #size-cells = <0>;
  394. status = "disabled";
  395. sata_phy0: sata-phy@0 {
  396. reg = <0>;
  397. #phy-cells = <0>;
  398. };
  399. sata_phy1: sata-phy@1 {
  400. reg = <1>;
  401. #phy-cells = <0>;
  402. };
  403. };
  404. sdhci0: sdhci@41a000 {
  405. compatible = "brcm,bcm7425-sdhci";
  406. reg = <0x41a000 0x100>;
  407. interrupt-parent = <&periph_intc>;
  408. interrupts = <47>;
  409. sd-uhs-sdr50;
  410. mmc-hs200-1_8v;
  411. status = "disabled";
  412. };
  413. sdhci1: sdhci@41a200 {
  414. compatible = "brcm,bcm7425-sdhci";
  415. reg = <0x41a200 0x100>;
  416. interrupt-parent = <&periph_intc>;
  417. interrupts = <48>;
  418. sd-uhs-sdr50;
  419. mmc-hs200-1_8v;
  420. status = "disabled";
  421. };
  422. spi_l2_intc: interrupt-controller@41bd00 {
  423. compatible = "brcm,l2-intc";
  424. reg = <0x41bd00 0x30>;
  425. interrupt-controller;
  426. #interrupt-cells = <1>;
  427. interrupt-parent = <&periph_intc>;
  428. interrupts = <25>;
  429. };
  430. qspi: spi@41d200 {
  431. #address-cells = <0x1>;
  432. #size-cells = <0x0>;
  433. compatible = "brcm,spi-bcm-qspi",
  434. "brcm,spi-brcmstb-qspi";
  435. clocks = <&upg_clk>;
  436. reg = <0x41a920 0x4 0x41d400 0x188 0x41d200 0x50>;
  437. reg-names = "cs_reg", "hif_mspi", "bspi";
  438. interrupts = <0x0 0x1 0x2 0x3 0x4 0x5 0x6>;
  439. interrupt-parent = <&spi_l2_intc>;
  440. interrupt-names = "spi_lr_fullness_reached",
  441. "spi_lr_session_aborted",
  442. "spi_lr_impatient",
  443. "spi_lr_session_done",
  444. "spi_lr_overread",
  445. "mspi_done",
  446. "mspi_halted";
  447. status = "disabled";
  448. };
  449. mspi: spi@409200 {
  450. #address-cells = <1>;
  451. #size-cells = <0>;
  452. compatible = "brcm,spi-bcm-qspi",
  453. "brcm,spi-brcmstb-mspi";
  454. clocks = <&upg_clk>;
  455. reg = <0x409200 0x180>;
  456. reg-names = "mspi";
  457. interrupts = <0x14>;
  458. interrupt-parent = <&upg_aon_irq0_intc>;
  459. interrupt-names = "mspi_done";
  460. status = "disabled";
  461. };
  462. waketimer: waketimer@409580 {
  463. compatible = "brcm,brcmstb-waketimer";
  464. reg = <0x409580 0x14>;
  465. interrupts = <0x3>;
  466. interrupt-parent = <&aon_pm_l2_intc>;
  467. interrupt-names = "timer";
  468. clocks = <&upg_clk>;
  469. status = "disabled";
  470. };
  471. };
  472. memory_controllers {
  473. compatible = "simple-bus";
  474. ranges = <0x0 0x103b0000 0x1a000>;
  475. #address-cells = <1>;
  476. #size-cells = <1>;
  477. memory-controller@0 {
  478. compatible = "brcm,brcmstb-memc", "simple-bus";
  479. ranges = <0x0 0x0 0xa000>;
  480. #address-cells = <1>;
  481. #size-cells = <1>;
  482. memc-arb@1000 {
  483. compatible = "brcm,brcmstb-memc-arb";
  484. reg = <0x1000 0x248>;
  485. };
  486. memc-ddr@2000 {
  487. compatible = "brcm,brcmstb-memc-ddr";
  488. reg = <0x2000 0x300>;
  489. };
  490. ddr-phy@6000 {
  491. compatible = "brcm,brcmstb-ddr-phy";
  492. reg = <0x6000 0xc8>;
  493. };
  494. shimphy@8000 {
  495. compatible = "brcm,brcmstb-ddr-shimphy";
  496. reg = <0x8000 0x13c>;
  497. };
  498. };
  499. memory-controller@1 {
  500. compatible = "brcm,brcmstb-memc", "simple-bus";
  501. ranges = <0x0 0x10000 0xa000>;
  502. #address-cells = <1>;
  503. #size-cells = <1>;
  504. memc-arb@1000 {
  505. compatible = "brcm,brcmstb-memc-arb";
  506. reg = <0x1000 0x248>;
  507. };
  508. memc-ddr@2000 {
  509. compatible = "brcm,brcmstb-memc-ddr";
  510. reg = <0x2000 0x300>;
  511. };
  512. ddr-phy@6000 {
  513. compatible = "brcm,brcmstb-ddr-phy";
  514. reg = <0x6000 0xc8>;
  515. };
  516. shimphy@8000 {
  517. compatible = "brcm,brcmstb-ddr-shimphy";
  518. reg = <0x8000 0x13c>;
  519. };
  520. };
  521. };
  522. };