The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/src/arm64/amlogic/meson-g12a-x96-max.dts

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
    2 /*
    3  * Copyright (c) 2018 BayLibre SAS. All rights reserved.
    4  */
    5 
    6 /dts-v1/;
    7 
    8 #include "meson-g12a.dtsi"
    9 #include <dt-bindings/gpio/gpio.h>
   10 #include <dt-bindings/gpio/meson-g12a-gpio.h>
   11 #include <dt-bindings/sound/meson-g12a-tohdmitx.h>
   12 
   13 / {
   14         compatible = "amediatech,x96-max", "amlogic,g12a";
   15         model = "Shenzhen Amediatech Technology Co., Ltd X96 Max";
   16 
   17         aliases {
   18                 serial0 = &uart_AO;
   19                 ethernet0 = &ethmac;
   20         };
   21 
   22         spdif_dit: audio-codec-1 {
   23                 #sound-dai-cells = <0>;
   24                 compatible = "linux,spdif-dit";
   25                 status = "okay";
   26                 sound-name-prefix = "DIT";
   27         };
   28 
   29         chosen {
   30                 stdout-path = "serial0:115200n8";
   31         };
   32         memory@0 {
   33                 device_type = "memory";
   34                 reg = <0x0 0x0 0x0 0x40000000>;
   35         };
   36 
   37         cvbs-connector {
   38                 compatible = "composite-video-connector";
   39 
   40                 port {
   41                         cvbs_connector_in: endpoint {
   42                                 remote-endpoint = <&cvbs_vdac_out>;
   43                         };
   44                 };
   45         };
   46 
   47         hdmi-connector {
   48                 compatible = "hdmi-connector";
   49                 type = "a";
   50 
   51                 port {
   52                         hdmi_connector_in: endpoint {
   53                                 remote-endpoint = <&hdmi_tx_tmds_out>;
   54                         };
   55                 };
   56         };
   57 
   58         emmc_pwrseq: emmc-pwrseq {
   59                 compatible = "mmc-pwrseq-emmc";
   60                 reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
   61         };
   62 
   63         sdio_pwrseq: sdio-pwrseq {
   64                 compatible = "mmc-pwrseq-simple";
   65                 reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
   66                 clocks = <&wifi32k>;
   67                 clock-names = "ext_clock";
   68         };
   69 
   70         flash_1v8: regulator-flash_1v8 {
   71                 compatible = "regulator-fixed";
   72                 regulator-name = "FLASH_1V8";
   73                 regulator-min-microvolt = <1800000>;
   74                 regulator-max-microvolt = <1800000>;
   75                 vin-supply = <&vcc_3v3>;
   76                 regulator-always-on;
   77         };
   78 
   79         dc_in: regulator-dc_in {
   80                 compatible = "regulator-fixed";
   81                 regulator-name = "DC_IN";
   82                 regulator-min-microvolt = <5000000>;
   83                 regulator-max-microvolt = <5000000>;
   84                 regulator-always-on;
   85         };
   86 
   87         vcc_1v8: regulator-vcc_1v8 {
   88                 compatible = "regulator-fixed";
   89                 regulator-name = "VCC_1V8";
   90                 regulator-min-microvolt = <1800000>;
   91                 regulator-max-microvolt = <1800000>;
   92                 vin-supply = <&vcc_3v3>;
   93                 regulator-always-on;
   94         };
   95 
   96         vcc_3v3: regulator-vcc_3v3 {
   97                 compatible = "regulator-fixed";
   98                 regulator-name = "VCC_3V3";
   99                 regulator-min-microvolt = <3300000>;
  100                 regulator-max-microvolt = <3300000>;
  101                 vin-supply = <&vddao_3v3>;
  102                 regulator-always-on;
  103                 /* FIXME: actually controlled by VDDCPU_B_EN */
  104         };
  105 
  106         vcc_5v: regulator-vcc_5v {
  107                 compatible = "regulator-fixed";
  108                 regulator-name = "VCC_5V";
  109                 regulator-min-microvolt = <5000000>;
  110                 regulator-max-microvolt = <5000000>;
  111                 vin-supply = <&dc_in>;
  112 
  113                 gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
  114                 enable-active-low;
  115         };
  116 
  117         vddao_1v8: regulator-vddao_1v8 {
  118                 compatible = "regulator-fixed";
  119                 regulator-name = "VDDAO_1V8";
  120                 regulator-min-microvolt = <1800000>;
  121                 regulator-max-microvolt = <1800000>;
  122                 vin-supply = <&vddao_3v3>;
  123                 regulator-always-on;
  124         };
  125 
  126         vddao_3v3: regulator-vddao_3v3 {
  127                 compatible = "regulator-fixed";
  128                 regulator-name = "VDDAO_3V3";
  129                 regulator-min-microvolt = <3300000>;
  130                 regulator-max-microvolt = <3300000>;
  131                 vin-supply = <&dc_in>;
  132                 regulator-always-on;
  133         };
  134 
  135         vddcpu: regulator-vddcpu {
  136                 compatible = "pwm-regulator";
  137 
  138                 regulator-name = "VDDCPU";
  139                 regulator-min-microvolt = <721000>;
  140                 regulator-max-microvolt = <1022000>;
  141 
  142                 pwm-supply = <&dc_in>;
  143 
  144                 pwms = <&pwm_AO_cd 1 1250 0>;
  145                 pwm-dutycycle-range = <100 0>;
  146 
  147                 regulator-boot-on;
  148                 regulator-always-on;
  149         };
  150 
  151         sound {
  152                 compatible = "amlogic,axg-sound-card";
  153                 model = "X96-MAX";
  154                 audio-aux-devs = <&tdmout_b>;
  155                 audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
  156                                 "TDMOUT_B IN 1", "FRDDR_B OUT 1",
  157                                 "TDMOUT_B IN 2", "FRDDR_C OUT 1",
  158                                 "TDM_B Playback", "TDMOUT_B OUT",
  159                                 "SPDIFOUT IN 0", "FRDDR_A OUT 3",
  160                                 "SPDIFOUT IN 1", "FRDDR_B OUT 3",
  161                                 "SPDIFOUT IN 2", "FRDDR_C OUT 3";
  162 
  163                 assigned-clocks = <&clkc CLKID_MPLL2>,
  164                                   <&clkc CLKID_MPLL0>,
  165                                   <&clkc CLKID_MPLL1>;
  166                 assigned-clock-parents = <0>, <0>, <0>;
  167                 assigned-clock-rates = <294912000>,
  168                                        <270950400>,
  169                                        <393216000>;
  170                 status = "okay";
  171 
  172                 dai-link-0 {
  173                         sound-dai = <&frddr_a>;
  174                 };
  175 
  176                 dai-link-1 {
  177                         sound-dai = <&frddr_b>;
  178                 };
  179 
  180                 dai-link-2 {
  181                         sound-dai = <&frddr_c>;
  182                 };
  183 
  184                 /* 8ch hdmi interface */
  185                 dai-link-3 {
  186                         sound-dai = <&tdmif_b>;
  187                         dai-format = "i2s";
  188                         dai-tdm-slot-tx-mask-0 = <1 1>;
  189                         dai-tdm-slot-tx-mask-1 = <1 1>;
  190                         dai-tdm-slot-tx-mask-2 = <1 1>;
  191                         dai-tdm-slot-tx-mask-3 = <1 1>;
  192                         mclk-fs = <256>;
  193 
  194                         codec {
  195                                 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
  196                         };
  197                 };
  198 
  199                 /* spdif hdmi or toslink interface */
  200                 dai-link-4 {
  201                         sound-dai = <&spdifout>;
  202 
  203                         codec-0 {
  204                                 sound-dai = <&spdif_dit>;
  205                         };
  206 
  207                         codec-1 {
  208                                 sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_A>;
  209                         };
  210                 };
  211 
  212                 /* spdif hdmi interface */
  213                 dai-link-5 {
  214                         sound-dai = <&spdifout_b>;
  215 
  216                         codec {
  217                                 sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_B>;
  218                         };
  219                 };
  220 
  221                 /* hdmi glue */
  222                 dai-link-6 {
  223                         sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
  224 
  225                         codec {
  226                                 sound-dai = <&hdmi_tx>;
  227                         };
  228                 };
  229         };
  230 
  231         wifi32k: wifi32k {
  232                 compatible = "pwm-clock";
  233                 #clock-cells = <0>;
  234                 clock-frequency = <32768>;
  235                 pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
  236         };
  237 };
  238 
  239 &arb {
  240         status = "okay";
  241 };
  242 
  243 &cec_AO {
  244         pinctrl-0 = <&cec_ao_a_h_pins>;
  245         pinctrl-names = "default";
  246         status = "disabled";
  247         hdmi-phandle = <&hdmi_tx>;
  248 };
  249 
  250 &cecb_AO {
  251         pinctrl-0 = <&cec_ao_b_h_pins>;
  252         pinctrl-names = "default";
  253         status = "okay";
  254         hdmi-phandle = <&hdmi_tx>;
  255 };
  256 
  257 &clkc_audio {
  258         status = "okay";
  259 };
  260 
  261 &cpu0 {
  262         cpu-supply = <&vddcpu>;
  263         operating-points-v2 = <&cpu_opp_table>;
  264         clocks = <&clkc CLKID_CPU_CLK>;
  265         clock-latency = <50000>;
  266 };
  267 
  268 &cpu1 {
  269         cpu-supply = <&vddcpu>;
  270         operating-points-v2 = <&cpu_opp_table>;
  271         clocks = <&clkc CLKID_CPU_CLK>;
  272         clock-latency = <50000>;
  273 };
  274 
  275 &cpu2 {
  276         cpu-supply = <&vddcpu>;
  277         operating-points-v2 = <&cpu_opp_table>;
  278         clocks = <&clkc CLKID_CPU_CLK>;
  279         clock-latency = <50000>;
  280 };
  281 
  282 &cpu3 {
  283         cpu-supply = <&vddcpu>;
  284         operating-points-v2 = <&cpu_opp_table>;
  285         clocks = <&clkc CLKID_CPU_CLK>;
  286         clock-latency = <50000>;
  287 };
  288 
  289 &cvbs_vdac_port {
  290         cvbs_vdac_out: endpoint {
  291                 remote-endpoint = <&cvbs_connector_in>;
  292         };
  293 };
  294 
  295 &frddr_a {
  296         status = "okay";
  297 };
  298 
  299 &frddr_b {
  300         status = "okay";
  301 };
  302 
  303 &frddr_c {
  304         status = "okay";
  305 };
  306 
  307 &hdmi_tx {
  308         status = "okay";
  309         pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
  310         pinctrl-names = "default";
  311         hdmi-supply = <&vcc_5v>;
  312 };
  313 
  314 &hdmi_tx_tmds_port {
  315         hdmi_tx_tmds_out: endpoint {
  316                 remote-endpoint = <&hdmi_connector_in>;
  317         };
  318 };
  319 
  320 &ir {
  321         status = "okay";
  322         pinctrl-0 = <&remote_input_ao_pins>;
  323         pinctrl-names = "default";
  324         linux,rc-map-name = "rc-x96max";
  325 };
  326 
  327 &pwm_AO_cd {
  328         pinctrl-0 = <&pwm_ao_d_e_pins>;
  329         pinctrl-names = "default";
  330         clocks = <&xtal>;
  331         clock-names = "clkin1";
  332         status = "okay";
  333 };
  334 
  335 &ext_mdio {
  336         external_phy: ethernet-phy@0 {
  337                 /* Realtek RTL8211F (0x001cc916) */
  338                 reg = <0>;
  339                 max-speed = <1000>;
  340                 eee-broken-1000t;
  341 
  342                 reset-assert-us = <10000>;
  343                 reset-deassert-us = <80000>;
  344                 reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
  345 
  346                 interrupt-parent = <&gpio_intc>;
  347                 /* MAC_INTR on GPIOZ_14 */
  348                 interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
  349         };
  350 };
  351 
  352 &ethmac {
  353         pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
  354         pinctrl-names = "default";
  355         status = "okay";
  356         phy-mode = "rgmii";
  357         phy-handle = <&external_phy>;
  358         amlogic,tx-delay-ns = <2>;
  359 };
  360 
  361 &pwm_ef {
  362         status = "okay";
  363         pinctrl-0 = <&pwm_e_pins>;
  364         pinctrl-names = "default";
  365         clocks = <&xtal>;
  366         clock-names = "clkin0";
  367 };
  368 
  369 &uart_A {
  370         status = "okay";
  371         pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
  372         pinctrl-names = "default";
  373         uart-has-rtscts;
  374 
  375         bluetooth {
  376                 compatible = "brcm,bcm43438-bt";
  377                 shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
  378                 max-speed = <2000000>;
  379                 clocks = <&wifi32k>;
  380                 clock-names = "lpo";
  381         };
  382 };
  383 
  384 &uart_AO {
  385         status = "okay";
  386         pinctrl-0 = <&uart_ao_a_pins>;
  387         pinctrl-names = "default";
  388 };
  389 
  390 &usb {
  391         status = "okay";
  392         dr_mode = "host";
  393 };
  394 
  395 /* SDIO */
  396 &sd_emmc_a {
  397         status = "okay";
  398         pinctrl-0 = <&sdio_pins>;
  399         pinctrl-1 = <&sdio_clk_gate_pins>;
  400         pinctrl-names = "default", "clk-gate";
  401         #address-cells = <1>;
  402         #size-cells = <0>;
  403 
  404         bus-width = <4>;
  405         cap-sd-highspeed;
  406         sd-uhs-sdr50;
  407         max-frequency = <100000000>;
  408 
  409         non-removable;
  410         disable-wp;
  411 
  412         /* WiFi firmware requires power to be kept while in suspend */
  413         keep-power-in-suspend;
  414 
  415         mmc-pwrseq = <&sdio_pwrseq>;
  416 
  417         vmmc-supply = <&vddao_3v3>;
  418         vqmmc-supply = <&vddao_1v8>;
  419 
  420         brcmf: wifi@1 {
  421                 reg = <1>;
  422                 compatible = "brcm,bcm4329-fmac";
  423         };
  424 };
  425 
  426 /* SD card */
  427 &sd_emmc_b {
  428         status = "okay";
  429         pinctrl-0 = <&sdcard_c_pins>;
  430         pinctrl-1 = <&sdcard_clk_gate_c_pins>;
  431         pinctrl-names = "default", "clk-gate";
  432 
  433         bus-width = <4>;
  434         cap-sd-highspeed;
  435         max-frequency = <100000000>;
  436         disable-wp;
  437 
  438         cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
  439         vmmc-supply = <&vddao_3v3>;
  440         vqmmc-supply = <&vddao_3v3>;
  441 };
  442 
  443 /* eMMC */
  444 &sd_emmc_c {
  445         status = "okay";
  446         pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
  447         pinctrl-1 = <&emmc_clk_gate_pins>;
  448         pinctrl-names = "default", "clk-gate";
  449 
  450         bus-width = <8>;
  451         cap-mmc-highspeed;
  452         max-frequency = <100000000>;
  453         non-removable;
  454         disable-wp;
  455 
  456         mmc-pwrseq = <&emmc_pwrseq>;
  457         vmmc-supply = <&vcc_3v3>;
  458         vqmmc-supply = <&flash_1v8>;
  459 };
  460 
  461 &spdifout {
  462         pinctrl-0 = <&spdif_out_h_pins>;
  463         pinctrl-names = "default";
  464         status = "okay";
  465 };
  466 
  467 &spdifout_b {
  468         status = "okay";
  469 };
  470 
  471 &tdmif_b {
  472         status = "okay";
  473 };
  474 
  475 &tdmout_b {
  476         status = "okay";
  477 };
  478 
  479 &tohdmitx {
  480         status = "okay";
  481 };

Cache object: b353eb75849542187b91b481f7d82cec


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.