Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  meson-gxm-khadas-vim2.dts   Sprache: unbekannt

 
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2017 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
 * Copyright (c) 2017 BayLibre, SAS
 * Author: Neil Armstrong <narmstrong@baylibre.com>
 */

/dts-v1/;

#include "meson-gxm.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/sound/meson-aiu.h>

/ {
 compatible = "khadas,vim2", "amlogic,s912", "amlogic,meson-gxm";
 model = "Khadas VIM2";

 aliases {
  serial0 = &uart_AO;
  serial2 = &uart_AO_B;
 };

 chosen {
  stdout-path = "serial0:115200n8";
 };

 memory@0 {
  device_type = "memory";
  reg = <0x0 0x0 0x0 0x80000000>;
 };

 adc-keys {
  compatible = "adc-keys";
  io-channels = <&saradc 0>;
  io-channel-names = "buttons";
  keyup-threshold-microvolt = <1710000>;

  button-function {
   label = "Function";
   linux,code = <KEY_FN>;
   press-threshold-microvolt = <10000>;
  };
 };

 emmc_pwrseq: emmc-pwrseq {
  compatible = "mmc-pwrseq-emmc";
  reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
 };

 gpio_fan: gpio-fan {
  compatible = "gpio-fan";
  gpios = <&gpio GPIODV_14 GPIO_ACTIVE_HIGH
    &gpio GPIODV_15 GPIO_ACTIVE_HIGH>;
  /* Dummy RPM values since fan is optional */
  gpio-fan,speed-map =
    <0 0>,
    <1 1>,
    <2 2>,
    <3 3>;
  #cooling-cells = <2>;
 };

 gpio-keys-polled {
  compatible = "gpio-keys-polled";
  poll-interval = <100>;

  power-button {
   label = "power";
   linux,code = <KEY_POWER>;
   gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
  };
 };

 hdmi-connector {
  compatible = "hdmi-connector";
  type = "a";

  port {
   hdmi_connector_in: endpoint {
    remote-endpoint = <&hdmi_tx_tmds_out>;
   };
  };
 };

 led-controller {
  compatible = "pwm-leds";

  led-1 {
   label = "vim:red:power";
   pwms = <&pwm_AO_ab 1 7812500 0>;
   max-brightness = <255>;
   linux,default-trigger = "default-on";
  };
 };

 sdio_pwrseq: sdio-pwrseq {
  compatible = "mmc-pwrseq-simple";
  reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
  clocks = <&wifi32k>;
  clock-names = "ext_clock";
 };

 hdmi_5v: regulator-hdmi-5v {
  compatible = "regulator-fixed";

  regulator-name = "HDMI_5V";
  regulator-min-microvolt = <5000000>;
  regulator-max-microvolt = <5000000>;

  gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
  enable-active-high;
  regulator-always-on;
 };

 vcc_3v3: regulator-vcc-3v3 {
  compatible = "regulator-fixed";
  regulator-name = "VCC_3V3";
  regulator-min-microvolt = <3300000>;
  regulator-max-microvolt = <3300000>;
 };

 vddio_ao18: regulator-vddio-ao18 {
  compatible = "regulator-fixed";
  regulator-name = "VDDIO_AO18";
  regulator-min-microvolt = <1800000>;
  regulator-max-microvolt = <1800000>;
 };

 vddio_boot: regulator-vddio-boot {
  compatible = "regulator-fixed";
  regulator-name = "VDDIO_BOOT";
  regulator-min-microvolt = <1800000>;
  regulator-max-microvolt = <1800000>;
 };

 vddao_3v3: regulator-vddao-3v3 {
  compatible = "regulator-fixed";
  regulator-name = "VDDAO_3V3";
  regulator-min-microvolt = <3300000>;
  regulator-max-microvolt = <3300000>;
 };

 wifi32k: wifi32k {
  compatible = "pwm-clock";
  #clock-cells = <0>;
  clock-frequency = <32768>;
  pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
 };

 sound {
  compatible = "amlogic,gx-sound-card";
  model = "KHADAS-VIM2";
  clocks = <&clkc CLKID_MPLL0>,
    <&clkc CLKID_MPLL1>,
    <&clkc CLKID_MPLL2>;

  assigned-clocks = <&clkc CLKID_MPLL0>,
      <&clkc CLKID_MPLL1>,
      <&clkc CLKID_MPLL2>;
  assigned-clock-parents = <0>, <0>, <0>;
  assigned-clock-rates = <294912000>,
           <270950400>,
           <393216000>;

  dai-link-0 {
   sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
  };

  dai-link-1 {
   sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
   dai-format = "i2s";
   mclk-fs = <256>;

   codec-0 {
    sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
   };
  };

  dai-link-2 {
   sound-dai = <&aiu AIU_HDMI CTRL_OUT>;

   codec-0 {
    sound-dai = <&hdmi_tx>;
   };
  };
 };
};

&aiu {
 status = "okay";
};

&cec_AO {
 status = "okay";
 pinctrl-0 = <&ao_cec_pins>;
 pinctrl-names = "default";
 hdmi-phandle = <&hdmi_tx>;
};

&cpu_cooling_maps {
 map0 {
  cooling-device = <&gpio_fan THERMAL_NO_LIMIT 1>;
 };

 map1 {
  cooling-device = <&gpio_fan 2 THERMAL_NO_LIMIT>,
     <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
     <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
     <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
     <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
     <&cpu4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
     <&cpu5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
     <&cpu6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
     <&cpu7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
 };
};

