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


Quelle  gs101-pixel-common.dtsi   Sprache: unbekannt

 
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Device Tree nodes common for all GS101-based Pixel
 *
 * Copyright 2021-2023 Google LLC
 * Copyright 2023 Linaro Ltd - <peter.griffin@linaro.org>
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/usb/pd.h>
#include "gs101-pinctrl.h"
#include "gs101.dtsi"

/ {
 aliases {
  serial0 = &serial_0;
 };

 chosen {
  /* Bootloader expects bootargs specified otherwise it crashes */
  bootargs = "";
  stdout-path = &serial_0;

  /* Use display framebuffer as setup by bootloader */
  framebuffer0: framebuffer-0 {
   compatible = "simple-framebuffer";
   memory-region = <&cont_splash_mem>;
   /* format properties to be added by actual board */
   status = "disabled";
  };
 };

 gpio-keys {
  compatible = "gpio-keys";
  pinctrl-0 = <&key_voldown>, <&key_volup>, <&key_power>;
  pinctrl-names = "default";

  button-vol-down {
   label = "KEY_VOLUMEDOWN";
   linux,code = <KEY_VOLUMEDOWN>;
   gpios = <&gpa7 3 GPIO_ACTIVE_LOW>;
   wakeup-source;
  };

  button-vol-up {
   label = "KEY_VOLUMEUP";
   linux,code = <KEY_VOLUMEUP>;
   gpios = <&gpa8 1 GPIO_ACTIVE_LOW>;
   wakeup-source;
  };

  button-power {
   label = "KEY_POWER";
   linux,code = <KEY_POWER>;
   gpios = <&gpa10 1 GPIO_ACTIVE_LOW>;
   wakeup-source;
  };
 };

 reboot-mode {
  compatible = "nvmem-reboot-mode";
  nvmem-cells = <&nvmem_reboot_mode>;
  nvmem-cell-names = "reboot-mode";
  mode-bootloader = <0x800000fc>;
  mode-charge = <0x8000000a>;
  mode-dm-verity-device-corrupted = <0x80000050>;
  mode-fastboot = <0x800000fa>;
  mode-reboot-ab-update = <0x80000052>;
  mode-recovery = <0x800000ff>;
  mode-rescue = <0x800000f9>;
  mode-shutdown-thermal = <0x80000051>;
  mode-shutdown-thermal-battery = <0x80000051>;
 };

 /* TODO: Remove this once PMIC is implemented  */
 reg_placeholder: regulator-0 {
  compatible = "regulator-fixed";
  regulator-name = "placeholder_reg";
 };

 /* TODO: Remove this once S2MPG11 slave PMIC is implemented  */
 ufs_0_fixed_vcc_reg: regulator-1 {
  compatible = "regulator-fixed";
  regulator-name = "ufs-vcc";
  gpio = <&gpp0 1 GPIO_ACTIVE_HIGH>;
  regulator-boot-on;
  enable-active-high;
 };

 reserved-memory {
  cont_splash_mem: splash@fac00000 {
   /* size to be updated by actual board */
   reg = <0x0 0xfac00000 0x0>;
   no-map;
   status = "disabled";
  };
 };
};

&acpm_ipc {
 pmic {
  compatible = "samsung,s2mpg10-pmic";
  interrupts-extended = <&gpa0 6 IRQ_TYPE_LEVEL_LOW>;
  pinctrl-names = "default";
  pinctrl-0 = <&pmic_int>;
  system-power-controller;
  wakeup-source;

  regulators {
  };
 };
};

&ext_24_5m {
 clock-frequency = <24576000>;
};

&ext_200m {
 clock-frequency = <200000000>;
};

&hsi2c_8 {
 status = "okay";

 eeprom: eeprom@50 {
  compatible = "atmel,24c08";
  reg = <0x50>;
 };
};

&hsi2c_12 {
 status = "okay";
 /* TODO: add the devices once drivers exist */

 usb-typec@25 {
  compatible = "maxim,max77759-tcpci", "maxim,max33359";
  reg = <0x25>;
  interrupts-extended = <&gpa8 2 IRQ_TYPE_LEVEL_LOW>;
  pinctrl-0 = <&typec_int>;
  pinctrl-names = "default";

  connector {
   compatible = "usb-c-connector";
   label = "USB-C";
   data-role = "dual";
   power-role = "dual";
   self-powered;
   try-power-role = "sink";
   op-sink-microwatt = <2600000>;
   slow-charger-loop;
   /*
    * max77759 operating in reverse boost mode (0xA) can
    * source up to 1.5A while extboost can only do ~1A.
    * Since extboost is the primary path, advertise 900mA.
    */
   source-pdos = <PDO_FIXED(5000, 900,
       (PDO_FIXED_SUSPEND
        | PDO_FIXED_USB_COMM
        | PDO_FIXED_DATA_SWAP
        | PDO_FIXED_DUAL_ROLE))>;
   sink-pdos = <PDO_FIXED(5000, 3000,
            (PDO_FIXED_DATA_SWAP
      | PDO_FIXED_USB_COMM
      | PDO_FIXED_HIGHER_CAP
      | PDO_FIXED_DUAL_ROLE))
         PDO_FIXED(9000, 2200, 0)
         PDO_PPS_APDO(5000, 11000, 3000)>;
   sink-vdos = <VDO_IDH(1, 1, IDH_PTYPE_PERIPH, 0,
          IDH_PTYPE_DFP_HOST, 2, 0x18d1)
         VDO_CERT(0x0)
         VDO_PRODUCT(0x4ee1, 0x0)
         VDO_UFP(UFP_VDO_VER1_2,
          (DEV_USB2_CAPABLE
           | DEV_USB3_CAPABLE),
          UFP_RECEPTACLE, 0,
          AMA_VCONN_NOT_REQ, 0,
          UFP_ALTMODE_NOT_SUPP,
          UFP_USB32_GEN1)
         /* padding */ 0
         VDO_DFP(DFP_VDO_VER1_1,
          (HOST_USB2_CAPABLE
           | HOST_USB3_CAPABLE),
          DFP_RECEPTACLE, 0)>;
   sink-vdos-v1 = <VDO_IDH(1, 1, IDH_PTYPE_PERIPH, 0,
      0, 0, 0x18d1)
     VDO_CERT(0x0)
     VDO_PRODUCT(0x4ee1, 0x0)>;
   /*
    * Until bootloader is updated to set those two when
    * console is enabled, we disable PD here.
    */
   pd-disable;
   typec-power-opmode = "default";

   ports {
    #address-cells = <1>;
    #size-cells = <0>;

    port@0 {
     reg = <0>;

     usbc0_orien_sw: endpoint {
      remote-endpoint = <&usbdrd31_phy_orien_switch>;
     };
    };

    port@1 {
     reg = <1>;

     usbc0_role_sw: endpoint {
      remote-endpoint = <&usbdrd31_dwc3_role_switch>;
     };
    };
   };
  };
 };

 pmic@66 {
  compatible = "maxim,max77759";
  reg = <0x66>;

  pinctrl-0 = <&if_pmic_int>;
  pinctrl-names = "default";
  interrupts-extended = <&gpa8 3 IRQ_TYPE_LEVEL_LOW>;

  interrupt-controller;
  #interrupt-cells = <2>;

  gpio {
   compatible = "maxim,max77759-gpio";

   gpio-controller;
   #gpio-cells = <2>;
   /*
    * "Human-readable name [SIGNAL_LABEL]" where the
    * latter comes from the schematic
    */
   gpio-line-names = "OTG boost [OTG_BOOST_EN]",
       "max20339 IRQ [MW_OVP_INT_L]";

   interrupt-controller;
   #interrupt-cells = <2>;
  };

  nvmem-0 {
   compatible = "maxim,max77759-nvmem";

   nvmem-layout {
    compatible = "fixed-layout";
    #address-cells = <1>;
    #size-cells = <1>;

    nvmem_reboot_mode: reboot-mode@0 {
     reg = <0x0 0x4>;
    };

    boot-reason@4 {
     reg = <0x4 0x4>;
    };

    shutdown-user-flag@8 {
     reg = <0x8 0x1>;
    };

    rsoc@a {
     reg = <0xa 0x2>;
    };
   };
  };
 };
};

