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-gxm-khadas-vim2.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) 2017 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
    4  * Copyright (c) 2017 BayLibre, SAS
    5  * Author: Neil Armstrong <narmstrong@baylibre.com>
    6  */
    7 
    8 /dts-v1/;
    9 
   10 #include "meson-gxm.dtsi"
   11 #include <dt-bindings/input/input.h>
   12 #include <dt-bindings/sound/meson-aiu.h>
   13 
   14 / {
   15         compatible = "khadas,vim2", "amlogic,s912", "amlogic,meson-gxm";
   16         model = "Khadas VIM2";
   17 
   18         aliases {
   19                 serial0 = &uart_AO;
   20                 serial2 = &uart_AO_B;
   21         };
   22 
   23         chosen {
   24                 stdout-path = "serial0:115200n8";
   25         };
   26 
   27         memory@0 {
   28                 device_type = "memory";
   29                 reg = <0x0 0x0 0x0 0x80000000>;
   30         };
   31 
   32         adc-keys {
   33                 compatible = "adc-keys";
   34                 io-channels = <&saradc 0>;
   35                 io-channel-names = "buttons";
   36                 keyup-threshold-microvolt = <1710000>;
   37 
   38                 button-function {
   39                         label = "Function";
   40                         linux,code = <KEY_FN>;
   41                         press-threshold-microvolt = <10000>;
   42                 };
   43         };
   44 
   45         emmc_pwrseq: emmc-pwrseq {
   46                 compatible = "mmc-pwrseq-emmc";
   47                 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
   48         };
   49 
   50         gpio_fan: gpio-fan {
   51                 compatible = "gpio-fan";
   52                 gpios = <&gpio GPIODV_14 GPIO_ACTIVE_HIGH
   53                          &gpio GPIODV_15 GPIO_ACTIVE_HIGH>;
   54                 /* Dummy RPM values since fan is optional */
   55                 gpio-fan,speed-map = <0 0
   56                                       1 1
   57                                       2 2
   58                                       3 3>;
   59                 #cooling-cells = <2>;
   60         };
   61 
   62         gpio-keys-polled {
   63                 compatible = "gpio-keys-polled";
   64                 poll-interval = <100>;
   65 
   66                 power-button {
   67                         label = "power";
   68                         linux,code = <KEY_POWER>;
   69                         gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
   70                 };
   71         };
   72 
   73         hdmi-connector {
   74                 compatible = "hdmi-connector";
   75                 type = "a";
   76 
   77                 port {
   78                         hdmi_connector_in: endpoint {
   79                                 remote-endpoint = <&hdmi_tx_tmds_out>;
   80                         };
   81                 };
   82         };
   83 
   84         led-controller {
   85                 compatible = "pwm-leds";
   86 
   87                 led-1 {
   88                         label = "vim:red:power";
   89                         pwms = <&pwm_AO_ab 1 7812500 0>;
   90                         max-brightness = <255>;
   91                         linux,default-trigger = "default-on";
   92                 };
   93         };
   94 
   95         sdio_pwrseq: sdio-pwrseq {
   96                 compatible = "mmc-pwrseq-simple";
   97                 reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
   98                 clocks = <&wifi32k>;
   99                 clock-names = "ext_clock";
  100         };
  101 
  102         hdmi_5v: regulator-hdmi-5v {
  103                 compatible = "regulator-fixed";
  104 
  105                 regulator-name = "HDMI_5V";
  106                 regulator-min-microvolt = <5000000>;
  107                 regulator-max-microvolt = <5000000>;
  108 
  109                 gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
  110                 enable-active-high;
  111                 regulator-always-on;
  112         };
  113 
  114         vcc_3v3: regulator-vcc_3v3 {
  115                 compatible = "regulator-fixed";
  116                 regulator-name = "VCC_3V3";
  117                 regulator-min-microvolt = <3300000>;
  118                 regulator-max-microvolt = <3300000>;
  119         };
  120 
  121         vddio_ao18: regulator-vddio_ao18 {
  122                 compatible = "regulator-fixed";
  123                 regulator-name = "VDDIO_AO18";
  124                 regulator-min-microvolt = <1800000>;
  125                 regulator-max-microvolt = <1800000>;
  126         };
  127 
  128         vddio_boot: regulator-vddio_boot {
  129                 compatible = "regulator-fixed";
  130                 regulator-name = "VDDIO_BOOT";
  131                 regulator-min-microvolt = <1800000>;
  132                 regulator-max-microvolt = <1800000>;
  133         };
  134 
  135         vddao_3v3: regulator-vddao_3v3 {
  136                 compatible = "regulator-fixed";
  137                 regulator-name = "VDDAO_3V3";
  138                 regulator-min-microvolt = <3300000>;
  139                 regulator-max-microvolt = <3300000>;
  140         };
  141 
  142         wifi32k: wifi32k {
  143                 compatible = "pwm-clock";
  144                 #clock-cells = <0>;
  145                 clock-frequency = <32768>;
  146                 pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
  147         };
  148 
  149         sound {
  150                 compatible = "amlogic,gx-sound-card";
  151                 model = "KHADAS-VIM2";
  152                 assigned-clocks = <&clkc CLKID_MPLL0>,
  153                                   <&clkc CLKID_MPLL1>,
  154                                   <&clkc CLKID_MPLL2>;
  155                 assigned-clock-parents = <0>, <0>, <0>;
  156                 assigned-clock-rates = <294912000>,
  157                                        <270950400>,
  158                                        <393216000>;
  159                 status = "okay";
  160 
  161                 dai-link-0 {
  162                         sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
  163                 };
  164 
  165                 dai-link-1 {
  166                         sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
  167                         dai-format = "i2s";
  168                         mclk-fs = <256>;
  169 
  170                         codec-0 {
  171                                 sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
  172                         };
  173                 };
  174 
  175                 dai-link-2 {
  176                         sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
  177 
  178                         codec-0 {
  179                                 sound-dai = <&hdmi_tx>;
  180                         };
  181                 };
  182         };
  183 };
  184 
  185 &aiu {
  186         status = "okay";
  187 };
  188 
  189 &cec_AO {
  190         status = "okay";
  191         pinctrl-0 = <&ao_cec_pins>;
  192         pinctrl-names = "default";
  193         hdmi-phandle = <&hdmi_tx>;
  194 };
  195 
  196 &cpu_cooling_maps {
  197         map0 {
  198                 cooling-device = <&gpio_fan THERMAL_NO_LIMIT 1>;
  199         };
  200 
  201         map1 {
  202                 cooling-device = <&gpio_fan 2 THERMAL_NO_LIMIT>,
  203                                  <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  204                                  <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  205                                  <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  206                                  <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  207                                  <&cpu4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  208                                  <&cpu5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  209                                  <&cpu6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
  210                                  <&cpu7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  211         };
  212 };
  213 
  214 &ethmac {
  215         pinctrl-0 = <&eth_pins>;
  216         pinctrl-names = "default";
  217 
  218         /* Select external PHY by default */
  219         phy-handle = <&external_phy>;
  220 
  221         amlogic,tx-delay-ns = <2>;
  222 
  223         /* External PHY is in RGMII */
  224         phy-mode = "rgmii";
  225 
  226         status = "okay";
  227 };
  228 
  229 &external_mdio {
  230         external_phy: ethernet-phy@0 {
  231                 /* Realtek RTL8211F (0x001cc916) */
  232                 reg = <0>;
  233 
  234                 reset-assert-us = <10000>;
  235                 reset-deassert-us = <80000>;
  236                 reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
  237 
  238                 interrupt-parent = <&gpio_intc>;
  239                 /* MAC_INTR on GPIOZ_15 */
  240                 interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
  241         };
  242 };
  243 
  244 &hdmi_tx {
  245         status = "okay";
  246         pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
  247         pinctrl-names = "default";
  248         hdmi-supply = <&hdmi_5v>;
  249 };
  250 
  251 &hdmi_tx_tmds_port {
  252         hdmi_tx_tmds_out: endpoint {
  253                 remote-endpoint = <&hdmi_connector_in>;
  254         };
  255 };
  256 
  257 &i2c_A {
  258         status = "okay";
  259         pinctrl-0 = <&i2c_a_pins>;
  260         pinctrl-names = "default";
  261 };
  262 
  263 &i2c_B {
  264         status = "okay";
  265         pinctrl-0 = <&i2c_b_pins>;
  266         pinctrl-names = "default";
  267 
  268         rtc: rtc@51 {
  269                 status = "okay";
  270                 compatible = "haoyu,hym8563";
  271                 reg = <0x51>;
  272                 #clock-cells = <0>;
  273                 clock-frequency = <32768>;
  274                 clock-output-names = "xin32k";
  275         };
  276 };
  277 
  278 &ir {
  279         status = "okay";
  280         pinctrl-0 = <&remote_input_ao_pins>;
  281         pinctrl-names = "default";
  282         linux,rc-map-name = "rc-khadas";
  283 };
  284 
  285 &pwm_AO_ab {
  286         status = "okay";
  287         pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
  288         pinctrl-names = "default";
  289         clocks = <&clkc CLKID_FCLK_DIV4>;
  290         clock-names = "clkin0";
  291 };
  292 
  293 &pwm_ef {
  294         status = "okay";
  295         pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
  296         pinctrl-names = "default";
  297         clocks = <&clkc CLKID_FCLK_DIV4>;
  298         clock-names = "clkin0";
  299 };
  300 
  301 &sd_emmc_a {
  302         status = "okay";
  303         pinctrl-0 = <&sdio_pins>;
  304         pinctrl-1 = <&sdio_clk_gate_pins>;
  305         pinctrl-names = "default", "clk-gate";
  306         #address-cells = <1>;
  307         #size-cells = <0>;
  308 
  309         bus-width = <4>;
  310         cap-sd-highspeed;
  311         max-frequency = <100000000>;
  312 
  313         non-removable;
  314         disable-wp;
  315 
  316         /* WiFi firmware requires power to be kept while in suspend */
  317         keep-power-in-suspend;
  318 
  319         mmc-pwrseq = <&sdio_pwrseq>;
  320 
  321         vmmc-supply = <&vddao_3v3>;
  322         vqmmc-supply = <&vddio_boot>;
  323 
  324         brcmf: wifi@1 {
  325                 reg = <1>;
  326                 compatible = "brcm,bcm4329-fmac";
  327         };
  328 };
  329 
  330 /* SD card */
  331 &sd_emmc_b {
  332         status = "okay";
  333         pinctrl-0 = <&sdcard_pins>;
  334         pinctrl-1 = <&sdcard_clk_gate_pins>;
  335         pinctrl-names = "default", "clk-gate";
  336 
  337         bus-width = <4>;
  338         cap-sd-highspeed;
  339         max-frequency = <50000000>;
  340         disable-wp;
  341 
  342         cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
  343 
  344         vmmc-supply = <&vddao_3v3>;
  345         vqmmc-supply = <&vddio_boot>;
  346 };
  347 
  348 /* eMMC */
  349 &sd_emmc_c {
  350         status = "okay";
  351         pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
  352         pinctrl-1 = <&emmc_clk_gate_pins>;
  353         pinctrl-names = "default", "clk-gate";
  354 
  355         bus-width = <8>;
  356         cap-mmc-highspeed;
  357         max-frequency = <200000000>;
  358         non-removable;
  359         disable-wp;
  360         mmc-ddr-1_8v;
  361         mmc-hs200-1_8v;
  362 
  363         mmc-pwrseq = <&emmc_pwrseq>;
  364         vmmc-supply = <&vcc_3v3>;
  365         vqmmc-supply = <&vddio_boot>;
  366 };
  367 
  368 /*
  369  * EMMC_DS pin is shared between SPI NOR CS and eMMC Data Strobe
  370  * Remove emmc_ds_pins from sd_emmc_c pinctrl-0 then spifc can be enabled
  371  */
  372 &spifc {
  373         status = "disabled";
  374         pinctrl-0 = <&nor_pins>;
  375         pinctrl-names = "default";
  376 
  377         w25q32: flash@0 {
  378                 #address-cells = <1>;
  379                 #size-cells = <1>;
  380                 compatible = "winbond,w25q16", "jedec,spi-nor";
  381                 reg = <0>;
  382                 spi-max-frequency = <104000000>;
  383         };
  384 };
  385 
  386 /* This one is connected to the Bluetooth module */
  387 &uart_A {
  388         status = "okay";
  389         pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
  390         pinctrl-names = "default";
  391         uart-has-rtscts;
  392 
  393         bluetooth {
  394                 compatible = "brcm,bcm43438-bt";
  395                 shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
  396                 max-speed = <2000000>;
  397                 clocks = <&wifi32k>;
  398                 clock-names = "lpo";
  399         };
  400 };
  401 
  402 /* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
  403 &uart_AO {
  404         status = "okay";
  405         pinctrl-0 = <&uart_ao_a_pins>;
  406         pinctrl-names = "default";
  407 };
  408 
  409 /* This is brought out on the UART_RX_AO_B (15) and UART_TX_AO_B (16) pins: */
  410 &uart_AO_B {
  411         status = "okay";
  412         pinctrl-0 = <&uart_ao_b_pins>;
  413         pinctrl-names = "default";
  414 };
  415 
  416 &saradc {
  417         status = "okay";
  418         vref-supply = <&vddio_ao18>;
  419 };
  420 
  421 &usb {
  422         status = "okay";
  423         dr_mode = "peripheral";
  424 };

Cache object: 67aa5d09102d37b54db5047d907868b9


[ 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.