Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24cf7316 authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'qcom-dt-for-4.8' of...

Merge tag 'qcom-dt-for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux into next/dt

Qualcomm Device Tree Changes for v4.8

* Reverse BAM dma node reverts
* Add BAM remote control options for affected platforms
* Enable peripherals on APQ8074 dragonboard
* Enable PMA8084 pwrky
* Fix PMIC reg entries by removing unnecessary size element
* Add SCM binding and support for all currently supported boards
* Add Qualcomm WCNSS binding documentation
* Rename db600c to SD_600eval and add peripheral nodes
* Remove gpio key entry from Nexus7
* Add APQ8060 based dragonboard and associated peripherals
* Add ARMv7 PMU for IPQ4019
* Update smem state cells to match documentation

* tag 'qcom-dt-for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux

: (26 commits)
  dts: ipq4019: support ARMv7 PMU
  ARM: dts: add Qualcomm APQ8060-based Dragonboard
  ARM: dts: move the fixed MMC regulator to SURF board
  ARM: dts: fix the MSM8660 RTC base address
  ARM: dts: add I2C block in GSBI12
  ARM: dts: add L2CC and RPM with regulators for MSM8660
  ARM: dts: add SDCC5 to Qualcomm MSM8660
  ARM: dts: add GPIO and MPP to MSM8660 PMIC
  device-tree: nexus7: Remove power gpio key entry and use pmic8xxx-pwrkey
  arm: dts: qcom: Update smem state cells usage
  ARM: dts: qcom: msm8974-honami: Set DMA as remotely controlled
  ARM: dts: sd_600eval: Fix eMMC lockup issue
  ARM: dts: apq8064: rename db600c to SD_600eval
  ARM: dts: apq8064: move sdcc3 pinctrls out of baord file
  ARM: dts: apq8064: move sdcc1 pinctrl nodes to soc file
  dt: binding: Add Qualcomm WCNSS control binding
  dts: qcom: apq8064: Add SCM firmware node
  dts: qcom: msm8974: Add SCM firmware node
  dts: qcom: apq8084: Add SCM firmware node
  dt/bindings: firmware: Add Qualcomm SCM binding
  ...

Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents abda5334 c3d53130
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
QCOM Secure Channel Manager (SCM)

Qualcomm processors include an interface to communicate to the secure firmware.
This interface allows for clients to request different types of actions.  These
can include CPU power up/down, HDCP requests, loading of firmware, and other
assorted actions.

Required properties:
- compatible: must contain one of the following:
 * "qcom,scm-apq8064" for APQ8064 platforms
 * "qcom,scm-msm8660" for MSM8660 platforms
 * "qcom,scm-msm8690" for MSM8690 platforms
 * "qcom,scm" for later processors (MSM8916, APQ8084, MSM8974, etc)
- clocks: One to three clocks may be required based on compatible.
 * Only core clock required for "qcom,scm-apq8064", "qcom,scm-msm8660", and "qcom,scm-msm8960"
 * Core, iface, and bus clocks required for "qcom,scm"
- clock-names: Must contain "core" for the core clock, "iface" for the interface
  clock and "bus" for the bus clock per the requirements of the compatible.

Example for MSM8916:

	firmware {
		scm {
			compatible = "qcom,scm";
			clocks = <&gcc GCC_CRYPTO_CLK> , <&gcc GCC_CRYPTO_AXI_CLK>, <&gcc GCC_CRYPTO_AHB_CLK>;
			clock-names = "core", "bus", "iface";
		};
	};
+116 −0
Original line number Diff line number Diff line
Qualcomm WCNSS Binding

This binding describes the Qualcomm WCNSS hardware. It consists of control
block and a BT, WiFi and FM radio block, all using SMD as command channels.

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be: "qcom,wcnss",

- qcom,smd-channel:
	Usage: required
	Value type: <string>
	Definition: standard SMD property specifying the SMD channel used for
		    communication with the WiFi firmware.
		    Should be "WCNSS_CTRL".

