lpc4357-ea4357-devkit.dts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626
  1. /*
  2. * Embedded Artist LPC4357 Developer's Kit
  3. *
  4. * Copyright 2015 Joachim Eastwood <manabian@gmail.com>
  5. *
  6. * This code is released using a dual license strategy: BSD/GPL
  7. * You can choose the licence that better fits your requirements.
  8. *
  9. * Released under the terms of 3-clause BSD License
  10. * Released under the terms of GNU General Public License Version 2.0
  11. *
  12. */
  13. /dts-v1/;
  14. #include "lpc18xx.dtsi"
  15. #include "lpc4357.dtsi"
  16. #include "dt-bindings/input/input.h"
  17. #include "dt-bindings/gpio/gpio.h"
  18. / {
  19. model = "Embedded Artists' LPC4357 Developer's Kit";
  20. compatible = "ea,lpc4357-developers-kit", "nxp,lpc4357", "nxp,lpc4350";
  21. aliases {
  22. serial0 = &uart0;
  23. serial1 = &uart1;
  24. serial2 = &uart2;
  25. serial3 = &uart3;
  26. };
  27. chosen {
  28. stdout-path = &uart0;
  29. };
  30. memory@28000000 {
  31. device_type = "memory";
  32. reg = <0x28000000 0x2000000>; /* 32 MB */
  33. };
  34. vcc: vcc_fixed {
  35. compatible = "regulator-fixed";
  36. regulator-name = "3v3-supply";
  37. regulator-min-microvolt = <3300000>;
  38. regulator-max-microvolt = <3300000>;
  39. };
  40. /* vmmc is controlled by sdmmc host internally */
  41. vmmc: vmmc_fixed {
  42. compatible = "regulator-fixed";
  43. regulator-name = "vmmc-supply";
  44. regulator-min-microvolt = <3300000>;
  45. regulator-max-microvolt = <3300000>;
  46. };
  47. gpio_joystick {
  48. compatible = "gpio-keys-polled";
  49. pinctrl-names = "default";
  50. pinctrl-0 = <&gpio_joystick_pins>;
  51. #address-cells = <1>;
  52. #size-cells = <0>;
  53. poll-interval = <100>;
  54. autorepeat;
  55. button0 {
  56. label = "joy_enter";
  57. linux,code = <KEY_ENTER>;
  58. gpios = <&gpio LPC_GPIO(4,8) GPIO_ACTIVE_LOW>;
  59. };
  60. button1 {
  61. label = "joy_left";
  62. linux,code = <KEY_LEFT>;
  63. gpios = <&gpio LPC_GPIO(4,9) GPIO_ACTIVE_LOW>;
  64. };
  65. button2 {
  66. label = "joy_up";
  67. linux,code = <KEY_UP>;
  68. gpios = <&gpio LPC_GPIO(4,10) GPIO_ACTIVE_LOW>;
  69. };
  70. button3 {
  71. label = "joy_right";
  72. linux,code = <KEY_RIGHT>;
  73. gpios = <&gpio LPC_GPIO(4,12) GPIO_ACTIVE_LOW>;
  74. };
  75. button4 {
  76. label = "joy_down";
  77. linux,code = <KEY_DOWN>;
  78. gpios = <&gpio LPC_GPIO(4,13) GPIO_ACTIVE_LOW>;
  79. };
  80. };
  81. leds_mmio {
  82. compatible = "gpio-leds";
  83. led1 {
  84. gpios = <&mmio_leds 15 GPIO_ACTIVE_HIGH>;
  85. linux,default-trigger = "heartbeat";
  86. };
  87. led2 {
  88. gpios = <&mmio_leds 14 GPIO_ACTIVE_HIGH>;
  89. };
  90. led3 {
  91. gpios = <&mmio_leds 13 GPIO_ACTIVE_HIGH>;
  92. };
  93. led4 {
  94. gpios = <&mmio_leds 12 GPIO_ACTIVE_HIGH>;
  95. };
  96. led5 {
  97. gpios = <&mmio_leds 11 GPIO_ACTIVE_HIGH>;
  98. };
  99. led6 {
  100. gpios = <&mmio_leds 10 GPIO_ACTIVE_HIGH>;
  101. };
  102. led7 {
  103. gpios = <&mmio_leds 9 GPIO_ACTIVE_HIGH>;
  104. };
  105. led8 {
  106. gpios = <&mmio_leds 8 GPIO_ACTIVE_HIGH>;
  107. };
  108. led9 {
  109. gpios = <&mmio_leds 7 GPIO_ACTIVE_HIGH>;
  110. };
  111. led10 {
  112. gpios = <&mmio_leds 6 GPIO_ACTIVE_HIGH>;
  113. };
  114. led11 {
  115. gpios = <&mmio_leds 5 GPIO_ACTIVE_HIGH>;
  116. };
  117. led12 {
  118. gpios = <&mmio_leds 4 GPIO_ACTIVE_HIGH>;
  119. };
  120. led13 {
  121. gpios = <&mmio_leds 3 GPIO_ACTIVE_HIGH>;
  122. };
  123. led14 {
  124. gpios = <&mmio_leds 2 GPIO_ACTIVE_HIGH>;
  125. };
  126. led15 {
  127. gpios = <&mmio_leds 1 GPIO_ACTIVE_HIGH>;
  128. };
  129. led16 {
  130. gpios = <&mmio_leds 0 GPIO_ACTIVE_HIGH>;
  131. };
  132. };
  133. };
  134. &pinctrl {
  135. emc_pins: emc-pins {
  136. emc_addr0_23_cfg {
  137. pins = "p2_9", "p2_10", "p2_11", "p2_12",
  138. "p2_13", "p1_0", "p1_1", "p1_2",
  139. "p2_8", "p2_7", "p2_6", "p2_2",
  140. "p2_1", "p2_0", "p6_8", "p6_7",
  141. "pd_16", "pd_15", "pe_0", "pe_1",
  142. "pe_2", "pe_3", "pe_4", "pa_4";
  143. function = "emc";
  144. slew-rate = <1>;
  145. bias-disable;
  146. input-enable;
  147. input-schmitt-disable;
  148. };
  149. emc_data0_31_cfg {
  150. pins = "p1_7", "p1_8", "p1_9", "p1_10",
  151. "p1_11", "p1_12", "p1_13", "p1_14",
  152. "p5_4", "p5_5", "p5_6", "p5_7",
  153. "p5_0", "p5_1", "p5_2", "p5_3",
  154. "pd_2", "pd_3", "pd_4", "pd_5",
  155. "pd_6", "pd_7", "pd_8", "pd_9",
  156. "pe_5", "pe_6", "pe_7", "pe_8",
  157. "pe_9", "pe_10", "pe_11", "pe_12";
  158. function = "emc";
  159. slew-rate = <1>;
  160. bias-disable;
  161. input-enable;
  162. input-schmitt-disable;
  163. };
  164. emc_we_oe_cfg {
  165. pins = "p1_6", "p1_3";
  166. function = "emc";
  167. slew-rate = <1>;
  168. bias-disable;
  169. input-enable;
  170. input-schmitt-disable;
  171. };
  172. emc_bls0_3_cfg {
  173. pins = "p1_4", "p6_6", "pd_13", "pd_10";
  174. function = "emc";
  175. slew-rate = <1>;
  176. bias-disable;
  177. input-enable;
  178. input-schmitt-disable;
  179. };
  180. emc_cs0_3_cfg {
  181. pins = "p1_5", "p6_3", "pd_12", "pd_11";
  182. function = "emc";
  183. slew-rate = <1>;
  184. bias-disable;
  185. input-enable;
  186. input-schmitt-disable;
  187. };
  188. emc_sdram_dqm0_3_cfg {
  189. pins = "p6_12", "p6_10", "pd_0", "pe_13";
  190. function = "emc";
  191. slew-rate = <1>;
  192. bias-disable;
  193. input-enable;
  194. input-schmitt-disable;
  195. };
  196. emc_sdram_ras_cas_cfg {
  197. pins = "p6_5", "p6_4";
  198. function = "emc";
  199. slew-rate = <1>;
  200. bias-disable;
  201. input-enable;
  202. input-schmitt-disable;
  203. };
  204. emc_sdram_dycs0_cfg {
  205. pins = "p6_9";
  206. function = "emc";
  207. slew-rate = <1>;
  208. bias-disable;
  209. input-enable;
  210. input-schmitt-disable;
  211. };
  212. emc_sdram_cke_cfg {
  213. pins = "p6_11";
  214. function = "emc";
  215. slew-rate = <1>;
  216. bias-disable;
  217. input-enable;
  218. input-schmitt-disable;
  219. };
  220. emc_sdram_clock_cfg {
  221. pins = "clk0", "clk1", "clk2", "clk3";
  222. function = "emc";
  223. slew-rate = <1>;
  224. bias-disable;
  225. input-enable;
  226. input-schmitt-disable;
  227. };
  228. };
  229. enet_rmii_pins: enet-rmii-pins {
  230. enet_rmii_rxd_cfg {
  231. pins = "p1_15", "p0_0";
  232. function = "enet";
  233. slew-rate = <1>;
  234. bias-disable;
  235. input-enable;
  236. input-schmitt-disable;
  237. };
  238. enet_rmii_txd_cfg {
  239. pins = "p1_18", "p1_20";
  240. function = "enet";
  241. slew-rate = <1>;
  242. bias-disable;
  243. input-enable;
  244. input-schmitt-disable;
  245. };
  246. enet_rmii_rx_dv_cfg {
  247. pins = "p1_16";
  248. function = "enet";
  249. bias-disable;
  250. input-enable;
  251. input-schmitt-disable;
  252. };
  253. enet_rmii_tx_en_cfg {
  254. pins = "p0_1";
  255. function = "enet";
  256. bias-disable;
  257. input-enable;
  258. input-schmitt-disable;
  259. };
  260. enet_ref_clk_cfg {
  261. pins = "p1_19";
  262. function = "enet";
  263. slew-rate = <1>;
  264. bias-disable;
  265. input-enable;
  266. input-schmitt-disable;
  267. };
  268. enet_mdio_cfg {
  269. pins = "p1_17";
  270. function = "enet";
  271. bias-disable;
  272. input-enable;
  273. input-schmitt-disable;
  274. };
  275. enet_mdc_cfg {
  276. pins = "pc_1";
  277. function = "enet";
  278. slew-rate = <1>;
  279. bias-disable;
  280. input-enable;
  281. input-schmitt-disable;
  282. };
  283. };
  284. gpio_joystick_pins: gpio-joystick-pins {
  285. gpio_joystick_cfg {
  286. pins = "p9_0", "p9_1", "pa_1", "pa_2", "pa_3";
  287. function = "gpio";
  288. input-enable;
  289. bias-disable;
  290. };
  291. };
  292. i2c0_pins: i2c0-pins {
  293. i2c0_pins_cfg {
  294. pins = "i2c0_scl", "i2c0_sda";
  295. function = "i2c0";
  296. input-enable;
  297. };
  298. };
  299. sdmmc_pins: sdmmc-pins {
  300. sdmmc_clk_cfg {
  301. pins = "pc_0";
  302. function = "sdmmc";
  303. slew-rate = <1>;
  304. bias-pull-down;
  305. };
  306. sdmmc_cmd_dat0_3_cfg {
  307. pins = "pc_4", "pc_5", "pc_6", "pc_7", "pc_10";
  308. function = "sdmmc";
  309. slew-rate = <1>;
  310. bias-disable;
  311. input-enable;
  312. input-schmitt-disable;
  313. };
  314. sdmmc_cd_cfg {
  315. pins = "pc_8";
  316. function = "sdmmc";
  317. bias-pull-down;
  318. input-enable;
  319. };
  320. sdmmc_pow_cfg {
  321. pins = "pc_9";
  322. function = "sdmmc";
  323. bias-pull-down;
  324. };
  325. };
  326. spifi_pins: spifi-pins {
  327. spifi_clk_cfg {
  328. pins = "p3_3";
  329. function = "spifi";
  330. slew-rate = <1>;
  331. bias-disable;
  332. input-enable;
  333. input-schmitt-disable;
  334. };
  335. spifi_mosi_miso_sio2_3_cfg {
  336. pins = "p3_7", "p3_6", "p3_5", "p3_4";
  337. function = "spifi";
  338. slew-rate = <0>;
  339. bias-disable;
  340. input-enable;
  341. input-schmitt-disable;
  342. };
  343. spifi_cs_cfg {
  344. pins = "p3_8";
  345. function = "spifi";
  346. bias-disable;
  347. };
  348. };
  349. ssp0_pins: ssp0-pins {
  350. ssp0_sck_miso_mosi {
  351. pins = "pf_0", "pf_2", "pf_3";
  352. function = "ssp0";
  353. slew-rate = <1>;
  354. bias-pull-down;
  355. input-enable;
  356. input-schmitt-disable;
  357. };
  358. ssp0_ssel {
  359. pins = "pf_1";
  360. function = "ssp0";
  361. bias-pull-up;
  362. };
  363. };
  364. uart0_pins: uart0-pins {
  365. uart0_rx_cfg {
  366. pins = "pf_11";
  367. function = "uart0";
  368. input-schmitt-disable;
  369. bias-disable;
  370. input-enable;
  371. };
  372. uart0_tx_cfg {
  373. pins = "pf_10";
  374. function = "uart0";
  375. bias-pull-down;
  376. };
  377. };
  378. uart3_pins: uart3-pins {
  379. uart3_rx_cfg {
  380. pins = "p2_4";
  381. function = "uart3";
  382. input-schmitt-disable;
  383. bias-disable;
  384. input-enable;
  385. };
  386. uart3_tx_cfg {
  387. pins = "p9_3";
  388. function = "uart3";
  389. bias-pull-down;
  390. };
  391. };
  392. usb0_pins: usb0-pins {
  393. usb0_pwr_enable {
  394. pins = "p2_3";
  395. function = "usb0";
  396. };
  397. usb0_pwr_fault {
  398. pins = "p8_0";
  399. function = "usb0";
  400. bias-disable;
  401. input-enable;
  402. };
  403. };
  404. };
  405. &adc0 {
  406. status = "okay";
  407. vref-supply = <&vcc>;
  408. };
  409. &i2c0 {
  410. status = "okay";
  411. pinctrl-names = "default";
  412. pinctrl-0 = <&i2c0_pins>;
  413. clock-frequency = <400000>;
  414. mma7455@1d {
  415. compatible = "fsl,mma7455";
  416. reg = <0x1d>;
  417. };
  418. lm75@48 {
  419. compatible = "nxp,lm75";
  420. reg = <0x48>;
  421. };
  422. eeprom@57 {
  423. compatible = "microchip,24c64";
  424. reg = <0x57>;
  425. };
  426. };
  427. &dac {
  428. status = "okay";
  429. vref-supply = <&vcc>;
  430. };
  431. &emc {
  432. status = "okay";
  433. pinctrl-names = "default";
  434. pinctrl-0 = <&emc_pins>;
  435. cs0 {
  436. #address-cells = <2>;
  437. #size-cells = <1>;
  438. ranges;
  439. mpmc,cs = <0>;
  440. mpmc,memory-width = <16>;
  441. mpmc,byte-lane-low;
  442. mpmc,write-enable-delay = <0>;
  443. mpmc,output-enable-delay = <0>;
  444. mpmc,read-access-delay = <70>;
  445. mpmc,page-mode-read-delay = <70>;
  446. flash@0,0 {
  447. compatible = "sst,sst39vf320", "cfi-flash";
  448. reg = <0 0 0x400000>;
  449. bank-width = <2>;
  450. #address-cells = <1>;
  451. #size-cells = <1>;
  452. partition@0 {
  453. label = "bootloader";
  454. reg = <0x000000 0x040000>; /* 256 KiB */
  455. };
  456. partition@1 {
  457. label = "kernel";
  458. reg = <0x040000 0x2c0000>; /* 2.75 MiB */
  459. };
  460. partition@2 {
  461. label = "rootfs";
  462. reg = <0x300000 0x100000>; /* 1 MiB */
  463. };
  464. };
  465. };
  466. cs2 {
  467. #address-cells = <2>;
  468. #size-cells = <1>;
  469. ranges;
  470. mpmc,cs = <2>;
  471. mpmc,memory-width = <16>;
  472. mmio_leds: gpio@2,0 {
  473. compatible = "ti,7416374";
  474. reg = <2 0 0x2>;
  475. gpio-controller;
  476. #gpio-cells = <2>;
  477. };
  478. };
  479. };
  480. &enet_tx_clk {
  481. clock-frequency = <50000000>;
  482. };
  483. &mac {
  484. status = "okay";
  485. phy-mode = "rmii";
  486. pinctrl-names = "default";
  487. pinctrl-0 = <&enet_rmii_pins>;
  488. };
  489. &mmcsd {
  490. status = "okay";
  491. bus-width = <4>;
  492. vmmc-supply = <&vmmc>;
  493. pinctrl-names = "default";
  494. pinctrl-0 = <&sdmmc_pins>;
  495. };
  496. &spifi {
  497. status = "okay";
  498. pinctrl-names = "default";
  499. pinctrl-0 = <&spifi_pins>;
  500. flash {
  501. compatible = "jedec,spi-nor";
  502. spi-cpol;
  503. spi-cpha;
  504. spi-rx-bus-width = <4>;
  505. #address-cells = <1>;
  506. #size-cells = <1>;
  507. partition@0 {
  508. label = "data";
  509. reg = <0 0x200000>;
  510. };
  511. };
  512. };
  513. &ssp0 {
  514. status = "okay";
  515. pinctrl-names = "default";
  516. pinctrl-0 = <&ssp0_pins>;
  517. num-cs = <1>;
  518. };
  519. &uart0 {
  520. status = "okay";
  521. pinctrl-names = "default";
  522. pinctrl-0 = <&uart0_pins>;
  523. };
  524. &uart3 {
  525. status = "okay";
  526. pinctrl-names = "default";
  527. pinctrl-0 = <&uart3_pins>;
  528. };
  529. &usb0 {
  530. status = "okay";
  531. pinctrl-names = "default";
  532. pinctrl-0 = <&usb0_pins>;
  533. };