Advertisement
emulti

Untitled

May 18th, 2020
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.48 KB | None | 0 0
  1. // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2. /*
  3. * Copyright (c) 2020 Classicmart Ltd. All rights reserved.
  4. */
  5.  
  6. /dts-v1/;
  7.  
  8. #include "meson-sm1.dtsi"
  9. #include <dt-bindings/gpio/gpio.h>
  10. #include <dt-bindings/input/input.h>
  11. #include <dt-bindings/gpio/meson-g12a-gpio.h>
  12. #include <dt-bindings/sound/meson-g12a-tohdmitx.h>
  13.  
  14. / {
  15. compatible = "amediatech,x96-air", "amlogic,sm1";
  16. model = "Shenzhen Amediatech Technology Co., Ltd X96 Air";
  17.  
  18. aliases {
  19. serial0 = &uart_AO;
  20. ethernet0 = &ethmac;
  21. };
  22.  
  23. /* mono_dac: audio-codec-0 {
  24. compatible = "maxim,max98357a";
  25. #sound-dai-cells = <0>;
  26. sound-name-prefix = "U16";
  27. sdmode-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>;
  28. }; */
  29.  
  30. spdif_dit: audio-codec-0 {
  31. #sound-dai-cells = <0>;
  32. compatible = "linux,spdif-dit";
  33. status = "okay";
  34. sound-name-prefix = "DIT";
  35. };
  36.  
  37. stereo_dac: audio-codec-1 {
  38. compatible = "amlogic,t9015";
  39. #sound-dai-cells = <0>;
  40. sound-name-prefix = "INTDAC";
  41. };
  42.  
  43.  
  44. cvbs-connector {
  45. compatible = "composite-video-connector";
  46.  
  47. port {
  48. cvbs_connector_in: endpoint {
  49. remote-endpoint = <&cvbs_vdac_out>;
  50. };
  51. };
  52. };
  53.  
  54. chosen {
  55. stdout-path = "serial0:115200n8";
  56. };
  57.  
  58. emmc_pwrseq: emmc-pwrseq {
  59. compatible = "mmc-pwrseq-emmc";
  60. reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
  61. };
  62.  
  63. hdmi-connector {
  64. compatible = "hdmi-connector";
  65. type = "a";
  66.  
  67. port {
  68. hdmi_connector_in: endpoint {
  69. remote-endpoint = <&hdmi_tx_tmds_out>;
  70. };
  71. };
  72. };
  73.  
  74. /* leds {
  75. compatible = "gpio-leds";
  76.  
  77. led-bluetooth {
  78. label = "sei610:blue:bt";
  79. gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
  80. default-state = "off";
  81. };
  82. };
  83.  
  84. pwmleds {
  85. compatible = "pwm-leds";
  86.  
  87. power {
  88. label = "sei610:red:power";
  89. pwms = <&pwm_AO_ab 0 30518 0>;
  90. max-brightness = <255>;
  91. linux,default-trigger = "default-on";
  92. active-low;
  93. };
  94. };
  95. */
  96.  
  97. memory@0 {
  98. device_type = "memory";
  99. reg = <0x0 0x0 0x1 0x0>;
  100. };
  101.  
  102. ao_5v: regulator-ao_5v {
  103. compatible = "regulator-fixed";
  104. regulator-name = "AO_5V";
  105. regulator-min-microvolt = <5000000>;
  106. regulator-max-microvolt = <5000000>;
  107. vin-supply = <&dc_in>;
  108. regulator-always-on;
  109. };
  110.  
  111. dc_in: regulator-dc_in {
  112. compatible = "regulator-fixed";
  113. regulator-name = "DC_IN";
  114. regulator-min-microvolt = <5000000>;
  115. regulator-max-microvolt = <5000000>;
  116. regulator-always-on;
  117. };
  118.  
  119. emmc_1v8: regulator-emmc_1v8 {
  120. compatible = "regulator-fixed";
  121. regulator-name = "EMMC_1V8";
  122. regulator-min-microvolt = <1800000>;
  123. regulator-max-microvolt = <1800000>;
  124. vin-supply = <&vddao_3v3>;
  125. regulator-always-on;
  126. };
  127.  
  128. vddao_3v3: regulator-vddao_3v3 {
  129. compatible = "regulator-fixed";
  130. regulator-name = "VDDAO_3V3";
  131. regulator-min-microvolt = <3300000>;
  132. regulator-max-microvolt = <3300000>;
  133. vin-supply = <&dc_in>;
  134. regulator-always-on;
  135. };
  136.  
  137. /* Used by Tuner, RGB Led & IR Emitter LED array */
  138. vddao_3v3_t: regulator-vddao_3v3_t {
  139. compatible = "regulator-fixed";
  140. regulator-name = "VDDAO_3V3_T";
  141. regulator-min-microvolt = <3300000>;
  142. regulator-max-microvolt = <3300000>;
  143. vin-supply = <&vddao_3v3>;
  144. gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
  145. enable-active-low;
  146. regulator-always-on;
  147. };
  148.  
  149. vddcpu: regulator-vddcpu {
  150. /*
  151. * SY8120B1ABC DC/DC Regulator.
  152. */
  153. compatible = "pwm-regulator";
  154.  
  155. regulator-name = "VDDCPU";
  156. regulator-min-microvolt = <690000>;
  157. regulator-max-microvolt = <1050000>;
  158.  
  159. vin-supply = <&dc_in>;
  160.  
  161. pwms = <&pwm_AO_cd 1 1500 0>;
  162. pwm-dutycycle-range = <100 0>;
  163.  
  164. regulator-boot-on;
  165. regulator-always-on;
  166. };
  167.  
  168. vddio_ao1v8: regulator-vddio_ao1v8 {
  169. compatible = "regulator-fixed";
  170. regulator-name = "VDDIO_AO1V8";
  171. regulator-min-microvolt = <1800000>;
  172. regulator-max-microvolt = <1800000>;
  173. vin-supply = <&vddao_3v3>;
  174. regulator-always-on;
  175. };
  176.  
  177. reserved-memory {
  178. /* TEE Reserved Memory */
  179. bl32_reserved: bl32@5000000 {
  180. reg = <0x0 0x05300000 0x0 0x2000000>;
  181. no-map;
  182. };
  183. };
  184.  
  185. sdio_pwrseq: sdio-pwrseq {
  186. compatible = "mmc-pwrseq-simple";
  187. reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
  188. clocks = <&wifi32k>;
  189. clock-names = "ext_clock";
  190. };
  191.  
  192. sound {
  193. compatible = "amlogic,axg-sound-card";
  194. model = "SM1-X96-AIR";
  195. audio-aux-devs = <&tdmout_b>;
  196. audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
  197. "TDMOUT_A IN 1", "FRDDR_B OUT 0",
  198. "TDMOUT_A IN 2", "FRDDR_C OUT 0",
  199. "TDM_A Playback", "TDMOUT_A OUT",
  200. "TDMOUT_B IN 0", "FRDDR_A OUT 1",
  201. "TDMOUT_B IN 1", "FRDDR_B OUT 1",
  202. "TDMOUT_B IN 2", "FRDDR_C OUT 1",
  203. "TDM_B Playback", "TDMOUT_B OUT",
  204. "SPDIFOUT IN 0", "FRDDR_A OUT 3",
  205. "SPDIFOUT IN 1", "FRDDR_B OUT 3",
  206. "SPDIFOUT IN 2", "FRDDR_C OUT 3";
  207.  
  208. assigned-clocks = <&clkc CLKID_MPLL2>,
  209. <&clkc CLKID_MPLL0>,
  210. <&clkc CLKID_MPLL1>;
  211. assigned-clock-parents = <0>, <0>, <0>;
  212. assigned-clock-rates = <294912000>,
  213. <270950400>,
  214. <393216000>;
  215. status = "okay";
  216.  
  217. dai-link-0 {
  218. sound-dai = <&frddr_a>;
  219. };
  220.  
  221. dai-link-1 {
  222. sound-dai = <&frddr_b>;
  223. };
  224.  
  225. dai-link-2 {
  226. sound-dai = <&frddr_c>;
  227. };
  228.  
  229. /* 8ch hdmi interface */
  230. dai-link-3 {
  231. sound-dai = <&tdmif_b>;
  232. dai-format = "i2s";
  233. dai-tdm-slot-tx-mask-0 = <1 1>;
  234. dai-tdm-slot-tx-mask-1 = <1 1>;
  235. dai-tdm-slot-tx-mask-2 = <1 1>;
  236. dai-tdm-slot-tx-mask-3 = <1 1>;
  237. mclk-fs = <256>;
  238.  
  239. codec {
  240. sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
  241. };
  242. };
  243.  
  244. dai-link-4 {
  245. sound-dai = <&tdmif_a>;
  246. dai-format = "i2s";
  247. dai-tdm-slot-tx-mask-0 = <1 1>;
  248. dai-tdm-slot-tx-mask-1 = <1 1>;
  249. dai-tdm-slot-tx-mask-2 = <1 1>;
  250. dai-tdm-slot-tx-mask-3 = <1 1>;
  251. mclk-fs = <256>;
  252.  
  253. codec {
  254. sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
  255. };
  256. };
  257.  
  258. /* spdif hdmi or toslink interface */
  259. dai-link-5 {
  260. sound-dai = <&spdifout>;
  261.  
  262. codec-0 {
  263. sound-dai = <&spdif_dit>;
  264. };
  265.  
  266. codec-1 {
  267. sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_A>;
  268. };
  269. };
  270.  
  271. /* spdif hdmi interface */
  272. dai-link-6 {
  273. sound-dai = <&spdifout_b>;
  274.  
  275. codec {
  276. sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_B>;
  277. };
  278. };
  279.  
  280. /* hdmi glue */
  281. dai-link-7 {
  282. sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
  283.  
  284. codec {
  285. sound-dai = <&hdmi_tx>;
  286. };
  287. };
  288. };
  289.  
  290. wifi32k: wifi32k {
  291. compatible = "pwm-clock";
  292. #clock-cells = <0>;
  293. clock-frequency = <32768>;
  294. pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
  295. };
  296. };
  297.  
  298. &arb {
  299. status = "okay";
  300. };
  301.  
  302. &audio {
  303. spdifout: audio-controller@480 {
  304. compatible = "amlogic,sm1-spdifout";
  305. reg = <0x0 0x480 0x0 0x50>;
  306. #sound-dai-cells = <0>;
  307. clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
  308. <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
  309. clock-names = "pclk", "mclk";
  310.  
  311. pinctrl-0 = <&spdif_out_h_pins>;
  312. pinctrl-names = "default";
  313. status = "okay";
  314. };
  315.  
  316. spdifout_b: audio-controller@680 {
  317. compatible = "amlogic,sm1-spdifout",
  318. "amlogic,axg-spdifout";
  319. reg = <0x0 0x680 0x0 0x50>;
  320. #sound-dai-cells = <0>;
  321. sound-name-prefix = "SPDIFOUT_B";
  322. clocks = <&clkc_audio AUD_CLKID_SPDIFOUT_B>,
  323. <&clkc_audio AUD_CLKID_SPDIFOUT_B_CLK>;
  324. clock-names = "pclk", "mclk";
  325. resets = <&clkc_audio AUD_RESET_SPDIFOUT_B>;
  326. status = "okay";
  327. };
  328.  
  329. toacodec: audio-controller@740 {
  330. compatible = "amlogic,sm1-toacodec";
  331. reg = <0x0 0x740 0x0 0x4>;
  332. #sound-dai-cells = <1>;
  333. resets = <&clkc_audio AUD_RESET_TOACODEC>;
  334. };
  335.  
  336. };
  337.  
  338. &apb {
  339. acodec: audio-controller@32000 {
  340. compatible = "amlogic,t9015";
  341. reg = <0x0 0x32000 0x0 0x14>;
  342. #sound-dai-cells = <0>;
  343. clocks = <&clkc CLKID_AUDIO_CODEC>;
  344. clock-names = "pclk";
  345. resets = <&reset RESET_AUDIO_CODEC>;
  346. };
  347. };
  348.  
  349. &cec_AO {
  350. pinctrl-0 = <&cec_ao_a_h_pins>;
  351. pinctrl-names = "default";
  352. status = "disabled";
  353. hdmi-phandle = <&hdmi_tx>;
  354. };
  355.  
  356. &cecb_AO {
  357. pinctrl-0 = <&cec_ao_b_h_pins>;
  358. pinctrl-names = "default";
  359. status = "okay";
  360. hdmi-phandle = <&hdmi_tx>;
  361. };
  362.  
  363. &clkc_audio {
  364. status = "okay";
  365. };
  366.  
  367. &cpu0 {
  368. cpu-supply = <&vddcpu>;
  369. operating-points-v2 = <&cpu_opp_table>;
  370. clocks = <&clkc CLKID_CPU_CLK>;
  371. clock-latency = <50000>;
  372. };
  373.  
  374. &cpu1 {
  375. cpu-supply = <&vddcpu>;
  376. operating-points-v2 = <&cpu_opp_table>;
  377. clocks = <&clkc CLKID_CPU1_CLK>;
  378. clock-latency = <50000>;
  379. };
  380.  
  381. &cpu2 {
  382. cpu-supply = <&vddcpu>;
  383. operating-points-v2 = <&cpu_opp_table>;
  384. clocks = <&clkc CLKID_CPU2_CLK>;
  385. clock-latency = <50000>;
  386. };
  387.  
  388. &cpu3 {
  389. cpu-supply = <&vddcpu>;
  390. operating-points-v2 = <&cpu_opp_table>;
  391. clocks = <&clkc CLKID_CPU3_CLK>;
  392. clock-latency = <50000>;
  393. };
  394.  
  395. &ext_mdio {
  396. external_phy: ethernet-phy@0 {
  397. /* Realtek RTL8211F (0x001cc916) */
  398. reg = <0>;
  399. max-speed = <1000>;
  400. eee-broken-1000t;
  401.  
  402. reset-assert-us = <20000>;
  403. reset-deassert-us = <100000>;
  404. reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
  405.  
  406. interrupt-parent = <&gpio_intc>;
  407. /* MAC_INTR on GPIOZ_14 */
  408. interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
  409. };
  410. };
  411.  
  412. &ethmac {
  413. pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
  414. pinctrl-names = "default";
  415. status = "okay";
  416. phy-mode = "rgmii";
  417. phy-handle = <&external_phy>;
  418. amlogic,tx-delay-ns = <2>;
  419. };
  420.  
  421. &frddr_a {
  422. status = "okay";
  423. };
  424.  
  425. &frddr_b {
  426. status = "okay";
  427. };
  428.  
  429. &frddr_c {
  430. status = "okay";
  431. };
  432.  
  433. &hdmi_tx {
  434. status = "okay";
  435. pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
  436. pinctrl-names = "default";
  437. };
  438.  
  439. &hdmi_tx_tmds_port {
  440. hdmi_tx_tmds_out: endpoint {
  441. remote-endpoint = <&hdmi_connector_in>;
  442. };
  443. };
  444.  
  445. &i2c3 {
  446. status = "okay";
  447. pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
  448. pinctrl-names = "default";
  449. };
  450.  
  451. &ir {
  452. status = "okay";
  453. pinctrl-0 = <&remote_input_ao_pins>;
  454. pinctrl-names = "default";
  455. };
  456.  
  457. &pwm_AO_ab {
  458. status = "okay";
  459. pinctrl-0 = <&pwm_ao_a_pins>;
  460. pinctrl-names = "default";
  461. clocks = <&xtal>;
  462. clock-names = "clkin0";
  463. };
  464.  
  465. &pwm_AO_cd {
  466. pinctrl-0 = <&pwm_ao_d_e_pins>;
  467. pinctrl-names = "default";
  468. clocks = <&xtal>;
  469. clock-names = "clkin1";
  470. status = "okay";
  471. };
  472.  
  473. &pwm_ef {
  474. status = "okay";
  475. pinctrl-0 = <&pwm_e_pins>;
  476. pinctrl-names = "default";
  477. clocks = <&xtal>;
  478. clock-names = "clkin0";
  479. };
  480.  
  481. &saradc {
  482. status = "okay";
  483. vref-supply = <&vddio_ao1v8>;
  484. };
  485.  
  486. /* SDIO */
  487. &sd_emmc_a {
  488. status = "okay";
  489. pinctrl-0 = <&sdio_pins>;
  490. pinctrl-1 = <&sdio_clk_gate_pins>;
  491. pinctrl-names = "default", "clk-gate";
  492. #address-cells = <1>;
  493. #size-cells = <0>;
  494.  
  495. bus-width = <4>;
  496. cap-sd-highspeed;
  497. sd-uhs-sdr50;
  498. max-frequency = <100000000>;
  499.  
  500. non-removable;
  501. disable-wp;
  502.  
  503. /* WiFi firmware requires power to be kept while in suspend */
  504. keep-power-in-suspend;
  505.  
  506. mmc-pwrseq = <&sdio_pwrseq>;
  507.  
  508. vmmc-supply = <&vddao_3v3>;
  509. vqmmc-supply = <&vddio_ao1v8>;
  510.  
  511. brcmf: wifi@1 {
  512. reg = <1>;
  513. compatible = "brcm,bcm4329-fmac";
  514. };
  515. };
  516.  
  517. /* SD card */
  518. &sd_emmc_b {
  519. status = "okay";
  520. pinctrl-0 = <&sdcard_c_pins>;
  521. pinctrl-1 = <&sdcard_clk_gate_c_pins>;
  522. pinctrl-names = "default", "clk-gate";
  523.  
  524. bus-width = <4>;
  525. cap-sd-highspeed;
  526. max-frequency = <50000000>;
  527. disable-wp;
  528.  
  529. cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
  530. vmmc-supply = <&vddao_3v3>;
  531. vqmmc-supply = <&vddao_3v3>;
  532. };
  533.  
  534. /* eMMC */
  535. &sd_emmc_c {
  536. status = "okay";
  537. pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
  538. pinctrl-1 = <&emmc_clk_gate_pins>;
  539. pinctrl-names = "default", "clk-gate";
  540.  
  541. bus-width = <8>;
  542. cap-mmc-highspeed;
  543. mmc-ddr-1_8v;
  544. mmc-hs200-1_8v;
  545. max-frequency = <200000000>;
  546. non-removable;
  547. disable-wp;
  548.  
  549. mmc-pwrseq = <&emmc_pwrseq>;
  550. vmmc-supply = <&vddao_3v3>;
  551. vqmmc-supply = <&emmc_1v8>;
  552. };
  553.  
  554. &tdmif_a {
  555. pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>;
  556. pinctrl-names = "default";
  557. status = "okay";
  558.  
  559. assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>,
  560. <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>;
  561. assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>,
  562. <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
  563. assigned-clock-rates = <0>, <0>;
  564. };
  565.  
  566. &tdmif_b {
  567. status = "okay";
  568. };
  569.  
  570. &tdmout_a {
  571. status = "okay";
  572. };
  573.  
  574. &tdmout_b {
  575. status = "okay";
  576. };
  577.  
  578. &tohdmitx {
  579. status = "okay";
  580. };
  581.  
  582. &uart_A {
  583. status = "okay";
  584. pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
  585. pinctrl-names = "default";
  586. uart-has-rtscts;
  587.  
  588. bluetooth {
  589. compatible = "brcm,bcm43438-bt";// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  590. /*
  591. * Copyright (c) 2020 Classicmart Ltd. All rights reserved.
  592. */
  593.  
  594. /dts-v1/;
  595.  
  596. #include "meson-sm1.dtsi"
  597. #include <dt-bindings/gpio/gpio.h>
  598. #include <dt-bindings/input/input.h>
  599. #include <dt-bindings/gpio/meson-g12a-gpio.h>
  600. #include <dt-bindings/sound/meson-g12a-tohdmitx.h>
  601.  
  602. / {
  603. compatible = "amediatech,x96-air", "amlogic,sm1";
  604. model = "Shenzhen Amediatech Technology Co., Ltd X96 Air";
  605.  
  606. aliases {
  607. serial0 = &uart_AO;
  608. ethernet0 = &ethmac;
  609. };
  610.  
  611. /* mono_dac: audio-codec-0 {
  612. compatible = "maxim,max98357a";
  613. #sound-dai-cells = <0>;
  614. sound-name-prefix = "U16";
  615. sdmode-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>;
  616. }; */
  617.  
  618. spdif_dit: audio-codec-0 {
  619. #sound-dai-cells = <0>;
  620. compatible = "linux,spdif-dit";
  621. status = "okay";
  622. sound-name-prefix = "DIT";
  623. };
  624.  
  625. stereo_dac: audio-codec-1 {
  626. compatible = "amlogic,t9015";
  627. #sound-dai-cells = <0>;
  628. sound-name-prefix = "INTDAC";
  629. };
  630.  
  631.  
  632. cvbs-connector {
  633. compatible = "composite-video-connector";
  634.  
  635. port {
  636. cvbs_connector_in: endpoint {
  637. remote-endpoint = <&cvbs_vdac_out>;
  638. };
  639. };
  640. };
  641.  
  642. chosen {
  643. stdout-path = "serial0:115200n8";
  644. };
  645.  
  646. emmc_pwrseq: emmc-pwrseq {
  647. compatible = "mmc-pwrseq-emmc";
  648. reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
  649. };
  650.  
  651. hdmi-connector {
  652. compatible = "hdmi-connector";
  653. type = "a";
  654.  
  655. port {
  656. hdmi_connector_in: endpoint {
  657. remote-endpoint = <&hdmi_tx_tmds_out>;
  658. };
  659. };
  660. };
  661.  
  662. /* leds {
  663. compatible = "gpio-leds";
  664.  
  665. led-bluetooth {
  666. label = "sei610:blue:bt";
  667. gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
  668. default-state = "off";
  669. };
  670. };
  671.  
  672. pwmleds {
  673. compatible = "pwm-leds";
  674.  
  675. power {
  676. label = "sei610:red:power";
  677. pwms = <&pwm_AO_ab 0 30518 0>;
  678. max-brightness = <255>;
  679. linux,default-trigger = "default-on";
  680. active-low;
  681. };
  682. };
  683. */
  684.  
  685. memory@0 {
  686. device_type = "memory";
  687. reg = <0x0 0x0 0x1 0x0>;
  688. };
  689.  
  690. ao_5v: regulator-ao_5v {
  691. compatible = "regulator-fixed";
  692. regulator-name = "AO_5V";
  693. regulator-min-microvolt = <5000000>;
  694. regulator-max-microvolt = <5000000>;
  695. vin-supply = <&dc_in>;
  696. regulator-always-on;
  697. };
  698.  
  699. dc_in: regulator-dc_in {
  700. compatible = "regulator-fixed";
  701. regulator-name = "DC_IN";
  702. regulator-min-microvolt = <5000000>;
  703. regulator-max-microvolt = <5000000>;
  704. regulator-always-on;
  705. };
  706.  
  707. emmc_1v8: regulator-emmc_1v8 {
  708. compatible = "regulator-fixed";
  709. regulator-name = "EMMC_1V8";
  710. regulator-min-microvolt = <1800000>;
  711. regulator-max-microvolt = <1800000>;
  712. vin-supply = <&vddao_3v3>;
  713. regulator-always-on;
  714. };
  715.  
  716. vddao_3v3: regulator-vddao_3v3 {
  717. compatible = "regulator-fixed";
  718. regulator-name = "VDDAO_3V3";
  719. regulator-min-microvolt = <3300000>;
  720. regulator-max-microvolt = <3300000>;
  721. vin-supply = <&dc_in>;
  722. regulator-always-on;
  723. };
  724.  
  725. /* Used by Tuner, RGB Led & IR Emitter LED array */
  726. vddao_3v3_t: regulator-vddao_3v3_t {
  727. compatible = "regulator-fixed";
  728. regulator-name = "VDDAO_3V3_T";
  729. regulator-min-microvolt = <3300000>;
  730. regulator-max-microvolt = <3300000>;
  731. vin-supply = <&vddao_3v3>;
  732. gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
  733. enable-active-low;
  734. regulator-always-on;
  735. };
  736.  
  737. vddcpu: regulator-vddcpu {
  738. /*
  739. * SY8120B1ABC DC/DC Regulator.
  740. */
  741. compatible = "pwm-regulator";
  742.  
  743. regulator-name = "VDDCPU";
  744. regulator-min-microvolt = <690000>;
  745. regulator-max-microvolt = <1050000>;
  746.  
  747. vin-supply = <&dc_in>;
  748.  
  749. pwms = <&pwm_AO_cd 1 1500 0>;
  750. pwm-dutycycle-range = <100 0>;
  751.  
  752. regulator-boot-on;
  753. regulator-always-on;
  754. };
  755.  
  756. vddio_ao1v8: regulator-vddio_ao1v8 {
  757. compatible = "regulator-fixed";
  758. regulator-name = "VDDIO_AO1V8";
  759. regulator-min-microvolt = <1800000>;
  760. regulator-max-microvolt = <1800000>;
  761. vin-supply = <&vddao_3v3>;
  762. regulator-always-on;
  763. };
  764.  
  765. reserved-memory {
  766. /* TEE Reserved Memory */
  767. bl32_reserved: bl32@5000000 {
  768. reg = <0x0 0x05300000 0x0 0x2000000>;
  769. no-map;
  770. };
  771. };
  772.  
  773. sdio_pwrseq: sdio-pwrseq {
  774. compatible = "mmc-pwrseq-simple";
  775. reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
  776. clocks = <&wifi32k>;
  777. clock-names = "ext_clock";
  778. };
  779.  
  780. sound {
  781. compatible = "amlogic,axg-sound-card";
  782. model = "SM1-X96-AIR";
  783. audio-aux-devs = <&tdmout_b>;
  784. audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
  785. "TDMOUT_A IN 1", "FRDDR_B OUT 0",
  786. "TDMOUT_A IN 2", "FRDDR_C OUT 0",
  787. "TDM_A Playback", "TDMOUT_A OUT",
  788. "TDMOUT_B IN 0", "FRDDR_A OUT 1",
  789. "TDMOUT_B IN 1", "FRDDR_B OUT 1",
  790. "TDMOUT_B IN 2", "FRDDR_C OUT 1",
  791. "TDM_B Playback", "TDMOUT_B OUT",
  792. "SPDIFOUT IN 0", "FRDDR_A OUT 3",
  793. "SPDIFOUT IN 1", "FRDDR_B OUT 3",
  794. "SPDIFOUT IN 2", "FRDDR_C OUT 3";
  795.  
  796. assigned-clocks = <&clkc CLKID_MPLL2>,
  797. <&clkc CLKID_MPLL0>,
  798. <&clkc CLKID_MPLL1>;
  799. assigned-clock-parents = <0>, <0>, <0>;
  800. assigned-clock-rates = <294912000>,
  801. <270950400>,
  802. <393216000>;
  803. status = "okay";
  804.  
  805. dai-link-0 {
  806. sound-dai = <&frddr_a>;
  807. };
  808.  
  809. dai-link-1 {
  810. sound-dai = <&frddr_b>;
  811. };
  812.  
  813. dai-link-2 {
  814. sound-dai = <&frddr_c>;
  815. };
  816.  
  817. /* 8ch hdmi interface */
  818. dai-link-3 {
  819. sound-dai = <&tdmif_b>;
  820. dai-format = "i2s";
  821. dai-tdm-slot-tx-mask-0 = <1 1>;
  822. dai-tdm-slot-tx-mask-1 = <1 1>;
  823. dai-tdm-slot-tx-mask-2 = <1 1>;
  824. dai-tdm-slot-tx-mask-3 = <1 1>;
  825. mclk-fs = <256>;
  826.  
  827. codec {
  828. sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
  829. };
  830. };
  831.  
  832. dai-link-4 {
  833. sound-dai = <&tdmif_a>;
  834. dai-format = "i2s";
  835. dai-tdm-slot-tx-mask-0 = <1 1>;
  836. dai-tdm-slot-tx-mask-1 = <1 1>;
  837. dai-tdm-slot-tx-mask-2 = <1 1>;
  838. dai-tdm-slot-tx-mask-3 = <1 1>;
  839. mclk-fs = <256>;
  840.  
  841. codec {
  842. sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
  843. };
  844. };
  845.  
  846. /* spdif hdmi or toslink interface */
  847. dai-link-5 {
  848. sound-dai = <&spdifout>;
  849.  
  850. codec-0 {
  851. sound-dai = <&spdif_dit>;
  852. };
  853.  
  854. codec-1 {
  855. sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_A>;
  856. };
  857. };
  858.  
  859. /* spdif hdmi interface */
  860. dai-link-6 {
  861. sound-dai = <&spdifout_b>;
  862.  
  863. codec {
  864. sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_B>;
  865. };
  866. };
  867.  
  868. /* hdmi glue */
  869. dai-link-7 {
  870. sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
  871.  
  872. codec {
  873. sound-dai = <&hdmi_tx>;
  874. };
  875. };
  876. };
  877.  
  878. wifi32k: wifi32k {
  879. compatible = "pwm-clock";
  880. #clock-cells = <0>;
  881. clock-frequency = <32768>;
  882. pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
  883. };
  884. };
  885.  
  886. &arb {
  887. status = "okay";
  888. };
  889.  
  890. &audio {
  891. spdifout: audio-controller@480 {
  892. compatible = "amlogic,sm1-spdifout";
  893. reg = <0x0 0x480 0x0 0x50>;
  894. #sound-dai-cells = <0>;
  895. clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
  896. <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
  897. clock-names = "pclk", "mclk";
  898.  
  899. pinctrl-0 = <&spdif_out_h_pins>;
  900. pinctrl-names = "default";
  901. status = "okay";
  902. };
  903.  
  904. spdifout_b: audio-controller@680 {
  905. compatible = "amlogic,sm1-spdifout",
  906. "amlogic,axg-spdifout";
  907. reg = <0x0 0x680 0x0 0x50>;
  908. #sound-dai-cells = <0>;
  909. sound-name-prefix = "SPDIFOUT_B";
  910. clocks = <&clkc_audio AUD_CLKID_SPDIFOUT_B>,
  911. <&clkc_audio AUD_CLKID_SPDIFOUT_B_CLK>;
  912. clock-names = "pclk", "mclk";
  913. resets = <&clkc_audio AUD_RESET_SPDIFOUT_B>;
  914. status = "okay";
  915. };
  916.  
  917. toacodec: audio-controller@740 {
  918. compatible = "amlogic,sm1-toacodec";
  919. reg = <0x0 0x740 0x0 0x4>;
  920. #sound-dai-cells = <1>;
  921. resets = <&clkc_audio AUD_RESET_TOACODEC>;
  922. };
  923.  
  924. };
  925.  
  926. &apb {
  927. acodec: audio-controller@32000 {
  928. compatible = "amlogic,t9015";
  929. reg = <0x0 0x32000 0x0 0x14>;
  930. #sound-dai-cells = <0>;
  931. clocks = <&clkc CLKID_AUDIO_CODEC>;
  932. clock-names = "pclk";
  933. resets = <&reset RESET_AUDIO_CODEC>;
  934. };
  935. };
  936.  
  937. &cec_AO {
  938. pinctrl-0 = <&cec_ao_a_h_pins>;
  939. pinctrl-names = "default";
  940. status = "disabled";
  941. hdmi-phandle = <&hdmi_tx>;
  942. };
  943.  
  944. &cecb_AO {
  945. pinctrl-0 = <&cec_ao_b_h_pins>;
  946. pinctrl-names = "default";
  947. status = "okay";
  948. hdmi-phandle = <&hdmi_tx>;
  949. };
  950.  
  951. &clkc_audio {
  952. status = "okay";
  953. };
  954.  
  955. &cpu0 {
  956. cpu-supply = <&vddcpu>;
  957. operating-points-v2 = <&cpu_opp_table>;
  958. clocks = <&clkc CLKID_CPU_CLK>;
  959. clock-latency = <50000>;
  960. };
  961.  
  962. &cpu1 {
  963. cpu-supply = <&vddcpu>;
  964. operating-points-v2 = <&cpu_opp_table>;
  965. clocks = <&clkc CLKID_CPU1_CLK>;
  966. clock-latency = <50000>;
  967. };
  968.  
  969. &cpu2 {
  970. cpu-supply = <&vddcpu>;
  971. operating-points-v2 = <&cpu_opp_table>;
  972. clocks = <&clkc CLKID_CPU2_CLK>;
  973. clock-latency = <50000>;// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  974. /*
  975. * Copyright (c) 2020 Classicmart Ltd. All rights reserved.
  976. */
  977.  
  978. /dts-v1/;
  979.  
  980. #include "meson-sm1.dtsi"
  981. #include <dt-bindings/gpio/gpio.h>
  982. #include <dt-bindings/input/input.h>
  983. #include <dt-bindings/gpio/meson-g12a-gpio.h>
  984. #include <dt-bindings/sound/meson-g12a-tohdmitx.h>
  985.  
  986. / {
  987. compatible = "amediatech,x96-air", "amlogic,sm1";
  988. model = "Shenzhen Amediatech Technology Co., Ltd X96 Air";
  989.  
  990. aliases {
  991. serial0 = &uart_AO;
  992. ethernet0 = &ethmac;
  993. };
  994.  
  995. /* mono_dac: audio-codec-0 {
  996. compatible = "maxim,max98357a";
  997. #sound-dai-cells = <0>;
  998. sound-name-prefix = "U16";
  999. sdmode-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>;
  1000. }; */
  1001.  
  1002. spdif_dit: audio-codec-0 {
  1003. #sound-dai-cells = <0>;
  1004. compatible = "linux,spdif-dit";
  1005. status = "okay";
  1006. sound-name-prefix = "DIT";
  1007. };
  1008.  
  1009. stereo_dac: audio-codec-1 {
  1010. compatible = "amlogic,t9015";
  1011. #sound-dai-cells = <0>;
  1012. sound-name-prefix = "INTDAC";
  1013. };
  1014.  
  1015.  
  1016. cvbs-connector {
  1017. compatible = "composite-video-connector";
  1018.  
  1019. port {
  1020. cvbs_connector_in: endpoint {
  1021. remote-endpoint = <&cvbs_vdac_out>;
  1022. };
  1023. };
  1024. };
  1025.  
  1026. chosen {
  1027. stdout-path = "serial0:115200n8";
  1028. };
  1029.  
  1030. emmc_pwrseq: emmc-pwrseq {
  1031. compatible = "mmc-pwrseq-emmc";
  1032. reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
  1033. };
  1034.  
  1035. hdmi-connector {
  1036. compatible = "hdmi-connector";
  1037. type = "a";
  1038.  
  1039. port {
  1040. hdmi_connector_in: endpoint {
  1041. remote-endpoint = <&hdmi_tx_tmds_out>;
  1042. };
  1043. };
  1044. };
  1045.  
  1046. /* leds {
  1047. compatible = "gpio-leds";
  1048.  
  1049. led-bluetooth {
  1050. label = "sei610:blue:bt";
  1051. gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
  1052. default-state = "off";
  1053. };
  1054. };
  1055.  
  1056. pwmleds {
  1057. compatible = "pwm-leds";
  1058.  
  1059. power {
  1060. label = "sei610:red:power";
  1061. pwms = <&pwm_AO_ab 0 30518 0>;
  1062. max-brightness = <255>;
  1063. linux,default-trigger = "default-on";
  1064. active-low;
  1065. };
  1066. };
  1067. */
  1068.  
  1069. memory@0 {
  1070. device_type = "memory";
  1071. reg = <0x0 0x0 0x1 0x0>;
  1072. };
  1073.  
  1074. ao_5v: regulator-ao_5v {
  1075. compatible = "regulator-fixed";
  1076. regulator-name = "AO_5V";
  1077. regulator-min-microvolt = <5000000>;
  1078. regulator-max-microvolt = <5000000>;
  1079. vin-supply = <&dc_in>;
  1080. regulator-always-on;
  1081. };
  1082.  
  1083. dc_in: regulator-dc_in {
  1084. compatible = "regulator-fixed";
  1085. regulator-name = "DC_IN";
  1086. regulator-min-microvolt = <5000000>;
  1087. regulator-max-microvolt = <5000000>;
  1088. regulator-always-on;
  1089. };
  1090.  
  1091. emmc_1v8: regulator-emmc_1v8 {
  1092. compatible = "regulator-fixed";
  1093. regulator-name = "EMMC_1V8";
  1094. regulator-min-microvolt = <1800000>;
  1095. regulator-max-microvolt = <1800000>;
  1096. vin-supply = <&vddao_3v3>;
  1097. regulator-always-on;
  1098. };
  1099.  
  1100. vddao_3v3: regulator-vddao_3v3 {
  1101. compatible = "regulator-fixed";
  1102. regulator-name = "VDDAO_3V3";
  1103. regulator-min-microvolt = <3300000>;
  1104. regulator-max-microvolt = <3300000>;
  1105. vin-supply = <&dc_in>;
  1106. regulator-always-on;
  1107. };
  1108.  
  1109. /* Used by Tuner, RGB Led & IR Emitter LED array */
  1110. vddao_3v3_t: regulator-vddao_3v3_t {
  1111. compatible = "regulator-fixed";
  1112. regulator-name = "VDDAO_3V3_T";
  1113. regulator-min-microvolt = <3300000>;
  1114. regulator-max-microvolt = <3300000>;
  1115. vin-supply = <&vddao_3v3>;
  1116. gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
  1117. enable-active-low;
  1118. regulator-always-on;
  1119. };
  1120.  
  1121. vddcpu: regulator-vddcpu {
  1122. /*
  1123. * SY8120B1ABC DC/DC Regulator.
  1124. */
  1125. compatible = "pwm-regulator";
  1126.  
  1127. regulator-name = "VDDCPU";
  1128. regulator-min-microvolt = <690000>;
  1129. regulator-max-microvolt = <1050000>;
  1130.  
  1131. vin-supply = <&dc_in>;
  1132.  
  1133. pwms = <&pwm_AO_cd 1 1500 0>;
  1134. pwm-dutycycle-range = <100 0>;
  1135.  
  1136. regulator-boot-on;
  1137. regulator-always-on;
  1138. };
  1139.  
  1140. vddio_ao1v8: regulator-vddio_ao1v8 {
  1141. compatible = "regulator-fixed";
  1142. regulator-name = "VDDIO_AO1V8";
  1143. regulator-min-microvolt = <1800000>;
  1144. regulator-max-microvolt = <1800000>;
  1145. vin-supply = <&vddao_3v3>;
  1146. regulator-always-on;
  1147. };
  1148.  
  1149. reserved-memory {
  1150. /* TEE Reserved Memory */
  1151. bl32_reserved: bl32@5000000 {
  1152. reg = <0x0 0x05300000 0x0 0x2000000>;
  1153. no-map;
  1154. };
  1155. };
  1156.  
  1157. sdio_pwrseq: sdio-pwrseq {
  1158. compatible = "mmc-pwrseq-simple";
  1159. reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
  1160. clocks = <&wifi32k>;
  1161. clock-names = "ext_clock";
  1162. };
  1163.  
  1164. sound {
  1165. compatible = "amlogic,axg-sound-card";
  1166. model = "SM1-X96-AIR";
  1167. audio-aux-devs = <&tdmout_b>;
  1168. audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
  1169. "TDMOUT_A IN 1", "FRDDR_B OUT 0",
  1170. "TDMOUT_A IN 2", "FRDDR_C OUT 0",
  1171. "TDM_A Playback", "TDMOUT_A OUT",
  1172. "TDMOUT_B IN 0", "FRDDR_A OUT 1",
  1173. "TDMOUT_B IN 1", "FRDDR_B OUT 1",
  1174. "TDMOUT_B IN 2", "FRDDR_C OUT 1",
  1175. "TDM_B Playback", "TDMOUT_B OUT",
  1176. "SPDIFOUT IN 0", "FRDDR_A OUT 3",
  1177. "SPDIFOUT IN 1", "FRDDR_B OUT 3",
  1178. "SPDIFOUT IN 2", "FRDDR_C OUT 3";
  1179.  
  1180. assigned-clocks = <&clkc CLKID_MPLL2>,
  1181. <&clkc CLKID_MPLL0>,
  1182. <&clkc CLKID_MPLL1>;
  1183. assigned-clock-parents = <0>, <0>, <0>;
  1184. assigned-clock-rates = <294912000>,
  1185. <270950400>,
  1186. <393216000>;
  1187. status = "okay";
  1188.  
  1189. dai-link-0 {
  1190. sound-dai = <&frddr_a>;
  1191. };
  1192.  
  1193. dai-link-1 {
  1194. sound-dai = <&frddr_b>;
  1195. };
  1196.  
  1197. dai-link-2 {
  1198. sound-dai = <&frddr_c>;
  1199. };
  1200.  
  1201. /* 8ch hdmi interface */
  1202. dai-link-3 {
  1203. sound-dai = <&tdmif_b>;
  1204. dai-format = "i2s";
  1205. dai-tdm-slot-tx-mask-0 = <1 1>;
  1206. dai-tdm-slot-tx-mask-1 = <1 1>;
  1207. dai-tdm-slot-tx-mask-2 = <1 1>;
  1208. dai-tdm-slot-tx-mask-3 = <1 1>;
  1209. mclk-fs = <256>;
  1210.  
  1211. codec {
  1212. sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
  1213. };
  1214. };
  1215.  
  1216. dai-link-4 {
  1217. sound-dai = <&tdmif_a>;
  1218. dai-format = "i2s";
  1219. dai-tdm-slot-tx-mask-0 = <1 1>;
  1220. dai-tdm-slot-tx-mask-1 = <1 1>;
  1221. dai-tdm-slot-tx-mask-2 = <1 1>;
  1222. dai-tdm-slot-tx-mask-3 = <1 1>;
  1223. mclk-fs = <256>;
  1224.  
  1225. codec {
  1226. sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
  1227. };
  1228. };
  1229.  
  1230. /* spdif hdmi or toslink interface */
  1231. dai-link-5 {
  1232. sound-dai = <&spdifout>;
  1233.  
  1234. codec-0 {
  1235. sound-dai = <&spdif_dit>;
  1236. };
  1237.  
  1238. codec-1 {
  1239. sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_A>;
  1240. };
  1241. };
  1242.  
  1243. /* spdif hdmi interface */
  1244. dai-link-6 {
  1245. sound-dai = <&spdifout_b>;
  1246.  
  1247. codec {
  1248. sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_B>;
  1249. };
  1250. };
  1251.  
  1252. /* hdmi glue */
  1253. dai-link-7 {
  1254. sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
  1255.  
  1256. codec {
  1257. sound-dai = <&hdmi_tx>;
  1258. };
  1259. };
  1260. };
  1261.  
  1262. wifi32k: wifi32k {
  1263. compatible = "pwm-clock";
  1264. #clock-cells = <0>;
  1265. clock-frequency = <32768>;
  1266. pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
  1267. };
  1268. };
  1269.  
  1270. &arb {
  1271. status = "okay";
  1272. };
  1273.  
  1274. &audio {
  1275. spdifout: audio-controller@480 {
  1276. compatible = "amlogic,sm1-spdifout";
  1277. reg = <0x0 0x480 0x0 0x50>;
  1278. #sound-dai-cells = <0>;
  1279. clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
  1280. <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
  1281. clock-names = "pclk", "mclk";
  1282.  
  1283. pinctrl-0 = <&spdif_out_h_pins>;
  1284. pinctrl-names = "default";
  1285. status = "okay";
  1286. };
  1287.  
  1288. spdifout_b: audio-controller@680 {
  1289. compatible = "amlogic,sm1-spdifout",
  1290. "amlogic,axg-spdifout";
  1291. reg = <0x0 0x680 0x0 0x50>;
  1292. #sound-dai-cells = <0>;
  1293. sound-name-prefix = "SPDIFOUT_B";
  1294. clocks = <&clkc_audio AUD_CLKID_SPDIFOUT_B>,
  1295. <&clkc_audio AUD_CLKID_SPDIFOUT_B_CLK>;
  1296. clock-names = "pclk", "mclk";
  1297. resets = <&clkc_audio AUD_RESET_SPDIFOUT_B>;
  1298. status = "okay";
  1299. };
  1300.  
  1301. toacodec: audio-controller@740 {
  1302. compatible = "amlogic,sm1-toacodec";
  1303. reg = <0x0 0x740 0x0 0x4>;
  1304. #sound-dai-cells = <1>;
  1305. resets = <&clkc_audio AUD_RESET_TOACODEC>;
  1306. };
  1307.  
  1308. };
  1309.  
  1310. &apb {
  1311. acodec: audio-controller@32000 {
  1312. compatible = "amlogic,t9015";
  1313. reg = <0x0 0x32000 0x0 0x14>;
  1314. #sound-dai-cells = <0>;
  1315. clocks = <&clkc CLKID_AUDIO_CODEC>;
  1316. clock-names = "pclk";
  1317. resets = <&reset RESET_AUDIO_CODEC>;
  1318. };
  1319. };
  1320.  
  1321. &cec_AO {
  1322. pinctrl-0 = <&cec_ao_a_h_pins>;
  1323. pinctrl-names = "default";
  1324. status = "disabled";
  1325. hdmi-phandle = <&hdmi_tx>;
  1326. };
  1327.  
  1328. &cecb_AO {
  1329. pinctrl-0 = <&cec_ao_b_h_pins>;
  1330. pinctrl-names = "default";
  1331. status = "okay";
  1332. hdmi-phandle = <&hdmi_tx>;
  1333. };
  1334.  
  1335. &clkc_audio {
  1336. status = "okay";
  1337. };
  1338.  
  1339. &cpu0 {
  1340. cpu-supply = <&vddcpu>;
  1341. operating-points-v2 = <&cpu_opp_table>;
  1342. clocks = <&clkc CLKID_CPU_CLK>;
  1343. clock-latency = <50000>;
  1344. };
  1345.  
  1346. &cpu1 {
  1347. cpu-supply = <&vddcpu>;
  1348. operating-points-v2 = <&cpu_opp_table>;
  1349. clocks = <&clkc CLKID_CPU1_CLK>;
  1350. clock-latency = <50000>;
  1351. };
  1352.  
  1353. &cpu2 {
  1354. cpu-supply = <&vddcpu>;
  1355. operating-points-v2 = <&cpu_opp_table>;
  1356. clocks = <&clkc CLKID_CPU2_CLK>;
  1357. clock-latency = <50000>;
  1358. };
  1359.  
  1360. &cpu3 {
  1361. cpu-supply = <&vddcpu>;
  1362. operating-points-v2 = <&cpu_opp_table>;
  1363. clocks = <&clkc CLKID_CPU3_CLK>;
  1364. clock-latency = <50000>;
  1365. };
  1366.  
  1367. &ext_mdio {
  1368. external_phy: ethernet-phy@0 {
  1369. /* Realtek RTL8211F (0x001cc916) */
  1370. reg = <0>;
  1371. max-speed = <1000>;
  1372. eee-broken-1000t;
  1373.  
  1374. reset-assert-us = <20000>;
  1375. reset-deassert-us = <100000>;
  1376. reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
  1377.  
  1378. interrupt-parent = <&gpio_intc>;
  1379. /* MAC_INTR on GPIOZ_14 */
  1380. interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
  1381. };
  1382. };
  1383.  
  1384. &ethmac {
  1385. pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
  1386. pinctrl-names = "default";
  1387. status = "okay";
  1388. phy-mode = "rgmii";
  1389. phy-handle = <&external_phy>;
  1390. amlogic,tx-delay-ns = <2>;
  1391. };
  1392.  
  1393. &frddr_a {
  1394. status = "okay";
  1395. };
  1396.  
  1397. &frddr_b {
  1398. status = "okay";
  1399. };
  1400.  
  1401. &frddr_c {
  1402. status = "okay";
  1403. };
  1404.  
  1405. &hdmi_tx {
  1406. status = "okay";
  1407. pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
  1408. pinctrl-names = "default";
  1409. };
  1410.  
  1411. &hdmi_tx_tmds_port {
  1412. hdmi_tx_tmds_out: endpoint {
  1413. remote-endpoint = <&hdmi_connector_in>;
  1414. };
  1415. };
  1416.  
  1417. &i2c3 {
  1418. status = "okay";
  1419. pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
  1420. pinctrl-names = "default";
  1421. };
  1422.  
  1423. &ir {
  1424. status = "okay";
  1425. pinctrl-0 = <&remote_input_ao_pins>;
  1426. pinctrl-names = "default";
  1427. };
  1428.  
  1429. &pwm_AO_ab {
  1430. status = "okay";
  1431. pinctrl-0 = <&pwm_ao_a_pins>;
  1432. pinctrl-names = "default";
  1433. clocks = <&xtal>;
  1434. clock-names = "clkin0";
  1435. };
  1436.  
  1437. &pwm_AO_cd {
  1438. pinctrl-0 = <&pwm_ao_d_e_pins>;
  1439. pinctrl-names = "default";
  1440. clocks = <&xtal>;
  1441. clock-names = "clkin1";
  1442. status = "okay";
  1443. };
  1444.  
  1445. &pwm_ef {
  1446. status = "okay";
  1447. pinctrl-0 = <&pwm_e_pins>;
  1448. pinctrl-names = "default";
  1449. clocks = <&xtal>;
  1450. clock-names = "clkin0";
  1451. };
  1452.  
  1453. &saradc {
  1454. status = "okay";
  1455. vref-supply = <&vddio_ao1v8>;
  1456. };
  1457.  
  1458. /* SDIO */
  1459. &sd_emmc_a {
  1460. status = "okay";
  1461. pinctrl-0 = <&sdio_pins>;
  1462. pinctrl-1 = <&sdio_clk_gate_pins>;
  1463. pinctrl-names = "default", "clk-gate";
  1464. #address-cells = <1>;
  1465. #size-cells = <0>;
  1466.  
  1467. bus-width = <4>;
  1468. cap-sd-highspeed;
  1469. sd-uhs-sdr50;
  1470. max-frequency = <100000000>;
  1471.  
  1472. non-removable;
  1473. disable-wp;
  1474.  
  1475. /* WiFi firmware requires power to be kept while in suspend */
  1476. keep-power-in-suspend;
  1477.  
  1478. mmc-pwrseq = <&sdio_pwrseq>;
  1479.  
  1480. vmmc-supply = <&vddao_3v3>;
  1481. vqmmc-supply = <&vddio_ao1v8>;
  1482.  
  1483. brcmf: wifi@1 {
  1484. reg = <1>;
  1485. compatible = "brcm,bcm4329-fmac";
  1486. };
  1487. };
  1488.  
  1489. /* SD card */
  1490. &sd_emmc_b {
  1491. status = "okay";
  1492. pinctrl-0 = <&sdcard_c_pins>;
  1493. pinctrl-1 = <&sdcard_clk_gate_c_pins>;
  1494. pinctrl-names = "default", "clk-gate";
  1495.  
  1496. bus-width = <4>;
  1497. cap-sd-highspeed;
  1498. max-frequency = <50000000>;
  1499. disable-wp;
  1500.  
  1501. cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
  1502. vmmc-supply = <&vddao_3v3>;
  1503. vqmmc-supply = <&vddao_3v3>;
  1504. };
  1505.  
  1506. /* eMMC */
  1507. &sd_emmc_c {
  1508. status = "okay";
  1509. pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
  1510. pinctrl-1 = <&emmc_clk_gate_pins>;
  1511. pinctrl-names = "default", "clk-gate";
  1512.  
  1513. bus-width = <8>;
  1514. cap-mmc-highspeed;
  1515. mmc-ddr-1_8v;
  1516. mmc-hs200-1_8v;
  1517. max-frequency = <200000000>;
  1518. non-removable;
  1519. disable-wp;
  1520.  
  1521. mmc-pwrseq = <&emmc_pwrseq>;
  1522. vmmc-supply = <&vddao_3v3>;
  1523. vqmmc-supply = <&emmc_1v8>;
  1524. };
  1525.  
  1526. &tdmif_a {
  1527. pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>;
  1528. pinctrl-names = "default";
  1529. status = "okay";
  1530.  
  1531. assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>,
  1532. <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>;
  1533. assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>,
  1534. <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
  1535. assigned-clock-rates = <0>, <0>;
  1536. };
  1537.  
  1538. &tdmif_b {
  1539. status = "okay";
  1540. };
  1541.  
  1542. &tdmout_a {
  1543. status = "okay";
  1544. };
  1545.  
  1546. &tdmout_b {
  1547. status = "okay";
  1548. };
  1549.  
  1550. &tohdmitx {
  1551. status = "okay";
  1552. };
  1553.  
  1554. &uart_A {
  1555. status = "okay";
  1556. pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
  1557. pinctrl-names = "default";
  1558. uart-has-rtscts;
  1559.  
  1560. bluetooth {
  1561. compatible = "brcm,bcm43438-bt";
  1562. interrupt-parent = <&gpio_intc>;
  1563. interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
  1564. interrupt-names = "host-wakeup";
  1565. shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
  1566. max-speed = <2000000>;
  1567. clocks = <&wifi32k>;
  1568. clock-names = "lpo";
  1569. vbat-supply = <&vddao_3v3>;
  1570. vddio-supply = <&vddio_ao1v8>;
  1571. };
  1572. };
  1573.  
  1574. &uart_AO {
  1575. status = "okay";
  1576. pinctrl-0 = <&uart_ao_a_pins>;
  1577. pinctrl-names = "default";
  1578. };
  1579.  
  1580. &usb {
  1581. status = "okay";
  1582. dr_mode = "otg";
  1583. };
  1584.  
  1585.  
  1586. &cvbs_vdac_port {
  1587. cvbs_vdac_out: endpoint {
  1588. remote-endpoint = <&cvbs_connector_in>;
  1589. };
  1590. };
  1591.  
  1592. };
  1593.  
  1594. &cpu3 {
  1595. cpu-supply = <&vddcpu>;
  1596. operating-points-v2 = <&cpu_opp_table>;
  1597. clocks = <&clkc CLKID_CPU3_CLK>;
  1598. clock-latency = <50000>;
  1599. };
  1600.  
  1601. &ext_mdio {
  1602. external_phy: ethernet-phy@0 {
  1603. /* Realtek RTL8211F (0x001cc916) */
  1604. reg = <0>;
  1605. max-speed = <1000>;
  1606. eee-broken-1000t;
  1607.  
  1608. reset-assert-us = <20000>;
  1609. reset-deassert-us = <100000>;
  1610. reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
  1611.  
  1612. interrupt-parent = <&gpio_intc>;
  1613. /* MAC_INTR on GPIOZ_14 */
  1614. interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
  1615. };
  1616. };
  1617.  
  1618. &ethmac {
  1619. pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
  1620. pinctrl-names = "default";
  1621. status = "okay";
  1622. phy-mode = "rgmii";
  1623. phy-handle = <&external_phy>;
  1624. amlogic,tx-delay-ns = <2>;
  1625. };
  1626.  
  1627. &frddr_a {
  1628. status = "okay";
  1629. };
  1630.  
  1631. &frddr_b {
  1632. status = "okay";
  1633. };
  1634.  
  1635. &frddr_c {
  1636. status = "okay";
  1637. };
  1638.  
  1639. &hdmi_tx {
  1640. status = "okay";
  1641. pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
  1642. pinctrl-names = "default";
  1643. };
  1644.  
  1645. &hdmi_tx_tmds_port {
  1646. hdmi_tx_tmds_out: endpoint {
  1647. remote-endpoint = <&hdmi_connector_in>;
  1648. };
  1649. };
  1650.  
  1651. &i2c3 {
  1652. status = "okay";
  1653. pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
  1654. pinctrl-names = "default";
  1655. };
  1656.  
  1657. &ir {
  1658. status = "okay";
  1659. pinctrl-0 = <&remote_input_ao_pins>;
  1660. pinctrl-names = "default";
  1661. };
  1662.  
  1663. &pwm_AO_ab {
  1664. status = "okay";
  1665. pinctrl-0 = <&pwm_ao_a_pins>;
  1666. pinctrl-names = "default";
  1667. clocks = <&xtal>;
  1668. clock-names = "clkin0";
  1669. };
  1670.  
  1671. &pwm_AO_cd {
  1672. pinctrl-0 = <&pwm_ao_d_e_pins>;
  1673. pinctrl-names = "default";
  1674. clocks = <&xtal>;
  1675. clock-names = "clkin1";
  1676. status = "okay";
  1677. };
  1678.  
  1679. &pwm_ef {
  1680. status = "okay";
  1681. pinctrl-0 = <&pwm_e_pins>;
  1682. pinctrl-names = "default";
  1683. clocks = <&xtal>;
  1684. clock-names = "clkin0";
  1685. };
  1686.  
  1687. &saradc {
  1688. status = "okay";
  1689. vref-supply = <&vddio_ao1v8>;
  1690. };
  1691.  
  1692. /* SDIO */
  1693. &sd_emmc_a {
  1694. status = "okay";
  1695. pinctrl-0 = <&sdio_pins>;
  1696. pinctrl-1 = <&sdio_clk_gate_pins>;
  1697. pinctrl-names = "default", "clk-gate";
  1698. #address-cells = <1>;
  1699. #size-cells = <0>;
  1700.  
  1701. bus-width = <4>;
  1702. cap-sd-highspeed;
  1703. sd-uhs-sdr50;
  1704. max-frequency = <100000000>;
  1705.  
  1706. non-removable;
  1707. disable-wp;
  1708.  
  1709. /* WiFi firmware requires power to be kept while in suspend */
  1710. keep-power-in-suspend;
  1711.  
  1712. mmc-pwrseq = <&sdio_pwrseq>;
  1713.  
  1714. vmmc-supply = <&vddao_3v3>;
  1715. vqmmc-supply = <&vddio_ao1v8>;
  1716.  
  1717. brcmf: wifi@1 {
  1718. reg = <1>;
  1719. compatible = "brcm,bcm4329-fmac";
  1720. };
  1721. };
  1722.  
  1723. /* SD card */
  1724. &sd_emmc_b {
  1725. status = "okay";
  1726. pinctrl-0 = <&sdcard_c_pins>;
  1727. pinctrl-1 = <&sdcard_clk_gate_c_pins>;
  1728. pinctrl-names = "default", "clk-gate";
  1729.  
  1730. bus-width = <4>;
  1731. cap-sd-highspeed;
  1732. max-frequency = <50000000>;
  1733. disable-wp;
  1734.  
  1735. cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
  1736. vmmc-supply = <&vddao_3v3>;
  1737. vqmmc-supply = <&vddao_3v3>;
  1738. };
  1739.  
  1740. /* eMMC */
  1741. &sd_emmc_c {
  1742. status = "okay";
  1743. pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
  1744. pinctrl-1 = <&emmc_clk_gate_pins>;
  1745. pinctrl-names = "default", "clk-gate";
  1746.  
  1747. bus-width = <8>;
  1748. cap-mmc-highspeed;
  1749. mmc-ddr-1_8v;
  1750. mmc-hs200-1_8v;
  1751. max-frequency = <200000000>;
  1752. non-removable;
  1753. disable-wp;
  1754.  
  1755. mmc-pwrseq = <&emmc_pwrseq>;
  1756. vmmc-supply = <&vddao_3v3>;
  1757. vqmmc-supply = <&emmc_1v8>;
  1758. };
  1759.  
  1760. &tdmif_a {
  1761. pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>;
  1762. pinctrl-names = "default";
  1763. status = "okay";
  1764.  
  1765. assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>,
  1766. <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>;
  1767. assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>,
  1768. <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
  1769. assigned-clock-rates = <0>, <0>;
  1770. };
  1771.  
  1772. &tdmif_b {
  1773. status = "okay";
  1774. };
  1775.  
  1776. &tdmout_a {
  1777. status = "okay";
  1778. };
  1779.  
  1780. &tdmout_b {
  1781. status = "okay";
  1782. };
  1783.  
  1784. &tohdmitx {
  1785. status = "okay";
  1786. };
  1787.  
  1788. &uart_A {
  1789. status = "okay";
  1790. pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
  1791. pinctrl-names = "default";
  1792. uart-has-rtscts;
  1793.  
  1794. bluetooth {
  1795. compatible = "brcm,bcm43438-bt";
  1796. interrupt-parent = <&gpio_intc>;
  1797. interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
  1798. interrupt-names = "host-wakeup";
  1799. shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
  1800. max-speed = <2000000>;
  1801. clocks = <&wifi32k>;
  1802. clock-names = "lpo";
  1803. vbat-supply = <&vddao_3v3>;
  1804. vddio-supply = <&vddio_ao1v8>;
  1805. };
  1806. };
  1807.  
  1808. &uart_AO {
  1809. status = "okay";
  1810. pinctrl-0 = <&uart_ao_a_pins>;
  1811. pinctrl-names = "default";
  1812. };
  1813.  
  1814. &usb {
  1815. status = "okay";
  1816. dr_mode = "otg";
  1817. };
  1818.  
  1819.  
  1820. &cvbs_vdac_port {
  1821. cvbs_vdac_out: endpoint {
  1822. remote-endpoint = <&cvbs_connector_in>;
  1823. };
  1824. };
  1825.  
  1826. interrupt-parent = <&gpio_intc>;
  1827. interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
  1828. interrupt-names = "host-wakeup";
  1829. shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
  1830. max-speed = <2000000>;
  1831. clocks = <&wifi32k>;
  1832. clock-names = "lpo";
  1833. vbat-supply = <&vddao_3v3>;
  1834. vddio-supply = <&vddio_ao1v8>;
  1835. };
  1836. };
  1837.  
  1838. &uart_AO {
  1839. status = "okay";
  1840. pinctrl-0 = <&uart_ao_a_pins>;
  1841. pinctrl-names = "default";
  1842. };
  1843.  
  1844. &usb {
  1845. status = "okay";
  1846. dr_mode = "otg";
  1847. };
  1848.  
  1849.  
  1850. &cvbs_vdac_port {
  1851. cvbs_vdac_out: endpoint {
  1852. remote-endpoint = <&cvbs_connector_in>;
  1853. };
  1854. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement