linux/arch/arm/boot/dts/qcom-apq8060-dragonboard.dts
Linus Walleij cff94887d5 ARM: dts: add core I2C devices to the APQ8060 Dragonboard
The APQ8060 Dragonboard has an Atmel AT24c128 EEPROM and a
Wolfson Micro WM8903 codec connected to its GSBI8 I2C bus.
Add entries for these to the device tree. The interrupt line
from the WM8903 chip is not routed anywhere on this design
so it can not be used.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
2017-06-13 12:23:57 -04:00

966 lines
24 KiB
Plaintext

/*
* 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>;
/* 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 = <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@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 = <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@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>;
};
};
};
};