&pinctrl_far_alive {
 key_voldown: key-voldown-pins {
  samsung,pins = "gpa7-3";
  samsung,pin-function = <GS101_PIN_FUNC_EINT>;
  samsung,pin-pud = <GS101_PIN_PULL_NONE>;
  samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
 };

 key_volup: key-volup-pins {
  samsung,pins = "gpa8-1";
  samsung,pin-function = <GS101_PIN_FUNC_EINT>;
  samsung,pin-pud = <GS101_PIN_PULL_NONE>;
  samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
 };

 typec_int: typec-int-pins {
  samsung,pins = "gpa8-2";
  samsung,pin-function = <GS101_PIN_FUNC_EINT>;
  samsung,pin-pud = <GS101_PIN_PULL_UP>;
  samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
 };

 if_pmic_int: if-pmic-int-pins {
  samsung,pins = "gpa8-3";
  samsung,pin-function = <GS101_PIN_FUNC_EINT>;
  samsung,pin-pud = <GS101_PIN_PULL_UP>;
  samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
 };
};

&pinctrl_gpio_alive {
 pmic_int: pmic-int-pins {
  samsung,pins = "gpa0-6";
  samsung,pin-function = <GS101_PIN_FUNC_EINT>;
  samsung,pin-pud = <GS101_PIN_PULL_NONE>;
 };

 key_power: key-power-pins {
  samsung,pins = "gpa10-1";
  samsung,pin-function = <GS101_PIN_FUNC_EINT>;
  samsung,pin-pud = <GS101_PIN_PULL_NONE>;
  samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
 };
};

&serial_0 {
 status = "okay";
};

&ufs_0 {
 status = "okay";
 vcc-supply = <&ufs_0_fixed_vcc_reg>;
};

&ufs_0_phy {
 status = "okay";
};

&usbdrd31 {
 vdd10-supply = <®_placeholder>;
 vdd33-supply = <®_placeholder>;
 status = "okay";
};

&usbdrd31_dwc3 {
 dr_mode = "otg";
 usb-role-switch;
 role-switch-default-mode = "peripheral";
 maximum-speed = "super-speed-plus";
 status = "okay";

 port {
  usbdrd31_dwc3_role_switch: endpoint {
   remote-endpoint = <&usbc0_role_sw>;
  };
 };
};

&usbdrd31_phy {
 orientation-switch;
 /* TODO: Update these once PMIC is implemented */
 pll-supply = <®_placeholder>;
 dvdd-usb20-supply = <®_placeholder>;
 vddh-usb20-supply = <®_placeholder>;
 vdd33-usb20-supply = <®_placeholder>;
 vdda-usbdp-supply = <®_placeholder>;
 vddh-usbdp-supply = <®_placeholder>;
 status = "okay";

 port {
  usbdrd31_phy_orien_switch: endpoint {
   remote-endpoint = <&usbc0_orien_sw>;
  };
 };
};

&usi_uart {
 samsung,clkreq-on; /* needed for UART mode */
 status = "okay";
};

&usi8 {
 samsung,mode = <USI_MODE_I2C>;
 status = "okay";
};

&usi12 {
 samsung,mode = <USI_MODE_I2C>;
 status = "okay";
};

&watchdog_cl0 {
 timeout-sec = <30>;
 status = "okay";
};

[ 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