- qcom,mmio:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: reference to a node specifying the wcnss "ccu" and "dxe"
		    register blocks. The node must be compatible with one of
		    the following:
		    "qcom,riva",
		    "qcom,pronto"

= SUBNODES
The subnodes of the wcnss node are optional and describe the individual blocks in
the WCNSS.

== Bluetooth
The following properties are defined to the bluetooth node:

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be:
		    "qcom,wcnss-bt"

== WiFi
The following properties are defined to the WiFi node:

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be one of:
		    "qcom,wcnss-wlan",

- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify the "rx" and "tx" interrupts

- interrupt-names:
	Usage: required
	Value type: <stringlist>
	Definition: must contain "rx" and "tx"

- qcom,smem-state:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should reference the tx-enable and tx-rings-empty SMEM states

- qcom,smem-state-names:
	Usage: required
	Value type: <stringlist>
	Definition: must contain "tx-enable" and "tx-rings-empty"

= EXAMPLE
The following example represents a SMD node, with one edge representing the
"pronto" subsystem, with the wcnss device and its wcn3680 BT and WiFi blocks
described; as found on the 8974 platform.

smd {
	compatible = "qcom,smd";

	pronto-edge {
		interrupts = <0 142 1>;

		qcom,ipc = <&apcs 8 17>;
		qcom,smd-edge = <6>;

		wcnss {
			compatible = "qcom,wcnss";
			qcom,smd-channels = "WCNSS_CTRL";

			#address-cells = <1>;
			#size-cells = <1>;

			qcom,mmio = <&pronto>;

			bt {
				compatible = "qcom,wcnss-bt";
			};

			wlan {
				compatible = "qcom,wcnss-wlan";

				interrupts = <0 145 0>, <0 146 0>;
				interrupt-names = "tx", "rx";

				qcom,smem-state = <&apps_smsm 10>, <&apps_smsm 9>;
				qcom,smem-state-names = "tx-enable", "tx-rings-empty";
			};
		};
	};
};

soc {
	pronto: pronto {
		compatible = "qcom,pronto";

		reg = <0xfb204000 0x2000>, <0xfb202000 0x1000>, <0xfb21b000 0x3000>;
		reg-names = "ccu", "dxe", "pmu";
	};
};
+2 −1
Original line number Diff line number Diff line
@@ -578,7 +578,8 @@ dtb-$(CONFIG_ARCH_PRIMA2) += \
dtb-$(CONFIG_ARCH_OXNAS) += \
	wd-mbwe.dtb
dtb-$(CONFIG_ARCH_QCOM) += \
	qcom-apq8064-arrow-db600c.dtb \
	qcom-apq8060-dragonboard.dtb \
	qcom-apq8064-arrow-sd-600eval.dtb \
	qcom-apq8064-cm-qs600.dtb \
	qcom-apq8064-ifc6410.dtb \
	qcom-apq8064-sony-xperia-yuga.dtb \
+626 −0
Original line number Diff line number Diff line
/*
 * 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 "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;
		};

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

	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"; /* SDC5 CLK */
					drive-strength = <16>;
					bias-disable;
				};
				cmd {
					pins = "gpio168"; /* SDC5 CMD */
					drive-strength = <10>;
					bias-pull-up;
				};
				data {
					/* SDC5 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_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;
				};
			};
		};

		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_bmp085_gpios: bmp085-gpios {
						pinconf {
							pins = "gpio16";
							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>;
						};
					};
				};
			};
		};

		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>;
					/* GPIO33 has interrupt 224 on the PM8058 */
					interrupt-parent = <&pm8058_gpio>;
					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>;
					/* GPIO16 has interrupt 207 on the PM8058 */
					interrupt-parent = <&pm8058_gpio>;
					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
				};
			};
		};

		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>;
			};
		};
	};
};
Loading