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


Quelle  msm8916-samsung-serranove.dts   Sprache: unbekannt

 
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2019 Stephan Gerhold
 */

/dts-v1/;

#include "msm8916-pm8916.dtsi"
#include "msm8916-modem-qdsp6.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>

/*
 * NOTE: The original firmware from Samsung can only boot ARM32 kernels.
 * Unfortunately, the firmware is signed and cannot be replaced easily.
 * There seems to be no way to boot ARM64 kernels on this device at the moment,
 * even though the hardware would support it.
 *
 * However, it is possible to use this device tree by compiling an ARM32 kernel
 * instead. For clarity and build testing this device tree is maintained next
 * to the other MSM8916 device trees. However, it is actually used through
 *   arch/arm/boot/dts/qcom-msm8916-samsung-serranove.dts
 */

/ {
 model = "Samsung Galaxy S4 Mini Value Edition";
 compatible = "samsung,serranove", "qcom,msm8916";
 chassis-type = "handset";

 aliases {
  mmc0 = &sdhc_1; /* eMMC */
  mmc1 = &sdhc_2; /* SD card */
  serial0 = &blsp_uart2;
 };

 chosen {
  stdout-path = "serial0";
 };

 reserved-memory {
  /* Additional memory used by Samsung firmware modifications */
  tz-apps@85500000 {
   reg = <0x0 0x85500000 0x0 0xb00000>;
   no-map;
  };
 };

 gpio-keys {
  compatible = "gpio-keys";

  pinctrl-names = "default";
  pinctrl-0 = <&gpio_keys_default>;

  label = "GPIO Buttons";

  button-volume-up {
   label = "Volume Up";
   gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
   linux,code = <KEY_VOLUMEUP>;
  };

  button-home {
   label = "Home";
   gpios = <&tlmm 109 GPIO_ACTIVE_LOW>;
   linux,code = <KEY_HOMEPAGE>;
  };
 };

 gpio-hall-sensor {
  compatible = "gpio-keys";

  pinctrl-names = "default";
  pinctrl-0 = <&gpio_hall_sensor_default>;

  label = "GPIO Hall Effect Sensor";

  event-hall-sensor {
   label = "Hall Effect Sensor";
   gpios = <&tlmm 52 GPIO_ACTIVE_LOW>;
   linux,input-type = <EV_SW>;
   linux,code = <SW_LID>;
   linux,can-disable;
  };
 };

 reg_vdd_tsp: regulator-vdd-tsp {
  compatible = "regulator-fixed";
  regulator-name = "vdd_tsp";
  regulator-min-microvolt = <3300000>;
  regulator-max-microvolt = <3300000>;

  gpio = <&tlmm 73 GPIO_ACTIVE_HIGH>;
  enable-active-high;

  pinctrl-names = "default";
  pinctrl-0 = <&tsp_en_default>;
 };

 reg_touch_key: regulator-touch-key {
  compatible = "regulator-fixed";
  regulator-name = "touch_key";
  regulator-min-microvolt = <2800000>;
  regulator-max-microvolt = <2800000>;

  gpio = <&tlmm 86 GPIO_ACTIVE_HIGH>;
  enable-active-high;

  pinctrl-names = "default";
  pinctrl-0 = <&tkey_en_default>;
 };

 reg_key_led: regulator-key-led {
  compatible = "regulator-fixed";
  regulator-name = "key_led";
  regulator-min-microvolt = <3300000>;
  regulator-max-microvolt = <3300000>;

  gpio = <&tlmm 60 GPIO_ACTIVE_HIGH>;
  enable-active-high;

  pinctrl-names = "default";
  pinctrl-0 = <&tkey_led_en_default>;
 };

 i2c-muic {
  compatible = "i2c-gpio";
  sda-gpios = <&tlmm 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
  scl-gpios = <&tlmm 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;

  pinctrl-names = "default";
  pinctrl-0 = <&muic_i2c_default>;

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

  muic: extcon@14 {
   compatible = "siliconmitus,sm5504-muic";
   reg = <0x14>;

   interrupt-parent = <&tlmm>;
   interrupts = <12 IRQ_TYPE_EDGE_FALLING>;

   pinctrl-names = "default";
   pinctrl-0 = <&muic_irq_default>;

   usb_con: connector {
    compatible = "usb-b-connector";
    label = "micro-USB";
    type = "micro";
   };
  };
 };

 i2c-tkey {
  compatible = "i2c-gpio";
  sda-gpios = <&tlmm 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
  scl-gpios = <&tlmm 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;

  pinctrl-names = "default";
  pinctrl-0 = <&tkey_i2c_default>;

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

  touchkey@20 {
   compatible = "coreriver,tc360-touchkey";
   reg = <0x20>;

   interrupt-parent = <&tlmm>;
   interrupts = <98 IRQ_TYPE_EDGE_FALLING>;

   vcc-supply = <®_touch_key>;
   vdd-supply = <®_key_led>;
   vddio-supply = <&pm8916_l6>;

   linux,keycodes = <KEY_APPSELECT KEY_BACK>;

   pinctrl-names = "default";
   pinctrl-0 = <&tkey_default>;
  };
 };

 i2c-nfc {
  compatible = "i2c-gpio";
  sda-gpios = <&tlmm 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
  scl-gpios = <&tlmm 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;

  pinctrl-names = "default";
  pinctrl-0 = <&nfc_i2c_default>;

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

  nfc@2b {
   compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
   reg = <0x2b>;

   interrupt-parent = <&tlmm>;
   interrupts = <21 IRQ_TYPE_EDGE_RISING>;

   enable-gpios = <&tlmm 20 GPIO_ACTIVE_HIGH>;
   firmware-gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>;

   pinctrl-names = "default";
   pinctrl-0 = <&nfc_default>;
  };
 };

 battery: battery {
  compatible = "simple-battery";
  precharge-current-microamp = <450000>;
  constant-charge-current-max-microamp = <1000000>;
  charge-term-current-microamp = <150000>;
  precharge-upper-limit-microvolt = <3500000>;
  constant-charge-voltage-max-microvolt = <4350000>;
 };
};

