1025 lines
23 KiB
Plaintext
1025 lines
23 KiB
Plaintext
// SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
#include <dt-bindings/input/input.h>
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/leds/common.h>
|
|
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
|
|
#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
|
|
#include "qcom-msm8660.dtsi"
|
|
#include "pm8058.dtsi"
|
|
|
|
/ {
|
|
model = "Qualcomm APQ8060 Dragonboard";
|
|
compatible = "qcom,apq8060-dragonboard", "qcom,msm8660";
|
|
|
|
aliases {
|
|
serial0 = &gsbi12_serial;
|
|
};
|
|
|
|
chosen {
|
|
stdout-path = "serial0:115200n8";
|
|
};
|
|
|
|
/* 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-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 = <&pm8058_xoadc 0x00 0x05>;
|
|
io-channel-names = "aout";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&dragon_cm3605_gpios>, <&dragon_cm3605_mpps>;
|
|
};
|
|
};
|
|
|
|
&ebi2 {
|
|
/* The EBI2 will instantiate first, then populate its children */
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&dragon_ebi2_pins>;
|
|
status = "okay";
|
|
|
|
/*
|
|
* 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@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;
|
|
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>;
|
|
};
|
|
};
|
|
|
|
&gsbi3 {
|
|
qcom,mode = <GSBI_PROT_I2C>;
|
|
status = "okay";
|
|
};
|
|
|
|
&gsbi3_i2c {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&dragon_gsbi3_i2c_pins>;
|
|
status = "okay";
|
|
|
|
touchscreen@24 {
|
|
compatible = "cypress,cy8ctma340";
|
|
reg = <0x24>;
|
|
/* Certainly we can do at least 400 kHz */
|
|
clock-frequency = <400000>;
|
|
/* IRQ on GPIO61 called /CTP_INT */
|
|
interrupt-parent = <&tlmm>;
|
|
interrupts = <61 IRQ_TYPE_EDGE_FALLING>;
|
|
/*
|
|
* The I2C bus is using a PCA9306 level translator from L16A
|
|
* to L2B so these two voltages are needed and L16A is
|
|
* kind of the IO voltage, however L16Aisn't really fed to
|
|
* the TMA340, which relies entirely on L2B (PM8901 L2).
|
|
*/
|
|
vcpin-supply = <&pm8058_l16>;
|
|
vdd-supply = <&pm8901_l2>;
|
|
/* GPIO58, called WAKE_CTP */
|
|
reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
|
|
touchscreen-size-x = <480>;
|
|
touchscreen-size-y = <800>;
|
|
active-interval-ms = <0>;
|
|
touch-timeout-ms = <255>;
|
|
lowpower-interval-ms = <10>;
|
|
bootloader-key = /bits/ 8 <0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&dragon_tma340_gpios>;
|
|
};
|
|
};
|
|
|
|
&gsbi8 {
|
|
qcom,mode = <GSBI_PROT_I2C>;
|
|
status = "okay";
|
|
};
|
|
|
|
&gsbi8_i2c {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&dragon_gsbi8_i2c_pins>;
|
|
status = "okay";
|
|
|
|
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>;
|
|
};
|
|
};
|
|
|
|
&gsbi12 {
|
|
qcom,mode = <GSBI_PROT_I2C_UART>;
|
|
status = "okay";
|
|
};
|
|
|
|
&gsbi12_serial {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&dragon_gsbi12_serial_pins>;
|
|
status = "okay";
|
|
};
|
|
|
|
&gsbi12_i2c {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&dragon_gsbi12_i2c_pins>;
|
|
status = "okay";
|
|
|
|
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
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
&pm8058 {
|
|
interrupts-extended = <&tlmm 88 IRQ_TYPE_LEVEL_LOW>;
|
|
};
|
|
|
|
&pm8058_gpio {
|
|
dragon_ethernet_gpios: ethernet-state {
|
|
pinconf {
|
|
pins = "gpio7";
|
|
function = "normal";
|
|
input-enable;
|
|
bias-disable;
|
|
power-source = <PM8058_GPIO_S3>;
|
|
};
|
|
};
|
|
dragon_bmp085_gpios: bmp085-state {
|
|
pinconf {
|
|
pins = "gpio16";
|
|
function = "normal";
|
|
input-enable;
|
|
bias-disable;
|
|
power-source = <PM8058_GPIO_S3>;
|
|
};
|
|
};
|
|
dragon_mpu3050_gpios: mpu3050-state {
|
|
pinconf {
|
|
pins = "gpio17";
|
|
function = "normal";
|
|
input-enable;
|
|
bias-disable;
|
|
power-source = <PM8058_GPIO_S3>;
|
|
};
|
|
};
|
|
dragon_sdcc3_gpios: sdcc3-state {
|
|
pinconf {
|
|
pins = "gpio22";
|
|
function = "normal";
|
|
input-enable;
|
|
bias-disable;
|
|
power-source = <PM8058_GPIO_S3>;
|
|
};
|
|
};
|
|
dragon_sdcc5_gpios: sdcc5-state {
|
|
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-state {
|
|
pinconf {
|
|
pins = "gpio33";
|
|
function = "normal";
|
|
input-enable;
|
|
bias-disable;
|
|
power-source = <PM8058_GPIO_S3>;
|
|
};
|
|
};
|
|
dragon_cm3605_gpios: cm3605-state {
|
|
/* Pin 34 connected to the proxy IRQ */
|
|
gpio34-pins {
|
|
pins = "gpio34";
|
|
function = "normal";
|
|
input-enable;
|
|
bias-disable;
|
|
power-source = <PM8058_GPIO_S3>;
|
|
};
|
|
/* Pin 35 connected to ASET */
|
|
gpio35-pins {
|
|
pins = "gpio35";
|
|
function = "normal";
|
|
output-high;
|
|
bias-disable;
|
|
power-source = <PM8058_GPIO_S3>;
|
|
};
|
|
};
|
|
dragon_veth_gpios: veth-state {
|
|
pinconf {
|
|
pins = "gpio40";
|
|
function = "normal";
|
|
bias-disable;
|
|
drive-push-pull;
|
|
};
|
|
};
|
|
};
|
|
|
|
&pm8058_keypad {
|
|
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>;
|
|
};
|
|
|
|
&pm8058_led48 {
|
|
/*
|
|
* 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.
|
|
*/
|
|
label = "pm8058:infrared:proximitysensor";
|
|
default-state = "off";
|
|
linux,default-trigger = "cm3605";
|
|
status = "okay";
|
|
};
|
|
|
|
&pm8058_led131 {
|
|
label = "pm8058:red";
|
|
color = <LED_COLOR_ID_RED>;
|
|
default-state = "off";
|
|
status = "okay";
|
|
};
|
|
|
|
&pm8058_led132 {
|
|
/*
|
|
* This is actually green too on my
|
|
* board, but documented as yellow.
|
|
*/
|
|
label = "pm8058:yellow";
|
|
color = <LED_COLOR_ID_YELLOW>;
|
|
default-state = "off";
|
|
linux,default-trigger = "mmc0";
|
|
status = "okay";
|
|
};
|
|
|
|
&pm8058_led133 {
|
|
label = "pm8058:green";
|
|
function = LED_FUNCTION_HEARTBEAT;
|
|
color = <LED_COLOR_ID_GREEN>;
|
|
default-state = "on";
|
|
linux,default-trigger = "heartbeat";
|
|
status = "okay";
|
|
};
|
|
|
|
&pm8058_mpps {
|
|
dragon_cm3605_mpps: cm3605-mpps-state {
|
|
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>;
|
|
};
|
|
};
|
|
|
|
&rpm {
|
|
/*
|
|
* Set up of the PMIC RPM regulators for this board
|
|
* PM8901 supplies "preliminary regulators" whatever
|
|
* that means
|
|
*/
|
|
regulators-0 {
|
|
compatible = "qcom,rpm-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>;
|
|
|
|
pm8901_l0: l0 {
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1200000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8901_l1: l1 {
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8901_l2: l2 {
|
|
/* TMA340 requires strictly 3.3V */
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8901_l3: l3 {
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8901_l4: l4 {
|
|
regulator-min-microvolt = <2600000>;
|
|
regulator-max-microvolt = <2600000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8901_l5: l5 {
|
|
regulator-min-microvolt = <2850000>;
|
|
regulator-max-microvolt = <2850000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8901_l6: l6 {
|
|
regulator-min-microvolt = <2200000>;
|
|
regulator-max-microvolt = <2200000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
/* s0 and s1 are SAW regulators controlled over SPM */
|
|
pm8901_s2: s2 {
|
|
regulator-min-microvolt = <1300000>;
|
|
regulator-max-microvolt = <1300000>;
|
|
qcom,switch-mode-frequency = <1600000>;
|
|
bias-pull-down;
|
|
};
|
|
pm8901_s3: s3 {
|
|
regulator-min-microvolt = <1100000>;
|
|
regulator-max-microvolt = <1100000>;
|
|
qcom,switch-mode-frequency = <1600000>;
|
|
bias-pull-down;
|
|
};
|
|
pm8901_s4: s4 {
|
|
regulator-min-microvolt = <1225000>;
|
|
regulator-max-microvolt = <1225000>;
|
|
qcom,switch-mode-frequency = <1600000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
/* LVS0 thru 3 and mvs are just switches */
|
|
pm8901_lvs0: lvs0 {
|
|
regulator-always-on;
|
|
};
|
|
|
|
pm8901_lvs1: lvs1 { };
|
|
|
|
pm8901_lvs2: lvs2 { };
|
|
|
|
pm8901_lvs3: lvs3 { };
|
|
|
|
pm8901_mvs: mvs { };
|
|
};
|
|
|
|
regulators-1 {
|
|
compatible = "qcom,rpm-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>;
|
|
|
|
pm8058_l0: l0 {
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1200000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l1: l1 {
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1200000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l2: l2 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <2600000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l3: l3 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l4: l4 {
|
|
regulator-min-microvolt = <2850000>;
|
|
regulator-max-microvolt = <2850000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l5: l5 {
|
|
regulator-min-microvolt = <2850000>;
|
|
regulator-max-microvolt = <2850000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l6: l6 {
|
|
regulator-min-microvolt = <3000000>;
|
|
regulator-max-microvolt = <3600000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l7: l7 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l8: l8 {
|
|
regulator-min-microvolt = <2900000>;
|
|
regulator-max-microvolt = <3050000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l9: l9 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l10: l10 {
|
|
regulator-min-microvolt = <2600000>;
|
|
regulator-max-microvolt = <2600000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l11: l11 {
|
|
regulator-min-microvolt = <1500000>;
|
|
regulator-max-microvolt = <1500000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l12: l12 {
|
|
regulator-min-microvolt = <2900000>;
|
|
regulator-max-microvolt = <2900000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l13: l13 {
|
|
regulator-min-microvolt = <2050000>;
|
|
regulator-max-microvolt = <2050000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l14: l14 {
|
|
regulator-min-microvolt = <2850000>;
|
|
regulator-max-microvolt = <2850000>;
|
|
};
|
|
|
|
pm8058_l15: l15 {
|
|
regulator-min-microvolt = <2850000>;
|
|
regulator-max-microvolt = <2850000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l16: l16 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
bias-pull-down;
|
|
regulator-always-on;
|
|
};
|
|
|
|
pm8058_l17: l17 {
|
|
// 1.5V according to schematic
|
|
regulator-min-microvolt = <2600000>;
|
|
regulator-max-microvolt = <2600000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l18: l18 {
|
|
regulator-min-microvolt = <2200000>;
|
|
regulator-max-microvolt = <2200000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l19: l19 {
|
|
regulator-min-microvolt = <2500000>;
|
|
regulator-max-microvolt = <2500000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l20: l20 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l21: l21 {
|
|
// 1.1 V according to schematic
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1200000>;
|
|
bias-pull-down;
|
|
regulator-always-on;
|
|
};
|
|
|
|
pm8058_l22: l22 {
|
|
// 1.2 V according to schematic
|
|
regulator-min-microvolt = <1150000>;
|
|
regulator-max-microvolt = <1150000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l23: l23 {
|
|
// Unused
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1200000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l24: l24 {
|
|
// Unused
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1200000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_l25: l25 {
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1200000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_s0: 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;
|
|
};
|
|
|
|
pm8058_s1: 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;
|
|
};
|
|
|
|
pm8058_s2: s2 {
|
|
// 1.3 V according to schematic
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1400000>;
|
|
qcom,switch-mode-frequency = <1600000>;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_s3: s3 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
qcom,switch-mode-frequency = <1600000>;
|
|
regulator-always-on;
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_s4: 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 */
|
|
pm8058_lvs0: lvs0 {
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_lvs1: lvs1 {
|
|
bias-pull-down;
|
|
};
|
|
|
|
pm8058_ncp: ncp {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
qcom,switch-mode-frequency = <1600000>;
|
|
};
|
|
};
|
|
};
|
|
|
|
/* Internal 3.69 GiB eMMC */
|
|
&sdcc1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&dragon_sdcc1_pins>;
|
|
vmmc-supply = <&pm8901_l5>;
|
|
vqmmc-supply = <&pm8901_lvs0>;
|
|
status = "okay";
|
|
};
|
|
|
|
/* External micro SD card, directly connected, pulled up to 2.85 V */
|
|
&sdcc3 {
|
|
/* 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>;
|
|
status = "okay";
|
|
};
|
|
|
|
/*
|
|
* Second external micro SD card, using two TXB104RGYR levelshifters
|
|
* to lift from 1.8 V to 2.85 V
|
|
*/
|
|
&sdcc5 {
|
|
/* 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>;
|
|
status = "okay";
|
|
};
|
|
|
|
&tlmm {
|
|
/* eMMC pins, all 8 data lines connected */
|
|
dragon_sdcc1_pins: sdcc1-state {
|
|
clk-pins {
|
|
pins = "gpio167"; /* SDC1 CLK */
|
|
function = "sdc1";
|
|
drive-strength = <16>;
|
|
bias-disable;
|
|
};
|
|
cmd-pins {
|
|
pins = "gpio168"; /* SDC1 CMD */
|
|
function = "sdc1";
|
|
drive-strength = <10>;
|
|
bias-pull-up;
|
|
};
|
|
data-pins {
|
|
/* SDC1 D0 to D7 */
|
|
pins = "gpio159", "gpio160", "gpio161", "gpio162",
|
|
"gpio163", "gpio164", "gpio165", "gpio166";
|
|
function = "sdc1";
|
|
drive-strength = <10>;
|
|
bias-pull-up;
|
|
};
|
|
};
|
|
|
|
/*
|
|
* The SDCC3 pins are hardcoded (non-muxable) but need some pin
|
|
* configuration.
|
|
*/
|
|
dragon_sdcc3_pins: sdcc3-state {
|
|
clk-pins {
|
|
pins = "sdc3_clk";
|
|
drive-strength = <8>;
|
|
bias-disable;
|
|
};
|
|
cmd-pins {
|
|
pins = "sdc3_cmd";
|
|
drive-strength = <8>;
|
|
bias-pull-up;
|
|
};
|
|
data-pins {
|
|
pins = "sdc3_data";
|
|
drive-strength = <8>;
|
|
bias-pull-up;
|
|
};
|
|
};
|
|
|
|
/* Second SD card slot pins */
|
|
dragon_sdcc5_pins: sdcc5-state {
|
|
clk-pins {
|
|
pins = "gpio97"; /* SDC5 CLK */
|
|
function = "sdc5";
|
|
drive-strength = <16>;
|
|
bias-disable;
|
|
};
|
|
cmd-pins {
|
|
pins = "gpio95"; /* SDC5 CMD */
|
|
function = "sdc5";
|
|
drive-strength = <10>;
|
|
bias-pull-up;
|
|
};
|
|
data-pins {
|
|
/* SDC5 D0 to D3 */
|
|
pins = "gpio96", "gpio98", "gpio99", "gpio100";
|
|
function = "sdc5";
|
|
drive-strength = <10>;
|
|
bias-pull-up;
|
|
};
|
|
};
|
|
|
|
dragon_gsbi3_i2c_pins: gsbi3-i2c-state {
|
|
pins = "gpio43", "gpio44";
|
|
function = "gsbi3";
|
|
drive-strength = <8>;
|
|
/* These have external pull-up 2.2kOhm to 1.8V */
|
|
bias-disable;
|
|
};
|
|
|
|
dragon_gsbi8_i2c_pins: gsbi8-i2c-state {
|
|
pins = "gpio64", "gpio65";
|
|
function = "gsbi8";
|
|
drive-strength = <16>;
|
|
/* These have external pull-up 2.2kOhm to 1.8V */
|
|
bias-disable;
|
|
};
|
|
|
|
dragon_gsbi12_i2c_pins: gsbi12-i2c-state {
|
|
pins = "gpio115", "gpio116";
|
|
function = "gsbi12";
|
|
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-state {
|
|
tx-pins {
|
|
pins = "gpio117";
|
|
function = "gsbi12";
|
|
drive-strength = <8>;
|
|
bias-disable;
|
|
};
|
|
rx-pins {
|
|
pins = "gpio118";
|
|
function = "gsbi12";
|
|
drive-strength = <2>;
|
|
bias-pull-up;
|
|
};
|
|
};
|
|
|
|
dragon_ebi2_pins: ebi2-state {
|
|
/*
|
|
* 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 {
|
|
pins =
|
|
/* "gpio39", CS1A_N this is not good to mux */
|
|
"gpio40", /* CS2A_N */
|
|
"gpio134"; /* CS0_N testpoint TP29 */
|
|
function = "ebi2cs";
|
|
};
|
|
mux1-pins {
|
|
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-state {
|
|
pins = "gpio57"; /* IRQ line */
|
|
function = "gpio";
|
|
bias-pull-up;
|
|
};
|
|
|
|
dragon_tma340_gpios: tma340-state {
|
|
reset-pins {
|
|
/* RESET line, TS_ATTN, WAKE_CTP */
|
|
pins = "gpio58";
|
|
function = "gpio";
|
|
drive-strength = <6>;
|
|
bias-disable;
|
|
};
|
|
irq-pins {
|
|
pins = "gpio61"; /* IRQ line */
|
|
function = "gpio";
|
|
drive-strength = <2>;
|
|
bias-pull-up;
|
|
};
|
|
};
|
|
};
|
|
|
|
&pm8058_xoadc {
|
|
/* Reference voltage 2.2 V */
|
|
xoadc-ref-supply = <&pm8058_l18>;
|
|
|
|
/* Board-specific channels */
|
|
adc-channel@5 {
|
|
/* Connected to AOUT of ALS sensor */
|
|
reg = <0x00 0x05>;
|
|
};
|
|
|
|
adc-channel@6 {
|
|
/* Connected to test point TP43 */
|
|
reg = <0x00 0x06>;
|
|
};
|
|
|
|
adc-channel@7 {
|
|
/* Connected to battery thermistor */
|
|
reg = <0x00 0x07>;
|
|
};
|
|
|
|
adc-channel@8 {
|
|
/* Connected to battery ID detector */
|
|
reg = <0x00 0x08>;
|
|
};
|
|
|
|
adc-channel@9 {
|
|
/* Connected to XO thermistor */
|
|
reg = <0x00 0x09>;
|
|
};
|
|
};
|