ste-nomadik-stn8815.dtsi 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC
  4. */
  5. #include <dt-bindings/gpio/gpio.h>
  6. / {
  7. #address-cells = <1>;
  8. #size-cells = <1>;
  9. memory {
  10. device_type = "memory";
  11. reg = <0x00000000 0x04000000>,
  12. <0x08000000 0x04000000>;
  13. };
  14. L2: cache-controller {
  15. compatible = "arm,l210-cache";
  16. reg = <0x10210000 0x1000>;
  17. interrupt-parent = <&vica>;
  18. interrupts = <30>;
  19. cache-unified;
  20. cache-level = <2>;
  21. cache-size = <131072>;
  22. cache-sets = <512>;
  23. cache-line-size = <32>;
  24. /* At full speed latency must be >=2 */
  25. arm,tag-latency = <8>;
  26. arm,data-latency = <8 8>;
  27. arm,dirty-latency = <8>;
  28. };
  29. mtu0: mtu@101e2000 {
  30. /* Nomadik system timer */
  31. compatible = "st,nomadik-mtu";
  32. reg = <0x101e2000 0x1000>;
  33. interrupt-parent = <&vica>;
  34. interrupts = <4>;
  35. clocks = <&timclk>, <&pclk>;
  36. clock-names = "timclk", "apb_pclk";
  37. };
  38. mtu1: mtu@101e3000 {
  39. /* Secondary timer */
  40. reg = <0x101e3000 0x1000>;
  41. interrupt-parent = <&vica>;
  42. interrupts = <5>;
  43. clocks = <&timclk>, <&pclk>;
  44. clock-names = "timclk", "apb_pclk";
  45. };
  46. gpio0: gpio@101e4000 {
  47. compatible = "st,nomadik-gpio";
  48. reg = <0x101e4000 0x80>;
  49. interrupt-parent = <&vica>;
  50. interrupts = <6>;
  51. interrupt-controller;
  52. #interrupt-cells = <2>;
  53. gpio-controller;
  54. #gpio-cells = <2>;
  55. gpio-bank = <0>;
  56. gpio-ranges = <&pinctrl 0 0 32>;
  57. clocks = <&pclk>;
  58. };
  59. gpio1: gpio@101e5000 {
  60. compatible = "st,nomadik-gpio";
  61. reg = <0x101e5000 0x80>;
  62. interrupt-parent = <&vica>;
  63. interrupts = <7>;
  64. interrupt-controller;
  65. #interrupt-cells = <2>;
  66. gpio-controller;
  67. #gpio-cells = <2>;
  68. gpio-bank = <1>;
  69. gpio-ranges = <&pinctrl 0 32 32>;
  70. clocks = <&pclk>;
  71. };
  72. gpio2: gpio@101e6000 {
  73. compatible = "st,nomadik-gpio";
  74. reg = <0x101e6000 0x80>;
  75. interrupt-parent = <&vica>;
  76. interrupts = <8>;
  77. interrupt-controller;
  78. #interrupt-cells = <2>;
  79. gpio-controller;
  80. #gpio-cells = <2>;
  81. gpio-bank = <2>;
  82. gpio-ranges = <&pinctrl 0 64 32>;
  83. clocks = <&pclk>;
  84. };
  85. gpio3: gpio@101e7000 {
  86. compatible = "st,nomadik-gpio";
  87. reg = <0x101e7000 0x80>;
  88. ngpio = <28>;
  89. interrupt-parent = <&vica>;
  90. interrupts = <9>;
  91. interrupt-controller;
  92. #interrupt-cells = <2>;
  93. gpio-controller;
  94. #gpio-cells = <2>;
  95. gpio-bank = <3>;
  96. gpio-ranges = <&pinctrl 0 96 28>;
  97. clocks = <&pclk>;
  98. };
  99. pinctrl: pinctrl {
  100. compatible = "stericsson,stn8815-pinctrl";
  101. nomadik-gpio-chips = <&gpio0>, <&gpio1>, <&gpio2>, <&gpio3>;
  102. /* Pin configurations */
  103. uart1 {
  104. uart1_default_mux: uart1_mux {
  105. u1_default_mux {
  106. function = "u1";
  107. groups = "u1_a_1";
  108. };
  109. };
  110. };
  111. mmcsd {
  112. mmcsd_default_mux: mmcsd_mux {
  113. mmcsd_default_mux {
  114. function = "mmcsd";
  115. groups = "mmcsd_a_1", "mmcsd_b_1";
  116. };
  117. };
  118. mmcsd_default_mode: mmcsd_default {
  119. mmcsd_default_cfg1 {
  120. /*
  121. * MCCLK, MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2
  122. * MCCMD, MCDAT3-0, MCMSFBCLK
  123. */
  124. pins = "GPIO8_B10", "GPIO9_A10", "GPIO10_C11", "GPIO11_B11",
  125. "GPIO12_A11", "GPIO13_C12", "GPIO14_B12", "GPIO15_A12",
  126. "GPIO16_C13", "GPIO23_D15", "GPIO24_C15";
  127. ste,output = <2>;
  128. };
  129. };
  130. };
  131. i2c0 {
  132. i2c0_default_mux: i2c0_mux {
  133. i2c0_default_mux {
  134. function = "i2c0";
  135. groups = "i2c0_a_1";
  136. };
  137. };
  138. i2c0_default_mode: i2c0_default {
  139. i2c0_default_cfg {
  140. pins = "GPIO62_D3", "GPIO63_D2";
  141. ste,input = <0>;
  142. };
  143. };
  144. };
  145. i2c1 {
  146. i2c1_default_mux: i2c1_mux {
  147. i2c1_default_mux {
  148. function = "i2c1";
  149. groups = "i2c1_a_1";
  150. };
  151. };
  152. i2c1_default_mode: i2c1_default {
  153. i2c1_default_cfg {
  154. pins = "GPIO53_L4", "GPIO54_L3";
  155. ste,input = <0>;
  156. };
  157. };
  158. };
  159. clcd {
  160. /*
  161. * This should be activated to use the additional
  162. * 8 lines for bits 16 thru 23 from the CLCD block.
  163. */
  164. clcd_24bit_mux: clcd_mux {
  165. clcd_24bit_mux {
  166. function = "clcd";
  167. groups = "clcd_16_23_b_1";
  168. };
  169. };
  170. };
  171. };
  172. /* Power Management Unit */
  173. pmu: pmu@101e9000 {
  174. compatible = "stericsson,nomadik-pmu", "syscon";
  175. reg = <0x101e0000 0x1000>;
  176. };
  177. src: src@101e0000 {
  178. compatible = "stericsson,nomadik-src";
  179. reg = <0x101e0000 0x1000>;
  180. /*
  181. * MXTAL "Main Chrystal" is a chrystal oscillator @19.2 MHz
  182. * that is parent of TIMCLK, PLL1 and PLL2
  183. */
  184. mxtal: [email protected] {
  185. #clock-cells = <0>;
  186. compatible = "fixed-clock";
  187. clock-frequency = <19200000>;
  188. };
  189. /*
  190. * The 2.4 MHz TIMCLK reference clock is active at
  191. * boot time, this is actually the MXTALCLK @19.2 MHz
  192. * divided by 8. This clock is used by the timers and
  193. * watchdog. See page 105 ff.
  194. */
  195. timclk: [email protected] {
  196. #clock-cells = <0>;
  197. compatible = "fixed-factor-clock";
  198. clock-div = <8>;
  199. clock-mult = <1>;
  200. clocks = <&mxtal>;
  201. };
  202. /* PLL1 is locked to MXTALI and variable from 20.4 to 334 MHz */
  203. pll1: pll1@0 {
  204. #clock-cells = <0>;
  205. compatible = "st,nomadik-pll-clock";
  206. pll-id = <1>;
  207. clocks = <&mxtal>;
  208. };
  209. /* HCLK divides the PLL1 with 1,2,3 or 4 */
  210. hclk: hclk@0 {
  211. #clock-cells = <0>;
  212. compatible = "st,nomadik-hclk-clock";
  213. clocks = <&pll1>;
  214. };
  215. /* The PCLK domain uses HCLK right off */
  216. pclk: pclk@0 {
  217. #clock-cells = <0>;
  218. compatible = "fixed-factor-clock";
  219. clock-div = <1>;
  220. clock-mult = <1>;
  221. clocks = <&hclk>;
  222. };
  223. /* PLL2 is usually 864 MHz and divided into a few fixed rates */
  224. pll2: pll2@0 {
  225. #clock-cells = <0>;
  226. compatible = "st,nomadik-pll-clock";
  227. pll-id = <2>;
  228. clocks = <&mxtal>;
  229. };
  230. clk216: clk216@216M {
  231. #clock-cells = <0>;
  232. compatible = "fixed-factor-clock";
  233. clock-div = <4>;
  234. clock-mult = <1>;
  235. clocks = <&pll2>;
  236. };
  237. clk108: clk108@108M {
  238. #clock-cells = <0>;
  239. compatible = "fixed-factor-clock";
  240. clock-div = <2>;
  241. clock-mult = <1>;
  242. clocks = <&clk216>;
  243. };
  244. clk72: clk72@72M {
  245. #clock-cells = <0>;
  246. compatible = "fixed-factor-clock";
  247. /* The data sheet does not say how this is derived */
  248. clock-div = <12>;
  249. clock-mult = <1>;
  250. clocks = <&pll2>;
  251. };
  252. clk48: clk48@48M {
  253. #clock-cells = <0>;
  254. compatible = "fixed-factor-clock";
  255. /* The data sheet does not say how this is derived */
  256. clock-div = <18>;
  257. clock-mult = <1>;
  258. clocks = <&pll2>;
  259. };
  260. clk27: clk27@27M {
  261. #clock-cells = <0>;
  262. compatible = "fixed-factor-clock";
  263. clock-div = <4>;
  264. clock-mult = <1>;
  265. clocks = <&clk108>;
  266. };
  267. /* This apparently exists as well */
  268. ulpiclk: ulpiclk@60M {
  269. #clock-cells = <0>;
  270. compatible = "fixed-clock";
  271. clock-frequency = <60000000>;
  272. };
  273. /*
  274. * IP AMBA bus clocks, driving the bus side of the
  275. * peripheral clocking, clock gates.
  276. */
  277. hclkdma0: hclkdma0@48M {
  278. #clock-cells = <0>;
  279. compatible = "st,nomadik-src-clock";
  280. clock-id = <0>;
  281. clocks = <&hclk>;
  282. };
  283. hclksmc: hclksmc@48M {
  284. #clock-cells = <0>;
  285. compatible = "st,nomadik-src-clock";
  286. clock-id = <1>;
  287. clocks = <&hclk>;
  288. };
  289. hclksdram: hclksdram@48M {
  290. #clock-cells = <0>;
  291. compatible = "st,nomadik-src-clock";
  292. clock-id = <2>;
  293. clocks = <&hclk>;
  294. };
  295. hclkdma1: hclkdma1@48M {
  296. #clock-cells = <0>;
  297. compatible = "st,nomadik-src-clock";
  298. clock-id = <3>;
  299. clocks = <&hclk>;
  300. };
  301. hclkclcd: hclkclcd@48M {
  302. #clock-cells = <0>;
  303. compatible = "st,nomadik-src-clock";
  304. clock-id = <4>;
  305. clocks = <&hclk>;
  306. };
  307. pclkirda: pclkirda@48M {
  308. #clock-cells = <0>;
  309. compatible = "st,nomadik-src-clock";
  310. clock-id = <5>;
  311. clocks = <&pclk>;
  312. };
  313. pclkssp: pclkssp@48M {
  314. #clock-cells = <0>;
  315. compatible = "st,nomadik-src-clock";
  316. clock-id = <6>;
  317. clocks = <&pclk>;
  318. };
  319. pclkuart0: pclkuart0@48M {
  320. #clock-cells = <0>;
  321. compatible = "st,nomadik-src-clock";
  322. clock-id = <7>;
  323. clocks = <&pclk>;
  324. };
  325. pclksdi: pclksdi@48M {
  326. #clock-cells = <0>;
  327. compatible = "st,nomadik-src-clock";
  328. clock-id = <8>;
  329. clocks = <&pclk>;
  330. };
  331. pclki2c0: pclki2c0@48M {
  332. #clock-cells = <0>;
  333. compatible = "st,nomadik-src-clock";
  334. clock-id = <9>;
  335. clocks = <&pclk>;
  336. };
  337. pclki2c1: pclki2c1@48M {
  338. #clock-cells = <0>;
  339. compatible = "st,nomadik-src-clock";
  340. clock-id = <10>;
  341. clocks = <&pclk>;
  342. };
  343. pclkuart1: pclkuart1@48M {
  344. #clock-cells = <0>;
  345. compatible = "st,nomadik-src-clock";
  346. clock-id = <11>;
  347. clocks = <&pclk>;
  348. };
  349. pclkmsp0: pclkmsp0@48M {
  350. #clock-cells = <0>;
  351. compatible = "st,nomadik-src-clock";
  352. clock-id = <12>;
  353. clocks = <&pclk>;
  354. };
  355. hclkusb: hclkusb@48M {
  356. #clock-cells = <0>;
  357. compatible = "st,nomadik-src-clock";
  358. clock-id = <13>;
  359. clocks = <&hclk>;
  360. };
  361. hclkdif: hclkdif@48M {
  362. #clock-cells = <0>;
  363. compatible = "st,nomadik-src-clock";
  364. clock-id = <14>;
  365. clocks = <&hclk>;
  366. };
  367. hclksaa: hclksaa@48M {
  368. #clock-cells = <0>;
  369. compatible = "st,nomadik-src-clock";
  370. clock-id = <15>;
  371. clocks = <&hclk>;
  372. };
  373. hclksva: hclksva@48M {
  374. #clock-cells = <0>;
  375. compatible = "st,nomadik-src-clock";
  376. clock-id = <16>;
  377. clocks = <&hclk>;
  378. };
  379. pclkhsi: pclkhsi@48M {
  380. #clock-cells = <0>;
  381. compatible = "st,nomadik-src-clock";
  382. clock-id = <17>;
  383. clocks = <&pclk>;
  384. };
  385. pclkxti: pclkxti@48M {
  386. #clock-cells = <0>;
  387. compatible = "st,nomadik-src-clock";
  388. clock-id = <18>;
  389. clocks = <&pclk>;
  390. };
  391. pclkuart2: pclkuart2@48M {
  392. #clock-cells = <0>;
  393. compatible = "st,nomadik-src-clock";
  394. clock-id = <19>;
  395. clocks = <&pclk>;
  396. };
  397. pclkmsp1: pclkmsp1@48M {
  398. #clock-cells = <0>;
  399. compatible = "st,nomadik-src-clock";
  400. clock-id = <20>;
  401. clocks = <&pclk>;
  402. };
  403. pclkmsp2: pclkmsp2@48M {
  404. #clock-cells = <0>;
  405. compatible = "st,nomadik-src-clock";
  406. clock-id = <21>;
  407. clocks = <&pclk>;
  408. };
  409. pclkowm: pclkowm@48M {
  410. #clock-cells = <0>;
  411. compatible = "st,nomadik-src-clock";
  412. clock-id = <22>;
  413. clocks = <&pclk>;
  414. };
  415. hclkhpi: hclkhpi@48M {
  416. #clock-cells = <0>;
  417. compatible = "st,nomadik-src-clock";
  418. clock-id = <23>;
  419. clocks = <&hclk>;
  420. };
  421. pclkske: pclkske@48M {
  422. #clock-cells = <0>;
  423. compatible = "st,nomadik-src-clock";
  424. clock-id = <24>;
  425. clocks = <&pclk>;
  426. };
  427. pclkhsem: pclkhsem@48M {
  428. #clock-cells = <0>;
  429. compatible = "st,nomadik-src-clock";
  430. clock-id = <25>;
  431. clocks = <&pclk>;
  432. };
  433. hclk3d: hclk3d@48M {
  434. #clock-cells = <0>;
  435. compatible = "st,nomadik-src-clock";
  436. clock-id = <26>;
  437. clocks = <&hclk>;
  438. };
  439. hclkhash: hclkhash@48M {
  440. #clock-cells = <0>;
  441. compatible = "st,nomadik-src-clock";
  442. clock-id = <27>;
  443. clocks = <&hclk>;
  444. };
  445. hclkcryp: hclkcryp@48M {
  446. #clock-cells = <0>;
  447. compatible = "st,nomadik-src-clock";
  448. clock-id = <28>;
  449. clocks = <&hclk>;
  450. };
  451. pclkmshc: pclkmshc@48M {
  452. #clock-cells = <0>;
  453. compatible = "st,nomadik-src-clock";
  454. clock-id = <29>;
  455. clocks = <&pclk>;
  456. };
  457. hclkusbm: hclkusbm@48M {
  458. #clock-cells = <0>;
  459. compatible = "st,nomadik-src-clock";
  460. clock-id = <30>;
  461. clocks = <&hclk>;
  462. };
  463. hclkrng: hclkrng@48M {
  464. #clock-cells = <0>;
  465. compatible = "st,nomadik-src-clock";
  466. clock-id = <31>;
  467. clocks = <&hclk>;
  468. };
  469. /* IP kernel clocks */
  470. clcdclk: clcdclk@0 {
  471. #clock-cells = <0>;
  472. compatible = "st,nomadik-src-clock";
  473. clock-id = <36>;
  474. clocks = <&clk72 &clk48>;
  475. };
  476. irdaclk: irdaclk@48M {
  477. #clock-cells = <0>;
  478. compatible = "st,nomadik-src-clock";
  479. clock-id = <37>;
  480. clocks = <&clk48>;
  481. };
  482. sspiclk: sspiclk@48M {
  483. #clock-cells = <0>;
  484. compatible = "st,nomadik-src-clock";
  485. clock-id = <38>;
  486. clocks = <&clk48>;
  487. };
  488. uart0clk: uart0clk@48M {
  489. #clock-cells = <0>;
  490. compatible = "st,nomadik-src-clock";
  491. clock-id = <39>;
  492. clocks = <&clk48>;
  493. };
  494. sdiclk: sdiclk@48M {
  495. /* Also called MCCLK in some documents */
  496. #clock-cells = <0>;
  497. compatible = "st,nomadik-src-clock";
  498. clock-id = <40>;
  499. clocks = <&clk48>;
  500. };
  501. i2c0clk: i2c0clk@48M {
  502. #clock-cells = <0>;
  503. compatible = "st,nomadik-src-clock";
  504. clock-id = <41>;
  505. clocks = <&clk48>;
  506. };
  507. i2c1clk: i2c1clk@48M {
  508. #clock-cells = <0>;
  509. compatible = "st,nomadik-src-clock";
  510. clock-id = <42>;
  511. clocks = <&clk48>;
  512. };
  513. uart1clk: uart1clk@48M {
  514. #clock-cells = <0>;
  515. compatible = "st,nomadik-src-clock";
  516. clock-id = <43>;
  517. clocks = <&clk48>;
  518. };
  519. mspclk0: mspclk0@48M {
  520. #clock-cells = <0>;
  521. compatible = "st,nomadik-src-clock";
  522. clock-id = <44>;
  523. clocks = <&clk48>;
  524. };
  525. usbclk: usbclk@48M {
  526. #clock-cells = <0>;
  527. compatible = "st,nomadik-src-clock";
  528. clock-id = <45>;
  529. clocks = <&clk48>; /* 48 MHz not ULPI */
  530. };
  531. difclk: difclk@72M {
  532. #clock-cells = <0>;
  533. compatible = "st,nomadik-src-clock";
  534. clock-id = <46>;
  535. clocks = <&clk72>;
  536. };
  537. ipi2cclk: ipi2cclk@48M {
  538. #clock-cells = <0>;
  539. compatible = "st,nomadik-src-clock";
  540. clock-id = <47>;
  541. clocks = <&clk48>; /* Guess */
  542. };
  543. ipbmcclk: ipbmcclk@48M {
  544. #clock-cells = <0>;
  545. compatible = "st,nomadik-src-clock";
  546. clock-id = <48>;
  547. clocks = <&clk48>; /* Guess */
  548. };
  549. hsiclkrx: hsiclkrx@216M {
  550. #clock-cells = <0>;
  551. compatible = "st,nomadik-src-clock";
  552. clock-id = <49>;
  553. clocks = <&clk216>;
  554. };
  555. hsiclktx: hsiclktx@108M {
  556. #clock-cells = <0>;
  557. compatible = "st,nomadik-src-clock";
  558. clock-id = <50>;
  559. clocks = <&clk108>;
  560. };
  561. uart2clk: uart2clk@48M {
  562. #clock-cells = <0>;
  563. compatible = "st,nomadik-src-clock";
  564. clock-id = <51>;
  565. clocks = <&clk48>;
  566. };
  567. mspclk1: mspclk1@48M {
  568. #clock-cells = <0>;
  569. compatible = "st,nomadik-src-clock";
  570. clock-id = <52>;
  571. clocks = <&clk48>;
  572. };
  573. mspclk2: mspclk2@48M {
  574. #clock-cells = <0>;
  575. compatible = "st,nomadik-src-clock";
  576. clock-id = <53>;
  577. clocks = <&clk48>;
  578. };
  579. owmclk: owmclk@48M {
  580. #clock-cells = <0>;
  581. compatible = "st,nomadik-src-clock";
  582. clock-id = <54>;
  583. clocks = <&clk48>; /* Guess */
  584. };
  585. skeclk: skeclk@48M {
  586. #clock-cells = <0>;
  587. compatible = "st,nomadik-src-clock";
  588. clock-id = <56>;
  589. clocks = <&clk48>; /* Guess */
  590. };
  591. x3dclk: x3dclk@48M {
  592. #clock-cells = <0>;
  593. compatible = "st,nomadik-src-clock";
  594. clock-id = <58>;
  595. clocks = <&clk48>; /* Guess */
  596. };
  597. pclkmsp3: pclkmsp3@48M {
  598. #clock-cells = <0>;
  599. compatible = "st,nomadik-src-clock";
  600. clock-id = <59>;
  601. clocks = <&pclk>;
  602. };
  603. mspclk3: mspclk3@48M {
  604. #clock-cells = <0>;
  605. compatible = "st,nomadik-src-clock";
  606. clock-id = <60>;
  607. clocks = <&clk48>;
  608. };
  609. mshcclk: mshcclk@48M {
  610. #clock-cells = <0>;
  611. compatible = "st,nomadik-src-clock";
  612. clock-id = <61>;
  613. clocks = <&clk48>; /* Guess */
  614. };
  615. usbmclk: usbmclk@48M {
  616. #clock-cells = <0>;
  617. compatible = "st,nomadik-src-clock";
  618. clock-id = <62>;
  619. /* Stated as "48 MHz not ULPI clock" */
  620. clocks = <&clk48>;
  621. };
  622. rngcclk: rngcclk@48M {
  623. #clock-cells = <0>;
  624. compatible = "st,nomadik-src-clock";
  625. clock-id = <63>;
  626. clocks = <&clk48>; /* Guess */
  627. };
  628. };
  629. /* A NAND flash of 128 MiB */
  630. fsmc: flash@40000000 {
  631. compatible = "stericsson,fsmc-nand";
  632. #address-cells = <1>;
  633. #size-cells = <1>;
  634. reg = <0x10100000 0x1000>, /* FSMC Register*/
  635. <0x40000000 0x2000>, /* NAND Base DATA */
  636. <0x41000000 0x2000>, /* NAND Base ADDR */
  637. <0x40800000 0x2000>; /* NAND Base CMD */
  638. reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
  639. clocks = <&hclksmc>;
  640. status = "okay";
  641. partition@0 {
  642. label = "X-Loader(NAND)";
  643. reg = <0x0 0x40000>;
  644. };
  645. partition@40000 {
  646. label = "MemInit(NAND)";
  647. reg = <0x40000 0x40000>;
  648. };
  649. partition@80000 {
  650. label = "BootLoader(NAND)";
  651. reg = <0x80000 0x200000>;
  652. };
  653. partition@280000 {
  654. label = "Kernel zImage(NAND)";
  655. reg = <0x280000 0x300000>;
  656. };
  657. partition@580000 {
  658. label = "Root Filesystem(NAND)";
  659. reg = <0x580000 0x1600000>;
  660. };
  661. partition@1b80000 {
  662. label = "User Filesystem(NAND)";
  663. reg = <0x1b80000 0x6480000>;
  664. };
  665. };
  666. /* I2C0 connected to the STw4811 power management chip */
  667. i2c0 {
  668. compatible = "st,nomadik-i2c", "arm,primecell";
  669. reg = <0x101f8000 0x1000>;
  670. interrupt-parent = <&vica>;
  671. interrupts = <20>;
  672. clock-frequency = <100000>;
  673. #address-cells = <1>;
  674. #size-cells = <0>;
  675. clocks = <&i2c0clk>, <&pclki2c0>;
  676. clock-names = "mclk", "apb_pclk";
  677. pinctrl-names = "default";
  678. pinctrl-0 = <&i2c0_default_mux>, <&i2c0_default_mode>;
  679. stw4811@2d {
  680. compatible = "st,stw4811";
  681. reg = <0x2d>;
  682. vmmc_regulator: vmmc {
  683. compatible = "st,stw481x-vmmc";
  684. regulator-name = "VMMC";
  685. regulator-min-microvolt = <1800000>;
  686. regulator-max-microvolt = <3300000>;
  687. };
  688. };
  689. };
  690. /* I2C1 connected to various sensors */
  691. i2c1 {
  692. compatible = "st,nomadik-i2c", "arm,primecell";
  693. reg = <0x101f7000 0x1000>;
  694. interrupt-parent = <&vica>;
  695. interrupts = <21>;
  696. clock-frequency = <100000>;
  697. #address-cells = <1>;
  698. #size-cells = <0>;
  699. clocks = <&i2c1clk>, <&pclki2c1>;
  700. clock-names = "mclk", "apb_pclk";
  701. pinctrl-names = "default";
  702. pinctrl-0 = <&i2c1_default_mux>, <&i2c1_default_mode>;
  703. camera@2d {
  704. compatible = "st,camera";
  705. reg = <0x10>;
  706. };
  707. stw5095@1a {
  708. compatible = "st,stw5095";
  709. reg = <0x1a>;
  710. };
  711. };
  712. amba {
  713. compatible = "simple-bus";
  714. #address-cells = <1>;
  715. #size-cells = <1>;
  716. ranges;
  717. clcd@10120000 {
  718. compatible = "arm,pl110", "arm,primecell";
  719. reg = <0x10120000 0x1000>;
  720. interrupt-names = "combined";
  721. interrupts = <14>;
  722. interrupt-parent = <&vica>;
  723. clocks = <&clcdclk>, <&hclkclcd>;
  724. clock-names = "clcdclk", "apb_pclk";
  725. status = "disabled";
  726. };
  727. vica: interrupt-controller@10140000 {
  728. compatible = "arm,versatile-vic";
  729. interrupt-controller;
  730. #interrupt-cells = <1>;
  731. reg = <0x10140000 0x20>;
  732. };
  733. vicb: interrupt-controller@10140020 {
  734. compatible = "arm,versatile-vic";
  735. interrupt-controller;
  736. #interrupt-cells = <1>;
  737. reg = <0x10140020 0x20>;
  738. };
  739. uart0: uart@101fd000 {
  740. compatible = "arm,pl011", "arm,primecell";
  741. reg = <0x101fd000 0x1000>;
  742. interrupt-parent = <&vica>;
  743. interrupts = <12>;
  744. clocks = <&uart0clk>, <&pclkuart0>;
  745. clock-names = "uartclk", "apb_pclk";
  746. status = "disabled";
  747. dmas = <&dmac0 14 1>,
  748. <&dmac0 15 1>;
  749. dma-names = "rx", "tx";
  750. };
  751. uart1: uart@101fb000 {
  752. compatible = "arm,pl011", "arm,primecell";
  753. reg = <0x101fb000 0x1000>;
  754. interrupt-parent = <&vica>;
  755. interrupts = <17>;
  756. clocks = <&uart1clk>, <&pclkuart1>;
  757. clock-names = "uartclk", "apb_pclk";
  758. pinctrl-names = "default";
  759. pinctrl-0 = <&uart1_default_mux>;
  760. dmas = <&dmac1 22 1>,
  761. <&dmac1 23 1>;
  762. dma-names = "rx", "tx";
  763. };
  764. uart2: uart@101f2000 {
  765. compatible = "arm,pl011", "arm,primecell";
  766. reg = <0x101f2000 0x1000>;
  767. interrupt-parent = <&vica>;
  768. interrupts = <28>;
  769. clocks = <&uart2clk>, <&pclkuart2>;
  770. clock-names = "uartclk", "apb_pclk";
  771. status = "disabled";
  772. dmas = <&dmac1 30 1>,
  773. <&dmac1 31 1>;
  774. dma-names = "rx", "tx";
  775. };
  776. rng: rng@101b0000 {
  777. compatible = "arm,primecell";
  778. reg = <0x101b0000 0x1000>;
  779. clocks = <&rngcclk>, <&hclkrng>;
  780. clock-names = "rng", "apb_pclk";
  781. };
  782. rtc: rtc@101e8000 {
  783. compatible = "arm,pl031", "arm,primecell";
  784. reg = <0x101e8000 0x1000>;
  785. clocks = <&pclk>;
  786. clock-names = "apb_pclk";
  787. interrupt-parent = <&vica>;
  788. interrupts = <10>;
  789. };
  790. mmcsd: mmc@101f6000 {
  791. compatible = "arm,pl18x", "arm,primecell";
  792. reg = <0x101f6000 0x1000>;
  793. clocks = <&sdiclk>, <&pclksdi>;
  794. clock-names = "mclk", "apb_pclk";
  795. interrupt-parent = <&vica>;
  796. interrupts = <22>;
  797. max-frequency = <400000>;
  798. bus-width = <4>;
  799. cap-mmc-highspeed;
  800. cap-sd-highspeed;
  801. full-pwr-cycle;
  802. /*
  803. * The STw4811 circuit used with the Nomadik strictly
  804. * requires that all of these signal direction pins be
  805. * routed and used for its 4-bit levelshifter.
  806. */
  807. st,sig-dir-dat0;
  808. st,sig-dir-dat2;
  809. st,sig-dir-dat31;
  810. st,sig-dir-cmd;
  811. st,sig-pin-fbclk;
  812. pinctrl-names = "default";
  813. pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
  814. vmmc-supply = <&vmmc_regulator>;
  815. };
  816. dmac0: dma-controller@10130000 {
  817. compatible = "arm,pl080", "arm,primecell";
  818. reg = <0x10130000 0x1000>;
  819. interrupt-parent = <&vica>;
  820. interrupts = <15>;
  821. clocks = <&hclkdma0>;
  822. clock-names = "apb_pclk";
  823. lli-bus-interface-ahb1;
  824. lli-bus-interface-ahb2;
  825. mem-bus-interface-ahb2;
  826. memcpy-burst-size = <256>;
  827. memcpy-bus-width = <32>;
  828. #dma-cells = <2>;
  829. };
  830. dmac1: dma-controller@10150000 {
  831. compatible = "arm,pl080", "arm,primecell";
  832. reg = <0x10150000 0x1000>;
  833. interrupt-parent = <&vica>;
  834. interrupts = <13>;
  835. clocks = <&hclkdma1>;
  836. clock-names = "apb_pclk";
  837. lli-bus-interface-ahb1;
  838. lli-bus-interface-ahb2;
  839. mem-bus-interface-ahb2;
  840. memcpy-burst-size = <256>;
  841. memcpy-bus-width = <32>;
  842. #dma-cells = <2>;
  843. };
  844. };
  845. };