The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/src/arm64/qcom/msm8994-sony-xperia-kitakami.dtsi

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 // SPDX-License-Identifier: BSD-3-Clause
    2 /*
    3  * Copyright (c) 2020, Konrad Dybcio <konrad.dybcio@somainline.org>
    4  */
    5 
    6 #include "msm8994.dtsi"
    7 #include "pm8994.dtsi"
    8 #include "pmi8994.dtsi"
    9 #include <dt-bindings/gpio/gpio.h>
   10 #include <dt-bindings/input/gpio-keys.h>
   11 
   12 / {
   13         /* required for bootloader to select correct board */
   14 
   15         /*
   16          * We support MSM8994 v2 (0x20000) and v2.1 (0x20001).
   17          * The V1 chip (0x0 and 0x10000) is significantly different
   18          * and requires driver-side changes (including CPR, be warned!!).
   19          * Besides that, it's very rare.
   20          */
   21         qcom,msm-id = <207 0x20000>, <207 0x20001>;
   22         /* We only use pm8994+pmi8994. */
   23         qcom,pmic-id = <0x10009 0x1000a 0x00 0x00>;
   24         /* This property is shared across all kitakami devices. */
   25         qcom,board-id = <8 0>;
   26 
   27         /* Kitakami firmware doesn't support PSCI */
   28         /delete-node/ psci;
   29 
   30         gpio-keys {
   31                 compatible = "gpio-keys";
   32                 autorepeat;
   33 
   34                 button-0 {
   35                         label = "Volume Down";
   36                         gpios = <&pm8994_gpios 2 GPIO_ACTIVE_LOW>;
   37                         linux,input-type = <1>;
   38                         linux,code = <KEY_VOLUMEDOWN>;
   39                         wakeup-source;
   40                         debounce-interval = <15>;
   41                 };
   42 
   43                 button-1 {
   44                         label = "Volume Up";
   45                         gpios = <&pm8994_gpios 3 GPIO_ACTIVE_LOW>;
   46                         linux,input-type = <1>;
   47                         linux,code = <KEY_VOLUMEUP>;
   48                         wakeup-source;
   49                         debounce-interval = <15>;
   50                 };
   51 
   52                 button-2 {
   53                         label = "Camera Snapshot";
   54                         gpios = <&pm8994_gpios 4 GPIO_ACTIVE_LOW>;
   55                         linux,input-type = <1>;
   56                         linux,code = <KEY_CAMERA>;
   57                         wakeup-source;
   58                         debounce-interval = <15>;
   59                 };
   60 
   61                 button-3 {
   62                         label = "Camera Focus";
   63                         gpios = <&pm8994_gpios 5 GPIO_ACTIVE_LOW>;
   64                         linux,input-type = <1>;
   65                         linux,code = <KEY_VOLUMEUP>;
   66                         wakeup-source;
   67                         debounce-interval = <15>;
   68                 };
   69         };
   70 
   71         reserved-memory {
   72                 /* This is for getting crash logs using Android downstream kernels */
   73                 ramoops@1fe00000 {
   74                         compatible = "ramoops";
   75                         reg = <0 0x1fe00000 0 0x200000>;
   76                         console-size = <0x100000>;
   77                         record-size = <0x10000>;
   78                         ftrace-size = <0x10000>;
   79                         pmsg-size = <0x80000>;
   80                 };
   81 
   82                 fb_region: fb_region@40000000 {
   83                         reg = <0 0x40000000 0 0x1000000>;
   84                         no-map;
   85                 };
   86 
   87                 tzapp: memory@c7800000 {
   88                         reg = <0 0xc7800000 0 0x1900000>;
   89                         no-map;
   90                 };
   91         };
   92 };
   93 
   94 &blsp1_spi1 {
   95         status = "okay";
   96 
   97         /* FPC fingerprint reader */
   98 };
   99 
  100 /* I2C1 is disabled on this board */
  101 
  102 &blsp1_i2c2 {
  103         status = "okay";
  104         clock-frequency = <355000>;
  105 
  106         /* NXP PN547 NFC */
  107 };
  108 
  109 &blsp1_i2c6 {
  110         status = "okay";
  111         clock-frequency = <355000>;
  112 
  113         touchscreen: rmi4-i2c-dev@2c {
  114                 compatible = "syna,rmi4-i2c";
  115                 reg = <0x2c>;
  116                 #address-cells = <1>;
  117                 #size-cells = <0>;
  118 
  119                 interrupt-parent = <&tlmm>;
  120                 interrupts = <42 IRQ_TYPE_EDGE_FALLING>;
  121 
  122                 pinctrl-names = "default";
  123                 pinctrl-0 = <&ts_int_active &ts_reset_active>;
  124 
  125                 vdd-supply = <&pm8994_l22>;
  126                 vio-supply = <&pm8994_s4>;
  127 
  128                 syna,reset-delay-ms = <220>;
  129                 syna,startup-delay-ms = <220>;
  130 
  131                 rmi4-f01@1 {
  132                         reg = <0x01>;
  133                         syna,nosleep-mode = <1>;
  134                 };
  135 
  136                 rmi4-f11@11 {
  137                         reg = <0x11>;
  138                         syna,sensor-type = <1>;
  139                 };
  140         };
  141 };
  142 
  143 &blsp1_uart2 {
  144         status = "okay";
  145 };
  146 
  147 &blsp2_i2c5 {
  148         status = "okay";
  149         clock-frequency = <355000>;
  150 
  151         /* sii8620 HDMI/MHL bridge */
  152 };
  153 
  154 &blsp2_uart2 {
  155         status = "okay";
  156 };
  157 
  158 /*
  159  * Kitakami bootloader only turns cont_splash on when it detects
  160  * specific downstream MDSS/backlight nodes in the active DTB.
  161  * One way to use that framebuffer is to load a secondary instance of
  162  * LK with the downstream DTB appended and then, only from there, load
  163  * mainline Linux.
  164  */
  165 &cont_splash_mem {
  166         reg = <0 0x3401000 0 0x2200000>;
  167 };
  168 
  169 &pmi8994_spmi_regulators {
  170         /*
  171          * Yeah, this one *is* managed by RPMPD, but also needs
  172          * to be hacked up as a-o due to the GPU device only accepting a single
  173          * power domain.. which still isn't enough and forces us to bind
  174          * OXILI_CX and OXILI_GX together!
  175          */
  176         vdd_gfx: s2@1700 {
  177                 reg = <0x1700 0x100>;
  178                 regulator-name = "VDD_GFX";
  179                 regulator-min-microvolt = <980000>;
  180                 regulator-max-microvolt = <980000>;
  181 
  182                 /* hack until we rig up the gpu consumer */
  183                 regulator-always-on;
  184         };
  185 };
  186 
  187 &rpm_requests {
  188         /* PMI8994 should probe first, because pmi8994_bby supplies some of PM8994's regulators */
  189         pmi8994_regulators: pmi8994-regulators {
  190                 compatible = "qcom,rpm-pmi8994-regulators";
  191 
  192                 vdd_s1-supply = <&vph_pwr>;
  193                 vdd_bst_byp-supply = <&vph_pwr>;
  194 
  195                 pmi8994_s1: s1 {
  196                         regulator-min-microvolt = <1025000>;
  197                         regulator-max-microvolt = <1025000>;
  198                 };
  199 
  200                 /* S2 & S3 - VDD_GFX */
  201 
  202                 pmi8994_bby: boost-bypass {
  203                         regulator-min-microvolt = <3150000>;
  204                         regulator-max-microvolt = <3600000>;
  205                 };
  206         };
  207 
  208         pm8994_regulators: pm8994-regulators {
  209                 compatible = "qcom,rpm-pm8994-regulators";
  210 
  211                 vdd_s3-supply = <&vph_pwr>;
  212                 vdd_s4-supply = <&vph_pwr>;
  213                 vdd_s5-supply = <&vph_pwr>;
  214                 vdd_s6-supply = <&vph_pwr>;
  215                 vdd_s7-supply = <&vph_pwr>;
  216                 vdd_l1-supply = <&pmi8994_s1>;
  217                 vdd_l2_l26_l28-supply = <&pm8994_s3>;
  218                 vdd_l3_l11-supply = <&pm8994_s3>;
  219                 vdd_l4_l27_l31-supply = <&pm8994_s3>;
  220                 vdd_l6_l12_l32-supply = <&pm8994_s5>;
  221                 vdd_l8_l16_l30-supply = <&vph_pwr>;
  222                 vdd_l9_l10_l18_l22-supply = <&pmi8994_bby>;
  223                 vdd_l13_l19_l23_l24-supply = <&pmi8994_bby>;
  224                 vdd_l14_l15-supply = <&pm8994_s5>;
  225                 vdd_l17_l29-supply = <&pmi8994_bby>;
  226                 vdd_l20_l21-supply = <&pmi8994_bby>;
  227                 vdd_l25-supply = <&pm8994_s3>;
  228                 vdd_lvs1_2-supply = <&pm8994_s4>;
  229 
  230                 /* S1, S2, S6 and S12 are managed by RPMPD */
  231 
  232                 pm8994_s3: s3 {
  233                         regulator-min-microvolt = <1300000>;
  234                         regulator-max-microvolt = <1300000>;
  235                 };
  236 
  237                 pm8994_s4: s4 {
  238                         regulator-min-microvolt = <1800000>;
  239                         regulator-max-microvolt = <1800000>;
  240                         regulator-system-load = <325000>;
  241                         regulator-allow-set-load;
  242                         regulator-always-on;
  243                 };
  244 
  245                 pm8994_s5: s5 {
  246                         regulator-min-microvolt = <2150000>;
  247                         regulator-max-microvolt = <2150000>;
  248                 };
  249 
  250                 pm8994_s7: s7 {
  251                         regulator-min-microvolt = <1000000>;
  252                         regulator-max-microvolt = <1000000>;
  253                 };
  254 
  255                 /*
  256                  * S8 - SPMI-managed VDD_APC0
  257                  * S9, S10 and S11 (the main one) - SPMI-managed VDD_APC1
  258                  */
  259 
  260                 pm8994_l1: l1 {
  261                         regulator-min-microvolt = <1000000>;
  262                         regulator-max-microvolt = <1000000>;
  263                 };
  264 
  265                 pm8994_l2: l2 {
  266                         regulator-min-microvolt = <1250000>;
  267                         regulator-max-microvolt = <1250000>;
  268                         regulator-system-load = <10000>;
  269                         regulator-allow-set-load;
  270                 };
  271 
  272                 pm8994_l3: l3 {
  273                         regulator-min-microvolt = <1100000>;
  274                         regulator-max-microvolt = <1100000>;
  275                         regulator-boot-on;
  276                 };
  277 
  278                 pm8994_l4: l4 {
  279                         regulator-min-microvolt = <1225000>;
  280                         regulator-max-microvolt = <1225000>;
  281                 };
  282 
  283                 /* L5 is inaccessible from RPM */
  284 
  285                 pm8994_l6: l6 {
  286                         regulator-min-microvolt = <1800000>;
  287                         regulator-max-microvolt = <1800000>;
  288                 };
  289 
  290                 /* L7 is inaccessible from RPM */
  291 
  292                 pm8994_l8: l8 {
  293                         regulator-min-microvolt = <1800000>;
  294                         regulator-max-microvolt = <1800000>;
  295                 };
  296 
  297                 pm8994_l9: l9 {
  298                         regulator-min-microvolt = <1800000>;
  299                         regulator-max-microvolt = <1800000>;
  300                 };
  301 
  302                 pm8994_l10: l10 {
  303                         regulator-min-microvolt = <1800000>;
  304                         regulator-max-microvolt = <1800000>;
  305                 };
  306 
  307                 pm8994_l11: l11 {
  308                         regulator-min-microvolt = <1200000>;
  309                         regulator-max-microvolt = <1200000>;
  310                 };
  311 
  312                 pm8994_l12: l12 {
  313                         regulator-min-microvolt = <1800000>;
  314                         regulator-max-microvolt = <1800000>;
  315                         regulator-system-load = <10000>;
  316                         regulator-allow-set-load;
  317                 };
  318 
  319                 pm8994_l13: l13 {
  320                         regulator-min-microvolt = <1800000>;
  321                         regulator-max-microvolt = <2950000>;
  322                 };
  323 
  324                 pm8994_l14: l14 {
  325                         regulator-min-microvolt = <1800000>;
  326                         regulator-max-microvolt = <1800000>;
  327                         regulator-system-load = <10000>;
  328                         regulator-allow-set-load;
  329                         regulator-boot-on;
  330                 };
  331 
  332                 pm8994_l15: l15 {
  333                         regulator-min-microvolt = <1800000>;
  334                         regulator-max-microvolt = <1800000>;
  335                 };
  336 
  337                 pm8994_l16: l16 {
  338                         regulator-min-microvolt = <2700000>;
  339                         regulator-max-microvolt = <2700000>;
  340                 };
  341 
  342                 pm8994_l17: l17 {
  343                         regulator-min-microvolt = <2200000>;
  344                         regulator-max-microvolt = <2200000>;
  345                         regulator-boot-on;
  346                 };
  347 
  348                 pm8994_l18: l18 {
  349                         regulator-min-microvolt = <2850000>;
  350                         regulator-max-microvolt = <2850000>;
  351                         regulator-always-on;
  352                         regulator-boot-on;
  353                 };
  354 
  355                 pm8994_l19: l19 {
  356                         regulator-min-microvolt = <2850000>;
  357                         regulator-max-microvolt = <2850000>;
  358                         regulator-boot-on;
  359                 };
  360 
  361                 pm8994_l20: l20 {
  362                         regulator-min-microvolt = <2950000>;
  363                         regulator-max-microvolt = <2950000>;
  364                         regulator-system-load = <570000>;
  365                         regulator-allow-set-load;
  366                 };
  367 
  368                 pm8994_l21: l21 {
  369                         regulator-min-microvolt = <2950000>;
  370                         regulator-max-microvolt = <2950000>;
  371                         regulator-system-load = <800000>;
  372                         regulator-allow-set-load;
  373                 };
  374 
  375                 pm8994_l22: l22 {
  376                         regulator-min-microvolt = <3000000>;
  377                         regulator-max-microvolt = <3000000>;
  378                         regulator-boot-on;
  379                 };
  380 
  381                 pm8994_l23: l23 {
  382                         regulator-min-microvolt = <2800000>;
  383                         regulator-max-microvolt = <2800000>;
  384                         regulator-always-on;
  385                         regulator-boot-on;
  386                 };
  387 
  388                 pm8994_l24: l24 {
  389                         regulator-min-microvolt = <3075000>;
  390                         regulator-max-microvolt = <3150000>;
  391                 };
  392 
  393                 pm8994_l25: l25 {
  394                         regulator-min-microvolt = <1000000>;
  395                         regulator-max-microvolt = <1000000>;
  396                         regulator-boot-on;
  397                 };
  398 
  399                 pm8994_l26: l26 {
  400                         regulator-min-microvolt = <987500>;
  401                         regulator-max-microvolt = <987500>;
  402                 };
  403 
  404                 pm8994_l27: l27 {
  405                         regulator-min-microvolt = <1200000>;
  406                         regulator-max-microvolt = <1200000>;
  407                         regulator-boot-on;
  408                 };
  409 
  410                 pm8994_l28: l28 {
  411                         regulator-min-microvolt = <1000000>;
  412                         regulator-max-microvolt = <1000000>;
  413                         regulator-system-load = <10000>;
  414                         regulator-allow-set-load;
  415                 };
  416 
  417                 pm8994_l29: l29 {
  418                         regulator-min-microvolt = <2700000>;
  419                         regulator-max-microvolt = <2700000>;
  420                         regulator-boot-on;
  421                 };
  422 
  423                 pm8994_l30: l30 {
  424                         regulator-min-microvolt = <1800000>;
  425                         regulator-max-microvolt = <1800000>;
  426                         regulator-boot-on;
  427                 };
  428 
  429                 pm8994_l31: l31 {
  430                         regulator-min-microvolt = <1200000>;
  431                         regulator-max-microvolt = <1200000>;
  432                         regulator-system-load = <10000>;
  433                         regulator-allow-set-load;
  434                 };
  435 
  436                 pm8994_l32: l32 {
  437                         regulator-min-microvolt = <1800000>;
  438                         regulator-max-microvolt = <1800000>;
  439                 };
  440 
  441                 pm8994_lvs1: lvs1 {
  442                         regulator-boot-on;
  443                 };
  444                 pm8994_lvs2: lvs2 {
  445                         regulator-boot-on;
  446                 };
  447         };
  448 };
  449 
  450 &sdhc1 {
  451         /*
  452          * There is an issue with the eMMC causing permanent
  453          * damage to the card if a quirk isn't addressed.
  454          * Until it's fixed, disable the MMC so as not to brick
  455          * devices.
  456          */
  457         status = "disabled";
  458 
  459         /*
  460          * Downstream pushes 2.95V to the sdhci device,
  461          * but upstream driver REALLY wants to make vmmc 1.8v
  462          * cause of the hs400-1_8v mode. MMC works fine without
  463          * that regulator, so let's not use it for now.
  464          * vqmmc is also disabled cause driver stll complains.
  465          *
  466          * vmmc-supply = <&pm8994_l20>;
  467          * vqmmc-supply = <&pm8994_s4>;
  468          */
  469 };
  470 
  471 &sdhc2 {
  472         status = "okay";
  473 
  474         cd-gpios = <&tlmm 100 0>;
  475         vmmc-supply = <&pm8994_l21>;
  476         vqmmc-supply = <&pm8994_l13>;
  477 };
  478 
  479 &tlmm {
  480         ts_int_active: ts-int-active {
  481                 pins = "gpio42";
  482                 drive-strength = <2>;
  483                 bias-disable;
  484                 input-enable;
  485         };
  486 
  487         ts_reset_active: ts-reset-active {
  488                 pins = "gpio109";
  489                 drive-strength = <2>;
  490                 bias-disable;
  491                 output-low;
  492         };
  493 };

Cache object: 251a1db2a59fe316fe437e7cb6ee6ca3


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.