linux/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts
Parth Pancholi 93b8e6fda1 ARM: dts: sd_600eval: Fix eMMC lockup issue
This board locks up if we stress test the eMMC, as the regulator s4 is
unable to supply enough current for all the peripherials attached to it.
As this supply is wired up to most of the peripherials including DDR,
it resulted in such lockup.

This patch fixes this issue by setting s4 regulator correctly with
Auto power mode.

Reported-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
[Srinivas Kandagatla: rewrote the change log]
Tested-by: Girish Sharma <girish.sharma@einfochips.com>
Signed-off-by: Parth Pancholi <parth.pancholi@einfochips.com>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
2016-06-27 17:36:53 -05:00

352 lines
7.2 KiB
Plaintext

#include "qcom-apq8064-v2.0.dtsi"
#include "qcom-apq8064-arrow-sd-600eval-pins.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/mfd/qcom-rpm.h>
/ {
model = "Arrow Electronics, APQ8064 SD_600eval";
compatible = "arrow,sd_600eval", "qcom,apq8064";
aliases {
serial0 = &gsbi7_serial;
serial1 = &gsbi1_serial;
i2c0 = &gsbi2_i2c;
i2c1 = &gsbi3_i2c;
i2c2 = &gsbi4_i2c;
i2c3 = &gsbi7_i2c;
spi0 = &gsbi5_spi;
};
regulators {
compatible = "simple-bus";
vph: regulator-fixed@1 {
compatible = "regulator-fixed";
regulator-min-microvolt = <4500000>;
regulator-max-microvolt = <4500000>;
regulator-name = "VPH";
regulator-type = "voltage";
regulator-boot-on;
};
/* on board fixed 3.3v supply */
vcc3v3: vcc3v3 {
compatible = "regulator-fixed";
regulator-name = "VCC3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
soc {
rpm@108000 {
regulators {
vdd_s1-supply = <&vph>;
vdd_s2-supply = <&vph>;
vdd_s3-supply = <&vph>;
vdd_s4-supply = <&vph>;
vdd_s5-supply = <&vph>;
vdd_s6-supply = <&vph>;
vdd_s7-supply = <&vph>;
vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
vdd_l3_l15_l17-supply = <&vph>;
vdd_l4_l14-supply = <&vph>;
vdd_l5_l8_l16-supply = <&vph>;
vdd_l6_l7-supply = <&vph>;
vdd_l9_l11-supply = <&vph>;
vdd_l10_l22-supply = <&vph>;
vdd_l21_l23_l29-supply = <&vph>;
vdd_l24-supply = <&pm8921_s1>;
vdd_l25-supply = <&pm8921_s1>;
vdd_l26-supply = <&pm8921_s7>;
vdd_l27-supply = <&pm8921_s7>;
vdd_l28-supply = <&pm8921_s7>;
vin_lvs1_3_6-supply = <&pm8921_s4>;
vin_lvs2-supply = <&pm8921_s1>;
vin_lvs4_5_7-supply = <&pm8921_s4>;
s1 {
regulator-always-on;
regulator-min-microvolt = <1225000>;
regulator-max-microvolt = <1225000>;
qcom,switch-mode-frequency = <3200000>;
bias-pull-down;
};
s3 {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1400000>;
qcom,switch-mode-frequency = <4800000>;
};
s4 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
qcom,switch-mode-frequency = <1600000>;
qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
bias-pull-down;
regulator-always-on;
};
s7 {
regulator-min-microvolt = <1300000>;
regulator-max-microvolt = <1300000>;
qcom,switch-mode-frequency = <3200000>;
};
l3 {
regulator-min-microvolt = <3050000>;
regulator-max-microvolt = <3300000>;
bias-pull-down;
};
l4 {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1800000>;
bias-pull-down;
};
l5 {
regulator-min-microvolt = <2750000>;
regulator-max-microvolt = <3000000>;
bias-pull-down;
regulator-boot-on;
regulator-always-on;
};
l6 {
regulator-min-microvolt = <2950000>;
regulator-max-microvolt = <2950000>;
bias-pull-down;
};
l23 {
regulator-min-microvolt = <1700000>;
regulator-max-microvolt = <1900000>;
bias-pull-down;
};
lvs6 {
bias-pull-down;
};
lvs7 {
bias-pull-down;
};
};
};
gsbi@12440000 {
status = "okay";
qcom,mode = <GSBI_PROT_UART_W_FC>;
serial@12450000 {
label = "LS-UART1";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&gsbi1_uart_4pins>;
};
};
gsbi@12480000 {
status = "okay";
qcom,mode = <GSBI_PROT_I2C>;
i2c@124a0000 {
/* On Low speed expansion and Sensors */
label = "LS-I2C0";
status = "okay";
lis3mdl_mag@1e {
compatible = "st,lis3mdl-magn";
reg = <0x1e>;
vdd-supply = <&vcc3v3>;
vddio-supply = <&pm8921_s4>;
pinctrl-names = "default";
pinctrl-0 = <&magneto_pins>;
interrupt-parent = <&tlmm_pinmux>;
st,drdy-int-pin = <2>;
interrupts = <48 IRQ_TYPE_EDGE_RISING>, /* DRDY line */
<31 IRQ_TYPE_EDGE_RISING>; /* INT */
};
};
};
gsbi@16200000 {
status = "okay";
qcom,mode = <GSBI_PROT_I2C>;
i2c@16280000 {
/* On Low speed expansion */
status = "okay";
label = "LS-I2C1";
clock-frequency = <200000>;
eeprom@52 {
compatible = "atmel,24c128";
reg = <0x52>;
pagesize = <64>;
};
};
};
gsbi@16300000 {
status = "okay";
qcom,mode = <GSBI_PROT_I2C>;
i2c@16380000 {
/* On High speed expansion */
label = "HS-CAM-I2C3";
status = "okay";
};
};
gsbi@1a200000 {
status = "okay";
spi@1a280000 {
/* On Low speed expansion */
label = "LS-SPI0";
status = "okay";
};
};
/* DEBUG UART */
gsbi@16600000 {
status = "okay";
qcom,mode = <GSBI_PROT_I2C_UART>;
serial@16640000 {
label = "LS-UART0";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&gsbi7_uart_2pins>;
};
i2c@16680000 {
/* On High speed expansion */
status = "okay";
label = "HS-CAM-I2C2";
};
};
leds {
pinctrl-names = "default";
pinctrl-0 = <&user_leds>, <&mpp_leds>;
compatible = "gpio-leds";
user-led0 {
label = "user0-led";
gpios = <&tlmm_pinmux 3 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
default-state = "off";
};
user-led1 {
label = "user1-led";
gpios = <&tlmm_pinmux 7 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "mmc0";
default-state = "off";
};
user-led2 {
label = "user2-led";
gpios = <&tlmm_pinmux 10 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "mmc1";
default-state = "off";
};
user-led3 {
label = "user3-led";
gpios = <&tlmm_pinmux 11 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "none";
default-state = "off";
};
wifi-led {
label = "WiFi-led";
gpios = <&pm8921_mpps 7 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
bt-led {
label = "BT-led";
gpios = <&pm8921_mpps 8 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
};
pci@1b500000 {
status = "okay";
vdda-supply = <&pm8921_s3>;
vdda_phy-supply = <&pm8921_lvs6>;
vdda_refclk-supply = <&vcc3v3>;
pinctrl-0 = <&pcie_pins>;
pinctrl-names = "default";
perst-gpio = <&tlmm_pinmux 27 GPIO_ACTIVE_LOW>;
};
phy@1b400000 {
status = "okay";
};
sata@29000000 {
status = "okay";
target-supply = <&pm8921_lvs7>;
};
/* OTG */
phy@12500000 {
status = "okay";
dr_mode = "peripheral";
vddcx-supply = <&pm8921_s3>;
v3p3-supply = <&pm8921_l3>;
v1p8-supply = <&pm8921_l4>;
};
phy@12520000 {
status = "okay";
vddcx-supply = <&pm8921_s3>;
v3p3-supply = <&pm8921_l3>;
v1p8-supply = <&pm8921_l23>;
};
phy@12530000 {
status = "okay";
vddcx-supply = <&pm8921_s3>;
v3p3-supply = <&pm8921_l3>;
v1p8-supply = <&pm8921_l23>;
};
gadget@12500000 {
status = "okay";
};
/* OTG */
usb@12500000 {
status = "okay";
};
usb@12520000 {
status = "okay";
};
usb@12530000 {
status = "okay";
};
amba {
/* eMMC */
sdcc@12400000 {
status = "okay";
vmmc-supply = <&pm8921_l5>;
vqmmc-supply = <&pm8921_s4>;
};
/* External micro SD card */
sdcc@12180000 {
status = "okay";
vmmc-supply = <&pm8921_l6>;
pinctrl-names = "default";
pinctrl-0 = <&card_detect>;
cd-gpios = <&tlmm_pinmux 26 GPIO_ACTIVE_HIGH>;
};
};
};
};