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


Quelle  meson-g12a-fbx8am.dts   Sprache: unbekannt

 
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
// Copyright (c) 2024 Freebox SAS

/*
 * SEI codename: SEI530FB (based on SEI510)
 * Freebox codename: fbx8am
 * Commercial names: Freebox Pop, Player TV Free 4K
 */

/dts-v1/;

#include "meson-g12a.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/sound/meson-g12a-tohdmitx.h>

/ {
 compatible = "freebox,fbx8am", "amlogic,g12a";
 model = "Freebox Player Pop";
 chassis-type = "embedded";

 firmware {
  optee {
   compatible = "linaro,optee-tz";
   method = "smc";
  };
 };

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

  /* Physical user-accessible reset button near USB port */
  power-button {
   label = "Reset";
   linux,code = <BTN_MISC>;
   gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
  };
 };

 spdif_dit: audio-codec-2 {
  #sound-dai-cells = <0>;
  compatible = "linux,spdif-dit";
  status = "okay";
  sound-name-prefix = "DIT";
 };

 aliases {
  serial0 = &uart_AO;
  ethernet0 = ðmac;
 };

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

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

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

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

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

 ao_5v: regulator-ao-5v {
  compatible = "regulator-fixed";
  regulator-name = "AO_5V";
  regulator-min-microvolt = <5000000>;
  regulator-max-microvolt = <5000000>;
  vin-supply = <&dc_in>;
  regulator-always-on;
 };

 dc_in: regulator-dc-in {
  compatible = "regulator-fixed";
  regulator-name = "DC_IN";
  regulator-min-microvolt = <12000000>;
  regulator-max-microvolt = <12000000>;
  regulator-always-on;
 };

 emmc_1v8: regulator-emmc-1v8 {
  compatible = "regulator-fixed";
  regulator-name = "EMMC_1V8";
  regulator-min-microvolt = <1800000>;
  regulator-max-microvolt = <1800000>;
  vin-supply = <&vddao_3v3>;
  regulator-always-on;
 };

 vddao_3v3: regulator-vddao-3v3 {
  compatible = "regulator-fixed";
  regulator-name = "VDDAO_3V3";
  regulator-min-microvolt = <3300000>;
  regulator-max-microvolt = <3300000>;
  vin-supply = <&ao_5v>;
  regulator-always-on;
 };

 vddao_3v3_t: regulator-vddao-3v3-t {
  compatible = "regulator-fixed";
  regulator-name = "VDDAO_3V3_T";
  regulator-min-microvolt = <3300000>;
  regulator-max-microvolt = <3300000>;
  vin-supply = <&vddao_3v3>;
  gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
  enable-active-high;
 };

 vddcpu: regulator-vddcpu {
  /*
   * SY8120B1ABC DC/DC Regulator.
   */
  compatible = "pwm-regulator";

  regulator-name = "VDDCPU";
  regulator-min-microvolt = <721000>;
  regulator-max-microvolt = <1022000>;

  pwm-supply = <&ao_5v>;

  pwms = <&pwm_AO_cd 1 1250 0>;
  pwm-dutycycle-range = <100 0>;

  regulator-boot-on;
  regulator-always-on;
 };

 vddio_ao1v8: regulator-vddio-ao1v8 {
  compatible = "regulator-fixed";
  regulator-name = "VDDIO_AO1V8";
  regulator-min-microvolt = <1800000>;
  regulator-max-microvolt = <1800000>;
  vin-supply = <&vddao_3v3>;
  regulator-always-on;
 };

 sdio_pwrseq: sdio-pwrseq {
  compatible = "mmc-pwrseq-simple";
  reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
  post-power-on-delay-ms = <10>; /* required for 43752 */
  clocks = <&wifi32k>;
  clock-names = "ext_clock";
 };

 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,axg-sound-card";
  model = "fbx8am";
  audio-aux-devs = <&tdmout_b>;
  audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
    "TDMOUT_B IN 1", "FRDDR_B OUT 1",
    "TDMOUT_B IN 2", "FRDDR_C OUT 1",
    "TDM_B Playback", "TDMOUT_B OUT",
    "SPDIFOUT_A IN 0", "FRDDR_A OUT 3",
    "SPDIFOUT_A IN 1", "FRDDR_B OUT 3",
    "SPDIFOUT_A IN 2", "FRDDR_C OUT 3";

  clocks = <&clkc CLKID_MPLL2>,
    <&clkc CLKID_MPLL0>,
    <&clkc CLKID_MPLL1>;

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

  dai-link-0 {
   sound-dai = <&frddr_a>;
  };

  dai-link-1 {
   sound-dai = <&frddr_b>;
  };

  dai-link-2 {
   sound-dai = <&frddr_c>;
  };

  /* 8ch hdmi interface */
  dai-link-3 {
   sound-dai = <&tdmif_b>;
   dai-format = "i2s";
   dai-tdm-slot-tx-mask-0 = <1 1>;
   dai-tdm-slot-tx-mask-1 = <1 1>;
   dai-tdm-slot-tx-mask-2 = <1 1>;
   dai-tdm-slot-tx-mask-3 = <1 1>;
   mclk-fs = <256>;

   codec {
    sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
   };
  };

  /* spdif hdmi or toslink interface */
  dai-link-4 {
   sound-dai = <&spdifout_a>;

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

   codec-1 {
    sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_A>;
   };
  };

  /* spdif hdmi interface */
  dai-link-5 {
   sound-dai = <&spdifout_b>;

   codec {
    sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_B>;
   };
  };

  /* hdmi glue */
  dai-link-6 {
   sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;

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

&arb {
 status = "okay";
};

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

&clkc_audio {
 status = "okay";
};

&cpu0 {
 cpu-supply = <&vddcpu>;
 operating-points-v2 = <&cpu_opp_table>;
 clocks = <&clkc CLKID_CPU_CLK>;
};

&cpu1 {
 cpu-supply = <&vddcpu>;
 operating-points-v2 = <&cpu_opp_table>;
 clocks = <&clkc CLKID_CPU_CLK>;
};

&cpu2 {
 cpu-supply = <&vddcpu>;
 operating-points-v2 = <&cpu_opp_table>;
 clocks = <&clkc CLKID_CPU_CLK>;
};

&cpu3 {
 cpu-supply = <&vddcpu>;
 operating-points-v2 = <&cpu_opp_table>;
 clocks = <&clkc CLKID_CPU_CLK>;
};

ðmac {
 status = "okay";
 phy-handle = <&internal_ephy>;
 phy-mode = "rmii";
};

&frddr_a {
 status = "okay";
};

&frddr_b {
 status = "okay";
};

&frddr_c {
 status = "okay";
};

&spdifout_a {
 pinctrl-0 = <&spdif_out_h_pins>;
 pinctrl-names = "default";
 status = "okay";
};

&spdifout_b {
 status = "okay";
};

&hdmi_tx {
 status = "okay";
 pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
 pinctrl-names = "default";
};

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

&i2c3 {
 status = "okay";
 pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
 pinctrl-names = "default";
};

&ir {
 status = "okay";
 pinctrl-0 = <&remote_input_ao_pins>;
 pinctrl-names = "default";
};

&pwm_AO_cd {
 pinctrl-0 = <&pwm_ao_d_e_pins>;
 pinctrl-names = "default";
 status = "okay";
};

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

&pdm {
 pinctrl-0 = <&pdm_din0_z_pins>, <&pdm_din1_z_pins>,
      <&pdm_din2_z_pins>, <&pdm_din3_z_pins>,
      <&pdm_dclk_z_pins>;
 pinctrl-names = "default";
 status = "okay";
};

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

/* SDIO */
&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;
 sd-uhs-sdr50;
 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_ao1v8>;
};

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

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

 cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
 vmmc-supply = <&vddao_3v3>;
 vqmmc-supply = <&vddao_3v3>;
};

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

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

 mmc-pwrseq = <&emmc_pwrseq>;
 vmmc-supply = <&vddao_3v3>;
 vqmmc-supply = <&emmc_1v8>;
};

&tdmif_b {
 status = "okay";
};

&tdmout_b {
 status = "okay";
};

&tohdmitx {
 status = "okay";
};

&uart_A {
 status = "okay";
 pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
 pinctrl-names = "default";
 uart-has-rtscts;
};

&uart_AO {
 status = "okay";
 pinctrl-0 = <&uart_ao_a_pins>;
 pinctrl-names = "default";
};

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

[ Dauer der Verarbeitung: 0.14 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