meson-axg-s400.dts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586
  1. // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2. /*
  3. * Copyright (c) 2017 Amlogic, Inc. All rights reserved.
  4. */
  5. /dts-v1/;
  6. #include "meson-axg.dtsi"
  7. #include <dt-bindings/input/input.h>
  8. / {
  9. compatible = "amlogic,s400", "amlogic,a113d", "amlogic,meson-axg";
  10. model = "Amlogic Meson AXG S400 Development Board";
  11. adc_keys {
  12. compatible = "adc-keys";
  13. io-channels = <&saradc 0>;
  14. io-channel-names = "buttons";
  15. keyup-threshold-microvolt = <1800000>;
  16. button-next {
  17. label = "Next";
  18. linux,code = <KEY_NEXT>;
  19. press-threshold-microvolt = <1116000>; /* 62% */
  20. };
  21. button-prev {
  22. label = "Previous";
  23. linux,code = <KEY_PREVIOUS>;
  24. press-threshold-microvolt = <900000>; /* 50% */
  25. };
  26. button-wifi {
  27. label = "Wifi";
  28. linux,code = <KEY_WLAN>;
  29. press-threshold-microvolt = <684000>; /* 38% */
  30. };
  31. button-up {
  32. label = "Volume Up";
  33. linux,code = <KEY_VOLUMEUP>;
  34. press-threshold-microvolt = <468000>; /* 26% */
  35. };
  36. button-down {
  37. label = "Volume Down";
  38. linux,code = <KEY_VOLUMEDOWN>;
  39. press-threshold-microvolt = <252000>; /* 14% */
  40. };
  41. button-voice {
  42. label = "Voice";
  43. linux,code = <KEY_VOICECOMMAND>;
  44. press-threshold-microvolt = <0>; /* 0% */
  45. };
  46. };
  47. aliases {
  48. serial0 = &uart_AO;
  49. serial1 = &uart_A;
  50. };
  51. linein: audio-codec-0 {
  52. #sound-dai-cells = <0>;
  53. compatible = "everest,es7241";
  54. VDDA-supply = <&vcc_3v3>;
  55. VDDP-supply = <&vcc_3v3>;
  56. VDDD-supply = <&vcc_3v3>;
  57. status = "okay";
  58. sound-name-prefix = "Linein";
  59. };
  60. lineout: audio-codec-1 {
  61. #sound-dai-cells = <0>;
  62. compatible = "everest,es7154";
  63. VDD-supply = <&vcc_3v3>;
  64. PVDD-supply = <&vcc_5v>;
  65. status = "okay";
  66. sound-name-prefix = "Lineout";
  67. };
  68. spdif_dit: audio-codec-2 {
  69. #sound-dai-cells = <0>;
  70. compatible = "linux,spdif-dit";
  71. status = "okay";
  72. sound-name-prefix = "DIT";
  73. };
  74. dmics: audio-codec-3 {
  75. #sound-dai-cells = <0>;
  76. compatible = "dmic-codec";
  77. num-channels = <7>;
  78. wakeup-delay-ms = <50>;
  79. status = "okay";
  80. sound-name-prefix = "MIC";
  81. };
  82. spdif_dir: audio-codec-4 {
  83. #sound-dai-cells = <0>;
  84. compatible = "linux,spdif-dir";
  85. status = "okay";
  86. sound-name-prefix = "DIR";
  87. };
  88. emmc_pwrseq: emmc-pwrseq {
  89. compatible = "mmc-pwrseq-emmc";
  90. reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
  91. };
  92. chosen {
  93. stdout-path = "serial0:115200n8";
  94. };
  95. memory@0 {
  96. device_type = "memory";
  97. reg = <0x0 0x0 0x0 0x40000000>;
  98. };
  99. main_12v: regulator-main_12v {
  100. compatible = "regulator-fixed";
  101. regulator-name = "12V";
  102. regulator-min-microvolt = <12000000>;
  103. regulator-max-microvolt = <12000000>;
  104. regulator-always-on;
  105. };
  106. vcc_3v3: regulator-vcc_3v3 {
  107. compatible = "regulator-fixed";
  108. regulator-name = "VCC_3V3";
  109. regulator-min-microvolt = <3300000>;
  110. regulator-max-microvolt = <3300000>;
  111. vin-supply = <&vddao_3v3>;
  112. regulator-always-on;
  113. };
  114. vcc_5v: regulator-vcc_5v {
  115. compatible = "regulator-fixed";
  116. regulator-name = "VCC5V";
  117. regulator-min-microvolt = <5000000>;
  118. regulator-max-microvolt = <5000000>;
  119. vin-supply = <&main_12v>;
  120. gpio = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
  121. enable-active-high;
  122. };
  123. vddao_3v3: regulator-vddao_3v3 {
  124. compatible = "regulator-fixed";
  125. regulator-name = "VDDAO_3V3";
  126. regulator-min-microvolt = <3300000>;
  127. regulator-max-microvolt = <3300000>;
  128. vin-supply = <&main_12v>;
  129. regulator-always-on;
  130. };
  131. vddio_ao18: regulator-vddio_ao18 {
  132. compatible = "regulator-fixed";
  133. regulator-name = "VDDIO_AO18";
  134. regulator-min-microvolt = <1800000>;
  135. regulator-max-microvolt = <1800000>;
  136. vin-supply = <&vddao_3v3>;
  137. regulator-always-on;
  138. };
  139. vddio_boot: regulator-vddio_boot {
  140. compatible = "regulator-fixed";
  141. regulator-name = "VDDIO_BOOT";
  142. regulator-min-microvolt = <1800000>;
  143. regulator-max-microvolt = <1800000>;
  144. vin-supply = <&vddao_3v3>;
  145. regulator-always-on;
  146. };
  147. usb_pwr: regulator-usb_pwr {
  148. compatible = "regulator-fixed";
  149. regulator-name = "USB_PWR";
  150. regulator-min-microvolt = <5000000>;
  151. regulator-max-microvolt = <5000000>;
  152. vin-supply = <&vcc_5v>;
  153. gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
  154. enable-active-high;
  155. };
  156. sdio_pwrseq: sdio-pwrseq {
  157. compatible = "mmc-pwrseq-simple";
  158. reset-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>;
  159. clocks = <&wifi32k>;
  160. clock-names = "ext_clock";
  161. };
  162. speaker-leds {
  163. compatible = "gpio-leds";
  164. aled1 {
  165. label = "speaker:aled1";
  166. gpios = <&gpio_speaker 7 0>;
  167. };
  168. aled2 {
  169. label = "speaker:aled2";
  170. gpios = <&gpio_speaker 6 0>;
  171. };
  172. aled3 {
  173. label = "speaker:aled3";
  174. gpios = <&gpio_speaker 5 0>;
  175. };
  176. aled4 {
  177. label = "speaker:aled4";
  178. gpios = <&gpio_speaker 4 0>;
  179. };
  180. aled5 {
  181. label = "speaker:aled5";
  182. gpios = <&gpio_speaker 3 0>;
  183. };
  184. aled6 {
  185. label = "speaker:aled6";
  186. gpios = <&gpio_speaker 2 0>;
  187. };
  188. };
  189. sound {
  190. compatible = "amlogic,axg-sound-card";
  191. model = "AXG-S400";
  192. audio-aux-devs = <&tdmin_a>, <&tdmin_b>, <&tdmin_c>,
  193. <&tdmin_lb>, <&tdmout_c>;
  194. audio-widgets = "Line", "Lineout",
  195. "Line", "Linein",
  196. "Speaker", "Speaker1 Left",
  197. "Speaker", "Speaker1 Right";
  198. audio-routing = "TDMOUT_C IN 0", "FRDDR_A OUT 2",
  199. "SPDIFOUT IN 0", "FRDDR_A OUT 3",
  200. "TDMOUT_C IN 1", "FRDDR_B OUT 2",
  201. "SPDIFOUT IN 1", "FRDDR_B OUT 3",
  202. "TDMOUT_C IN 2", "FRDDR_C OUT 2",
  203. "SPDIFOUT IN 2", "FRDDR_C OUT 3",
  204. "TDM_C Playback", "TDMOUT_C OUT",
  205. "TDMIN_A IN 2", "TDM_C Capture",
  206. "TDMIN_A IN 5", "TDM_C Loopback",
  207. "TDMIN_B IN 2", "TDM_C Capture",
  208. "TDMIN_B IN 5", "TDM_C Loopback",
  209. "TDMIN_C IN 2", "TDM_C Capture",
  210. "TDMIN_C IN 5", "TDM_C Loopback",
  211. "TDMIN_LB IN 2", "TDM_C Loopback",
  212. "TDMIN_LB IN 5", "TDM_C Capture",
  213. "TODDR_A IN 0", "TDMIN_A OUT",
  214. "TODDR_B IN 0", "TDMIN_A OUT",
  215. "TODDR_C IN 0", "TDMIN_A OUT",
  216. "TODDR_A IN 1", "TDMIN_B OUT",
  217. "TODDR_B IN 1", "TDMIN_B OUT",
  218. "TODDR_C IN 1", "TDMIN_B OUT",
  219. "TODDR_A IN 2", "TDMIN_C OUT",
  220. "TODDR_B IN 2", "TDMIN_C OUT",
  221. "TODDR_C IN 2", "TDMIN_C OUT",
  222. "TODDR_A IN 3", "SPDIFIN Capture",
  223. "TODDR_B IN 3", "SPDIFIN Capture",
  224. "TODDR_C IN 3", "SPDIFIN Capture",
  225. "TODDR_A IN 4", "PDM Capture",
  226. "TODDR_B IN 4", "PDM Capture",
  227. "TODDR_C IN 4", "PDM Capture",
  228. "TODDR_A IN 6", "TDMIN_LB OUT",
  229. "TODDR_B IN 6", "TDMIN_LB OUT",
  230. "TODDR_C IN 6", "TDMIN_LB OUT",
  231. "Lineout", "Lineout AOUTL",
  232. "Lineout", "Lineout AOUTR",
  233. "Speaker1 Left", "SPK1 OUT_A",
  234. "Speaker1 Left", "SPK1 OUT_B",
  235. "Speaker1 Right", "SPK1 OUT_C",
  236. "Speaker1 Right", "SPK1 OUT_D",
  237. "Linein AINL", "Linein",
  238. "Linein AINR", "Linein";
  239. assigned-clocks = <&clkc CLKID_HIFI_PLL>,
  240. <&clkc CLKID_MPLL0>,
  241. <&clkc CLKID_MPLL1>;
  242. assigned-clock-parents = <0>, <0>, <0>;
  243. assigned-clock-rates = <589824000>,
  244. <270950400>,
  245. <393216000>;
  246. status = "okay";
  247. dai-link-0 {
  248. sound-dai = <&frddr_a>;
  249. };
  250. dai-link-1 {
  251. sound-dai = <&frddr_b>;
  252. };
  253. dai-link-2 {
  254. sound-dai = <&frddr_c>;
  255. };
  256. dai-link-3 {
  257. sound-dai = <&toddr_a>;
  258. };
  259. dai-link-4 {
  260. sound-dai = <&toddr_b>;
  261. };
  262. dai-link-5 {
  263. sound-dai = <&toddr_c>;
  264. };
  265. dai-link-6 {
  266. sound-dai = <&tdmif_c>;
  267. dai-format = "i2s";
  268. dai-tdm-slot-tx-mask-2 = <1 1>;
  269. dai-tdm-slot-rx-mask-1 = <1 1>;
  270. mclk-fs = <256>;
  271. codec-0 {
  272. sound-dai = <&lineout>;
  273. };
  274. codec-1 {
  275. sound-dai = <&speaker_amp1>;
  276. };
  277. codec-2 {
  278. sound-dai = <&linein>;
  279. };
  280. };
  281. dai-link-7 {
  282. sound-dai = <&spdifout>;
  283. codec {
  284. sound-dai = <&spdif_dit>;
  285. };
  286. };
  287. dai-link-8 {
  288. sound-dai = <&spdifin>;
  289. codec {
  290. sound-dai = <&spdif_dir>;
  291. };
  292. };
  293. dai-link-9 {
  294. sound-dai = <&pdm>;
  295. codec {
  296. sound-dai = <&dmics>;
  297. };
  298. };
  299. };
  300. wifi32k: wifi32k {
  301. compatible = "pwm-clock";
  302. #clock-cells = <0>;
  303. clock-frequency = <32768>;
  304. pwms = <&pwm_ab 0 30518 0>; /* PWM_A at 32.768KHz */
  305. };
  306. };
  307. &ethmac {
  308. status = "okay";
  309. pinctrl-0 = <&eth_rgmii_y_pins>;
  310. pinctrl-names = "default";
  311. phy-handle = <&eth_phy0>;
  312. phy-mode = "rgmii";
  313. mdio {
  314. compatible = "snps,dwmac-mdio";
  315. #address-cells = <1>;
  316. #size-cells = <0>;
  317. eth_phy0: ethernet-phy@0 {
  318. /* Realtek RTL8211F (0x001cc916) */
  319. reg = <0>;
  320. interrupt-parent = <&gpio_intc>;
  321. interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
  322. eee-broken-1000t;
  323. };
  324. };
  325. };
  326. &frddr_a {
  327. status = "okay";
  328. };
  329. &frddr_b {
  330. status = "okay";
  331. };
  332. &frddr_c {
  333. status = "okay";
  334. };
  335. &ir {
  336. status = "okay";
  337. pinctrl-0 = <&remote_input_ao_pins>;
  338. pinctrl-names = "default";
  339. };
  340. &i2c1 {
  341. status = "okay";
  342. pinctrl-0 = <&i2c1_z_pins>;
  343. pinctrl-names = "default";
  344. speaker_amp1: audio-codec@1b {
  345. compatible = "ti,tas5707";
  346. reg = <0x1b>;
  347. reset-gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_LOW>;
  348. #sound-dai-cells = <0>;
  349. AVDD-supply = <&vcc_3v3>;
  350. DVDD-supply = <&vcc_3v3>;
  351. PVDD_A-supply = <&main_12v>;
  352. PVDD_B-supply = <&main_12v>;
  353. PVDD_C-supply = <&main_12v>;
  354. PVDD_D-supply = <&main_12v>;
  355. sound-name-prefix = "SPK1";
  356. };
  357. };
  358. &i2c_AO {
  359. status = "okay";
  360. pinctrl-0 = <&i2c_ao_sck_10_pins>, <&i2c_ao_sda_11_pins>;
  361. pinctrl-names = "default";
  362. gpio_speaker: gpio-controller@1f {
  363. compatible = "nxp,pca9557";
  364. reg = <0x1f>;
  365. gpio-controller;
  366. #gpio-cells = <2>;
  367. vcc-supply = <&vddao_3v3>;
  368. };
  369. };
  370. &pdm {
  371. pinctrl-0 = <&pdm_dclk_a14_pins>, <&pdm_din0_pins>,
  372. <&pdm_din1_pins>, <&pdm_din2_pins>, <&pdm_din3_pins>;
  373. pinctrl-names = "default";
  374. status = "okay";
  375. };
  376. &pwm_ab {
  377. status = "okay";
  378. pinctrl-0 = <&pwm_a_x20_pins>;
  379. pinctrl-names = "default";
  380. };
  381. &saradc {
  382. status = "okay";
  383. vref-supply = <&vddio_ao18>;
  384. };
  385. /* wifi module */
  386. &sd_emmc_b {
  387. status = "okay";
  388. #address-cells = <1>;
  389. #size-cells = <0>;
  390. pinctrl-0 = <&sdio_pins>;
  391. pinctrl-1 = <&sdio_clk_gate_pins>;
  392. pinctrl-names = "default", "clk-gate";
  393. bus-width = <4>;
  394. cap-sd-highspeed;
  395. sd-uhs-sdr104;
  396. max-frequency = <200000000>;
  397. non-removable;
  398. disable-wp;
  399. mmc-pwrseq = <&sdio_pwrseq>;
  400. vmmc-supply = <&vddao_3v3>;
  401. vqmmc-supply = <&vddio_boot>;
  402. brcmf: wifi@1 {
  403. reg = <1>;
  404. compatible = "brcm,bcm4329-fmac";
  405. };
  406. };
  407. /* emmc storage */
  408. &sd_emmc_c {
  409. status = "okay";
  410. pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
  411. pinctrl-1 = <&emmc_clk_gate_pins>;
  412. pinctrl-names = "default", "clk-gate";
  413. bus-width = <8>;
  414. cap-mmc-highspeed;
  415. max-frequency = <200000000>;
  416. non-removable;
  417. disable-wp;
  418. mmc-ddr-1_8v;
  419. mmc-hs200-1_8v;
  420. mmc-pwrseq = <&emmc_pwrseq>;
  421. vmmc-supply = <&vcc_3v3>;
  422. vqmmc-supply = <&vddio_boot>;
  423. };
  424. &spdifin {
  425. pinctrl-0 = <&spdif_in_a19_pins>;
  426. pinctrl-names = "default";
  427. status = "okay";
  428. };
  429. &spdifout {
  430. pinctrl-0 = <&spdif_out_a20_pins>;
  431. pinctrl-names = "default";
  432. status = "okay";
  433. };
  434. &tdmif_a {
  435. pinctrl-0 = <&tdma_sclk_pins>, <&tdma_fs_pins>,
  436. <&tdma_din0_pins>, <&tdma_dout0_x15_pins>;
  437. pinctrl-names = "default";
  438. status = "okay";
  439. };
  440. &tdmif_b {
  441. pinctrl-0 = <&tdmb_sclk_pins>, <&tdmb_fs_pins>,
  442. <&tdmb_din3_pins>, <&mclk_b_pins>;
  443. pinctrl-names = "default";
  444. status = "okay";
  445. };
  446. &tdmif_c {
  447. pinctrl-0 = <&tdmc_sclk_pins>, <&tdmc_fs_pins>,
  448. <&tdmc_din1_pins>, <&tdmc_dout2_pins>,
  449. <&mclk_c_pins>;
  450. pinctrl-names = "default";
  451. status = "okay";
  452. };
  453. &tdmin_a {
  454. status = "okay";
  455. };
  456. &tdmin_b {
  457. status = "okay";
  458. };
  459. &tdmin_c {
  460. status = "okay";
  461. };
  462. &tdmin_lb {
  463. status = "okay";
  464. };
  465. &tdmout_c {
  466. status = "okay";
  467. };
  468. &toddr_a {
  469. status = "okay";
  470. };
  471. &toddr_b {
  472. status = "okay";
  473. };
  474. &toddr_c {
  475. status = "okay";
  476. };
  477. &uart_A {
  478. status = "okay";
  479. pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
  480. pinctrl-names = "default";
  481. uart-has-rtscts;
  482. bluetooth {
  483. compatible = "brcm,bcm43438-bt";
  484. shutdown-gpios = <&gpio GPIOX_21 GPIO_ACTIVE_HIGH>;
  485. };
  486. };
  487. &uart_AO {
  488. status = "okay";
  489. pinctrl-0 = <&uart_ao_a_pins>;
  490. pinctrl-names = "default";
  491. };