/* * Copyright 2016 Linaro Ltd * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #include #include #include #include #include "qcom-msm8660.dtsi" / { model = "Qualcomm APQ8060 Dragonboard"; compatible = "qcom,apq8060-dragonboard", "qcom,msm8660"; aliases { serial0 = &gsbi12_serial; }; chosen { stdout-path = "serial0:115200n8"; }; regulators { compatible = "simple-bus"; /* Main power of the board: 3.7V */ vph: regulator-fixed { compatible = "regulator-fixed"; regulator-min-microvolt = <3700000>; regulator-max-microvolt = <3700000>; regulator-name = "VPH"; regulator-type = "voltage"; regulator-always-on; regulator-boot-on; }; /* GPIO controlled ethernet power regulator */ dragon_veth: xc622a331mrg { compatible = "regulator-fixed"; regulator-name = "XC6222A331MR-G"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&vph>; gpio = <&pm8058_gpio 40 GPIO_ACTIVE_HIGH>; enable-active-high; pinctrl-names = "default"; pinctrl-0 = <&dragon_veth_gpios>; regulator-always-on; }; /* VDDvario fixed regulator */ dragon_vario: nds332p { compatible = "regulator-fixed"; regulator-name = "NDS332P"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; vin-supply = <&pm8058_s3>; }; /* This is a levelshifter for SDCC5 */ dragon_vio_txb: txb0104rgyr { compatible = "regulator-fixed"; regulator-name = "Dragon SDCC levelshifter"; vin-supply = <&pm8058_l14>; regulator-always-on; }; }; /* * Capella CM3605 light and proximity sensor mounted directly * on the sensor board. */ cm3605 { compatible = "capella,cm3605"; vdd-supply = <&pm8058_l14>; // 2.85V aset-gpios = <&pm8058_gpio 35 GPIO_ACTIVE_LOW>; capella,aset-resistance-ohms = <100000>; /* GPIO34 has interrupt 225 on the PM8058 */ /* Trig on both edges - getting close or far away */ interrupts-extended = <&pm8058 225 IRQ_TYPE_EDGE_BOTH>; /* MPP05 analog input to the XOADC */ io-channels = <&xoadc 0x00 0x05>; io-channel-names = "aout"; pinctrl-names = "default"; pinctrl-0 = <&dragon_cm3605_gpios>, <&dragon_cm3605_mpps>; }; soc { pinctrl@800000 { /* eMMMC pins, all 8 data lines connected */ dragon_sdcc1_pins: sdcc1 { mux { pins = "gpio159", "gpio160", "gpio161", "gpio162", "gpio163", "gpio164", "gpio165", "gpio166", "gpio167", "gpio168"; function = "sdc1"; }; clk { pins = "gpio167"; /* SDC1 CLK */ drive-strength = <16>; bias-disable; }; cmd { pins = "gpio168"; /* SDC1 CMD */ drive-strength = <10>; bias-pull-up; }; data { /* SDC1 D0 to D7 */ pins = "gpio159", "gpio160", "gpio161", "gpio162", "gpio163", "gpio164", "gpio165", "gpio166"; drive-strength = <10>; bias-pull-up; }; }; /* * The SDCC3 pins are hardcoded (non-muxable) but need some pin * configuration. */ dragon_sdcc3_pins: sdcc3 { clk { pins = "sdc3_clk"; drive-strength = <8>; bias-disable; }; cmd { pins = "sdc3_cmd"; drive-strength = <8>; bias-pull-up; }; data { pins = "sdc3_data"; drive-strength = <8>; bias-pull-up; }; }; /* Second SD card slot pins */ dragon_sdcc5_pins: sdcc5 { mux { pins = "gpio95", "gpio96", "gpio97", "gpio98", "gpio99", "gpio100"; function = "sdc5"; }; clk { pins = "gpio97"; /* SDC5 CLK */ drive-strength = <16>; bias-disable; }; cmd { pins = "gpio95"; /* SDC5 CMD */ drive-strength = <10>; bias-pull-up; }; data { /* SDC5 D0 to D3 */ pins = "gpio96", "gpio98", "gpio99", "gpio100"; drive-strength = <10>; bias-pull-up; }; }; dragon_gsbi8_i2c_pins: gsbi8_i2c { mux { pins = "gpio64", "gpio65"; function = "gsbi8"; }; pinconf { pins = "gpio64", "gpio65"; drive-strength = <16>; /* These have external pull-up 2.2kOhm to 1.8V */ bias-disable; }; }; dragon_gsbi12_i2c_pins: gsbi12_i2c { mux { pins = "gpio115", "gpio116"; function = "gsbi12"; }; pinconf { pins = "gpio115", "gpio116"; drive-strength = <16>; /* These have external pull-up 4.7kOhm to 1.8V */ bias-disable; }; }; /* Primary serial port uart 0 pins */ dragon_gsbi12_serial_pins: gsbi12_serial { mux { pins = "gpio117", "gpio118"; function = "gsbi12"; }; tx { pins = "gpio117"; drive-strength = <8>; bias-disable; }; rx { pins = "gpio118"; drive-strength = <2>; bias-pull-up; }; }; dragon_ebi2_pins: ebi2 { /* * Pins used by EBI2 on the Dragonboard, actually only * CS2 is used by a real peripheral. CS0 is just * routed to a test point. */ mux0 { pins = /* "gpio39", CS1A_N this is not good to mux */ "gpio40", /* CS2A_N */ "gpio134"; /* CS0_N testpoint TP29 */ function = "ebi2cs"; }; mux1 { pins = /* EBI2_ADDR_7 downto EBI2_ADDR_0 address bus */ "gpio123", "gpio124", "gpio125", "gpio126", "gpio127", "gpio128", "gpio129", "gpio130", /* EBI2_DATA_15 downto EBI2_DATA_0 data bus */ "gpio135", "gpio136", "gpio137", "gpio138", "gpio139", "gpio140", "gpio141", "gpio142", "gpio143", "gpio144", "gpio145", "gpio146", "gpio147", "gpio148", "gpio149", "gpio150", "gpio151", /* EBI2_OE_N */ "gpio153", /* EBI2_ADV */ "gpio157"; /* EBI2_WE_N */ function = "ebi2"; }; }; /* Interrupt line for the KXSD9 accelerometer */ dragon_kxsd9_gpios: kxsd9 { irq { pins = "gpio57"; /* IRQ line */ bias-pull-up; }; }; }; qcom,ssbi@500000 { pmic@0 { keypad@148 { linux,keymap = < MATRIX_KEY(0, 0, KEY_MENU) MATRIX_KEY(0, 2, KEY_1) MATRIX_KEY(0, 3, KEY_4) MATRIX_KEY(0, 4, KEY_7) MATRIX_KEY(1, 0, KEY_UP) MATRIX_KEY(1, 1, KEY_LEFT) MATRIX_KEY(1, 2, KEY_DOWN) MATRIX_KEY(1, 3, KEY_5) MATRIX_KEY(1, 3, KEY_8) MATRIX_KEY(2, 0, KEY_HOME) MATRIX_KEY(2, 1, KEY_REPLY) MATRIX_KEY(2, 2, KEY_2) MATRIX_KEY(2, 3, KEY_6) MATRIX_KEY(3, 0, KEY_VOLUMEUP) MATRIX_KEY(3, 1, KEY_RIGHT) MATRIX_KEY(3, 2, KEY_3) MATRIX_KEY(3, 3, KEY_9) MATRIX_KEY(3, 4, KEY_SWITCHVIDEOMODE) MATRIX_KEY(4, 0, KEY_VOLUMEDOWN) MATRIX_KEY(4, 1, KEY_BACK) MATRIX_KEY(4, 2, KEY_CAMERA) MATRIX_KEY(4, 3, KEY_KBDILLUMTOGGLE) >; keypad,num-rows = <6>; keypad,num-columns = <5>; }; gpio@150 { dragon_ethernet_gpios: ethernet-gpios { pinconf { pins = "gpio7"; function = "normal"; input-enable; bias-disable; power-source = ; }; }; dragon_bmp085_gpios: bmp085-gpios { pinconf { pins = "gpio16"; function = "normal"; input-enable; bias-disable; power-source = ; }; }; dragon_mpu3050_gpios: mpu3050-gpios { pinconf { pins = "gpio17"; function = "normal"; input-enable; bias-disable; power-source = ; }; }; dragon_sdcc3_gpios: sdcc3-gpios { pinconf { pins = "gpio22"; function = "normal"; input-enable; bias-disable; power-source = ; }; }; dragon_sdcc5_gpios: sdcc5-gpios { pinconf { pins = "gpio26"; function = "normal"; input-enable; bias-pull-up; qcom,pull-up-strength = ; power-source = ; }; }; dragon_ak8975_gpios: ak8975-gpios { pinconf { pins = "gpio33"; function = "normal"; input-enable; bias-disable; power-source = ; }; }; dragon_cm3605_gpios: cm3605-gpios { /* Pin 34 connected to the proxy IRQ */ pinconf_gpio34 { pins = "gpio34"; function = "normal"; input-enable; bias-disable; power-source = ; }; /* Pin 35 connected to ASET */ pinconf_gpio35 { pins = "gpio35"; function = "normal"; output-high; bias-disable; power-source = ; }; }; dragon_veth_gpios: veth-gpios { pinconf { pins = "gpio40"; function = "normal"; bias-disable; drive-push-pull; }; }; }; mpps@50 { dragon_cm3605_mpps: cm3605-mpps { pinconf { pins = "mpp5"; function = "analog"; input-enable; bias-high-impedance; /* Let's use channel 5 */ qcom,amux-route = ; power-source = ; }; }; }; xoadc@197 { /* Reference voltage 2.2 V */ xoadc-ref-supply = <&pm8058_l18>; /* Board-specific channels */ mpp5@05 { /* Connected to AOUT of ALS sensor */ reg = <0x00 0x05>; }; mpp6@06 { /* Connected to test point TP43 */ reg = <0x00 0x06>; }; mpp7@07 { /* Connected to battery thermistor */ reg = <0x00 0x07>; }; mpp8@08 { /* Connected to battery ID detector */ reg = <0x00 0x08>; }; mpp9@09 { /* Connected to XO thermistor */ reg = <0x00 0x09>; }; }; led@48 { /* * The keypad LED @0x48 is routed to * the sensor board where it is * connected to an infrared LED * SFH4650 (60mW, @850nm) next to the * ambient light and proximity sensor * Capella Microsystems CM3605. */ compatible = "qcom,pm8058-keypad-led"; reg = <0x48>; label = "pm8058:infrared:proximitysensor"; default-state = "off"; linux,default-trigger = "cm3605"; }; led@131 { compatible = "qcom,pm8058-led"; reg = <0x131>; label = "pm8058:red"; default-state = "off"; }; led@132 { /* * This is actually green too on my * board, but documented as yellow. */ compatible = "qcom,pm8058-led"; reg = <0x132>; label = "pm8058:yellow"; default-state = "off"; linux,default-trigger = "mmc0"; }; led@133 { compatible = "qcom,pm8058-led"; reg = <0x133>; label = "pm8058:green"; default-state = "on"; linux,default-trigger = "heartbeat"; }; }; }; gsbi@19800000 { status = "ok"; qcom,mode = ; i2c@19880000 { status = "ok"; pinctrl-names = "default"; pinctrl-0 = <&dragon_gsbi8_i2c_pins>; eeprom@52 { /* A 16KiB Platform ID EEPROM on the CPU carrier board */ compatible = "atmel,24c128"; reg = <0x52>; vcc-supply = <&pm8058_s3>; pagesize = <64>; }; wm8903: wm8903@1a { /* This Woolfson Micro device has an unrouted interrupt line */ compatible = "wlf,wm8903"; reg = <0x1a>; AVDD-supply = <&pm8058_l16>; CPVDD-supply = <&pm8058_l16>; DBVDD-supply = <&pm8058_s3>; DCVDD-supply = <&pm8058_l0>; gpio-controller; #gpio-cells = <2>; micdet-cfg = <0>; micdet-delay = <100>; gpio-cfg = <0xffffffff 0xffffffff 0 0xffffffff 0xffffffff>; }; }; }; gsbi@19c00000 { status = "ok"; qcom,mode = ; serial@19c40000 { status = "ok"; pinctrl-names = "default"; pinctrl-0 = <&dragon_gsbi12_serial_pins>; }; i2c@19c80000 { status = "ok"; pinctrl-names = "default"; pinctrl-0 = <&dragon_gsbi12_i2c_pins>; ak8975@0c { compatible = "asahi-kasei,ak8975"; reg = <0x0c>; /* FIXME: GPIO33 has interrupt 224 on the PM8058 */ interrupt-parent = <&pm8058>; interrupts = <224 IRQ_TYPE_EDGE_RISING>; pinctrl-names = "default"; pinctrl-0 = <&dragon_ak8975_gpios>; vid-supply = <&pm8058_lvs0>; // 1.8V vdd-supply = <&pm8058_l14>; // 2.85V }; bmp085@77 { compatible = "bosch,bmp085"; reg = <0x77>; /* FIXME: GPIO16 has interrupt 207 on the PM8058 */ interrupt-parent = <&pm8058>; interrupts = <207 IRQ_TYPE_EDGE_RISING>; reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>; pinctrl-names = "default"; pinctrl-0 = <&dragon_bmp085_gpios>; vddd-supply = <&pm8058_lvs0>; // 1.8V vdda-supply = <&pm8058_l14>; // 2.85V }; mpu3050@68 { compatible = "invensense,mpu3050"; reg = <0x68>; /* * GPIO17 has interrupt 208 on the * PM8058, it is pulled high by a 10k * resistor to VLOGIC so needs to be * active low/falling edge. */ interrupts-extended = <&pm8058 208 IRQ_TYPE_EDGE_FALLING>; pinctrl-names = "default"; pinctrl-0 = <&dragon_mpu3050_gpios>; vlogic-supply = <&pm8058_lvs0>; // 1.8V vdd-supply = <&pm8058_l14>; // 2.85V /* * The MPU-3050 acts as a hub for the * accelerometer. */ i2c-gate { #address-cells = <1>; #size-cells = <0>; kxsd9@18 { compatible = "kionix,kxsd9"; reg = <0x18>; interrupt-parent = <&tlmm>; interrupts = <57 IRQ_TYPE_EDGE_FALLING>; pinctrl-names = "default"; pinctrl-0 = <&dragon_kxsd9_gpios>; iovdd-supply = <&pm8058_lvs0>; // 1.8V vdd-supply = <&pm8058_l14>; // 2.85V }; }; }; }; }; external-bus@1a100000 { /* The EBI2 will instantiate first, then populate its children */ status = "ok"; pinctrl-names = "default"; pinctrl-0 = <&dragon_ebi2_pins>; /* * An on-board SMSC LAN9221 chip for "debug ethernet", * which is actually just an ordinary ethernet on the * EBI2. This has a 25MHz chrystal next to it, so no * clocking is needed. */ ethernet-ebi2@2,0 { compatible = "smsc,lan9221", "smsc,lan9115"; reg = <2 0x0 0x100>; /* * GPIO7 has interrupt 198 on the PM8058 * The second interrupt is the PME interrupt * for network wakeup, connected to the TLMM. */ interrupts-extended = <&pm8058 198 IRQ_TYPE_EDGE_FALLING>, <&tlmm 29 IRQ_TYPE_EDGE_RISING>; reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>; vdd33a-supply = <&dragon_veth>; vddvario-supply = <&dragon_vario>; pinctrl-names = "default"; pinctrl-0 = <&dragon_ethernet_gpios>; phy-mode = "mii"; reg-io-width = <2>; smsc,force-external-phy; /* IRQ on edge falling = active low */ smsc,irq-active-low; smsc,irq-push-pull; /* * SLOW chipselect config * Delay 9 cycles (140ns@64MHz) between SMSC * LAN9221 Ethernet controller reads and writes * on CS2. */ qcom,xmem-recovery-cycles = <0>; qcom,xmem-write-hold-cycles = <3>; qcom,xmem-write-delta-cycles = <31>; qcom,xmem-read-delta-cycles = <28>; qcom,xmem-write-wait-cycles = <9>; qcom,xmem-read-wait-cycles = <9>; }; }; rpm@104000 { /* * Set up of the PMIC RPM regulators for this board * PM8901 supplies "preliminary regulators" whatever * that means */ pm8901-regulators { vdd_l0-supply = <&pm8901_s4>; vdd_l1-supply = <&vph>; vdd_l2-supply = <&vph>; vdd_l3-supply = <&vph>; vdd_l4-supply = <&vph>; vdd_l5-supply = <&vph>; vdd_l6-supply = <&vph>; /* vdd_s0-supply, vdd_s1-supply: SAW regulators */ vdd_s2-supply = <&vph>; vdd_s3-supply = <&vph>; vdd_s4-supply = <&vph>; lvs0_in-supply = <&pm8058_s3>; lvs1_in-supply = <&pm8901_s4>; lvs2_in-supply = <&pm8058_l0>; lvs3_in-supply = <&pm8058_s2>; mvs_in-supply = <&pm8058_s3>; l0 { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; bias-pull-down; }; l1 { regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; bias-pull-down; }; l2 { regulator-min-microvolt = <2850000>; regulator-max-microvolt = <3300000>; bias-pull-down; }; l3 { regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; bias-pull-down; }; l4 { regulator-min-microvolt = <2600000>; regulator-max-microvolt = <2600000>; bias-pull-down; }; l5 { regulator-min-microvolt = <2850000>; regulator-max-microvolt = <2850000>; bias-pull-down; }; l6 { regulator-min-microvolt = <2200000>; regulator-max-microvolt = <2200000>; bias-pull-down; }; /* s0 and s1 are SAW regulators controlled over SPM */ s2 { regulator-min-microvolt = <1300000>; regulator-max-microvolt = <1300000>; qcom,switch-mode-frequency = <1600000>; bias-pull-down; }; s3 { regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; qcom,switch-mode-frequency = <1600000>; bias-pull-down; }; s4 { regulator-min-microvolt = <1225000>; regulator-max-microvolt = <1225000>; qcom,switch-mode-frequency = <1600000>; bias-pull-down; }; /* LVS0 thru 3 and mvs0 are just switches */ lvs0 { regulator-always-on; }; lvs1 { }; lvs2 { }; lvs3 { }; mvs0 {}; }; pm8058-regulators { vdd_l0_l1_lvs-supply = <&pm8058_s3>; vdd_l2_l11_l12-supply = <&vph>; vdd_l3_l4_l5-supply = <&vph>; vdd_l6_l7-supply = <&vph>; vdd_l8-supply = <&vph>; vdd_l9-supply = <&vph>; vdd_l10-supply = <&vph>; vdd_l13_l16-supply = <&pm8058_s4>; vdd_l14_l15-supply = <&vph>; vdd_l17_l18-supply = <&vph>; vdd_l19_l20-supply = <&vph>; vdd_l21-supply = <&pm8058_s3>; vdd_l22-supply = <&pm8058_s3>; vdd_l23_l24_l25-supply = <&pm8058_s3>; vdd_s0-supply = <&vph>; vdd_s1-supply = <&vph>; vdd_s2-supply = <&vph>; vdd_s3-supply = <&vph>; vdd_s4-supply = <&vph>; vdd_ncp-supply = <&vph>; l0 { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; bias-pull-down; }; l1 { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; bias-pull-down; }; l2 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <2600000>; bias-pull-down; }; l3 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; bias-pull-down; }; l4 { regulator-min-microvolt = <2850000>; regulator-max-microvolt = <2850000>; bias-pull-down; }; l5 { regulator-min-microvolt = <2850000>; regulator-max-microvolt = <2850000>; bias-pull-down; }; l6 { regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3600000>; bias-pull-down; }; l7 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; bias-pull-down; }; l8 { regulator-min-microvolt = <2900000>; regulator-max-microvolt = <3050000>; bias-pull-down; }; l9 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; bias-pull-down; }; l10 { regulator-min-microvolt = <2600000>; regulator-max-microvolt = <2600000>; bias-pull-down; }; l11 { regulator-min-microvolt = <1500000>; regulator-max-microvolt = <1500000>; bias-pull-down; }; l12 { regulator-min-microvolt = <2900000>; regulator-max-microvolt = <2900000>; bias-pull-down; }; l13 { regulator-min-microvolt = <2050000>; regulator-max-microvolt = <2050000>; bias-pull-down; }; l14 { regulator-min-microvolt = <2850000>; regulator-max-microvolt = <2850000>; }; l15 { regulator-min-microvolt = <2850000>; regulator-max-microvolt = <2850000>; bias-pull-down; }; l16 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; bias-pull-down; regulator-always-on; }; l17 { // 1.5V according to schematic regulator-min-microvolt = <2600000>; regulator-max-microvolt = <2600000>; bias-pull-down; }; l18 { regulator-min-microvolt = <2200000>; regulator-max-microvolt = <2200000>; bias-pull-down; }; l19 { regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; bias-pull-down; }; l20 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; bias-pull-down; }; l21 { // 1.1 V according to schematic regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; bias-pull-down; regulator-always-on; }; l22 { // 1.2 V according to schematic regulator-min-microvolt = <1150000>; regulator-max-microvolt = <1150000>; bias-pull-down; }; l23 { // Unused regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; bias-pull-down; }; l24 { // Unused regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; bias-pull-down; }; l25 { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; bias-pull-down; }; s0 { // regulator-min-microvolt = <500000>; // regulator-max-microvolt = <1325000>; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; qcom,switch-mode-frequency = <1600000>; bias-pull-down; }; s1 { // regulator-min-microvolt = <500000>; // regulator-max-microvolt = <1250000>; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; qcom,switch-mode-frequency = <1600000>; bias-pull-down; }; s2 { // 1.3 V according to schematic regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1400000>; qcom,switch-mode-frequency = <1600000>; bias-pull-down; }; s3 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; qcom,switch-mode-frequency = <1600000>; regulator-always-on; bias-pull-down; }; s4 { regulator-min-microvolt = <2200000>; regulator-max-microvolt = <2200000>; qcom,switch-mode-frequency = <1600000>; regulator-always-on; bias-pull-down; }; /* LVS0 and LVS1 are just switches */ lvs0 { bias-pull-down; }; lvs1 { bias-pull-down; }; ncp { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; qcom,switch-mode-frequency = <1600000>; }; }; }; amba { /* Internal 3.69 GiB eMMC */ sdcc@12400000 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&dragon_sdcc1_pins>; vmmc-supply = <&pm8901_l5>; vqmmc-supply = <&pm8901_lvs0>; }; /* External micro SD card, directly connected, pulled up to 2.85 V */ sdcc@12180000 { status = "okay"; /* Enable SSBI GPIO 22 as input, use for card detect */ pinctrl-names = "default"; pinctrl-0 = <&dragon_sdcc3_pins>, <&dragon_sdcc3_gpios>; cd-gpios = <&pm8058_gpio 22 GPIO_ACTIVE_LOW>; wp-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>; vmmc-supply = <&pm8058_l14>; }; /* * Second external micro SD card, using two TXB104RGYR levelshifters * to lift from 1.8 V to 2.85 V */ sdcc@12200000 { status = "okay"; /* Enable SSBI GPIO 26 as input, use for card detect */ pinctrl-names = "default"; pinctrl-0 = <&dragon_sdcc5_pins>, <&dragon_sdcc5_gpios>; cd-gpios = <&pm8058_gpio 26 GPIO_ACTIVE_LOW>; wp-gpios = <&tlmm 106 GPIO_ACTIVE_HIGH>; vmmc-supply = <&pm8058_l14>; vqmmc-supply = <&dragon_vio_txb>; }; }; }; };