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


Quelle  msm8996.dtsi   Sprache: unbekannt

 
Spracherkennung für: .dtsi vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
 */

#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
#include <dt-bindings/clock/qcom,gcc-msm8996.h>
#include <dt-bindings/clock/qcom,mmcc-msm8996.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/interconnect/qcom,msm8996.h>
#include <dt-bindings/interconnect/qcom,msm8996-cbf.h>
#include <dt-bindings/firmware/qcom,scm.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/power/qcom-rpmpd.h>
#include <dt-bindings/soc/qcom,apr.h>
#include <dt-bindings/thermal/thermal.h>

/ {
 interrupt-parent = <&intc>;

 #address-cells = <2>;
 #size-cells = <2>;

 chosen { };

 clocks {
  xo_board: xo-board {
   compatible = "fixed-clock";
   #clock-cells = <0>;
   clock-frequency = <19200000>;
   clock-output-names = "xo_board";
  };

  sleep_clk: sleep-clk {
   compatible = "fixed-clock";
   #clock-cells = <0>;
   clock-frequency = <32764>;
   clock-output-names = "sleep_clk";
  };
 };

 cpus {
  #address-cells = <2>;
  #size-cells = <0>;

  cpu0: cpu@0 {
   device_type = "cpu";
   compatible = "qcom,kryo";
   reg = <0x0 0x0>;
   enable-method = "psci";
   cpu-idle-states = <&cpu_sleep_0>;
   capacity-dmips-mhz = <1024>;
   clocks = <&kryocc 0>;
   interconnects = <&cbf MASTER_CBF_M4M &cbf SLAVE_CBF_M4M>;
   operating-points-v2 = <&cluster0_opp>;
   #cooling-cells = <2>;
   next-level-cache = <&l2_0>;
   l2_0: l2-cache {
    compatible = "cache";
    cache-level = <2>;
    cache-unified;
   };
  };

  cpu1: cpu@1 {
   device_type = "cpu";
   compatible = "qcom,kryo";
   reg = <0x0 0x1>;
   enable-method = "psci";
   cpu-idle-states = <&cpu_sleep_0>;
   capacity-dmips-mhz = <1024>;
   clocks = <&kryocc 0>;
   interconnects = <&cbf MASTER_CBF_M4M &cbf SLAVE_CBF_M4M>;
   operating-points-v2 = <&cluster0_opp>;
   #cooling-cells = <2>;
   next-level-cache = <&l2_0>;
  };

  cpu2: cpu@100 {
   device_type = "cpu";
   compatible = "qcom,kryo";
   reg = <0x0 0x100>;
   enable-method = "psci";
   cpu-idle-states = <&cpu_sleep_0>;
   capacity-dmips-mhz = <1024>;
   clocks = <&kryocc 1>;
   interconnects = <&cbf MASTER_CBF_M4M &cbf SLAVE_CBF_M4M>;
   operating-points-v2 = <&cluster1_opp>;
   #cooling-cells = <2>;
   next-level-cache = <&l2_1>;
   l2_1: l2-cache {
    compatible = "cache";
    cache-level = <2>;
    cache-unified;
   };
  };

  cpu3: cpu@101 {
   device_type = "cpu";
   compatible = "qcom,kryo";
   reg = <0x0 0x101>;
   enable-method = "psci";
   cpu-idle-states = <&cpu_sleep_0>;
   capacity-dmips-mhz = <1024>;
   clocks = <&kryocc 1>;
   interconnects = <&cbf MASTER_CBF_M4M &cbf SLAVE_CBF_M4M>;
   operating-points-v2 = <&cluster1_opp>;
   #cooling-cells = <2>;
   next-level-cache = <&l2_1>;
  };

  cpu-map {
   cluster0 {
    core0 {
     cpu = <&cpu0>;
    };

    core1 {
     cpu = <&cpu1>;
    };
   };

   cluster1 {
    core0 {
     cpu = <&cpu2>;
    };

    core1 {
     cpu = <&cpu3>;
    };
   };
  };

  idle-states {
   entry-method = "psci";

   cpu_sleep_0: cpu-sleep-0 {
    compatible = "arm,idle-state";
    idle-state-name = "standalone-power-collapse";
    arm,psci-suspend-param = <0x00000004>;
    entry-latency-us = <130>;
    exit-latency-us = <80>;
    min-residency-us = <300>;
   };
  };
 };

 cluster0_opp: opp-table-cluster0 {
  compatible = "operating-points-v2-kryo-cpu";
  nvmem-cells = <&speedbin_efuse>;
  opp-shared;

  /* Nominal fmax for now */
  opp-307200000 {
   opp-hz = /bits/ 64 <307200000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <307200>;
  };
  opp-422400000 {
   opp-hz = /bits/ 64 <422400000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <307200>;
  };
  opp-480000000 {
   opp-hz = /bits/ 64 <480000000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <307200>;
  };
  opp-556800000 {
   opp-hz = /bits/ 64 <556800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <307200>;
  };
  opp-652800000 {
   opp-hz = /bits/ 64 <652800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <384000>;
  };
  opp-729600000 {
   opp-hz = /bits/ 64 <729600000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <460800>;
  };
  opp-844800000 {
   opp-hz = /bits/ 64 <844800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <537600>;
  };
  opp-960000000 {
   opp-hz = /bits/ 64 <960000000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <672000>;
  };
  opp-1036800000 {
   opp-hz = /bits/ 64 <1036800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <672000>;
  };
  opp-1113600000 {
   opp-hz = /bits/ 64 <1113600000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <825600>;
  };
  opp-1190400000 {
   opp-hz = /bits/ 64 <1190400000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <825600>;
  };
  opp-1228800000 {
   opp-hz = /bits/ 64 <1228800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <902400>;
  };
  opp-1324800000 {
   opp-hz = /bits/ 64 <1324800000>;
   opp-supported-hw = <0xd>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1056000>;
  };
  opp-1363200000 {
   opp-hz = /bits/ 64 <1363200000>;
   opp-supported-hw = <0x2>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1132800>;
  };
  opp-1401600000 {
   opp-hz = /bits/ 64 <1401600000>;
   opp-supported-hw = <0xd>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1132800>;
  };
  opp-1478400000 {
   opp-hz = /bits/ 64 <1478400000>;
   opp-supported-hw = <0x9>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1190400>;
  };
  opp-1497600000 {
   opp-hz = /bits/ 64 <1497600000>;
   opp-supported-hw = <0x04>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1305600>;
  };
  opp-1593600000 {
   opp-hz = /bits/ 64 <1593600000>;
   opp-supported-hw = <0x9>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1382400>;
  };
 };

 cluster1_opp: opp-table-cluster1 {
  compatible = "operating-points-v2-kryo-cpu";
  nvmem-cells = <&speedbin_efuse>;
  opp-shared;

  /* Nominal fmax for now */
  opp-307200000 {
   opp-hz = /bits/ 64 <307200000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <307200>;
  };
  opp-403200000 {
   opp-hz = /bits/ 64 <403200000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <307200>;
  };
  opp-480000000 {
   opp-hz = /bits/ 64 <480000000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <307200>;
  };
  opp-556800000 {
   opp-hz = /bits/ 64 <556800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <307200>;
  };
  opp-652800000 {
   opp-hz = /bits/ 64 <652800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <307200>;
  };
  opp-729600000 {
   opp-hz = /bits/ 64 <729600000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <307200>;
  };
  opp-806400000 {
   opp-hz = /bits/ 64 <806400000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <384000>;
  };
  opp-883200000 {
   opp-hz = /bits/ 64 <883200000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <460800>;
  };
  opp-940800000 {
   opp-hz = /bits/ 64 <940800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <537600>;
  };
  opp-1036800000 {
   opp-hz = /bits/ 64 <1036800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <595200>;
  };
  opp-1113600000 {
   opp-hz = /bits/ 64 <1113600000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <672000>;
  };
  opp-1190400000 {
   opp-hz = /bits/ 64 <1190400000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <672000>;
  };
  opp-1248000000 {
   opp-hz = /bits/ 64 <1248000000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <748800>;
  };
  opp-1324800000 {
   opp-hz = /bits/ 64 <1324800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <825600>;
  };
  opp-1401600000 {
   opp-hz = /bits/ 64 <1401600000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <902400>;
  };
  opp-1478400000 {
   opp-hz = /bits/ 64 <1478400000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <979200>;
  };
  opp-1555200000 {
   opp-hz = /bits/ 64 <1555200000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1056000>;
  };
  opp-1632000000 {
   opp-hz = /bits/ 64 <1632000000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1190400>;
  };
  opp-1708800000 {
   opp-hz = /bits/ 64 <1708800000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1228800>;
  };
  opp-1785600000 {
   opp-hz = /bits/ 64 <1785600000>;
   opp-supported-hw = <0xf>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1305600>;
  };
  opp-1804800000 {
   opp-hz = /bits/ 64 <1804800000>;
   opp-supported-hw = <0xe>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1305600>;
  };
  opp-1824000000 {
   opp-hz = /bits/ 64 <1824000000>;
   opp-supported-hw = <0x1>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1382400>;
  };
  opp-1900800000 {
   opp-hz = /bits/ 64 <1900800000>;
   opp-supported-hw = <0x4>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1305600>;
  };
  opp-1920000000 {
   opp-hz = /bits/ 64 <1920000000>;
   opp-supported-hw = <0x1>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1459200>;
  };
  opp-1996800000 {
   opp-hz = /bits/ 64 <1996800000>;
   opp-supported-hw = <0x1>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1593600>;
  };
  opp-2073600000 {
   opp-hz = /bits/ 64 <2073600000>;
   opp-supported-hw = <0x1>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1593600>;
  };
  opp-2150400000 {
   opp-hz = /bits/ 64 <2150400000>;
   opp-supported-hw = <0x1>;
   clock-latency-ns = <200000>;
   opp-peak-kBps = <1593600>;
  };
 };

 firmware {
  scm {
   compatible = "qcom,scm-msm8996", "qcom,scm";
   qcom,dload-mode = <&tcsr_2 0x13000>;
  };
 };

 memory@80000000 {
  device_type = "memory";
  /* We expect the bootloader to fill in the reg */
  reg = <0x0 0x80000000 0x0 0x0>;
 };

 etm {
  compatible = "qcom,coresight-remote-etm";

  out-ports {
   port {
    modem_etm_out_funnel_in2: endpoint {
     remote-endpoint =
       <&funnel_in2_in_modem_etm>;
    };
   };
  };
 };

 psci {
  compatible = "arm,psci-1.0";
  method = "smc";
 };

 rpm: remoteproc {
  compatible = "qcom,msm8996-rpm-proc", "qcom,rpm-proc";

  glink-edge {
   compatible = "qcom,glink-rpm";
   interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
   qcom,rpm-msg-ram = <&rpm_msg_ram>;
   mboxes = <&apcs_glb 0>;

   rpm_requests: rpm-requests {
    compatible = "qcom,rpm-msm8996", "qcom,glink-smd-rpm";
    qcom,glink-channels = "rpm_requests";

    rpmcc: clock-controller {
     compatible = "qcom,rpmcc-msm8996", "qcom,rpmcc";
     #clock-cells = <1>;
     clocks = <&xo_board>;
     clock-names = "xo";
    };

    rpmpd: power-controller {
     compatible = "qcom,msm8996-rpmpd";
     #power-domain-cells = <1>;
     operating-points-v2 = <&rpmpd_opp_table>;

     rpmpd_opp_table: opp-table {
      compatible = "operating-points-v2";

      rpmpd_opp1: opp1 {
       opp-level = <1>;
      };

      rpmpd_opp2: opp2 {
       opp-level = <2>;
      };

      rpmpd_opp3: opp3 {
       opp-level = <3>;
      };

      rpmpd_opp4: opp4 {
       opp-level = <4>;
      };

      rpmpd_opp5: opp5 {
       opp-level = <5>;
      };

      rpmpd_opp6: opp6 {
       opp-level = <6>;
      };
     };
    };
   };
  };
 };

 reserved-memory {
  #address-cells = <2>;
  #size-cells = <2>;
  ranges;

  hyp_mem: memory@85800000 {
   reg = <0x0 0x85800000 0x0 0x600000>;
   no-map;
  };

  xbl_mem: memory@85e00000 {
   reg = <0x0 0x85e00000 0x0 0x200000>;
   no-map;
  };

  smem_mem: smem-mem@86000000 {
   reg = <0x0 0x86000000 0x0 0x200000>;
   no-map;
  };

  tz_mem: memory@86200000 {
   reg = <0x0 0x86200000 0x0 0x2600000>;
   no-map;
  };

  rmtfs_mem: rmtfs {
   compatible = "qcom,rmtfs-mem";

   size = <0x0 0x200000>;
   alloc-ranges = <0x0 0xa0000000 0x0 0x2000000>;
   no-map;

   qcom,client-id = <1>;
   qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
  };

  mpss_mem: mpss@88800000 {
   reg = <0x0 0x88800000 0x0 0x6200000>;
   no-map;
  };

  adsp_mem: adsp@8ea00000 {
   reg = <0x0 0x8ea00000 0x0 0x1b00000>;
   no-map;
  };

  slpi_mem: slpi@90500000 {
   reg = <0x0 0x90500000 0x0 0xa00000>;
   no-map;
  };

  gpu_mem: gpu@90f00000 {
   compatible = "shared-dma-pool";
   reg = <0x0 0x90f00000 0x0 0x100000>;
   no-map;
  };

  venus_mem: venus@91000000 {
   reg = <0x0 0x91000000 0x0 0x500000>;
   no-map;
  };

  mba_mem: mba@91500000 {
   reg = <0x0 0x91500000 0x0 0x200000>;
   no-map;
  };

  mdata_mem: mpss-metadata {
   alloc-ranges = <0x0 0xa0000000 0x0 0x20000000>;
   size = <0x0 0x4000>;
   no-map;
  };
 };

 smem {
  compatible = "qcom,smem";
  memory-region = <&smem_mem>;
  hwlocks = <&tcsr_mutex 3>;
 };

 smp2p-adsp {
  compatible = "qcom,smp2p";
  qcom,smem = <443>, <429>;

  interrupts = <GIC_SPI 158 IRQ_TYPE_EDGE_RISING>;

  mboxes = <&apcs_glb 10>;

  qcom,local-pid = <0>;
  qcom,remote-pid = <2>;

  adsp_smp2p_out: master-kernel {
   qcom,entry-name = "master-kernel";
   #qcom,smem-state-cells = <1>;
  };

  adsp_smp2p_in: slave-kernel {
   qcom,entry-name = "slave-kernel";

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

 smp2p-mpss {
  compatible = "qcom,smp2p";
  qcom,smem = <435>, <428>;

  interrupts = <GIC_SPI 451 IRQ_TYPE_EDGE_RISING>;

  mboxes = <&apcs_glb 14>;

  qcom,local-pid = <0>;
  qcom,remote-pid = <1>;

  mpss_smp2p_out: master-kernel {
   qcom,entry-name = "master-kernel";
   #qcom,smem-state-cells = <1>;
  };

  mpss_smp2p_in: slave-kernel {
   qcom,entry-name = "slave-kernel";

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

 smp2p-slpi {
  compatible = "qcom,smp2p";
  qcom,smem = <481>, <430>;

  interrupts = <GIC_SPI 178 IRQ_TYPE_EDGE_RISING>;

  mboxes = <&apcs_glb 26>;

  qcom,local-pid = <0>;
  qcom,remote-pid = <3>;

  slpi_smp2p_out: master-kernel {
   qcom,entry-name = "master-kernel";
   #qcom,smem-state-cells = <1>;
  };

  slpi_smp2p_in: slave-kernel {
   qcom,entry-name = "slave-kernel";

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

 soc: soc@0 {
  #address-cells = <1>;
  #size-cells = <1>;
  ranges = <0 0 0 0xffffffff>;
  compatible = "simple-bus";

  pcie_phy: phy-wrapper@34000 {
   compatible = "qcom,msm8996-qmp-pcie-phy";
   reg = <0x00034000 0x488>;
   #address-cells = <1>;
   #size-cells = <1>;
   ranges = <0x0 0x00034000 0x4000>;

   clocks = <&gcc GCC_PCIE_PHY_AUX_CLK>,
    <&gcc GCC_PCIE_PHY_CFG_AHB_CLK>,
    <&gcc GCC_PCIE_CLKREF_CLK>;
   clock-names = "aux", "cfg_ahb", "ref";

   resets = <&gcc GCC_PCIE_PHY_BCR>,
    <&gcc GCC_PCIE_PHY_COM_BCR>,
    <&gcc GCC_PCIE_PHY_COM_NOCSR_BCR>;
   reset-names = "phy", "common", "cfg";

   status = "disabled";

   pciephy_0: phy@1000 {
    reg = <0x1000 0x130>,
          <0x1200 0x200>,
          <0x1400 0x1dc>;

    clocks = <&gcc GCC_PCIE_0_PIPE_CLK>;
    clock-names = "pipe0";
    resets = <&gcc GCC_PCIE_0_PHY_BCR>;
    reset-names = "lane0";

    #clock-cells = <0>;
    clock-output-names = "pcie_0_pipe_clk_src";

    #phy-cells = <0>;
   };

   pciephy_1: phy@2000 {
    reg = <0x2000 0x130>,
          <0x2200 0x200>,
          <0x2400 0x1dc>;

    clocks = <&gcc GCC_PCIE_1_PIPE_CLK>;
    clock-names = "pipe1";
    resets = <&gcc GCC_PCIE_1_PHY_BCR>;
    reset-names = "lane1";

    #clock-cells = <0>;
    clock-output-names = "pcie_1_pipe_clk_src";

    #phy-cells = <0>;
   };

   pciephy_2: phy@3000 {
    reg = <0x3000 0x130>,
          <0x3200 0x200>,
          <0x3400 0x1dc>;

    clocks = <&gcc GCC_PCIE_2_PIPE_CLK>;
    clock-names = "pipe2";
    resets = <&gcc GCC_PCIE_2_PHY_BCR>;
    reset-names = "lane2";

    #clock-cells = <0>;
    clock-output-names = "pcie_2_pipe_clk_src";

    #phy-cells = <0>;
   };
  };

  rpm_msg_ram: sram@68000 {
   compatible = "qcom,rpm-msg-ram";
   reg = <0x00068000 0x6000>;
  };

  qfprom@74000 {
   compatible = "qcom,msm8996-qfprom", "qcom,qfprom";
   reg = <0x00074000 0x8ff>;
   #address-cells = <1>;
   #size-cells = <1>;

   qusb2p_hstx_trim: hstx-trim@24e {
    reg = <0x24e 0x2>;
    bits = <5 4>;
   };

   qusb2s_hstx_trim: hstx-trim@24f {
    reg = <0x24f 0x1>;
    bits = <1 4>;
   };

   speedbin_efuse: speedbin@133 {
    reg = <0x133 0x1>;
    bits = <5 3>;
   };
  };

  rng: rng@83000 {
   compatible = "qcom,prng-ee";
   reg = <0x00083000 0x1000>;
   clocks = <&gcc GCC_PRNG_AHB_CLK>;
   clock-names = "core";
  };

  gcc: clock-controller@300000 {
   compatible = "qcom,gcc-msm8996";
   #clock-cells = <1>;
   #reset-cells = <1>;
   #power-domain-cells = <1>;
   reg = <0x00300000 0x90000>;

   clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
     <&rpmcc RPM_SMD_LN_BB_CLK>,
     <&sleep_clk>,
     <&pciephy_0>,
     <&pciephy_1>,
     <&pciephy_2>,
     <&usb3phy>,
     <&ufsphy 0>,
     <&ufsphy 1>,
     <&ufsphy 2>;
   clock-names = "cxo",
          "cxo2",
          "sleep_clk",
          "pcie_0_pipe_clk_src",
          "pcie_1_pipe_clk_src",
          "pcie_2_pipe_clk_src",
          "usb3_phy_pipe_clk_src",
          "ufs_rx_symbol_0_clk_src",
          "ufs_rx_symbol_1_clk_src",
          "ufs_tx_symbol_0_clk_src";
  };

  bimc: interconnect@408000 {
   compatible = "qcom,msm8996-bimc";
   reg = <0x00408000 0x5a000>;
   #interconnect-cells = <1>;
  };

  tsens0: thermal-sensor@4a9000 {
   compatible = "qcom,msm8996-tsens", "qcom,tsens-v2";
   reg = <0x004a9000 0x1000>, /* TM */
         <0x004a8000 0x1000>; /* SROT */
   #qcom,sensors = <13>;
   interrupts = <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>;
   interrupt-names = "uplow", "critical";
   #thermal-sensor-cells = <1>;
  };

  tsens1: thermal-sensor@4ad000 {
   compatible = "qcom,msm8996-tsens", "qcom,tsens-v2";
   reg = <0x004ad000 0x1000>, /* TM */
         <0x004ac000 0x1000>; /* SROT */
   #qcom,sensors = <8>;
   interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>;
   interrupt-names = "uplow", "critical";
   #thermal-sensor-cells = <1>;
  };

  cryptobam: dma-controller@644000 {
   compatible = "qcom,bam-v1.7.0";
   reg = <0x00644000 0x24000>;
   interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
   clocks = <&gcc GCC_CE1_CLK>;
   clock-names = "bam_clk";
   #dma-cells = <1>;
   qcom,ee = <0>;
   qcom,controlled-remotely;
  };

  crypto: crypto@67a000 {
   compatible = "qcom,crypto-v5.4";
   reg = <0x0067a000 0x6000>;
   clocks = <&gcc GCC_CE1_AHB_CLK>,
     <&gcc GCC_CE1_AXI_CLK>,
     <&gcc GCC_CE1_CLK>;
   clock-names = "iface", "bus", "core";
   dmas = <&cryptobam 6>, <&cryptobam 7>;
   dma-names = "rx", "tx";
  };

  cnoc: interconnect@500000 {
   compatible = "qcom,msm8996-cnoc";
   reg = <0x00500000 0x1000>;
   #interconnect-cells = <1>;
  };

  snoc: interconnect@524000 {
   compatible = "qcom,msm8996-snoc";
   reg = <0x00524000 0x1c000>;
   #interconnect-cells = <1>;
  };

  a0noc: interconnect@543000 {
   compatible = "qcom,msm8996-a0noc";
   reg = <0x00543000 0x6000>;
   #interconnect-cells = <1>;
   clock-names = "aggre0_snoc_axi",
          "aggre0_cnoc_ahb",
          "aggre0_noc_mpu_cfg";
   clocks = <&gcc GCC_AGGRE0_SNOC_AXI_CLK>,
     <&gcc GCC_AGGRE0_CNOC_AHB_CLK>,
     <&gcc GCC_AGGRE0_NOC_MPU_CFG_AHB_CLK>;
   power-domains = <&gcc AGGRE0_NOC_GDSC>;
  };

  a1noc: interconnect@562000 {
   compatible = "qcom,msm8996-a1noc";
   reg = <0x00562000 0x5000>;
   #interconnect-cells = <1>;
  };

  a2noc: interconnect@583000 {
   compatible = "qcom,msm8996-a2noc";
   reg = <0x00583000 0x7000>;
   #interconnect-cells = <1>;
   clock-names = "aggre2_ufs_axi", "ufs_axi";
   clocks = <&gcc GCC_AGGRE2_UFS_AXI_CLK>,
     <&gcc GCC_UFS_AXI_CLK>;
  };

  mnoc: interconnect@5a4000 {
   compatible = "qcom,msm8996-mnoc";
   reg = <0x005a4000 0x1c000>;
   #interconnect-cells = <1>;
   clock-names = "iface";
   clocks = <&mmcc AHB_CLK_SRC>;
  };

  pnoc: interconnect@5c0000 {
   compatible = "qcom,msm8996-pnoc";
   reg = <0x005c0000 0x3000>;
   #interconnect-cells = <1>;
  };

  tcsr_mutex: hwlock@740000 {
   compatible = "qcom,tcsr-mutex";
   reg = <0x00740000 0x20000>;
   #hwlock-cells = <1>;
  };

  tcsr_1: syscon@760000 {
   compatible = "qcom,tcsr-msm8996", "syscon";
   reg = <0x00760000 0x20000>;
  };

  tcsr_2: syscon@7a0000 {
   compatible = "qcom,tcsr-msm8996", "syscon";
   reg = <0x007a0000 0x18000>;
  };

  mmcc: clock-controller@8c0000 {
   compatible = "qcom,mmcc-msm8996";
   #clock-cells = <1>;
   #reset-cells = <1>;
   #power-domain-cells = <1>;
   reg = <0x008c0000 0x40000>;
   clocks = <&xo_board>,
     <&gcc GPLL0>,
     <&gcc GCC_MMSS_NOC_CFG_AHB_CLK>,
     <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
     <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
     <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
     <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
     <&mdss_hdmi_phy>;
   clock-names = "xo",
          "gpll0",
          "gcc_mmss_noc_cfg_ahb_clk",
          "dsi0pll",
          "dsi0pllbyte",
          "dsi1pll",
          "dsi1pllbyte",
          "hdmipll";
   assigned-clocks = <&mmcc MMPLL9_PLL>,
       <&mmcc MMPLL1_PLL>,
       <&mmcc MMPLL3_PLL>,
       <&mmcc MMPLL4_PLL>,
       <&mmcc MMPLL5_PLL>;
   assigned-clock-rates = <624000000>,
            <810000000>,
            <980000000>,
            <960000000>,
            <825000000>;
  };

  mdss: display-subsystem@900000 {
   compatible = "qcom,mdss";

   reg = <0x00900000 0x1000>,
         <0x009b0000 0x1040>,
         <0x009b8000 0x1040>;
   reg-names = "mdss_phys",
        "vbif_phys",
        "vbif_nrt_phys";

   power-domains = <&mmcc MDSS_GDSC>;
   interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;

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

   clocks = <&mmcc MDSS_AHB_CLK>,
     <&mmcc MDSS_MDP_CLK>;
   clock-names = "iface", "core";

   resets = <&mmcc MDSS_BCR>;

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

   status = "disabled";

   mdp: display-controller@901000 {
    compatible = "qcom,msm8996-mdp5", "qcom,mdp5";
    reg = <0x00901000 0x90000>;
    reg-names = "mdp_phys";

    interrupt-parent = <&mdss>;
    interrupts = <0>;

    clocks = <&mmcc MDSS_AHB_CLK>,
      <&mmcc MDSS_AXI_CLK>,
      <&mmcc MDSS_MDP_CLK>,
      <&mmcc SMMU_MDP_AXI_CLK>,
      <&mmcc MDSS_VSYNC_CLK>;
    clock-names = "iface",
           "bus",
           "core",
           "iommu",
           "vsync";

    iommus = <&mdp_smmu 0>;

    assigned-clocks = <&mmcc MDSS_MDP_CLK>,
      <&mmcc MDSS_VSYNC_CLK>;
    assigned-clock-rates = <300000000>,
      <19200000>;

    interconnects = <&mnoc MASTER_MDP_PORT0 &bimc SLAVE_EBI_CH0>,
      <&mnoc MASTER_MDP_PORT1 &bimc SLAVE_EBI_CH0>,
      <&mnoc MASTER_ROTATOR &bimc SLAVE_EBI_CH0>;
    interconnect-names = "mdp0-mem", "mdp1-mem", "rotator-mem";

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

     port@0 {
      reg = <0>;
      mdp5_intf3_out: endpoint {
       remote-endpoint = <&mdss_hdmi_in>;
      };
     };

     port@1 {
      reg = <1>;
      mdp5_intf1_out: endpoint {
       remote-endpoint = <&mdss_dsi0_in>;
      };
     };

     port@2 {
      reg = <2>;
      mdp5_intf2_out: endpoint {
       remote-endpoint = <&mdss_dsi1_in>;
      };
     };
    };
   };

   mdss_dsi0: dsi@994000 {
    compatible = "qcom,msm8996-dsi-ctrl",
          "qcom,mdss-dsi-ctrl";
    reg = <0x00994000 0x400>;
    reg-names = "dsi_ctrl";

    interrupt-parent = <&mdss>;
    interrupts = <4>;

    clocks = <&mmcc MDSS_MDP_CLK>,
      <&mmcc MDSS_BYTE0_CLK>,
      <&mmcc MDSS_AHB_CLK>,
      <&mmcc MDSS_AXI_CLK>,
      <&mmcc MMSS_MISC_AHB_CLK>,
      <&mmcc MDSS_PCLK0_CLK>,
      <&mmcc MDSS_ESC0_CLK>;
    clock-names = "mdp_core",
           "byte",
           "iface",
           "bus",
           "core_mmss",
           "pixel",
           "core";
    assigned-clocks = <&mmcc BYTE0_CLK_SRC>,
        <&mmcc PCLK0_CLK_SRC>;
    assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;

    phys = <&mdss_dsi0_phy>;
    status = "disabled";

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

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

     port@0 {
      reg = <0>;
      mdss_dsi0_in: endpoint {
       remote-endpoint = <&mdp5_intf1_out>;
      };
     };

     port@1 {
      reg = <1>;
      mdss_dsi0_out: endpoint {
      };
     };
    };
   };

   mdss_dsi0_phy: phy@994400 {
    compatible = "qcom,dsi-phy-14nm";
    reg = <0x00994400 0x100>,
          <0x00994500 0x300>,
          <0x00994800 0x188>;
    reg-names = "dsi_phy",
         "dsi_phy_lane",
         "dsi_pll";

    #clock-cells = <1>;
    #phy-cells = <0>;

    clocks = <&mmcc MDSS_AHB_CLK>, <&rpmcc RPM_SMD_XO_CLK_SRC>;
    clock-names = "iface", "ref";
    status = "disabled";
   };

   mdss_dsi1: dsi@996000 {
    compatible = "qcom,msm8996-dsi-ctrl",
          "qcom,mdss-dsi-ctrl";
    reg = <0x00996000 0x400>;
    reg-names = "dsi_ctrl";

    interrupt-parent = <&mdss>;
    interrupts = <5>;

    clocks = <&mmcc MDSS_MDP_CLK>,
      <&mmcc MDSS_BYTE1_CLK>,
      <&mmcc MDSS_AHB_CLK>,
      <&mmcc MDSS_AXI_CLK>,
      <&mmcc MMSS_MISC_AHB_CLK>,
      <&mmcc MDSS_PCLK1_CLK>,
      <&mmcc MDSS_ESC1_CLK>;
    clock-names = "mdp_core",
           "byte",
           "iface",
           "bus",
           "core_mmss",
           "pixel",
           "core";
    assigned-clocks = <&mmcc BYTE1_CLK_SRC>,
        <&mmcc PCLK1_CLK_SRC>;
    assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;

    phys = <&mdss_dsi1_phy>;
    status = "disabled";

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

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

     port@0 {
      reg = <0>;
      mdss_dsi1_in: endpoint {
       remote-endpoint = <&mdp5_intf2_out>;
      };
     };

     port@1 {
      reg = <1>;
      mdss_dsi1_out: endpoint {
      };
     };
    };
   };

   mdss_dsi1_phy: phy@996400 {
    compatible = "qcom,dsi-phy-14nm";
    reg = <0x00996400 0x100>,
          <0x00996500 0x300>,
          <0x00996800 0x188>;
    reg-names = "dsi_phy",
         "dsi_phy_lane",
         "dsi_pll";

    #clock-cells = <1>;
    #phy-cells = <0>;

    clocks = <&mmcc MDSS_AHB_CLK>, <&rpmcc RPM_SMD_XO_CLK_SRC>;
    clock-names = "iface", "ref";
    status = "disabled";
   };

   mdss_hdmi: hdmi-tx@9a0000 {
    compatible = "qcom,hdmi-tx-8996";
    reg = <0x009a0000 0x50c>,
          <0x00070000 0x6158>,
          <0x009e0000 0xfff>;
    reg-names = "core_physical",
         "qfprom_physical",
         "hdcp_physical";

    interrupt-parent = <&mdss>;
    interrupts = <8>;

    clocks = <&mmcc MDSS_MDP_CLK>,
      <&mmcc MDSS_AHB_CLK>,
      <&mmcc MDSS_HDMI_CLK>,
      <&mmcc MDSS_HDMI_AHB_CLK>,
      <&mmcc MDSS_EXTPCLK_CLK>;
    clock-names =
     "mdp_core",
     "iface",
     "core",
     "alt_iface",
     "extp";

    phys = <&mdss_hdmi_phy>;
    #sound-dai-cells = <1>;

    status = "disabled";

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

     port@0 {
      reg = <0>;
      mdss_hdmi_in: endpoint {
       remote-endpoint = <&mdp5_intf3_out>;
      };
     };
    };
   };

   mdss_hdmi_phy: phy@9a0600 {
    #phy-cells = <0>;
    compatible = "qcom,hdmi-phy-8996";
    reg = <0x009a0600 0x1c4>,
          <0x009a0a00 0x124>,
          <0x009a0c00 0x124>,
          <0x009a0e00 0x124>,
          <0x009a1000 0x124>,
          <0x009a1200 0x0c8>;
    reg-names = "hdmi_pll",
         "hdmi_tx_l0",
         "hdmi_tx_l1",
         "hdmi_tx_l2",
         "hdmi_tx_l3",
         "hdmi_phy";

    clocks = <&mmcc MDSS_AHB_CLK>,
      <&gcc GCC_HDMI_CLKREF_CLK>,
      <&xo_board>;
    clock-names = "iface",
           "ref",
           "xo";

    #clock-cells = <0>;

    status = "disabled";
   };
  };

  gpu: gpu@b00000 {
   compatible = "qcom,adreno-530.2", "qcom,adreno";

   reg = <0x00b00000 0x3f000>;
   reg-names = "kgsl_3d0_reg_memory";

   interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;

   clocks = <&mmcc GPU_GX_GFX3D_CLK>,
    <&mmcc GPU_AHB_CLK>,
    <&mmcc GPU_GX_RBBMTIMER_CLK>,
    <&gcc GCC_BIMC_GFX_CLK>,
    <&gcc GCC_MMSS_BIMC_GFX_CLK>;

   clock-names = "core",
    "iface",
    "rbbmtimer",
    "mem",
    "mem_iface";

   interconnects = <&bimc MASTER_GRAPHICS_3D &bimc SLAVE_EBI_CH0>;
   interconnect-names = "gfx-mem";

   power-domains = <&mmcc GPU_GX_GDSC>;
   iommus = <&adreno_smmu 0>;

   nvmem-cells = <&speedbin_efuse>;
   nvmem-cell-names = "speed_bin";

   operating-points-v2 = <&gpu_opp_table>;

   status = "disabled";

   #cooling-cells = <2>;

   gpu_opp_table: opp-table {
    compatible = "operating-points-v2";

    /*
     * 624Mhz is only available on speed bins 0 and 3.
     * 560Mhz is only available on speed bins 0, 2 and 3.
     * All the rest are available on all bins of the hardware.
     */
    opp-624000000 {
     opp-hz = /bits/ 64 <624000000>;
     opp-supported-hw = <0x09>;
    };
    opp-560000000 {
     opp-hz = /bits/ 64 <560000000>;
     opp-supported-hw = <0x0d>;
    };
    opp-510000000 {
     opp-hz = /bits/ 64 <510000000>;
     opp-supported-hw = <0xff>;
    };
    opp-401800000 {
     opp-hz = /bits/ 64 <401800000>;
     opp-supported-hw = <0xff>;
    };
    opp-315000000 {
     opp-hz = /bits/ 64 <315000000>;
     opp-supported-hw = <0xff>;
    };
    opp-214000000 {
     opp-hz = /bits/ 64 <214000000>;
     opp-supported-hw = <0xff>;
    };
    opp-133000000 {
     opp-hz = /bits/ 64 <133000000>;
     opp-supported-hw = <0xff>;
    };
   };

   zap-shader {
    memory-region = <&gpu_mem>;
   };
  };

  tlmm: pinctrl@1010000 {
   compatible = "qcom,msm8996-pinctrl";
   reg = <0x01010000 0x300000>;
   interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
   gpio-controller;
   gpio-ranges = <&tlmm 0 0 150>;
   #gpio-cells = <2>;
   interrupt-controller;
   #interrupt-cells = <2>;

   blsp1_spi1_default: blsp1-spi1-default-state {
    spi-pins {
     pins = "gpio0", "gpio1", "gpio3";
     function = "blsp_spi1";
     drive-strength = <12>;
     bias-disable;
    };

    cs-pins {
     pins = "gpio2";
     function = "gpio";
     drive-strength = <16>;
     bias-disable;
     output-high;
    };
   };

   blsp1_spi1_sleep: blsp1-spi1-sleep-state {
    pins = "gpio0", "gpio1", "gpio2", "gpio3";
    function = "gpio";
    drive-strength = <2>;
    bias-pull-down;
   };

   blsp2_uart2_2pins_default: blsp2-uart2-2pins-state {
    pins = "gpio4", "gpio5";
    function = "blsp_uart8";
    drive-strength = <16>;
    bias-disable;
   };

   blsp2_uart2_2pins_sleep: blsp2-uart2-2pins-sleep-state {
    pins = "gpio4", "gpio5";
    function = "gpio";
    drive-strength = <2>;
    bias-disable;
   };

   blsp2_i2c2_default: blsp2-i2c2-state {
    pins = "gpio6", "gpio7";
    function = "blsp_i2c8";
    drive-strength = <16>;
    bias-disable;
   };

   blsp2_i2c2_sleep: blsp2-i2c2-sleep-state {
    pins = "gpio6", "gpio7";
    function = "gpio";
    drive-strength = <2>;
    bias-disable;
   };

   blsp1_i2c6_default: blsp1-i2c6-state {
    pins = "gpio27", "gpio28";
    function = "blsp_i2c6";
    drive-strength = <16>;
    bias-disable;
   };

   blsp1_i2c6_sleep: blsp1-i2c6-sleep-state {
    pins = "gpio27", "gpio28";
    function = "gpio";
    drive-strength = <2>;
    bias-pull-up;
   };

   cci0_default: cci0-default-state {
    pins = "gpio17", "gpio18";
    function = "cci_i2c";
    drive-strength = <16>;
    bias-disable;
   };

   camera0_state_on:
   camera_rear_default: camera-rear-default-state {
    camera0_mclk: mclk0-pins {
     pins = "gpio13";
     function = "cam_mclk";
     drive-strength = <16>;
     bias-disable;
    };

    camera0_rst: rst-pins {
     pins = "gpio25";
     function = "gpio";
     drive-strength = <16>;
     bias-disable;
    };

    camera0_pwdn: pwdn-pins {
     pins = "gpio26";
     function = "gpio";
     drive-strength = <16>;
     bias-disable;
    };
   };

   cci1_default: cci1-default-state {
    pins = "gpio19", "gpio20";
    function = "cci_i2c";
    drive-strength = <16>;
    bias-disable;
   };

   camera1_state_on:
   camera_board_default: camera-board-default-state {
    mclk1-pins {
     pins = "gpio14";
     function = "cam_mclk";
     drive-strength = <16>;
     bias-disable;
    };

    pwdn-pins {
     pins = "gpio98";
     function = "gpio";
     drive-strength = <16>;
     bias-disable;
    };

    rst-pins {
     pins = "gpio104";
     function = "gpio";
     drive-strength = <16>;
     bias-disable;
    };
   };

   camera2_state_on:
   camera_front_default: camera-front-default-state {
    camera2_mclk: mclk2-pins {
     pins = "gpio15";
     function = "cam_mclk";
     drive-strength = <16>;
     bias-disable;
    };

    camera2_rst: rst-pins {
     pins = "gpio23";
     function = "gpio";
     drive-strength = <16>;
     bias-disable;
    };

    pwdn-pins {
     pins = "gpio133";
     function = "gpio";
     drive-strength = <16>;
     bias-disable;
    };
   };

   pcie0_state_on: pcie0-state-on-state {
    perst-pins {
     pins = "gpio35";
     function = "gpio";
     drive-strength = <2>;
     bias-pull-down;
    };

    clkreq-pins {
     pins = "gpio36";
     function = "pci_e0";
     drive-strength = <2>;
     bias-pull-up;
    };

    wake-pins {
     pins = "gpio37";
     function = "gpio";
     drive-strength = <2>;
     bias-pull-up;
    };
   };

   pcie0_state_off: pcie0-state-off-state {
    perst-pins {
     pins = "gpio35";
     function = "gpio";
     drive-strength = <2>;
     bias-pull-down;
    };

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

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

   blsp1_uart2_default: blsp1-uart2-default-state {
    pins = "gpio41", "gpio42", "gpio43", "gpio44";
    function = "blsp_uart2";
    drive-strength = <16>;
    bias-disable;
   };

   blsp1_uart2_sleep: blsp1-uart2-sleep-state {
    pins = "gpio41", "gpio42", "gpio43", "gpio44";
    function = "gpio";
    drive-strength = <2>;
    bias-disable;
   };

   blsp1_i2c3_default: blsp1-i2c3-default-state {
    pins = "gpio47", "gpio48";
    function = "blsp_i2c3";
    drive-strength = <16>;
    bias-disable;
   };

   blsp1_i2c3_sleep: blsp1-i2c3-sleep-state {
    pins = "gpio47", "gpio48";
    function = "gpio";
    drive-strength = <2>;
    bias-disable;
   };

   blsp2_uart3_4pins_default: blsp2-uart3-4pins-state {
    pins = "gpio49", "gpio50", "gpio51", "gpio52";
    function = "blsp_uart9";
    drive-strength = <16>;
    bias-disable;
   };

   blsp2_uart3_4pins_sleep: blsp2-uart3-4pins-sleep-state {
    pins = "gpio49", "gpio50", "gpio51", "gpio52";
    function = "blsp_uart9";
    drive-strength = <2>;
    bias-disable;
   };

   blsp2_i2c3_default: blsp2-i2c3-state-state {
    pins = "gpio51", "gpio52";
    function = "blsp_i2c9";
    drive-strength = <16>;
    bias-disable;
   };

   blsp2_i2c3_sleep: blsp2-i2c3-sleep-state {
    pins = "gpio51", "gpio52";
    function = "gpio";
    drive-strength = <2>;
    bias-disable;
   };

   wcd_intr_default: wcd-intr-default-state {
    pins = "gpio54";
    function = "gpio";
    drive-strength = <2>;
    bias-pull-down;
   };

   blsp2_i2c1_default: blsp2-i2c1-state {
    pins = "gpio55", "gpio56";
    function = "blsp_i2c7";
    drive-strength = <16>;
    bias-disable;
   };

   blsp2_i2c1_sleep: blsp2-i2c1-sleep-state {
    pins = "gpio55", "gpio56";
    function = "gpio";
    drive-strength = <2>;
    bias-disable;
   };

   blsp2_i2c5_default: blsp2-i2c5-state {
    pins = "gpio60", "gpio61";
    function = "blsp_i2c11";
    drive-strength = <2>;
    bias-disable;
   };

   /* Sleep state for BLSP2_I2C5 is missing.. */

   cdc_reset_active: cdc-reset-active-state {
    pins = "gpio64";
    function = "gpio";
    drive-strength = <16>;
    bias-pull-down;
    output-high;
   };

   cdc_reset_sleep: cdc-reset-sleep-state {
    pins = "gpio64";
    function = "gpio";
    drive-strength = <16>;
    bias-disable;
    output-low;
   };

   blsp2_spi6_default: blsp2-spi6-default-state {
    spi-pins {
     pins = "gpio85", "gpio86", "gpio88";
     function = "blsp_spi12";
     drive-strength = <12>;
     bias-disable;
    };

    cs-pins {
     pins = "gpio87";
     function = "gpio";
     drive-strength = <16>;
     bias-disable;
     output-high;
    };
   };

   blsp2_spi6_sleep: blsp2-spi6-sleep-state {
    pins = "gpio85", "gpio86", "gpio87", "gpio88";
    function = "gpio";
    drive-strength = <2>;
    bias-pull-down;
   };

   blsp2_i2c6_default: blsp2-i2c6-state {
    pins = "gpio87", "gpio88";
    function = "blsp_i2c12";
    drive-strength = <16>;
    bias-disable;
   };

   blsp2_i2c6_sleep: blsp2-i2c6-sleep-state {
    pins = "gpio87", "gpio88";
    function = "gpio";
    drive-strength = <2>;
    bias-disable;
   };

   pcie1_state_on: pcie1-on-state {
    perst-pins {
     pins = "gpio130";
     function = "gpio";
     drive-strength = <2>;
     bias-pull-down;
    };

    clkreq-pins {
     pins = "gpio131";
     function = "pci_e1";
     drive-strength = <2>;
     bias-pull-up;
    };

    wake-pins {
     pins = "gpio132";
     function = "gpio";
     drive-strength = <2>;
     bias-pull-down;
    };
   };

   pcie1_state_off: pcie1-off-state {
    /* Perst is missing? */
    clkreq-pins {
     pins = "gpio131";
     function = "gpio";
     drive-strength = <2>;
     bias-disable;
    };

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

   pcie2_state_on: pcie2-on-state {
    perst-pins {
     pins = "gpio114";
     function = "gpio";
     drive-strength = <2>;
     bias-pull-down;
    };

    clkreq-pins {
     pins = "gpio115";
     function = "pci_e2";
     drive-strength = <2>;
     bias-pull-up;
    };

    wake-pins {
     pins = "gpio116";
     function = "gpio";
     drive-strength = <2>;
     bias-pull-down;
    };
   };

   pcie2_state_off: pcie2-off-state {
    /* Perst is missing? */
    clkreq-pins {
     pins = "gpio115";
     function = "gpio";
     drive-strength = <2>;
     bias-disable;
    };

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

   sdc1_state_on: sdc1-on-state {
    clk-pins {
     pins = "sdc1_clk";
     bias-disable;
     drive-strength = <16>;
    };

    cmd-pins {
     pins = "sdc1_cmd";
     bias-pull-up;
     drive-strength = <10>;
    };

    data-pins {
     pins = "sdc1_data";
     bias-pull-up;
     drive-strength = <10>;
    };

    rclk-pins {
     pins = "sdc1_rclk";
     bias-pull-down;
    };
   };

   sdc1_state_off: sdc1-off-state {
    clk-pins {
     pins = "sdc1_clk";
     bias-disable;
     drive-strength = <2>;
    };

    cmd-pins {
     pins = "sdc1_cmd";
     bias-pull-up;
     drive-strength = <2>;
    };

    data-pins {
     pins = "sdc1_data";
     bias-pull-up;
     drive-strength = <2>;
    };

    rclk-pins {
     pins = "sdc1_rclk";
     bias-pull-down;
    };
   };

   sdc2_state_on: sdc2-on-state {
    clk-pins {
     pins = "sdc2_clk";
     bias-disable;
     drive-strength = <16>;
    };

    cmd-pins {
     pins = "sdc2_cmd";
     bias-pull-up;
     drive-strength = <10>;
    };

    data-pins {
     pins = "sdc2_data";
     bias-pull-up;
     drive-strength = <10>;
    };
   };

   sdc2_state_off: sdc2-off-state {
    clk-pins {
     pins = "sdc2_clk";
     bias-disable;
     drive-strength = <2>;
    };

    cmd-pins {
     pins = "sdc2_cmd";
     bias-pull-up;
     drive-strength = <2>;
    };

    data-pins {
     pins = "sdc2_data";
     bias-pull-up;
     drive-strength = <2>;
    };
   };
  };

  sram@290000 {
   compatible = "qcom,rpm-stats";
   reg = <0x00290000 0x10000>;
  };

  spmi_bus: spmi@400f000 {
   compatible = "qcom,spmi-pmic-arb";
   reg = <0x0400f000 0x1000>,
         <0x04400000 0x800000>,
         <0x04c00000 0x800000>,
         <0x05800000 0x200000>,
         <0x0400a000 0x002100>;
   reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
   interrupt-names = "periph_irq";
   interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
   qcom,ee = <0>;
   qcom,channel = <0>;
   #address-cells = <2>;
   #size-cells = <0>;
   interrupt-controller;
   #interrupt-cells = <4>;
  };

  bus@0 {
   power-domains = <&gcc AGGRE0_NOC_GDSC>;
   compatible = "simple-pm-bus";
   #address-cells = <1>;
   #size-cells = <1>;
   ranges = <0x0 0x0 0xffffffff>;

   pcie0: pcie@600000 {
    compatible = "qcom,pcie-msm8996";
    status = "disabled";
    power-domains = <&gcc PCIE0_GDSC>;
    bus-range = <0x00 0xff>;
    num-lanes = <1>;

    reg = <0x00600000 0x2000>,
          <0x0c000000 0xf1d>,
          <0x0c000f20 0xa8>,
          <0x0c100000 0x100000>;
    reg-names = "parf", "dbi", "elbi","config";

    phys = <&pciephy_0>;
    phy-names = "pciephy";

    #address-cells = <3>;
    #size-cells = <2>;
    ranges = <0x01000000 0x0 0x00000000 0x0c200000 0x0 0x100000>,
      <0x02000000 0x0 0x0c300000 0x0c300000 0x0 0xd00000>;

    device_type = "pci";

    interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 411 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 412 IRQ_TYPE_LEVEL_HIGH>;
    interrupt-names = "msi0",
        "msi1",
        "msi2",
        "msi3",
        "msi4",
        "msi5",
        "msi6",
        "msi7";
    #interrupt-cells = <1>;
    interrupt-map-mask = <0 0 0 0x7>;
    interrupt-map = <0 0 0 1 &intc 0 244 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
      <0 0 0 2 &intc 0 245 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
      <0 0 0 3 &intc 0 247 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
      <0 0 0 4 &intc 0 248 IRQ_TYPE_LEVEL_HIGH>; /* int_d */

    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&pcie0_state_on>;
    pinctrl-1 = <&pcie0_state_off>;

    linux,pci-domain = <0>;

    clocks = <&gcc GCC_PCIE_0_PIPE_CLK>,
     <&gcc GCC_PCIE_0_AUX_CLK>,
     <&gcc GCC_PCIE_0_CFG_AHB_CLK>,
     <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
     <&gcc GCC_PCIE_0_SLV_AXI_CLK>;

    clock-names = "pipe",
      "aux",
      "cfg",
      "bus_master",
      "bus_slave";

    pcie@0 {
     device_type = "pci";
     reg = <0x0 0x0 0x0 0x0 0x0>;
     bus-range = <0x01 0xff>;

     #address-cells = <3>;
     #size-cells = <2>;
     ranges;
    };
   };

   pcie1: pcie@608000 {
    compatible = "qcom,pcie-msm8996";
    power-domains = <&gcc PCIE1_GDSC>;
    bus-range = <0x00 0xff>;
    num-lanes = <1>;

    status = "disabled";

    reg = <0x00608000 0x2000>,
          <0x0d000000 0xf1d>,
          <0x0d000f20 0xa8>,
          <0x0d100000 0x100000>;

    reg-names = "parf", "dbi", "elbi","config";

    phys = <&pciephy_1>;
    phy-names = "pciephy";

    #address-cells = <3>;
    #size-cells = <2>;
    ranges = <0x01000000 0x0 0x00000000 0x0d200000 0x0 0x100000>,
      <0x02000000 0x0 0x0d300000 0x0d300000 0x0 0xd00000>;

    device_type = "pci";

    interrupts = <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 414 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 415 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 416 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 417 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 420 IRQ_TYPE_LEVEL_HIGH>;
    interrupt-names = "msi0",
        "msi1",
        "msi2",
        "msi3",
        "msi4",
        "msi5",
        "msi6",
        "msi7";
    #interrupt-cells = <1>;
    interrupt-map-mask = <0 0 0 0x7>;
    interrupt-map = <0 0 0 1 &intc 0 272 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
      <0 0 0 2 &intc 0 273 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
      <0 0 0 3 &intc 0 274 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
      <0 0 0 4 &intc 0 275 IRQ_TYPE_LEVEL_HIGH>; /* int_d */

    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&pcie1_state_on>;
    pinctrl-1 = <&pcie1_state_off>;

    linux,pci-domain = <1>;

    clocks = <&gcc GCC_PCIE_1_PIPE_CLK>,
     <&gcc GCC_PCIE_1_AUX_CLK>,
     <&gcc GCC_PCIE_1_CFG_AHB_CLK>,
     <&gcc GCC_PCIE_1_MSTR_AXI_CLK>,
     <&gcc GCC_PCIE_1_SLV_AXI_CLK>;

    clock-names = "pipe",
      "aux",
      "cfg",
      "bus_master",
      "bus_slave";

    pcie@0 {
     device_type = "pci";
     reg = <0x0 0x0 0x0 0x0 0x0>;
     bus-range = <0x01 0xff>;

     #address-cells = <3>;
     #size-cells = <2>;
     ranges;
    };
   };

   pcie2: pcie@610000 {
    compatible = "qcom,pcie-msm8996";
    power-domains = <&gcc PCIE2_GDSC>;
    bus-range = <0x00 0xff>;
    num-lanes = <1>;
    status = "disabled";
    reg = <0x00610000 0x2000>,
          <0x0e000000 0xf1d>,
          <0x0e000f20 0xa8>,
          <0x0e100000 0x100000>;

    reg-names = "parf", "dbi", "elbi","config";

    phys = <&pciephy_2>;
    phy-names = "pciephy";

    #address-cells = <3>;
    #size-cells = <2>;
    ranges = <0x01000000 0x0 0x00000000 0x0e200000 0x0 0x100000>,
      <0x02000000 0x0 0x0e300000 0x0e300000 0x0 0x1d00000>;

    device_type = "pci";

    interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>,
          <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>;
    interrupt-names = "msi0",
        "msi1",
        "msi2",
        "msi3",
        "msi4",
        "msi5",
        "msi6",
        "msi7";
    #interrupt-cells = <1>;
    interrupt-map-mask = <0 0 0 0x7>;
    interrupt-map = <0 0 0 1 &intc 0 142 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
      <0 0 0 2 &intc 0 143 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
      <0 0 0 3 &intc 0 144 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
      <0 0 0 4 &intc 0 145 IRQ_TYPE_LEVEL_HIGH>; /* int_d */

    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&pcie2_state_on>;
    pinctrl-1 = <&pcie2_state_off>;

    linux,pci-domain = <2>;
    clocks = <&gcc GCC_PCIE_2_PIPE_CLK>,
     <&gcc GCC_PCIE_2_AUX_CLK>,
     <&gcc GCC_PCIE_2_CFG_AHB_CLK>,
     <&gcc GCC_PCIE_2_MSTR_AXI_CLK>,
     <&gcc GCC_PCIE_2_SLV_AXI_CLK>;

    clock-names = "pipe",
      "aux",
      "cfg",
      "bus_master",
      "bus_slave";

    pcie@0 {
     device_type = "pci";
     reg = <0x0 0x0 0x0 0x0 0x0>;
     bus-range = <0x01 0xff>;

     #address-cells = <3>;
     #size-cells = <2>;
     ranges;
    };
   };
  };

  ufshc: ufshc@624000 {
   compatible = "qcom,msm8996-ufshc", "qcom,ufshc",
         "jedec,ufs-2.0";
   reg = <0x00624000 0x2500>;
   interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;

   phys = <&ufsphy>;
   phy-names = "ufsphy";

   power-domains = <&gcc UFS_GDSC>;

   clock-names =
    "core_clk",
    "bus_clk",
    "bus_aggr_clk",
    "iface_clk",
    "core_clk_unipro",
    "core_clk_ice",
    "ref_clk",
    "tx_lane0_sync_clk",
    "rx_lane0_sync_clk";
   clocks =
    <&gcc GCC_UFS_AXI_CLK>,
    <&gcc GCC_SYS_NOC_UFS_AXI_CLK>,
    <&gcc GCC_AGGRE2_UFS_AXI_CLK>,
    <&gcc GCC_UFS_AHB_CLK>,
    <&gcc GCC_UFS_UNIPRO_CORE_CLK>,
    <&gcc GCC_UFS_ICE_CORE_CLK>,
    <&rpmcc RPM_SMD_LN_BB_CLK>,
    <&gcc GCC_UFS_TX_SYMBOL_0_CLK>,
    <&gcc GCC_UFS_RX_SYMBOL_0_CLK>;
   freq-table-hz =
    <100000000 200000000>,
    <0 0>,
    <0 0>,
    <0 0>,
    <75000000 150000000>,
    <150000000 300000000>,
    <0 0>,
    <0 0>,
    <0 0>;

   interconnects = <&a2noc MASTER_UFS &bimc SLAVE_EBI_CH0>,
     <&bimc MASTER_AMPSS_M0 &cnoc SLAVE_UFS_CFG>;
   interconnect-names = "ufs-ddr", "cpu-ufs";

   lanes-per-direction = <1>;
   #reset-cells = <1>;
   status = "disabled";
  };

  ufsphy: phy@627000 {
   compatible = "qcom,msm8996-qmp-ufs-phy";
   reg = <0x00627000 0x1000>;

   clocks = <&rpmcc RPM_SMD_LN_BB_CLK>, <&gcc GCC_UFS_CLKREF_CLK>;
   clock-names = "ref", "qref";

   resets = <&ufshc 0>;
   reset-names = "ufsphy";

   #clock-cells = <1>;
   #phy-cells = <0>;

   status = "disabled";
  };

  camss: camss@a34000 {
   compatible = "qcom,msm8996-camss";
   reg = <0x00a34000 0x1000>,
         <0x00a00030 0x4>,
         <0x00a35000 0x1000>,
         <0x00a00038 0x4>,
         <0x00a36000 0x1000>,
         <0x00a00040 0x4>,
         <0x00a30000 0x100>,
         <0x00a30400 0x100>,
         <0x00a30800 0x100>,
         <0x00a30c00 0x100>,
         <0x00a31000 0x500>,
         <0x00a00020 0x10>,
         <0x00a10000 0x1000>,
         <0x00a14000 0x1000>;
   reg-names = "csiphy0",
    "csiphy0_clk_mux",
    "csiphy1",
    "csiphy1_clk_mux",
    "csiphy2",
    "csiphy2_clk_mux",
    "csid0",
    "csid1",
    "csid2",
    "csid3",
    "ispif",
    "csi_clk_mux",
    "vfe0",
    "vfe1";
   interrupts = <GIC_SPI 78 IRQ_TYPE_EDGE_RISING>,
    <GIC_SPI 79 IRQ_TYPE_EDGE_RISING>,
    <GIC_SPI 80 IRQ_TYPE_EDGE_RISING>,
    <GIC_SPI 296 IRQ_TYPE_EDGE_RISING>,
    <GIC_SPI 297 IRQ_TYPE_EDGE_RISING>,
    <GIC_SPI 298 IRQ_TYPE_EDGE_RISING>,
    <GIC_SPI 299 IRQ_TYPE_EDGE_RISING>,
    <GIC_SPI 309 IRQ_TYPE_EDGE_RISING>,
    <GIC_SPI 314 IRQ_TYPE_EDGE_RISING>,
    <GIC_SPI 315 IRQ_TYPE_EDGE_RISING>;
   interrupt-names = "csiphy0",
    "csiphy1",
    "csiphy2",
    "csid0",
    "csid1",
    "csid2",
    "csid3",
    "ispif",
    "vfe0",
    "vfe1";
   power-domains = <&mmcc VFE0_GDSC>,
     <&mmcc VFE1_GDSC>;
   clocks = <&mmcc CAMSS_TOP_AHB_CLK>,
    <&mmcc CAMSS_ISPIF_AHB_CLK>,
    <&mmcc CAMSS_CSI0PHYTIMER_CLK>,
    <&mmcc CAMSS_CSI1PHYTIMER_CLK>,
    <&mmcc CAMSS_CSI2PHYTIMER_CLK>,
    <&mmcc CAMSS_CSI0_AHB_CLK>,
    <&mmcc CAMSS_CSI0_CLK>,
    <&mmcc CAMSS_CSI0PHY_CLK>,
    <&mmcc CAMSS_CSI0PIX_CLK>,
    <&mmcc CAMSS_CSI0RDI_CLK>,
    <&mmcc CAMSS_CSI1_AHB_CLK>,
    <&mmcc CAMSS_CSI1_CLK>,
    <&mmcc CAMSS_CSI1PHY_CLK>,
    <&mmcc CAMSS_CSI1PIX_CLK>,
    <&mmcc CAMSS_CSI1RDI_CLK>,
    <&mmcc CAMSS_CSI2_AHB_CLK>,
    <&mmcc CAMSS_CSI2_CLK>,
    <&mmcc CAMSS_CSI2PHY_CLK>,
    <&mmcc CAMSS_CSI2PIX_CLK>,
    <&mmcc CAMSS_CSI2RDI_CLK>,
    <&mmcc CAMSS_CSI3_AHB_CLK>,
    <&mmcc CAMSS_CSI3_CLK>,
    <&mmcc CAMSS_CSI3PHY_CLK>,
    <&mmcc CAMSS_CSI3PIX_CLK>,
    <&mmcc CAMSS_CSI3RDI_CLK>,
    <&mmcc CAMSS_AHB_CLK>,
    <&mmcc CAMSS_VFE0_CLK>,
    <&mmcc CAMSS_CSI_VFE0_CLK>,
    <&mmcc CAMSS_VFE0_AHB_CLK>,
    <&mmcc CAMSS_VFE0_STREAM_CLK>,
    <&mmcc CAMSS_VFE1_CLK>,
    <&mmcc CAMSS_CSI_VFE1_CLK>,
    <&mmcc CAMSS_VFE1_AHB_CLK>,
    <&mmcc CAMSS_VFE1_STREAM_CLK>,
    <&mmcc CAMSS_VFE_AHB_CLK>,
    <&mmcc CAMSS_VFE_AXI_CLK>;
   clock-names = "top_ahb",
    "ispif_ahb",
    "csiphy0_timer",
    "csiphy1_timer",
    "csiphy2_timer",
    "csi0_ahb",
    "csi0",
    "csi0_phy",
    "csi0_pix",
    "csi0_rdi",
    "csi1_ahb",
    "csi1",
    "csi1_phy",
    "csi1_pix",
    "csi1_rdi",
    "csi2_ahb",
    "csi2",
    "csi2_phy",
    "csi2_pix",
    "csi2_rdi",
    "csi3_ahb",
    "csi3",
    "csi3_phy",
    "csi3_pix",
    "csi3_rdi",
    "ahb",
    "vfe0",
    "csi_vfe0",
    "vfe0_ahb",
    "vfe0_stream",
    "vfe1",
    "csi_vfe1",
    "vfe1_ahb",
    "vfe1_stream",
    "vfe_ahb",
    "vfe_axi";
   iommus = <&vfe_smmu 0>,
     <&vfe_smmu 1>,
     <&vfe_smmu 2>,
     <&vfe_smmu 3>;
   status = "disabled";
   ports {
    #address-cells = <1>;
    #size-cells = <0>;
   };
  };

  cci: cci@a0c000 {
   compatible = "qcom,msm8996-cci";
   #address-cells = <1>;
   #size-cells = <0>;
   reg = <0xa0c000 0x1000>;
   interrupts = <GIC_SPI 295 IRQ_TYPE_EDGE_RISING>;
   power-domains = <&mmcc CAMSS_GDSC>;
   clocks = <&mmcc CAMSS_TOP_AHB_CLK>,
     <&mmcc CAMSS_CCI_AHB_CLK>,
     <&mmcc CAMSS_CCI_CLK>,
     <&mmcc CAMSS_AHB_CLK>;
   clock-names = "camss_top_ahb",
          "cci_ahb",
          "cci",
          "camss_ahb";
   assigned-clocks = <&mmcc CAMSS_CCI_AHB_CLK>,
       <&mmcc CAMSS_CCI_CLK>;
   assigned-clock-rates = <80000000>, <37500000>;
   pinctrl-names = "default";
   pinctrl-0 = <&cci0_default &cci1_default>;
   status = "disabled";

   cci_i2c0: i2c-bus@0 {
    reg = <0>;
    clock-frequency = <400000>;
    #address-cells = <1>;
    #size-cells = <0>;
   };

   cci_i2c1: i2c-bus@1 {
    reg = <1>;
    clock-frequency = <400000>;
    #address-cells = <1>;
    #size-cells = <0>;
   };
  };

  adreno_smmu: iommu@b40000 {
   compatible = "qcom,msm8996-smmu-v2", "qcom,adreno-smmu", "qcom,smmu-v2";
   reg = <0x00b40000 0x10000>;

   #global-interrupts = <1>;
   interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>;
   #iommu-cells = <1>;

   clocks = <&gcc GCC_MMSS_BIMC_GFX_CLK>,
     <&mmcc GPU_AHB_CLK>;
   clock-names = "bus", "iface";

   power-domains = <&mmcc GPU_GDSC>;
  };

  venus: video-codec@c00000 {
   compatible = "qcom,msm8996-venus";
   reg = <0x00c00000 0xff000>;
   interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
   power-domains = <&mmcc VENUS_GDSC>;
   clocks = <&mmcc VIDEO_CORE_CLK>,
     <&mmcc VIDEO_AHB_CLK>,
     <&mmcc VIDEO_AXI_CLK>,
     <&mmcc VIDEO_MAXI_CLK>;
   clock-names = "core", "iface", "bus", "mbus";
   interconnects = <&mnoc MASTER_VIDEO_P0 &bimc SLAVE_EBI_CH0>,
     <&bimc MASTER_AMPSS_M0 &mnoc SLAVE_VENUS_CFG>;
   interconnect-names = "video-mem", "cpu-cfg";
   iommus = <&venus_smmu 0x00>,
     <&venus_smmu 0x01>,
     <&venus_smmu 0x0a>,
     <&venus_smmu 0x07>,
     <&venus_smmu 0x0e>,
     <&venus_smmu 0x0f>,
     <&venus_smmu 0x08>,
     <&venus_smmu 0x09>,
     <&venus_smmu 0x0b>,
     <&venus_smmu 0x0c>,
     <&venus_smmu 0x0d>,
     <&venus_smmu 0x10>,
     <&venus_smmu 0x11>,
     <&venus_smmu 0x21>,
     <&venus_smmu 0x28>,
     <&venus_smmu 0x29>,
     <&venus_smmu 0x2b>,
     <&venus_smmu 0x2c>,
     <&venus_smmu 0x2d>,
     <&venus_smmu 0x31>;
   memory-region = <&venus_mem>;
   status = "disabled";

   video-decoder {
    compatible = "venus-decoder";
    clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
    clock-names = "core";
    power-domains = <&mmcc VENUS_CORE0_GDSC>;
   };

   video-encoder {
    compatible = "venus-encoder";
    clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
    clock-names = "core";
    power-domains = <&mmcc VENUS_CORE1_GDSC>;
   };
  };

  mdp_smmu: iommu@d00000 {
   compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
   reg = <0x00d00000 0x10000>;

   #global-interrupts = <1>;
   interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>;
   #iommu-cells = <1>;
   clocks = <&mmcc SMMU_MDP_AXI_CLK>,
     <&mmcc SMMU_MDP_AHB_CLK>;
   clock-names = "bus", "iface";

   power-domains = <&mmcc MDSS_GDSC>;
  };

  venus_smmu: iommu@d40000 {
   compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
   reg = <0x00d40000 0x20000>;
   #global-interrupts = <1>;
   interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>;
   power-domains = <&mmcc MMAGIC_VIDEO_GDSC>;
   clocks = <&mmcc SMMU_VIDEO_AXI_CLK>,
     <&mmcc SMMU_VIDEO_AHB_CLK>;
   clock-names = "bus", "iface";
   #iommu-cells = <1>;
   status = "okay";
  };

  vfe_smmu: iommu@da0000 {
   compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
   reg = <0x00da0000 0x10000>;

   #global-interrupts = <1>;
   interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>,
         <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>;
   power-domains = <&mmcc MMAGIC_CAMSS_GDSC>;
   clocks = <&mmcc SMMU_VFE_AXI_CLK>,
     <&mmcc SMMU_VFE_AHB_CLK>;
   clock-names = "bus", "iface";
   #iommu-cells = <1>;
  };

  lpass_q6_smmu: iommu@1600000 {
   compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
   reg = <0x01600000 0x20000>;
   #iommu-cells = <1>;
   power-domains = <&gcc HLOS1_VOTE_LPASS_CORE_GDSC>;

   #global-interrupts = <1>;
   interrupts = <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 394 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
                  <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>;

   clocks = <&gcc GCC_HLOS1_VOTE_LPASS_ADSP_SMMU_CLK>,
     <&gcc GCC_HLOS1_VOTE_LPASS_CORE_SMMU_CLK>;
   clock-names = "bus", "iface";
  };

  slpi_pil: remoteproc@1c00000 {
   compatible = "qcom,msm8996-slpi-pil";
   reg = <0x01c00000 0x4000>;

   interrupts-extended = <&intc 0 390 IRQ_TYPE_EDGE_RISING>,
           <&slpi_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
           <&slpi_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
           <&slpi_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
           <&slpi_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
   interrupt-names = "wdog",
       "fatal",
       "ready",
       "handover",
       "stop-ack";

   clocks = <&xo_board>;
   clock-names = "xo";

   memory-region = <&slpi_mem>;

   qcom,smem-states = <&slpi_smp2p_out 0>;
   qcom,smem-state-names = "stop";

   power-domains = <&rpmpd MSM8996_VDDSSCX>;
   power-domain-names = "ssc_cx";

   status = "disabled";

   glink-edge {
    interrupts = <GIC_SPI 179 IRQ_TYPE_EDGE_RISING>;
    label = "dsps";
    qcom,remote-pid = <3>;
    mboxes = <&apcs_glb 27>;
   };

   smd-edge {
    interrupts = <GIC_SPI 176 IRQ_TYPE_EDGE_RISING>;

    label = "dsps";
    mboxes = <&apcs_glb 25>;
    qcom,smd-edge = <3>;
    qcom,remote-pid = <3>;
   };
  };

  mss_pil: remoteproc@2080000 {
   compatible = "qcom,msm8996-mss-pil";
   reg = <0x2080000 0x100>,
         <0x2180000 0x020>;
   reg-names = "qdsp6", "rmb";

   interrupts-extended = <&intc 0 448 IRQ_TYPE_EDGE_RISING>,
           <&mpss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
           <&mpss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
           <&mpss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
           <&mpss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>,
           <&mpss_smp2p_in 7 IRQ_TYPE_EDGE_RISING>;
   interrupt-names = "wdog", "fatal", "ready",
       "handover", "stop-ack",
       "shutdown-ack";

   clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
     <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
     <&gcc GCC_BOOT_ROM_AHB_CLK>,
     <&xo_board>,
     <&gcc GCC_MSS_GPLL0_DIV_CLK>,
     <&gcc GCC_MSS_SNOC_AXI_CLK>,
     <&gcc GCC_MSS_MNOC_BIMC_AXI_CLK>,
     <&rpmcc RPM_SMD_QDSS_CLK>;
   clock-names = "iface",
          "bus",
          "mem",
          "xo",
          "gpll0_mss",
          "snoc_axi",
          "mnoc_axi",
          "qdss";

   resets = <&gcc GCC_MSS_RESTART>;
   reset-names = "mss_restart";

   power-domains = <&rpmpd MSM8996_VDDCX>,
     <&rpmpd MSM8996_VDDMX>;
   power-domain-names = "cx", "mx";

   qcom,smem-states = <&mpss_smp2p_out 0>;
   qcom,smem-state-names = "stop";

   qcom,halt-regs = <&tcsr_1 0x3000 0x5000 0x4000>;

   status = "disabled";

   mba {
    memory-region = <&mba_mem>;
   };

   mpss {
    memory-region = <&mpss_mem>;
   };

   metadata {
    memory-region = <&mdata_mem>;
   };

   glink-edge {
    interrupts = <GIC_SPI 452 IRQ_TYPE_EDGE_RISING>;
    label = "modem";
    qcom,remote-pid = <1>;
    mboxes = <&apcs_glb 15>;
   };

   smd-edge {
    interrupts = <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>;

    label = "mpss";
    mboxes = <&apcs_glb 12>;
    qcom,smd-edge = <0>;
    qcom,remote-pid = <1>;
   };
  };

  stm@3002000 {
   compatible = "arm,coresight-stm", "arm,primecell";
   reg = <0x3002000 0x1000>,
         <0x8280000 0x180000>;
   reg-names = "stm-base", "stm-stimulus-base";

   clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
   clock-names = "apb_pclk", "atclk";

   out-ports {
    port {
     stm_out: endpoint {
      remote-endpoint =
        <&funnel0_in>;
     };
    };
   };
  };

  tpiu@3020000 {
   compatible = "arm,coresight-tpiu", "arm,primecell";
   reg = <0x3020000 0x1000>;

   clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
   clock-names = "apb_pclk", "atclk";

   in-ports {
    port {
     tpiu_in: endpoint {
      remote-endpoint =
        <&replicator_out1>;
     };
    };
   };
  };

  funnel@3021000 {
   compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
   reg = <0x3021000 0x1000>;

   clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
   clock-names = "apb_pclk", "atclk";

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

    port@7 {
     reg = <7>;
     funnel0_in: endpoint {
      remote-endpoint =
        <&stm_out>;
     };
    };
   };

   out-ports {
    port {
     funnel0_out: endpoint {
      remote-endpoint =
        <&merge_funnel_in0>;
     };
    };
   };
  };

  funnel@3022000 {
   compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
   reg = <0x3022000 0x1000>;

   clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
   clock-names = "apb_pclk", "atclk";

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

    port@6 {
     reg = <6>;
     funnel1_in: endpoint {
      remote-endpoint =
        <&apss_merge_funnel_out>;
     };
    };
   };

   out-ports {
    port {
     funnel1_out: endpoint {
      remote-endpoint =
        <&merge_funnel_in1>;
     };
    };
   };
  };

  funnel@3023000 {
   compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
   reg = <0x3023000 0x1000>;

   clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
   clock-names = "apb_pclk", "atclk";

   in-ports {
    port {
     funnel_in2_in_modem_etm: endpoint {
      remote-endpoint =
        <&modem_etm_out_funnel_in2>;
     };
    };
   };

   out-ports {
    port {
     funnel2_out: endpoint {
      remote-endpoint =
        <&merge_funnel_in2>;
     };
    };
   };
  };

  funnel@3025000 {
   compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
   reg = <0x3025000 0x1000>;

   clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
   clock-names = "apb_pclk", "atclk";

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

    port@0 {
     reg = <0>;
     merge_funnel_in0: endpoint {
      remote-endpoint =
        <&funnel0_out>;
     };
    };

    port@1 {
     reg = <1>;
     merge_funnel_in1: endpoint {
      remote-endpoint =
        <&funnel1_out>;
     };
    };

    port@2 {
     reg = <2>;
     merge_funnel_in2: endpoint {
      remote-endpoint =
        <&funnel2_out>;
     };
    };
   };

   out-ports {
    port {
     merge_funnel_out: endpoint {
      remote-endpoint =
        <&etf_in>;
     };
    };
   };
  };

  replicator@3026000 {
   compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
   reg = <0x3026000 0x1000>;

   clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
   clock-names = "apb_pclk", "atclk";

   in-ports {
    port {
     replicator_in: endpoint {
      remote-endpoint =
        <&etf_out>;
     };
    };
   };

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

    port@0 {
     reg = <0>;
     replicator_out0: endpoint {
      remote-endpoint =
        <&etr_in>;
     };
    };

    port@1 {
     reg = <1>;
     replicator_out1: endpoint {
      remote-endpoint =
        <&tpiu_in>;
     };
    };
   };
  };

  etf@3027000 {
   compatible = "arm,coresight-tmc", "arm,primecell";
   reg = <0x3027000 0x1000>;

   clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
   clock-names = "apb_pclk", "atclk";

   in-ports {
    port {
     etf_in: endpoint {
      remote-endpoint =
        <&merge_funnel_out>;
     };
    };
   };

   out-ports {
    port {
     etf_out: endpoint {
      remote-endpoint =
        <&replicator_in>;
     };
    };
   };
  };

  etr@3028000 {
   compatible = "arm,coresight-tmc", "arm,primecell";
   reg = <0x3028000 0x1000>;

   clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
   clock-names = "apb_pclk", "atclk";
   arm,scatter-gather;

   in-ports {
    port {
     etr_in: endpoint {
      remote-endpoint =
        <&replicator_out0>;
     };
    };
   };
  };

  debug@3810000 {
   compatible = "arm,coresight-cpu-debug", "arm,primecell";
   reg = <0x3810000 0x1000>;

   clocks = <&rpmcc RPM_QDSS_CLK>;
   clock-names = "apb_pclk";

   cpu = <&cpu0>;
  };

  etm@3840000 {
   compatible = "arm,coresight-etm4x", "arm,primecell";
   reg = <0x3840000 0x1000>;

   clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
   clock-names = "apb_pclk", "atclk";

   cpu = <&cpu0>;

   out-ports {
    port {
     etm0_out: endpoint {
      remote-endpoint =
--> --------------------

--> maximum size reached

--> --------------------

[ Dauer der Verarbeitung: 0.53 Sekunden  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


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