&blsp_i2c2 {
 status = "okay";

 imu@6b {
  compatible = "st,lsm6ds3";
  reg = <0x6b>;

  interrupt-parent = <&tlmm>;
  interrupts = <115 IRQ_TYPE_EDGE_RISING>;

  pinctrl-names = "default";
  pinctrl-0 = <&imu_irq_default>;
 };

 magnetometer@2e {
  compatible = "yamaha,yas537";
  reg = <0x2e>;

  mount-matrix = "0",  "1",  "0",
          "1",  "0",  "0",
          "0",  "0", "-1";
 };
};

&blsp_i2c4 {
 status = "okay";

 fuel-gauge@35 {
  compatible = "richtek,rt5033-battery";
  reg = <0x35>;

  interrupt-parent = <&tlmm>;
  interrupts = <121 IRQ_TYPE_EDGE_FALLING>;

  pinctrl-names = "default";
  pinctrl-0 = <&fg_alert_default>;

  power-supplies = <&rt5033_charger>;
 };
};

&blsp_i2c5 {
 status = "okay";

 touchscreen@20 {
  compatible = "zinitix,bt541";
  reg = <0x20>;

  interrupt-parent = <&tlmm>;
  interrupts = <13 IRQ_TYPE_EDGE_FALLING>;

  touchscreen-size-x = <540>;
  touchscreen-size-y = <960>;

  vdd-supply = <®_vdd_tsp>;
  vddo-supply = <&pm8916_l6>;

  pinctrl-names = "default";
  pinctrl-0 = <&tsp_irq_default>;
 };
};

&blsp_i2c6 {
 status = "okay";

 pmic@34 {
  compatible = "richtek,rt5033";
  reg = <0x34>;

  interrupt-parent = <&tlmm>;
  interrupts = <62 IRQ_TYPE_EDGE_FALLING>;

  pinctrl-names = "default";
  pinctrl-0 = <&pmic_int_default>;

  regulators {
   rt5033_reg_safe_ldo: SAFE_LDO {
    regulator-min-microvolt = <4900000>;
    regulator-max-microvolt = <4900000>;
    regulator-always-on;
   };
   rt5033_reg_ldo: LDO {
    regulator-min-microvolt = <2800000>;
    regulator-max-microvolt = <2800000>;
   };
   rt5033_reg_buck: BUCK {
    regulator-min-microvolt = <1200000>;
    regulator-max-microvolt = <1200000>;
   };
  };

  rt5033_charger: charger {
   compatible = "richtek,rt5033-charger";
   monitored-battery = <&battery>;
   richtek,usb-connector = <&usb_con>;
  };
 };
};

&blsp_uart2 {
 status = "okay";
 pinctrl-0 = <&blsp_uart2_console_default>;
 pinctrl-1 = <&blsp_uart2_console_sleep>;
 pinctrl-names = "default", "sleep";
};

