| /* |
| * 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 <dt-bindings/input/input.h> |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/pinctrl/qcom,pmic-gpio.h> |
| #include <dt-bindings/pinctrl/qcom,pmic-mpp.h> |
| #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>; |
| /* Trig on both edges - getting close or far away */ |
| interrupts-extended = <&pm8058_gpio 34 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 = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_bmp085_gpios: bmp085-gpios { |
| pinconf { |
| pins = "gpio16"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_mpu3050_gpios: mpu3050-gpios { |
| pinconf { |
| pins = "gpio17"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_sdcc3_gpios: sdcc3-gpios { |
| pinconf { |
| pins = "gpio22"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_sdcc5_gpios: sdcc5-gpios { |
| pinconf { |
| pins = "gpio26"; |
| function = "normal"; |
| input-enable; |
| bias-pull-up; |
| qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_30>; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_ak8975_gpios: ak8975-gpios { |
| pinconf { |
| pins = "gpio33"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| dragon_cm3605_gpios: cm3605-gpios { |
| /* Pin 34 connected to the proxy IRQ */ |
| pinconf_gpio34 { |
| pins = "gpio34"; |
| function = "normal"; |
| input-enable; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| /* Pin 35 connected to ASET */ |
| pinconf_gpio35 { |
| pins = "gpio35"; |
| function = "normal"; |
| output-high; |
| bias-disable; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| 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 = <PMIC_MPP_AMUX_ROUTE_CH5>; |
| power-source = <PM8058_GPIO_S3>; |
| }; |
| }; |
| }; |
| |
| xoadc@197 { |
| /* Reference voltage 2.2 V */ |
| xoadc-ref-supply = <&pm8058_l18>; |
| |
| /* Board-specific channels */ |
| mpp5@5 { |
| /* Connected to AOUT of ALS sensor */ |
| reg = <0x00 0x05>; |
| }; |
| mpp6@6 { |
| /* Connected to test point TP43 */ |
| reg = <0x00 0x06>; |
| }; |
| mpp7@7 { |
| /* Connected to battery thermistor */ |
| reg = <0x00 0x07>; |
| }; |
| mpp8@8 { |
| /* Connected to battery ID detector */ |
| reg = <0x00 0x08>; |
| }; |
| mpp9@9 { |
| /* 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 = <GSBI_PROT_I2C>; |
| |
| 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 = <GSBI_PROT_I2C_UART>; |
| |
| 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@c { |
| compatible = "asahi-kasei,ak8975"; |
| reg = <0x0c>; |
| interrupt-parent = <&pm8058_gpio>; |
| interrupts = <33 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>; |
| interrupt-parent = <&pm8058_gpio>; |
| interrupts = <16 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 is pulled high by a 10k |
| * resistor to VLOGIC so needs to be |
| * active low/falling edge. |
| */ |
| interrupts-extended = <&pm8058_gpio 17 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>; |
| /* |
| * The second interrupt is the PME interrupt |
| * for network wakeup, connected to the TLMM. |
| */ |
| interrupts-extended = <&pm8058_gpio 7 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>; |
| }; |
| }; |
| }; |
| }; |