ðmac {
 pinctrl-0 = <ð_pins>;
 pinctrl-names = "default";

 /* Select external PHY by default */
 phy-handle = <&external_phy>;

 amlogic,tx-delay-ns = <2>;

 /* External PHY is in RGMII */
 phy-mode = "rgmii";

 status = "okay";
};

&external_mdio {
 external_phy: ethernet-phy@0 {
  /* Realtek RTL8211F (0x001cc916) */
  reg = <0>;

  reset-assert-us = <10000>;
  reset-deassert-us = <80000>;
  reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;

  interrupt-parent = <&gpio_intc>;
  /* MAC_INTR on GPIOZ_15 */
  interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
 };
};

&hdmi_tx {
 status = "okay";
 pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
 pinctrl-names = "default";
 hdmi-supply = <&hdmi_5v>;
};

&hdmi_tx_tmds_port {
 hdmi_tx_tmds_out: endpoint {
  remote-endpoint = <&hdmi_connector_in>;
 };
};

&i2c_A {
 status = "okay";
 pinctrl-0 = <&i2c_a_pins>;
 pinctrl-names = "default";
};

&i2c_B {
 status = "okay";
 pinctrl-0 = <&i2c_b_pins>;
 pinctrl-names = "default";

 rtc: rtc@51 {
  status = "okay";
  compatible = "haoyu,hym8563";
  reg = <0x51>;
  #clock-cells = <0>;
  clock-output-names = "xin32k";
 };
};

&ir {
 status = "okay";
 pinctrl-0 = <&remote_input_ao_pins>;
 pinctrl-names = "default";
 linux,rc-map-name = "rc-khadas";
};

&pwm_AO_ab {
 status = "okay";
 pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
 pinctrl-names = "default";
};

&pwm_ef {
 status = "okay";
 pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
 pinctrl-names = "default";
};

&sd_emmc_a {
 status = "okay";
 pinctrl-0 = <&sdio_pins>;
 pinctrl-1 = <&sdio_clk_gate_pins>;
 pinctrl-names = "default", "clk-gate";
 #address-cells = <1>;
 #size-cells = <0>;

 bus-width = <4>;
 cap-sd-highspeed;
 max-frequency = <100000000>;

 non-removable;
 disable-wp;

 /* WiFi firmware requires power to be kept while in suspend */
 keep-power-in-suspend;

 mmc-pwrseq = <&sdio_pwrseq>;

 vmmc-supply = <&vddao_3v3>;
 vqmmc-supply = <&vddio_boot>;

 brcmf: wifi@1 {
  reg = <1>;
  compatible = "brcm,bcm4329-fmac";
 };
};

/* SD card */
&sd_emmc_b {
 status = "okay";
 pinctrl-0 = <&sdcard_pins>;
 pinctrl-1 = <&sdcard_clk_gate_pins>;
 pinctrl-names = "default", "clk-gate";

 bus-width = <4>;
 cap-sd-highspeed;
 max-frequency = <50000000>;
 disable-wp;

 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;

 vmmc-supply = <&vddao_3v3>;
 vqmmc-supply = <&vddio_boot>;
};

/* eMMC */
&sd_emmc_c {
 status = "okay";
 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
 pinctrl-1 = <&emmc_clk_gate_pins>;
 pinctrl-names = "default", "clk-gate";

 bus-width = <8>;
 cap-mmc-highspeed;
 max-frequency = <200000000>;
 non-removable;
 disable-wp;
 mmc-ddr-1_8v;
 mmc-hs200-1_8v;

 mmc-pwrseq = <&emmc_pwrseq>;
 vmmc-supply = <&vcc_3v3>;
 vqmmc-supply = <&vddio_boot>;
};

/*
 * EMMC_DS pin is shared between SPI NOR CS and eMMC Data Strobe
 * Remove emmc_ds_pins from sd_emmc_c pinctrl-0 then spifc can be enabled
 */
&spifc {
 status = "disabled";
 pinctrl-0 = <&nor_pins>;
 pinctrl-names = "default";

 w25q32: flash@0 {
  #address-cells = <1>;
  #size-cells = <1>;
  compatible = "winbond,w25q16", "jedec,spi-nor";
  reg = <0>;
  spi-max-frequency = <104000000>;
 };
};

/* This one is connected to the Bluetooth module */
&uart_A {
 status = "okay";
 pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
 pinctrl-names = "default";
 uart-has-rtscts;

 bluetooth {
  compatible = "brcm,bcm43438-bt";
  shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
  max-speed = <2000000>;
  clocks = <&wifi32k>;
  clock-names = "lpo";
 };
};

/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
&uart_AO {
 status = "okay";
 pinctrl-0 = <&uart_ao_a_pins>;
 pinctrl-names = "default";
};

/* This is brought out on the UART_RX_AO_B (15) and UART_TX_AO_B (16) pins: */
&uart_AO_B {
 status = "okay";
 pinctrl-0 = <&uart_ao_b_pins>;
 pinctrl-names = "default";
};

&saradc {
 status = "okay";
 vref-supply = <&vddio_ao18>;
};

&usb {
 status = "okay";
 dr_mode = "peripheral";
};

[ Dauer der Verarbeitung: 0.2 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge