armada-3720-turris-mox.dts 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873
  1. // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2. /*
  3. * Device Tree file for CZ.NIC Turris Mox Board
  4. * 2019 by Marek Behún <[email protected]>
  5. */
  6. /dts-v1/;
  7. #include <dt-bindings/bus/moxtet.h>
  8. #include <dt-bindings/gpio/gpio.h>
  9. #include <dt-bindings/input/input.h>
  10. #include "armada-372x.dtsi"
  11. / {
  12. model = "CZ.NIC Turris Mox Board";
  13. compatible = "cznic,turris-mox", "marvell,armada3720",
  14. "marvell,armada3710";
  15. aliases {
  16. spi0 = &spi0;
  17. ethernet0 = &eth0;
  18. ethernet1 = &eth1;
  19. mmc0 = &sdhci0;
  20. mmc1 = &sdhci1;
  21. };
  22. chosen {
  23. stdout-path = "serial0:115200n8";
  24. };
  25. memory@0 {
  26. device_type = "memory";
  27. reg = <0x00000000 0x00000000 0x00000000 0x20000000>;
  28. };
  29. leds {
  30. compatible = "gpio-leds";
  31. led {
  32. label = "mox:red:activity";
  33. gpios = <&gpiosb 21 GPIO_ACTIVE_LOW>;
  34. linux,default-trigger = "default-on";
  35. };
  36. };
  37. gpio-keys {
  38. compatible = "gpio-keys";
  39. key-reset {
  40. label = "reset";
  41. linux,code = <KEY_RESTART>;
  42. gpios = <&gpiosb 20 GPIO_ACTIVE_LOW>;
  43. debounce-interval = <60>;
  44. };
  45. };
  46. exp_usb3_vbus: usb3-vbus {
  47. compatible = "regulator-fixed";
  48. regulator-name = "usb3-vbus";
  49. regulator-min-microvolt = <5000000>;
  50. regulator-max-microvolt = <5000000>;
  51. enable-active-high;
  52. regulator-always-on;
  53. gpio = <&gpiosb 0 GPIO_ACTIVE_HIGH>;
  54. };
  55. vsdc_reg: vsdc-reg {
  56. compatible = "regulator-gpio";
  57. regulator-name = "vsdc";
  58. regulator-min-microvolt = <1800000>;
  59. regulator-max-microvolt = <3300000>;
  60. regulator-boot-on;
  61. gpios = <&gpiosb 23 GPIO_ACTIVE_HIGH>;
  62. gpios-states = <0>;
  63. states = <1800000 0x1
  64. 3300000 0x0>;
  65. enable-active-high;
  66. };
  67. vsdio_reg: vsdio-reg {
  68. compatible = "regulator-gpio";
  69. regulator-name = "vsdio";
  70. regulator-min-microvolt = <1800000>;
  71. regulator-max-microvolt = <3300000>;
  72. regulator-boot-on;
  73. gpios = <&gpiosb 22 GPIO_ACTIVE_HIGH>;
  74. gpios-states = <0>;
  75. states = <1800000 0x1
  76. 3300000 0x0>;
  77. enable-active-high;
  78. };
  79. sdhci1_pwrseq: sdhci1-pwrseq {
  80. compatible = "mmc-pwrseq-simple";
  81. reset-gpios = <&gpionb 19 GPIO_ACTIVE_HIGH>;
  82. status = "okay";
  83. };
  84. sfp: sfp {
  85. compatible = "sff,sfp";
  86. i2c-bus = <&i2c0>;
  87. los-gpios = <&moxtet_sfp 0 GPIO_ACTIVE_HIGH>;
  88. tx-fault-gpios = <&moxtet_sfp 1 GPIO_ACTIVE_HIGH>;
  89. mod-def0-gpios = <&moxtet_sfp 2 GPIO_ACTIVE_LOW>;
  90. tx-disable-gpios = <&moxtet_sfp 4 GPIO_ACTIVE_HIGH>;
  91. rate-select0-gpios = <&moxtet_sfp 5 GPIO_ACTIVE_HIGH>;
  92. maximum-power-milliwatt = <3000>;
  93. /* enabled by U-Boot if SFP module is present */
  94. status = "disabled";
  95. };
  96. firmware {
  97. armada-3700-rwtm {
  98. compatible = "marvell,armada-3700-rwtm-firmware", "cznic,turris-mox-rwtm";
  99. };
  100. };
  101. };
  102. &i2c0 {
  103. pinctrl-names = "default";
  104. pinctrl-0 = <&i2c1_pins>;
  105. clock-frequency = <100000>;
  106. /delete-property/ mrvl,i2c-fast-mode;
  107. status = "okay";
  108. /* MCP7940MT-I/MNY RTC */
  109. rtc@6f {
  110. compatible = "microchip,mcp7940x";
  111. reg = <0x6f>;
  112. interrupt-parent = <&gpiosb>;
  113. interrupts = <5 0>; /* GPIO2_5 */
  114. };
  115. };
  116. &pcie0 {
  117. pinctrl-names = "default";
  118. pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>;
  119. status = "okay";
  120. reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>;
  121. /*
  122. * U-Boot port for Turris Mox has a bug which always expects that "ranges" DT property
  123. * contains exactly 2 ranges with 3 (child) address cells, 2 (parent) address cells and
  124. * 2 size cells and also expects that the second range starts at 16 MB offset. Also it
  125. * expects that first range uses same address for PCI (child) and CPU (parent) cells (so
  126. * no remapping) and that this address is the lowest from all specified ranges. If these
  127. * conditions are not met then U-Boot crashes during loading kernel DTB file. PCIe address
  128. * space is 128 MB long, so the best split between MEM and IO is to use fixed 16 MB window
  129. * for IO and the rest 112 MB (64+32+16) for MEM, despite that maximal IO size is just 64 kB.
  130. * This bug is not present in U-Boot ports for other Armada 3700 devices and is fixed in
  131. * U-Boot version 2021.07. See relevant U-Boot commits (the last one contains fix):
  132. * https://source.denx.de/u-boot/u-boot/-/commit/cb2ddb291ee6fcbddd6d8f4ff49089dfe580f5d7
  133. * https://source.denx.de/u-boot/u-boot/-/commit/c64ac3b3185aeb3846297ad7391fc6df8ecd73bf
  134. * https://source.denx.de/u-boot/u-boot/-/commit/4a82fca8e330157081fc132a591ebd99ba02ee33
  135. * Bug related to requirement of same child and parent addresses for first range is fixed
  136. * in U-Boot version 2022.04 by following commit:
  137. * https://source.denx.de/u-boot/u-boot/-/commit/1fd54253bca7d43d046bba4853fe5fafd034bc17
  138. */
  139. #address-cells = <3>;
  140. #size-cells = <2>;
  141. ranges = <0x81000000 0 0xe8000000 0 0xe8000000 0 0x01000000 /* Port 0 IO */
  142. 0x82000000 0 0xe9000000 0 0xe9000000 0 0x07000000>; /* Port 0 MEM */
  143. /* enabled by U-Boot if PCIe module is present */
  144. status = "disabled";
  145. };
  146. &uart0 {
  147. status = "okay";
  148. };
  149. &eth0 {
  150. pinctrl-names = "default";
  151. pinctrl-0 = <&rgmii_pins>;
  152. phy-mode = "rgmii-id";
  153. phy-handle = <&phy1>;
  154. status = "okay";
  155. };
  156. &eth1 {
  157. phy-mode = "2500base-x";
  158. managed = "in-band-status";
  159. phys = <&comphy0 1>;
  160. };
  161. &sdhci0 {
  162. wp-inverted;
  163. bus-width = <4>;
  164. cd-gpios = <&gpionb 10 GPIO_ACTIVE_HIGH>;
  165. vqmmc-supply = <&vsdc_reg>;
  166. marvell,pad-type = "sd";
  167. status = "okay";
  168. };
  169. &sdhci1 {
  170. pinctrl-names = "default";
  171. pinctrl-0 = <&sdio_pins>;
  172. non-removable;
  173. bus-width = <4>;
  174. marvell,pad-type = "sd";
  175. vqmmc-supply = <&vsdio_reg>;
  176. mmc-pwrseq = <&sdhci1_pwrseq>;
  177. /* forbid SDR104 for FCC purposes */
  178. sdhci-caps-mask = <0x2 0x0>;
  179. status = "okay";
  180. };
  181. &spi0 {
  182. status = "okay";
  183. pinctrl-names = "default";
  184. pinctrl-0 = <&spi_quad_pins &spi_cs1_pins>;
  185. assigned-clocks = <&nb_periph_clk 7>;
  186. assigned-clock-parents = <&tbg 1>;
  187. assigned-clock-rates = <20000000>;
  188. flash@0 {
  189. #address-cells = <1>;
  190. #size-cells = <1>;
  191. compatible = "jedec,spi-nor";
  192. reg = <0>;
  193. spi-max-frequency = <20000000>;
  194. partitions {
  195. compatible = "fixed-partitions";
  196. #address-cells = <1>;
  197. #size-cells = <1>;
  198. partition@0 {
  199. label = "secure-firmware";
  200. reg = <0x0 0x20000>;
  201. };
  202. partition@20000 {
  203. label = "a53-firmware";
  204. reg = <0x20000 0x160000>;
  205. };
  206. partition@180000 {
  207. label = "u-boot-env";
  208. reg = <0x180000 0x10000>;
  209. };
  210. partition@190000 {
  211. label = "Rescue system";
  212. reg = <0x190000 0x660000>;
  213. };
  214. partition@7f0000 {
  215. label = "dtb";
  216. reg = <0x7f0000 0x10000>;
  217. };
  218. };
  219. };
  220. moxtet: moxtet@1 {
  221. #address-cells = <1>;
  222. #size-cells = <0>;
  223. compatible = "cznic,moxtet";
  224. reg = <1>;
  225. reset-gpios = <&gpiosb 2 GPIO_ACTIVE_LOW>;
  226. spi-max-frequency = <10000000>;
  227. spi-cpol;
  228. spi-cpha;
  229. interrupt-controller;
  230. #interrupt-cells = <1>;
  231. interrupt-parent = <&gpiosb>;
  232. interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
  233. status = "okay";
  234. moxtet_sfp: gpio@0 {
  235. compatible = "cznic,moxtet-gpio";
  236. gpio-controller;
  237. #gpio-cells = <2>;
  238. reg = <0>;
  239. status = "disabled";
  240. };
  241. };
  242. };
  243. &usb2 {
  244. status = "okay";
  245. };
  246. &comphy2 {
  247. connector {
  248. compatible = "usb-a-connector";
  249. phy-supply = <&exp_usb3_vbus>;
  250. };
  251. };
  252. &usb3 {
  253. status = "okay";
  254. phys = <&comphy2 0>;
  255. };
  256. &mdio {
  257. pinctrl-names = "default";
  258. pinctrl-0 = <&smi_pins>;
  259. status = "okay";
  260. phy1: ethernet-phy@1 {
  261. reg = <1>;
  262. };
  263. /* switch nodes are enabled by U-Boot if modules are present */
  264. switch0@10 {
  265. compatible = "marvell,mv88e6190";
  266. reg = <0x10>;
  267. dsa,member = <0 0>;
  268. interrupt-parent = <&moxtet>;
  269. interrupts = <MOXTET_IRQ_PERIDOT(0)>;
  270. status = "disabled";
  271. mdio {
  272. #address-cells = <1>;
  273. #size-cells = <0>;
  274. switch0phy1: switch0phy1@1 {
  275. reg = <0x1>;
  276. };
  277. switch0phy2: switch0phy2@2 {
  278. reg = <0x2>;
  279. };
  280. switch0phy3: switch0phy3@3 {
  281. reg = <0x3>;
  282. };
  283. switch0phy4: switch0phy4@4 {
  284. reg = <0x4>;
  285. };
  286. switch0phy5: switch0phy5@5 {
  287. reg = <0x5>;
  288. };
  289. switch0phy6: switch0phy6@6 {
  290. reg = <0x6>;
  291. };
  292. switch0phy7: switch0phy7@7 {
  293. reg = <0x7>;
  294. };
  295. switch0phy8: switch0phy8@8 {
  296. reg = <0x8>;
  297. };
  298. };
  299. ports {
  300. #address-cells = <1>;
  301. #size-cells = <0>;
  302. port@1 {
  303. reg = <0x1>;
  304. label = "lan1";
  305. phy-handle = <&switch0phy1>;
  306. };
  307. port@2 {
  308. reg = <0x2>;
  309. label = "lan2";
  310. phy-handle = <&switch0phy2>;
  311. };
  312. port@3 {
  313. reg = <0x3>;
  314. label = "lan3";
  315. phy-handle = <&switch0phy3>;
  316. };
  317. port@4 {
  318. reg = <0x4>;
  319. label = "lan4";
  320. phy-handle = <&switch0phy4>;
  321. };
  322. port@5 {
  323. reg = <0x5>;
  324. label = "lan5";
  325. phy-handle = <&switch0phy5>;
  326. };
  327. port@6 {
  328. reg = <0x6>;
  329. label = "lan6";
  330. phy-handle = <&switch0phy6>;
  331. };
  332. port@7 {
  333. reg = <0x7>;
  334. label = "lan7";
  335. phy-handle = <&switch0phy7>;
  336. };
  337. port@8 {
  338. reg = <0x8>;
  339. label = "lan8";
  340. phy-handle = <&switch0phy8>;
  341. };
  342. port@9 {
  343. reg = <0x9>;
  344. label = "cpu";
  345. ethernet = <&eth1>;
  346. phy-mode = "2500base-x";
  347. managed = "in-band-status";
  348. };
  349. switch0port10: port@a {
  350. reg = <0xa>;
  351. label = "dsa";
  352. phy-mode = "2500base-x";
  353. managed = "in-band-status";
  354. link = <&switch1port9 &switch2port9>;
  355. status = "disabled";
  356. };
  357. port-sfp@a {
  358. reg = <0xa>;
  359. label = "sfp";
  360. sfp = <&sfp>;
  361. phy-mode = "sgmii";
  362. managed = "in-band-status";
  363. status = "disabled";
  364. };
  365. };
  366. };
  367. switch0@2 {
  368. compatible = "marvell,mv88e6085";
  369. reg = <0x2>;
  370. dsa,member = <0 0>;
  371. interrupt-parent = <&moxtet>;
  372. interrupts = <MOXTET_IRQ_TOPAZ>;
  373. status = "disabled";
  374. mdio {
  375. #address-cells = <1>;
  376. #size-cells = <0>;
  377. switch0phy1_topaz: switch0phy1@11 {
  378. reg = <0x11>;
  379. };
  380. switch0phy2_topaz: switch0phy2@12 {
  381. reg = <0x12>;
  382. };
  383. switch0phy3_topaz: switch0phy3@13 {
  384. reg = <0x13>;
  385. };
  386. switch0phy4_topaz: switch0phy4@14 {
  387. reg = <0x14>;
  388. };
  389. };
  390. ports {
  391. #address-cells = <1>;
  392. #size-cells = <0>;
  393. port@1 {
  394. reg = <0x1>;
  395. label = "lan1";
  396. phy-handle = <&switch0phy1_topaz>;
  397. };
  398. port@2 {
  399. reg = <0x2>;
  400. label = "lan2";
  401. phy-handle = <&switch0phy2_topaz>;
  402. };
  403. port@3 {
  404. reg = <0x3>;
  405. label = "lan3";
  406. phy-handle = <&switch0phy3_topaz>;
  407. };
  408. port@4 {
  409. reg = <0x4>;
  410. label = "lan4";
  411. phy-handle = <&switch0phy4_topaz>;
  412. };
  413. port@5 {
  414. reg = <0x5>;
  415. label = "cpu";
  416. phy-mode = "2500base-x";
  417. managed = "in-band-status";
  418. ethernet = <&eth1>;
  419. };
  420. };
  421. };
  422. switch1@11 {
  423. compatible = "marvell,mv88e6190";
  424. reg = <0x11>;
  425. dsa,member = <0 1>;
  426. interrupt-parent = <&moxtet>;
  427. interrupts = <MOXTET_IRQ_PERIDOT(1)>;
  428. status = "disabled";
  429. mdio {
  430. #address-cells = <1>;
  431. #size-cells = <0>;
  432. switch1phy1: switch1phy1@1 {
  433. reg = <0x1>;
  434. };
  435. switch1phy2: switch1phy2@2 {
  436. reg = <0x2>;
  437. };
  438. switch1phy3: switch1phy3@3 {
  439. reg = <0x3>;
  440. };
  441. switch1phy4: switch1phy4@4 {
  442. reg = <0x4>;
  443. };
  444. switch1phy5: switch1phy5@5 {
  445. reg = <0x5>;
  446. };
  447. switch1phy6: switch1phy6@6 {
  448. reg = <0x6>;
  449. };
  450. switch1phy7: switch1phy7@7 {
  451. reg = <0x7>;
  452. };
  453. switch1phy8: switch1phy8@8 {
  454. reg = <0x8>;
  455. };
  456. };
  457. ports {
  458. #address-cells = <1>;
  459. #size-cells = <0>;
  460. port@1 {
  461. reg = <0x1>;
  462. label = "lan9";
  463. phy-handle = <&switch1phy1>;
  464. };
  465. port@2 {
  466. reg = <0x2>;
  467. label = "lan10";
  468. phy-handle = <&switch1phy2>;
  469. };
  470. port@3 {
  471. reg = <0x3>;
  472. label = "lan11";
  473. phy-handle = <&switch1phy3>;
  474. };
  475. port@4 {
  476. reg = <0x4>;
  477. label = "lan12";
  478. phy-handle = <&switch1phy4>;
  479. };
  480. port@5 {
  481. reg = <0x5>;
  482. label = "lan13";
  483. phy-handle = <&switch1phy5>;
  484. };
  485. port@6 {
  486. reg = <0x6>;
  487. label = "lan14";
  488. phy-handle = <&switch1phy6>;
  489. };
  490. port@7 {
  491. reg = <0x7>;
  492. label = "lan15";
  493. phy-handle = <&switch1phy7>;
  494. };
  495. port@8 {
  496. reg = <0x8>;
  497. label = "lan16";
  498. phy-handle = <&switch1phy8>;
  499. };
  500. switch1port9: port@9 {
  501. reg = <0x9>;
  502. label = "dsa";
  503. phy-mode = "2500base-x";
  504. managed = "in-band-status";
  505. link = <&switch0port10>;
  506. };
  507. switch1port10: port@a {
  508. reg = <0xa>;
  509. label = "dsa";
  510. phy-mode = "2500base-x";
  511. managed = "in-band-status";
  512. link = <&switch2port9>;
  513. status = "disabled";
  514. };
  515. port-sfp@a {
  516. reg = <0xa>;
  517. label = "sfp";
  518. sfp = <&sfp>;
  519. phy-mode = "sgmii";
  520. managed = "in-band-status";
  521. status = "disabled";
  522. };
  523. };
  524. };
  525. switch1@2 {
  526. compatible = "marvell,mv88e6085";
  527. reg = <0x2>;
  528. dsa,member = <0 1>;
  529. interrupt-parent = <&moxtet>;
  530. interrupts = <MOXTET_IRQ_TOPAZ>;
  531. status = "disabled";
  532. mdio {
  533. #address-cells = <1>;
  534. #size-cells = <0>;
  535. switch1phy1_topaz: switch1phy1@11 {
  536. reg = <0x11>;
  537. };
  538. switch1phy2_topaz: switch1phy2@12 {
  539. reg = <0x12>;
  540. };
  541. switch1phy3_topaz: switch1phy3@13 {
  542. reg = <0x13>;
  543. };
  544. switch1phy4_topaz: switch1phy4@14 {
  545. reg = <0x14>;
  546. };
  547. };
  548. ports {
  549. #address-cells = <1>;
  550. #size-cells = <0>;
  551. port@1 {
  552. reg = <0x1>;
  553. label = "lan9";
  554. phy-handle = <&switch1phy1_topaz>;
  555. };
  556. port@2 {
  557. reg = <0x2>;
  558. label = "lan10";
  559. phy-handle = <&switch1phy2_topaz>;
  560. };
  561. port@3 {
  562. reg = <0x3>;
  563. label = "lan11";
  564. phy-handle = <&switch1phy3_topaz>;
  565. };
  566. port@4 {
  567. reg = <0x4>;
  568. label = "lan12";
  569. phy-handle = <&switch1phy4_topaz>;
  570. };
  571. port@5 {
  572. reg = <0x5>;
  573. label = "dsa";
  574. phy-mode = "2500base-x";
  575. managed = "in-band-status";
  576. link = <&switch0port10>;
  577. };
  578. };
  579. };
  580. switch2@12 {
  581. compatible = "marvell,mv88e6190";
  582. reg = <0x12>;
  583. dsa,member = <0 2>;
  584. interrupt-parent = <&moxtet>;
  585. interrupts = <MOXTET_IRQ_PERIDOT(2)>;
  586. status = "disabled";
  587. mdio {
  588. #address-cells = <1>;
  589. #size-cells = <0>;
  590. switch2phy1: switch2phy1@1 {
  591. reg = <0x1>;
  592. };
  593. switch2phy2: switch2phy2@2 {
  594. reg = <0x2>;
  595. };
  596. switch2phy3: switch2phy3@3 {
  597. reg = <0x3>;
  598. };
  599. switch2phy4: switch2phy4@4 {
  600. reg = <0x4>;
  601. };
  602. switch2phy5: switch2phy5@5 {
  603. reg = <0x5>;
  604. };
  605. switch2phy6: switch2phy6@6 {
  606. reg = <0x6>;
  607. };
  608. switch2phy7: switch2phy7@7 {
  609. reg = <0x7>;
  610. };
  611. switch2phy8: switch2phy8@8 {
  612. reg = <0x8>;
  613. };
  614. };
  615. ports {
  616. #address-cells = <1>;
  617. #size-cells = <0>;
  618. port@1 {
  619. reg = <0x1>;
  620. label = "lan17";
  621. phy-handle = <&switch2phy1>;
  622. };
  623. port@2 {
  624. reg = <0x2>;
  625. label = "lan18";
  626. phy-handle = <&switch2phy2>;
  627. };
  628. port@3 {
  629. reg = <0x3>;
  630. label = "lan19";
  631. phy-handle = <&switch2phy3>;
  632. };
  633. port@4 {
  634. reg = <0x4>;
  635. label = "lan20";
  636. phy-handle = <&switch2phy4>;
  637. };
  638. port@5 {
  639. reg = <0x5>;
  640. label = "lan21";
  641. phy-handle = <&switch2phy5>;
  642. };
  643. port@6 {
  644. reg = <0x6>;
  645. label = "lan22";
  646. phy-handle = <&switch2phy6>;
  647. };
  648. port@7 {
  649. reg = <0x7>;
  650. label = "lan23";
  651. phy-handle = <&switch2phy7>;
  652. };
  653. port@8 {
  654. reg = <0x8>;
  655. label = "lan24";
  656. phy-handle = <&switch2phy8>;
  657. };
  658. switch2port9: port@9 {
  659. reg = <0x9>;
  660. label = "dsa";
  661. phy-mode = "2500base-x";
  662. managed = "in-band-status";
  663. link = <&switch1port10 &switch0port10>;
  664. };
  665. port-sfp@a {
  666. reg = <0xa>;
  667. label = "sfp";
  668. sfp = <&sfp>;
  669. phy-mode = "sgmii";
  670. managed = "in-band-status";
  671. status = "disabled";
  672. };
  673. };
  674. };
  675. switch2@2 {
  676. compatible = "marvell,mv88e6085";
  677. reg = <0x2>;
  678. dsa,member = <0 2>;
  679. interrupt-parent = <&moxtet>;
  680. interrupts = <MOXTET_IRQ_TOPAZ>;
  681. status = "disabled";
  682. mdio {
  683. #address-cells = <1>;
  684. #size-cells = <0>;
  685. switch2phy1_topaz: switch2phy1@11 {
  686. reg = <0x11>;
  687. };
  688. switch2phy2_topaz: switch2phy2@12 {
  689. reg = <0x12>;
  690. };
  691. switch2phy3_topaz: switch2phy3@13 {
  692. reg = <0x13>;
  693. };
  694. switch2phy4_topaz: switch2phy4@14 {
  695. reg = <0x14>;
  696. };
  697. };
  698. ports {
  699. #address-cells = <1>;
  700. #size-cells = <0>;
  701. port@1 {
  702. reg = <0x1>;
  703. label = "lan17";
  704. phy-handle = <&switch2phy1_topaz>;
  705. };
  706. port@2 {
  707. reg = <0x2>;
  708. label = "lan18";
  709. phy-handle = <&switch2phy2_topaz>;
  710. };
  711. port@3 {
  712. reg = <0x3>;
  713. label = "lan19";
  714. phy-handle = <&switch2phy3_topaz>;
  715. };
  716. port@4 {
  717. reg = <0x4>;
  718. label = "lan20";
  719. phy-handle = <&switch2phy4_topaz>;
  720. };
  721. port@5 {
  722. reg = <0x5>;
  723. label = "dsa";
  724. phy-mode = "2500base-x";
  725. managed = "in-band-status";
  726. link = <&switch1port10 &switch0port10>;
  727. };
  728. };
  729. };
  730. };