0001 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
0002 /*
0003 * Copyright (c) 2017 Amlogic, Inc. All rights reserved.
0004 */
0005
0006 /dts-v1/;
0007
0008 #include "meson-axg.dtsi"
0009 #include <dt-bindings/input/input.h>
0010
0011 / {
0012 compatible = "amlogic,s400", "amlogic,a113d", "amlogic,meson-axg";
0013 model = "Amlogic Meson AXG S400 Development Board";
0014
0015 adc_keys {
0016 compatible = "adc-keys";
0017 io-channels = <&saradc 0>;
0018 io-channel-names = "buttons";
0019 keyup-threshold-microvolt = <1800000>;
0020
0021 button-next {
0022 label = "Next";
0023 linux,code = <KEY_NEXT>;
0024 press-threshold-microvolt = <1116000>; /* 62% */
0025 };
0026
0027 button-prev {
0028 label = "Previous";
0029 linux,code = <KEY_PREVIOUS>;
0030 press-threshold-microvolt = <900000>; /* 50% */
0031 };
0032
0033 button-wifi {
0034 label = "Wifi";
0035 linux,code = <KEY_WLAN>;
0036 press-threshold-microvolt = <684000>; /* 38% */
0037 };
0038
0039 button-up {
0040 label = "Volume Up";
0041 linux,code = <KEY_VOLUMEUP>;
0042 press-threshold-microvolt = <468000>; /* 26% */
0043 };
0044
0045 button-down {
0046 label = "Volume Down";
0047 linux,code = <KEY_VOLUMEDOWN>;
0048 press-threshold-microvolt = <252000>; /* 14% */
0049 };
0050
0051 button-voice {
0052 label = "Voice";
0053 linux,code = <KEY_VOICECOMMAND>;
0054 press-threshold-microvolt = <0>; /* 0% */
0055 };
0056 };
0057
0058 aliases {
0059 serial0 = &uart_AO;
0060 serial1 = &uart_A;
0061 };
0062
0063 linein: audio-codec-0 {
0064 #sound-dai-cells = <0>;
0065 compatible = "everest,es7241";
0066 VDDA-supply = <&vcc_3v3>;
0067 VDDP-supply = <&vcc_3v3>;
0068 VDDD-supply = <&vcc_3v3>;
0069 status = "okay";
0070 sound-name-prefix = "Linein";
0071 };
0072
0073 lineout: audio-codec-1 {
0074 #sound-dai-cells = <0>;
0075 compatible = "everest,es7154";
0076 VDD-supply = <&vcc_3v3>;
0077 PVDD-supply = <&vcc_5v>;
0078 status = "okay";
0079 sound-name-prefix = "Lineout";
0080 };
0081
0082 spdif_dit: audio-codec-2 {
0083 #sound-dai-cells = <0>;
0084 compatible = "linux,spdif-dit";
0085 status = "okay";
0086 sound-name-prefix = "DIT";
0087 };
0088
0089 dmics: audio-codec-3 {
0090 #sound-dai-cells = <0>;
0091 compatible = "dmic-codec";
0092 num-channels = <7>;
0093 wakeup-delay-ms = <50>;
0094 status = "okay";
0095 sound-name-prefix = "MIC";
0096 };
0097
0098 spdif_dir: audio-codec-4 {
0099 #sound-dai-cells = <0>;
0100 compatible = "linux,spdif-dir";
0101 status = "okay";
0102 sound-name-prefix = "DIR";
0103 };
0104
0105 emmc_pwrseq: emmc-pwrseq {
0106 compatible = "mmc-pwrseq-emmc";
0107 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
0108 };
0109
0110 chosen {
0111 stdout-path = "serial0:115200n8";
0112 };
0113
0114 memory@0 {
0115 device_type = "memory";
0116 reg = <0x0 0x0 0x0 0x40000000>;
0117 };
0118
0119 main_12v: regulator-main_12v {
0120 compatible = "regulator-fixed";
0121 regulator-name = "12V";
0122 regulator-min-microvolt = <12000000>;
0123 regulator-max-microvolt = <12000000>;
0124 regulator-always-on;
0125 };
0126
0127 vcc_3v3: regulator-vcc_3v3 {
0128 compatible = "regulator-fixed";
0129 regulator-name = "VCC_3V3";
0130 regulator-min-microvolt = <3300000>;
0131 regulator-max-microvolt = <3300000>;
0132 vin-supply = <&vddao_3v3>;
0133 regulator-always-on;
0134 };
0135
0136 vcc_5v: regulator-vcc_5v {
0137 compatible = "regulator-fixed";
0138 regulator-name = "VCC5V";
0139 regulator-min-microvolt = <5000000>;
0140 regulator-max-microvolt = <5000000>;
0141 vin-supply = <&main_12v>;
0142
0143 gpio = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
0144 enable-active-high;
0145 };
0146
0147 vddao_3v3: regulator-vddao_3v3 {
0148 compatible = "regulator-fixed";
0149 regulator-name = "VDDAO_3V3";
0150 regulator-min-microvolt = <3300000>;
0151 regulator-max-microvolt = <3300000>;
0152 vin-supply = <&main_12v>;
0153 regulator-always-on;
0154 };
0155
0156 vddio_ao18: regulator-vddio_ao18 {
0157 compatible = "regulator-fixed";
0158 regulator-name = "VDDIO_AO18";
0159 regulator-min-microvolt = <1800000>;
0160 regulator-max-microvolt = <1800000>;
0161 vin-supply = <&vddao_3v3>;
0162 regulator-always-on;
0163 };
0164
0165 vddio_boot: regulator-vddio_boot {
0166 compatible = "regulator-fixed";
0167 regulator-name = "VDDIO_BOOT";
0168 regulator-min-microvolt = <1800000>;
0169 regulator-max-microvolt = <1800000>;
0170 vin-supply = <&vddao_3v3>;
0171 regulator-always-on;
0172 };
0173
0174 usb_pwr: regulator-usb_pwr {
0175 compatible = "regulator-fixed";
0176 regulator-name = "USB_PWR";
0177 regulator-min-microvolt = <5000000>;
0178 regulator-max-microvolt = <5000000>;
0179 vin-supply = <&vcc_5v>;
0180
0181 gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
0182 enable-active-high;
0183 };
0184
0185 sdio_pwrseq: sdio-pwrseq {
0186 compatible = "mmc-pwrseq-simple";
0187 reset-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>;
0188 clocks = <&wifi32k>;
0189 clock-names = "ext_clock";
0190 };
0191
0192 speaker-leds {
0193 compatible = "gpio-leds";
0194
0195 aled1 {
0196 label = "speaker:aled1";
0197 gpios = <&gpio_speaker 7 0>;
0198 };
0199
0200 aled2 {
0201 label = "speaker:aled2";
0202 gpios = <&gpio_speaker 6 0>;
0203 };
0204
0205 aled3 {
0206 label = "speaker:aled3";
0207 gpios = <&gpio_speaker 5 0>;
0208 };
0209
0210 aled4 {
0211 label = "speaker:aled4";
0212 gpios = <&gpio_speaker 4 0>;
0213 };
0214
0215 aled5 {
0216 label = "speaker:aled5";
0217 gpios = <&gpio_speaker 3 0>;
0218 };
0219
0220 aled6 {
0221 label = "speaker:aled6";
0222 gpios = <&gpio_speaker 2 0>;
0223 };
0224 };
0225
0226 sound {
0227 compatible = "amlogic,axg-sound-card";
0228 model = "AXG-S400";
0229 audio-aux-devs = <&tdmin_a>, <&tdmin_b>, <&tdmin_c>,
0230 <&tdmin_lb>, <&tdmout_c>;
0231 audio-widgets = "Line", "Lineout",
0232 "Line", "Linein",
0233 "Speaker", "Speaker1 Left",
0234 "Speaker", "Speaker1 Right";
0235 audio-routing = "TDMOUT_C IN 0", "FRDDR_A OUT 2",
0236 "SPDIFOUT IN 0", "FRDDR_A OUT 3",
0237 "TDMOUT_C IN 1", "FRDDR_B OUT 2",
0238 "SPDIFOUT IN 1", "FRDDR_B OUT 3",
0239 "TDMOUT_C IN 2", "FRDDR_C OUT 2",
0240 "SPDIFOUT IN 2", "FRDDR_C OUT 3",
0241 "TDM_C Playback", "TDMOUT_C OUT",
0242 "TDMIN_A IN 2", "TDM_C Capture",
0243 "TDMIN_A IN 5", "TDM_C Loopback",
0244 "TDMIN_B IN 2", "TDM_C Capture",
0245 "TDMIN_B IN 5", "TDM_C Loopback",
0246 "TDMIN_C IN 2", "TDM_C Capture",
0247 "TDMIN_C IN 5", "TDM_C Loopback",
0248 "TDMIN_LB IN 2", "TDM_C Loopback",
0249 "TDMIN_LB IN 5", "TDM_C Capture",
0250 "TODDR_A IN 0", "TDMIN_A OUT",
0251 "TODDR_B IN 0", "TDMIN_A OUT",
0252 "TODDR_C IN 0", "TDMIN_A OUT",
0253 "TODDR_A IN 1", "TDMIN_B OUT",
0254 "TODDR_B IN 1", "TDMIN_B OUT",
0255 "TODDR_C IN 1", "TDMIN_B OUT",
0256 "TODDR_A IN 2", "TDMIN_C OUT",
0257 "TODDR_B IN 2", "TDMIN_C OUT",
0258 "TODDR_C IN 2", "TDMIN_C OUT",
0259 "TODDR_A IN 3", "SPDIFIN Capture",
0260 "TODDR_B IN 3", "SPDIFIN Capture",
0261 "TODDR_C IN 3", "SPDIFIN Capture",
0262 "TODDR_A IN 4", "PDM Capture",
0263 "TODDR_B IN 4", "PDM Capture",
0264 "TODDR_C IN 4", "PDM Capture",
0265 "TODDR_A IN 6", "TDMIN_LB OUT",
0266 "TODDR_B IN 6", "TDMIN_LB OUT",
0267 "TODDR_C IN 6", "TDMIN_LB OUT",
0268 "Lineout", "Lineout AOUTL",
0269 "Lineout", "Lineout AOUTR",
0270 "Speaker1 Left", "SPK1 OUT_A",
0271 "Speaker1 Left", "SPK1 OUT_B",
0272 "Speaker1 Right", "SPK1 OUT_C",
0273 "Speaker1 Right", "SPK1 OUT_D",
0274 "Linein AINL", "Linein",
0275 "Linein AINR", "Linein";
0276 assigned-clocks = <&clkc CLKID_HIFI_PLL>,
0277 <&clkc CLKID_MPLL0>,
0278 <&clkc CLKID_MPLL1>;
0279 assigned-clock-parents = <0>, <0>, <0>;
0280 assigned-clock-rates = <589824000>,
0281 <270950400>,
0282 <393216000>;
0283 status = "okay";
0284
0285 dai-link-0 {
0286 sound-dai = <&frddr_a>;
0287 };
0288
0289 dai-link-1 {
0290 sound-dai = <&frddr_b>;
0291 };
0292
0293 dai-link-2 {
0294 sound-dai = <&frddr_c>;
0295 };
0296
0297 dai-link-3 {
0298 sound-dai = <&toddr_a>;
0299 };
0300
0301 dai-link-4 {
0302 sound-dai = <&toddr_b>;
0303 };
0304
0305 dai-link-5 {
0306 sound-dai = <&toddr_c>;
0307 };
0308
0309 dai-link-6 {
0310 sound-dai = <&tdmif_c>;
0311 dai-format = "i2s";
0312 dai-tdm-slot-tx-mask-2 = <1 1>;
0313 dai-tdm-slot-rx-mask-1 = <1 1>;
0314 mclk-fs = <256>;
0315
0316 codec-0 {
0317 sound-dai = <&lineout>;
0318 };
0319
0320 codec-1 {
0321 sound-dai = <&speaker_amp1>;
0322 };
0323
0324 codec-2 {
0325 sound-dai = <&linein>;
0326 };
0327
0328 };
0329
0330 dai-link-7 {
0331 sound-dai = <&spdifout>;
0332
0333 codec {
0334 sound-dai = <&spdif_dit>;
0335 };
0336 };
0337
0338 dai-link-8 {
0339 sound-dai = <&spdifin>;
0340
0341 codec {
0342 sound-dai = <&spdif_dir>;
0343 };
0344 };
0345
0346 dai-link-9 {
0347 sound-dai = <&pdm>;
0348
0349 codec {
0350 sound-dai = <&dmics>;
0351 };
0352 };
0353 };
0354
0355 wifi32k: wifi32k {
0356 compatible = "pwm-clock";
0357 #clock-cells = <0>;
0358 clock-frequency = <32768>;
0359 pwms = <&pwm_ab 0 30518 0>; /* PWM_A at 32.768KHz */
0360 };
0361 };
0362
0363 ðmac {
0364 status = "okay";
0365 pinctrl-0 = <ð_rgmii_y_pins>;
0366 pinctrl-names = "default";
0367 phy-handle = <ð_phy0>;
0368 phy-mode = "rgmii";
0369
0370 mdio {
0371 compatible = "snps,dwmac-mdio";
0372 #address-cells = <1>;
0373 #size-cells = <0>;
0374
0375 eth_phy0: ethernet-phy@0 {
0376 /* Realtek RTL8211F (0x001cc916) */
0377 reg = <0>;
0378 interrupt-parent = <&gpio_intc>;
0379 interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
0380 eee-broken-1000t;
0381 };
0382 };
0383 };
0384
0385 &frddr_a {
0386 status = "okay";
0387 };
0388
0389 &frddr_b {
0390 status = "okay";
0391 };
0392
0393 &frddr_c {
0394 status = "okay";
0395 };
0396
0397 &ir {
0398 status = "okay";
0399 pinctrl-0 = <&remote_input_ao_pins>;
0400 pinctrl-names = "default";
0401 };
0402
0403 &i2c1 {
0404 status = "okay";
0405 pinctrl-0 = <&i2c1_z_pins>;
0406 pinctrl-names = "default";
0407
0408 speaker_amp1: audio-codec@1b {
0409 compatible = "ti,tas5707";
0410 reg = <0x1b>;
0411 reset-gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_LOW>;
0412 #sound-dai-cells = <0>;
0413 AVDD-supply = <&vcc_3v3>;
0414 DVDD-supply = <&vcc_3v3>;
0415 PVDD_A-supply = <&main_12v>;
0416 PVDD_B-supply = <&main_12v>;
0417 PVDD_C-supply = <&main_12v>;
0418 PVDD_D-supply = <&main_12v>;
0419 sound-name-prefix = "SPK1";
0420 };
0421 };
0422
0423 &i2c_AO {
0424 status = "okay";
0425 pinctrl-0 = <&i2c_ao_sck_10_pins>, <&i2c_ao_sda_11_pins>;
0426 pinctrl-names = "default";
0427
0428 gpio_speaker: gpio-controller@1f {
0429 compatible = "nxp,pca9557";
0430 reg = <0x1f>;
0431 gpio-controller;
0432 #gpio-cells = <2>;
0433 vcc-supply = <&vddao_3v3>;
0434 };
0435 };
0436
0437 &pdm {
0438 pinctrl-0 = <&pdm_dclk_a14_pins>, <&pdm_din0_pins>,
0439 <&pdm_din1_pins>, <&pdm_din2_pins>, <&pdm_din3_pins>;
0440 pinctrl-names = "default";
0441 status = "okay";
0442 };
0443
0444 &pcieA {
0445 reset-gpios = <&gpio GPIOX_19 GPIO_ACTIVE_LOW>;
0446 status = "okay";
0447 };
0448
0449 &pcieB {
0450 reset-gpios = <&gpio GPIOZ_10 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
0451 status = "okay";
0452 };
0453
0454 &pwm_ab {
0455 status = "okay";
0456 pinctrl-0 = <&pwm_a_x20_pins>;
0457 pinctrl-names = "default";
0458 };
0459
0460 &saradc {
0461 status = "okay";
0462 vref-supply = <&vddio_ao18>;
0463 };
0464
0465 /* wifi module */
0466 &sd_emmc_b {
0467 status = "okay";
0468 #address-cells = <1>;
0469 #size-cells = <0>;
0470
0471 pinctrl-0 = <&sdio_pins>;
0472 pinctrl-1 = <&sdio_clk_gate_pins>;
0473 pinctrl-names = "default", "clk-gate";
0474
0475 bus-width = <4>;
0476 cap-sd-highspeed;
0477 sd-uhs-sdr104;
0478 max-frequency = <200000000>;
0479 non-removable;
0480 disable-wp;
0481
0482 mmc-pwrseq = <&sdio_pwrseq>;
0483
0484 vmmc-supply = <&vddao_3v3>;
0485 vqmmc-supply = <&vddio_boot>;
0486
0487 brcmf: wifi@1 {
0488 reg = <1>;
0489 compatible = "brcm,bcm4329-fmac";
0490 };
0491 };
0492
0493 /* emmc storage */
0494 &sd_emmc_c {
0495 status = "okay";
0496 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
0497 pinctrl-1 = <&emmc_clk_gate_pins>;
0498 pinctrl-names = "default", "clk-gate";
0499
0500 bus-width = <8>;
0501 cap-mmc-highspeed;
0502 max-frequency = <200000000>;
0503 non-removable;
0504 disable-wp;
0505 mmc-ddr-1_8v;
0506 mmc-hs200-1_8v;
0507
0508 mmc-pwrseq = <&emmc_pwrseq>;
0509
0510 vmmc-supply = <&vcc_3v3>;
0511 vqmmc-supply = <&vddio_boot>;
0512 };
0513
0514 &spdifin {
0515 pinctrl-0 = <&spdif_in_a19_pins>;
0516 pinctrl-names = "default";
0517 status = "okay";
0518 };
0519
0520 &spdifout {
0521 pinctrl-0 = <&spdif_out_a20_pins>;
0522 pinctrl-names = "default";
0523 status = "okay";
0524 };
0525
0526 &tdmif_a {
0527 pinctrl-0 = <&tdma_sclk_pins>, <&tdma_fs_pins>,
0528 <&tdma_din0_pins>, <&tdma_dout0_x15_pins>;
0529 pinctrl-names = "default";
0530 status = "okay";
0531 };
0532
0533 &tdmif_b {
0534 pinctrl-0 = <&tdmb_sclk_pins>, <&tdmb_fs_pins>,
0535 <&tdmb_din3_pins>, <&mclk_b_pins>;
0536 pinctrl-names = "default";
0537 status = "okay";
0538 };
0539
0540 &tdmif_c {
0541 pinctrl-0 = <&tdmc_sclk_pins>, <&tdmc_fs_pins>,
0542 <&tdmc_din1_pins>, <&tdmc_dout2_pins>,
0543 <&mclk_c_pins>;
0544 pinctrl-names = "default";
0545 status = "okay";
0546 };
0547
0548 &tdmin_a {
0549 status = "okay";
0550 };
0551
0552 &tdmin_b {
0553 status = "okay";
0554 };
0555
0556 &tdmin_c {
0557 status = "okay";
0558 };
0559
0560 &tdmin_lb {
0561 status = "okay";
0562 };
0563
0564 &tdmout_c {
0565 status = "okay";
0566 };
0567
0568 &toddr_a {
0569 status = "okay";
0570 };
0571
0572 &toddr_b {
0573 status = "okay";
0574 };
0575
0576 &toddr_c {
0577 status = "okay";
0578 };
0579
0580 &uart_A {
0581 status = "okay";
0582 pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
0583 pinctrl-names = "default";
0584 uart-has-rtscts;
0585
0586 bluetooth {
0587 compatible = "brcm,bcm43438-bt";
0588 shutdown-gpios = <&gpio GPIOX_21 GPIO_ACTIVE_HIGH>;
0589 };
0590 };
0591
0592 &uart_AO {
0593 status = "okay";
0594 pinctrl-0 = <&uart_ao_a_pins>;
0595 pinctrl-names = "default";
0596 };
0597
0598 &usb {
0599 status = "okay";
0600 dr_mode = "otg";
0601 vbus-supply = <&usb_pwr>;
0602 };