&gpu {
 status = "okay";
};

&mdss {
 status = "okay";
};

&mdss_dsi0 {
 pinctrl-names = "default", "sleep";
 pinctrl-0 = <&mdss_default>;
 pinctrl-1 = <&mdss_sleep>;

 panel@0 {
  compatible = "samsung,s6e88a0-ams427ap24";
  reg = <0>;

  vdd3-supply = <&pm8916_l17>;
  vci-supply = <&pm8916_l6>;
  reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>;
  flip-horizontal;

  port {
   panel_in: endpoint {
    remote-endpoint = <&mdss_dsi0_out>;
   };
  };
 };
};

&mdss_dsi0_out {
 data-lanes = <0 1>;
 remote-endpoint = <&panel_in>;
};

&mpss_mem {
 reg = <0x0 0x86800000 0x0 0x5a00000>;
};

&pm8916_resin {
 status = "okay";
 linux,code = <KEY_VOLUMEDOWN>;
};

&pm8916_rpm_regulators {
 pm8916_l17: l17 {
  regulator-min-microvolt = <2850000>;
  regulator-max-microvolt = <2850000>;
 };
};

&pm8916_vib {
 status = "okay";
};

&sdhc_1 {
 status = "okay";
};

&sdhc_2 {
 status = "okay";
 non-removable;

 /*
  * FIXME: Disable UHS-I modes since tuning fails with:
  *
  * sdhci_msm 7864900.sdhci: mmc1: No tuning point found
  * mmc1: tuning execution failed: -5
  * mmc1: error -5 whilst initialising SD card
  *
  * This is the quirk used on downstream, which suggests this is
  * a hardware limitation. However, probing a card using DDR50 works
  * (without tuning), so maybe only tuning is broken?
  */
 no-1-8-v;
};

&sound {
 audio-routing =
  "AMIC1", "MIC BIAS External1",
  "AMIC2", "MIC BIAS Internal2",
  "AMIC3", "MIC BIAS External1";
};

&usb {
 status = "okay";
 extcon = <&muic>, <&muic>;
};

&usb_hs_phy {
 extcon = <&muic>;
};

&venus {
 status = "okay";
};

&venus_mem {
 status = "okay";
};

&wcnss {
 status = "okay";
};

&wcnss_iris {
 compatible = "qcom,wcn3660b";
};

&wcnss_mem {
 status = "okay";
};

&tlmm {
 fg_alert_default: fg-alert-default-state {
  pins = "gpio121";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 gpio_keys_default: gpio-keys-default-state {
  pins = "gpio107", "gpio109";
  function = "gpio";

  drive-strength = <2>;
  bias-pull-up;
 };

 gpio_hall_sensor_default: gpio-hall-sensor-default-state {
  pins = "gpio52";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 imu_irq_default: imu-irq-default-state {
  pins = "gpio115";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 mdss_default: mdss-default-state {
  pins = "gpio25";
  function = "gpio";

  drive-strength = <8>;
  bias-disable;
 };

 mdss_sleep: mdss-sleep-state {
  pins = "gpio25";
  function = "gpio";

  drive-strength = <2>;
  bias-pull-down;
 };

 muic_i2c_default: muic-i2c-default-state {
  pins = "gpio105", "gpio106";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 muic_irq_default: muic-irq-default-state {
  pins = "gpio12";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 nfc_default: nfc-default-state {
  nfc-pins {
   pins = "gpio20", "gpio49";
   function = "gpio";

   drive-strength = <2>;
   bias-disable;
  };
  irq-pins {
   pins = "gpio21";
   function = "gpio";

   drive-strength = <2>;
   bias-pull-down;
  };
 };

 nfc_i2c_default: nfc-i2c-default-state {
  pins = "gpio0", "gpio1";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 pmic_int_default: pmic-int-default-state {
  pins = "gpio62";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 tkey_default: tkey-default-state {
  pins = "gpio98";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 tkey_en_default: tkey-en-default-state {
  pins = "gpio86";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 tkey_i2c_default: tkey-i2c-default-state {
  pins = "gpio16", "gpio17";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 tkey_led_en_default: tkey-led-en-default-state {
  pins = "gpio60";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 tsp_en_default: tsp-en-default-state {
  pins = "gpio73";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };

 tsp_irq_default: tsp-irq-default-state {
  pins = "gpio13";
  function = "gpio";

  drive-strength = <2>;
  bias-disable;
 };
};

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