Commit 8eb1f10e authored by Olof Johansson's avatar Olof Johansson

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

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

Qualcomm ARM Based Device Tree Updates for v4.5

* Add support for Sony Xperia Z
* Updates for Sony Honami board
* Updates for APQ8064 generic platform
* Updates for MSM8974 generic platform
* Add fixed rate oscillators for MSM8960 and APQ8064
* Add documentation for SMSM and SMP2P
* Fixup PMIC compat strings
* Add support for SMEM, RPM/SMD on APQ8084
* Fixup compat on IFC5640

* tag 'qcom-dt-for-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux: (24 commits)
  arm: dts: Add support for PMA8084 on APQ8084
  arm: dts: Add RPM/SMD support on APQ8084
  arm: dts: Add APQ8084 SMEM nodes
  ARM: dts: qcom: apq8064-ifc6410 Use hardware flow control for GSBI6
  arm: dts: qcom: apq8064: Add fixed rate on-board oscillators
  ARM: dts: qcom: msm8974: Add i2c8 node
  ARM: dts: qcom: msm8974: Disable wled and move it to honami
  arm: dts: qcom: Add generic PMIC gpio/MPP compat strings
  arm: dts: qcom: Add aliases for PMICs
  arm: dts: qcom: Update ifc6540 compat for qcom boot format
  arm: dts: qcom: Add board clocks
  ARM: dts: qcom: apq8064: Introduce Sony Xperia Z dts
  ARM: dts: qcom: apq8064: Introduce gsbi5 and gsbi5 serial node
  ARM: dts: qcom: apq8064: Declare all pm8921 regulators
  ARM: dts: qcom: apq8064: Add hwmutex and SMEM nodes
  dt-binding: soc: qcom: Introduce qcom, smp2p binding documentation
  dt-binding: soc: qcom: Add Qualcomm SMSM device tree documentation
  devicetree: Add hardware rng entry to qcom-apq8064.dtsi
  ARM: dts: qcom: msm8974-honami: Specify charging parameters
  ARM: dts: qcom: msm8974-honami: Add uSD slot nodes
  ...
Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 960ac2db 4add1074
Qualcomm Shared Memory Point 2 Point binding
The Shared Memory Point to Point (SMP2P) protocol facilitates communication of
a single 32-bit value between two processors. Each value has a single writer
(the local side) and a single reader (the remote side). Values are uniquely
identified in the system by the directed edge (local processor ID to remote
processor ID) and a string identifier.
- compatible:
Usage: required
Value type: <string>
Definition: must be one of:
"qcom,smp2p"
- interrupts:
Usage: required
Value type: <prop-encoded-array>
Definition: one entry specifying the smp2p notification interrupt
- qcom,ipc:
Usage: required
Value type: <prop-encoded-array>
Definition: three entries specifying the outgoing ipc bit used for
signaling the remote end of the smp2p edge:
- phandle to a syscon node representing the apcs registers
- u32 representing offset to the register within the syscon
- u32 representing the ipc bit within the register
- qcom,smem:
Usage: required
Value type: <u32 array>
Definition: two identifiers of the inbound and outbound smem items used
for this edge
- qcom,local-pid:
Usage: required
Value type: <u32>
Definition: specifies the identfier of the local endpoint of this edge
- qcom,remote-pid:
Usage: required
Value type: <u32>
Definition: specifies the identfier of the remote endpoint of this edge
= SUBNODES
Each SMP2P pair contain a set of inbound and outbound entries, these are
described in subnodes of the smp2p device node. The node names are not
important.
- qcom,entry-name:
Usage: required
Value type: <string>
Definition: specifies the name of this entry, for inbound entries this
will be used to match against the remotely allocated entry
and for outbound entries this name is used for allocating
entries
- interrupt-controller:
Usage: required for incoming entries
Value type: <empty>
Definition: marks the entry as inbound; the node should be specified
as a two cell interrupt-controller as defined in
"../interrupt-controller/interrupts.txt"
If not specified this node will denote the outgoing entry
- #interrupt-cells:
Usage: required for incoming entries
Value type: <u32>
Definition: must be 2 - denoting the bit in the entry and IRQ flags
- #qcom,state-cells:
Usage: required for outgoing entries
Value type: <u32>
Definition: must be 1 - denoting the bit in the entry
= EXAMPLE
The following example shows the SMP2P setup with the wireless processor,
defined from the 8974 apps processor's point-of-view. It encompasses one
inbound and one outbound entry:
wcnss-smp2p {
compatible = "qcom,smp2p";
qcom,smem = <431>, <451>;
interrupts = <0 143 1>;
qcom,ipc = <&apcs 8 18>;
qcom,local-pid = <0>;
qcom,remote-pid = <4>;
wcnss_smp2p_out: master-kernel {
qcom,entry-name = "master-kernel";
#qcom,state-cells = <1>;
};
wcnss_smp2p_in: slave-kernel {
qcom,entry-name = "slave-kernel";
interrupt-controller;
#interrupt-cells = <2>;
};
};
Qualcomm Shared Memory State Machine
The Shared Memory State Machine facilitates broadcasting of single bit state
information between the processors in a Qualcomm SoC. Each processor is
assigned 32 bits of state that can be modified. A processor can through a
matrix of bitmaps signal subscription of notifications upon changes to a
certain bit owned by a certain remote processor.
- compatible:
Usage: required
Value type: <string>
Definition: must be one of:
"qcom,smsm"
- qcom,ipc-N:
Usage: required
Value type: <prop-encoded-array>
Definition: three entries specifying the outgoing ipc bit used for
signaling the N:th remote processor
- phandle to a syscon node representing the apcs registers
- u32 representing offset to the register within the syscon
- u32 representing the ipc bit within the register
- qcom,local-host:
Usage: optional
Value type: <u32>
Definition: identifier of the local processor in the list of hosts, or
in other words specifier of the column in the subscription
matrix representing the local processor
defaults to host 0
- #address-cells:
Usage: required
Value type: <u32>
Definition: must be 1
- #size-cells:
Usage: required
Value type: <u32>
Definition: must be 0
= SUBNODES
Each processor's state bits are described by a subnode of the smsm device node.
Nodes can either be flagged as an interrupt-controller to denote a remote
processor's state bits or the local processors bits. The node names are not
important.
- reg:
Usage: required
Value type: <u32>
Definition: specifies the offset, in words, of the first bit for this
entry
- #qcom,state-cells:
Usage: required for local entry
Value type: <u32>
Definition: must be 1 - denotes bit number
- interrupt-controller:
Usage: required for remote entries
Value type: <empty>
Definition: marks the entry as a interrupt-controller and the state bits
to belong to a remote processor
- #interrupt-cells:
Usage: required for remote entries
Value type: <u32>
Definition: must be 2 - denotes bit number and IRQ flags
- interrupts:
Usage: required for remote entries
Value type: <prop-encoded-array>
Definition: one entry specifying remote IRQ used by the remote processor
to signal changes of its state bits
= EXAMPLE
The following example shows the SMEM setup for controlling properties of the
wireless processor, defined from the 8974 apps processor's point-of-view. It
encompasses one outbound entry and the outgoing interrupt for the wireless
processor.
smsm {
compatible = "qcom,smsm";
#address-cells = <1>;
#size-cells = <0>;
qcom,ipc-3 = <&apcs 8 19>;
apps_smsm: apps@0 {
reg = <0>;
#qcom,state-cells = <1>;
};
wcnss_smsm: wcnss@7 {
reg = <7>;
interrupts = <0 144 1>;
interrupt-controller;
#interrupt-cells = <2>;
};
};
......@@ -512,6 +512,7 @@ dtb-$(CONFIG_ARCH_PRIMA2) += \
dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8064-cm-qs600.dtb \
qcom-apq8064-ifc6410.dtb \
qcom-apq8064-sony-xperia-yuga.dtb \
qcom-apq8074-dragonboard.dtb \
qcom-apq8084-ifc6540.dtb \
qcom-apq8084-mtp.dtb \
......
......@@ -54,7 +54,7 @@ regulators {
/* Buck SMPS */
pm8921_s1: s1 {
s1 {
regulator-always-on;
regulator-min-microvolt = <1225000>;
regulator-max-microvolt = <1225000>;
......@@ -62,43 +62,43 @@ pm8921_s1: s1 {
bias-pull-down;
};
pm8921_s3: s3 {
s3 {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1400000>;
qcom,switch-mode-frequency = <4800000>;
};
pm8921_s4: s4 {
s4 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
qcom,switch-mode-frequency = <3200000>;
};
pm8921_s7: s7 {
s7 {
regulator-min-microvolt = <1300000>;
regulator-max-microvolt = <1300000>;
qcom,switch-mode-frequency = <3200000>;
};
pm8921_l3: l3 {
l3 {
regulator-min-microvolt = <3050000>;
regulator-max-microvolt = <3300000>;
bias-pull-down;
};
pm8921_l4: l4 {
l4 {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1800000>;
bias-pull-down;
};
pm8921_l5: l5 {
l5 {
regulator-min-microvolt = <2750000>;
regulator-max-microvolt = <3000000>;
bias-pull-down;
};
pm8921_l23: l23 {
l23 {
regulator-min-microvolt = <1700000>;
regulator-max-microvolt = <1900000>;
bias-pull-down;
......
......@@ -64,7 +64,7 @@ regulators {
/* Buck SMPS */
pm8921_s1: s1 {
s1 {
regulator-always-on;
regulator-min-microvolt = <1225000>;
regulator-max-microvolt = <1225000>;
......@@ -72,55 +72,55 @@ pm8921_s1: s1 {
bias-pull-down;
};
pm8921_s3: s3 {
s3 {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1400000>;
qcom,switch-mode-frequency = <4800000>;
};
pm8921_s4: s4 {
s4 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
qcom,switch-mode-frequency = <3200000>;
};
pm8921_s7: s7 {
s7 {
regulator-min-microvolt = <1300000>;
regulator-max-microvolt = <1300000>;
qcom,switch-mode-frequency = <3200000>;
};
pm8921_l3: l3 {
l3 {
regulator-min-microvolt = <3050000>;
regulator-max-microvolt = <3300000>;
bias-pull-down;
};
pm8921_l4: l4 {
l4 {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1800000>;
bias-pull-down;
};
pm8921_l5: l5 {
l5 {
regulator-min-microvolt = <2750000>;
regulator-max-microvolt = <3000000>;
bias-pull-down;
};
pm8921_l6: l6 {
l6 {
regulator-min-microvolt = <2950000>;
regulator-max-microvolt = <2950000>;
bias-pull-down;
};
pm8921_l23: l23 {
l23 {
regulator-min-microvolt = <1700000>;
regulator-max-microvolt = <1900000>;
bias-pull-down;
};
pm8921_lvs1: lvs1 {
lvs1 {
bias-pull-down;
};
};
......@@ -164,7 +164,7 @@ eeprom@52 {
gsbi@16500000 {
status = "ok";
qcom,mode = <GSBI_PROT_I2C_UART>;
qcom,mode = <GSBI_PROT_UART_W_FC>;
serial@16540000 {
status = "ok";
......
#include "qcom-apq8064-v2.0.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/mfd/qcom-rpm.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
/ {
model = "Sony Xperia Z";
compatible = "sony,xperia-yuga", "qcom,apq8064";
aliases {
serial0 = &gsbi5_serial;
};
chosen {
stdout-path = "serial0:115200n8";
};
gpio-keys {
compatible = "gpio-keys";
input-name = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&gpio_keys_pin_a>;
camera-focus {
label = "camera_focus";
gpios = <&pm8921_gpio 3 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
linux,code = <KEY_CAMERA_FOCUS>;
};
camera-snapshot {
label = "camera_snapshot";
gpios = <&pm8921_gpio 4 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
linux,code = <KEY_CAMERA>;
};
volume-down {
label = "volume_down";
gpios = <&pm8921_gpio 29 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
linux,code = <KEY_VOLUMEDOWN>;
};
volume-up {
label = "volume_up";
gpios = <&pm8921_gpio 35 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
linux,code = <KEY_VOLUMEUP>;
};
};
soc {
pinctrl@800000 {
gsbi5_uart_pin_a: gsbi5-uart-pin-active {
rx {
pins = "gpio52";
function = "gsbi5";
drive-strength = <2>;
bias-pull-up;
};
tx {
pins = "gpio51";
function = "gsbi5";
drive-strength = <4>;
bias-disable;
};
};
sdcc1_pin_a: sdcc1-pin-active {
clk {
pins = "sdc1_clk";
drive-strengh = <16>;
bias-disable;
};
cmd {
pins = "sdc1_cmd";
drive-strengh = <10>;
bias-pull-up;
};
data {
pins = "sdc1_data";
drive-strengh = <10>;
bias-pull-up;
};
};
sdcc3_pin_a: sdcc3-pin-active {
clk {
pins = "sdc3_clk";
drive-strengh = <8>;
bias-disable;
};
cmd {
pins = "sdc3_cmd";
drive-strengh = <8>;
bias-pull-up;
};
data {
pins = "sdc3_data";
drive-strengh = <8>;
bias-pull-up;
};
};
sdcc3_cd_pin_a: sdcc3-cd-pin-active {
pins = "gpio26";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
};
rpm@108000 {
regulators {
vin_l1_l2_l12_l18-supply = <&pm8921_s4>;
vin_lvs_1_3_6-supply = <&pm8921_s4>;
vin_lvs_4_5_7-supply = <&pm8921_s4>;
vin_ncp-supply = <&pm8921_l6>;
vin_lvs2-supply = <&pm8921_s4>;
vin_l24-supply = <&pm8921_s1>;
vin_l25-supply = <&pm8921_s1>;
vin_l27-supply = <&pm8921_s7>;
vin_l28-supply = <&pm8921_s7>;
/* Buck SMPS */
s1 {
regulator-always-on;
regulator-min-microvolt = <1225000>;
regulator-max-microvolt = <1225000>;
qcom,switch-mode-frequency = <3200000>;
bias-pull-down;
};
s2 {
regulator-min-microvolt = <1300000>;
regulator-max-microvolt = <1300000>;
qcom,switch-mode-frequency = <1600000>;
bias-pull-down;
};
s3 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1150000>;
qcom,switch-mode-frequency = <4800000>;
bias-pull-down;
};
s4 {
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
qcom,switch-mode-frequency = <1600000>;
bias-pull-down;
qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
};
s7 {
regulator-min-microvolt = <1300000>;
regulator-max-microvolt = <1300000>;
qcom,switch-mode-frequency = <3200000>;
};
s8 {
regulator-min-microvolt = <2200000>;
regulator-max-microvolt = <2200000>;
qcom,switch-mode-frequency = <1600000>;
};
/* PMOS LDO */
l1 {
regulator-always-on;
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
bias-pull-down;
};
l2 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
bias-pull-down;
};
l3 {
regulator-min-microvolt = <3075000>;
regulator-max-microvolt = <3075000>;
bias-pull-down;
};
l4 {
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
bias-pull-down;
};
l5 {
regulator-min-microvolt = <2950000>;
regulator-max-microvolt = <2950000>;
bias-pull-down;
};
l6 {
regulator-min-microvolt = <2950000>;
regulator-max-microvolt = <2950000>;
bias-pull-down;
};
l7 {
regulator-min-microvolt = <1850000>;
regulator-max-microvolt = <2950000>;
bias-pull-down;
};
l8 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
bias-pull-down;
};
l9 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
bias-pull-down;
};
l10 {
regulator-min-microvolt = <2900000>;
regulator-max-microvolt = <2900000>;
bias-pull-down;
};
l11 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
bias-pull-down;
};
l12 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
bias-pull-down;
};
l14 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
bias-pull-down;
};
l15 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2950000>;
bias-pull-down;
};
l16 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
bias-pull-down;
};
l17 {
regulator-min-microvolt = <2000000>;
regulator-max-microvolt = <2000000>;
bias-pull-down;
};
l18 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
bias-pull-down;
};
l21 {
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
bias-pull-down;
};
l22 {
regulator-min-microvolt = <2600000>;
regulator-max-microvolt = <2600000>;
bias-pull-down;
};
l23 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
bias-pull-down;
};
l24 {
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <1150000>;
bias-pull-down;
};
l25 {
regulator-always-on;
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <1250000>;
bias-pull-down;
};
l27 {
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
};
l28 {
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
bias-pull-down;
};
l29 {
regulator-min-microvolt = <2000000>;
regulator-max-microvolt = <2000000>;
bias-pull-down;
};
/* Low Voltage Switch */
lvs1 {
bias-pull-down;
};
lvs2 {
bias-pull-down;
};
lvs3 {
bias-pull-down;
};
lvs4 {
bias-pull-down;
};
lvs5 {
bias-pull-down;
};
lvs6 {
bias-pull-down;
};
lvs7 {
bias-pull-down;
};
usb-switch {};
hdmi-switch {};
ncp {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
qcom,switch-mode-frequency = <1600000>;
};
};
};
qcom,ssbi@500000 {
pmic@0 {
gpio@150 {
gpio_keys_pin_a: gpio-keys-pin-active {
pins = "gpio3", "gpio4", "gpio29", "gpio35";
function = "normal";
bias-pull-up;
drive-push-pull;
input-enable;
power-source = <2>;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
qcom,pull-up-strength = <0>;
};
};
};
};
phy@12500000 {
status = "okay";
vddcx-supply = <&pm8921_s3>;
v3p3-supply = <&pm8921_l3>;
v1p8-supply = <&pm8921_l4>;
};
gadget@12500000 {
status = "okay";
};
gsbi@1a200000 {
status = "ok";
qcom,mode = <GSBI_PROT_I2C_UART>;
serial@1a240000 {
status = "ok";
pinctrl-names = "default";
pinctrl-0 = <&gsbi5_uart_pin_a>;
};
};
amba {
sdcc1: sdcc@12400000 {
status = "okay";
vmmc-supply = <&pm8921_l5>;
vqmmc-supply = <&pm8921_s4>;
pinctrl-names = "default";
pinctrl-0 = <&sdcc1_pin_a>;
};
sdcc3: sdcc@12180000 {
status = "okay";
vmmc-supply = <&pm8921_l6>;
cd-gpios = <&tlmm_pinmux 26 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&sdcc3_pin_a>, <&sdcc3_cd_pin_a>;
};
};
};
};
......@@ -11,6 +11,17 @@ / {
compatible = "qcom,apq8064";
interrupt-parent = <&intc>;
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
smem_region: smem@80000000 {
reg = <0x80000000 0x200000>;
no-map;
};
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
......@@ -80,6 +91,39 @@ cpu-pmu {
interrupts = <1 10 0x304>;
};
clocks {
cxo_board {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <19200000>;
};
pxo_board {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <27000000>;
};
sleep_clk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32768>;
};
};
sfpb_mutex: hwmutex {
compatible = "qcom,sfpb-mutex";
syscon = <&sfpb_wrapper_mutex 0x604 0x4>;
#hwlock-cells = <1>;
};
smem {
compatible = "qcom,smem";
memory-region = <&smem_region>;
hwlocks = <&sfpb_mutex 3>;
};
soc: soc {
#address-cells = <1>;
#size-cells = <1>;
......@@ -156,6 +200,11 @@ mux {
};
};
sfpb_wrapper_mutex: syscon@1200000 {
compatible = "syscon";
reg = <0x01200000 0x8000>;
};
intc: interrupt-controller@2000000 {
compatible = "qcom,msm-qgic2";
interrupt-controller;
......@@ -291,6 +340,28 @@ i2c3: i2c@16280000 {
};
};
gsbi5: gsbi@1a200000 {
status = "disabled";
compatible = "qcom,gsbi-v1.0.0";
cell-index = <5>;
reg = <0x1a200000 0x03>;
clocks = <&gcc GSBI5_H_CLK>;
clock-names = "iface";
#address-cells = <1>;
#size-cells = <1>;
ranges;
gsbi5_serial: serial@1a240000 {
compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
reg = <0x1a240000 0x100>,
<0x1a200000 0x03>;
interrupts = <0 154 0x0>;
clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>;
clock-names = "core", "iface";
status = "disabled";
};
};
gsbi6: gsbi@16500000 {
status = "disabled";
compatible = "qcom,gsbi-v1.0.0";
......@@ -336,6 +407,13 @@ gsbi7_serial: serial@16640000 {
};
};
rng@1a500000 {
compatible = "qcom,prng";
reg = <0x1a500000 0x200>;
clocks = <&gcc PRNG_CLK>;
clock-names = "core";
};
qcom,ssbi@500000 {
compatible = "qcom,ssbi";
reg = <0x00500000 0x1000>;
......@@ -352,7 +430,8 @@ pmicintc: pmic@0 {
pm8921_gpio: gpio@150 {
compatible = "qcom,pm8921-gpio";
compatible = "qcom,pm8921-gpio",
"qcom,ssbi-gpio";
reg = <0x150>;
interrupts = <192 1>, <193 1>, <194 1>,
<195 1>, <196 1>, <197 1>,
......@@ -376,7 +455,8 @@ pm8921_gpio: gpio@150 {
};
pm8921_mpps: mpps@50 {
compatible = "qcom,pm8921-mpp";
compatible = "qcom,pm8921-mpp",
"qcom,ssbi-mpp";
reg = <0x50>;
gpio-controller;
#gpio-cells = <2>;
......@@ -444,9 +524,55 @@ rpm@108000 {
regulators {
compatible = "qcom,rpm-pm8921-regulators";
pm8921_s1: s1 {};
pm8921_s2: s2 {};
pm8921_s3: s3 {};
pm8921_s4: s4 {};
pm8921_s7: s7 {};
pm8921_s8: s8 {};
pm8921_l1: l1 {};
pm8921_l2: l2 {};
pm8921_l3: l3 {};
pm8921_l4: l4 {};
pm8921_l5: l5 {};
pm8921_l6: l6 {};
pm8921_l7: l7 {};
pm8921_l8: l8 {};
pm8921_l9: l9 {};
pm8921_l10: l10 {};
pm8921_l11: l11 {};
pm8921_l12: l12 {};
pm8921_l14: l14 {};
pm8921_l15: l15 {};
pm8921_l16: l16 {};
pm8921_l17: l17 {};
pm8921_l18: l18 {};
pm8921_l21: l21 {};
pm8921_l22: l22 {};
pm8921_l23: l23 {};
pm8921_l24: l24 {};
pm8921_l25: l25 {};
pm8921_l26: l26 {};
pm8921_l27: l27 {};
pm8921_l28: l28 {};
pm8921_l29: l29 {};
pm8921_lvs1: lvs1 {};
pm8921_lvs2: lvs2 {};
pm8921_lvs3: lvs3 {};
pm8921_lvs4: lvs4 {};
pm8921_lvs5: lvs5 {};
pm8921_lvs6: lvs6 {};
pm8921_lvs7: lvs7 {};
pm8921_usb_switch: usb-switch {};
pm8921_hdmi_switch: hdmi-switch {
bias-pull-down;
};
pm8921_ncp: ncp {};
};
};
......
......@@ -8,6 +8,8 @@ / {
aliases {
serial0 = &blsp1_uart2;
usid0 = &pm8941_0;
usid4 = &pm8841_0;
};
chosen {
......
......@@ -3,10 +3,11 @@
/ {
model = "Qualcomm APQ8084/IFC6540";
compatible = "qcom,apq8084-ifc6540", "qcom,apq8084";
compatible = "qcom,apq8084-sbc", "qcom,apq8084";
aliases {
serial0 = &blsp2_uart2;
usid0 = &pma8084_0;
};
chosen {
......
......@@ -7,6 +7,7 @@ / {
aliases {
serial0 = &blsp2_uart2;
usid0 = &pma8084_0;
};
chosen {
......
......@@ -10,6 +10,17 @@ / {
compatible = "qcom,apq8084";
interrupt-parent = <&intc>;
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
smem_mem: smem_region@fa00000 {
reg = <0xfa00000 0x200000>;
no-map;
};
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
......@@ -89,6 +100,15 @@ timer {
clock-frequency = <19200000>;
};
smem {
compatible = "qcom,smem";
qcom,rpm-msg-ram = <&rpm_msg_ram>;
memory-region = <&smem_mem>;
hwlocks = <&tcsr_mutex 3>;
};
soc: soc {
#address-cells = <1>;
#size-cells = <1>;
......@@ -103,6 +123,11 @@ intc: interrupt-controller@f9000000 {
<0xf9002000 0x1000>;
};
apcs: syscon@f9011000 {
compatible = "syscon";
reg = <0xf9011000 0x1000>;
};
timer@f9020000 {
#address-cells = <1>;
#size-cells = <1>;
......@@ -225,6 +250,22 @@ gcc: clock-controller@fc400000 {
reg = <0xfc400000 0x4000>;
};
tcsr_mutex_regs: syscon@fd484000 {
compatible = "syscon";
reg = <0xfd484000 0x2000>;
};
tcsr_mutex: hwlock {
compatible = "qcom,tcsr-mutex";
syscon = <&tcsr_mutex_regs 0 0x80>;
#hwlock-cells = <1>;
};
rpm_msg_ram: memory@fc428000 {
compatible = "qcom,rpm-msg-ram";
reg = <0xfc428000 0x4000>;
};
tlmm: pinctrl@fd510000 {
compatible = "qcom,apq8084-pinctrl";
reg = <0xfd510000 0x4000>;
......@@ -282,4 +323,71 @@ spmi_bus: spmi@fc4cf000 {
#interrupt-cells = <4>;
};
};
smd {
compatible = "qcom,smd";
rpm {
interrupts = <0 168 1>;
qcom,ipc = <&apcs 8 0>;
qcom,smd-edge = <15>;
rpm_requests {
compatible = "qcom,rpm-apq8084";
qcom,smd-channels = "rpm_requests";
pma8084-regulators {
compatible = "qcom,rpm-pma8084-regulators";
pma8084_s1: s1 {};
pma8084_s2: s2 {};
pma8084_s3: s3 {};
pma8084_s4: s4 {};
pma8084_s5: s5 {};
pma8084_s6: s6 {};
pma8084_s7: s7 {};
pma8084_s8: s8 {};
pma8084_s9: s9 {};
pma8084_s10: s10 {};
pma8084_s11: s11 {};
pma8084_s12: s12 {};
pma8084_l1: l1 {};
pma8084_l2: l2 {};
pma8084_l3: l3 {};
pma8084_l4: l4 {};
pma8084_l5: l5 {};
pma8084_l6: l6 {};
pma8084_l7: l7 {};
pma8084_l8: l8 {};
pma8084_l9: l9 {};
pma8084_l10: l10 {};
pma8084_l11: l11 {};
pma8084_l12: l12 {};
pma8084_l13: l13 {};
pma8084_l14: l14 {};
pma8084_l15: l15 {};
pma8084_l16: l16 {};
pma8084_l17: l17 {};
pma8084_l18: l18 {};
pma8084_l19: l19 {};
pma8084_l20: l20 {};
pma8084_l21: l21 {};
pma8084_l22: l22 {};
pma8084_l23: l23 {};
pma8084_l24: l24 {};
pma8084_l25: l25 {};
pma8084_l26: l26 {};
pma8084_l27: l27 {};
pma8084_lvs1: lvs1 {};
pma8084_lvs2: lvs2 {};
pma8084_lvs3: lvs3 {};
pma8084_lvs4: lvs4 {};
pma8084_5vs1: 5vs1 {};
};
};
};
};
};
......@@ -49,6 +49,29 @@ cpu-pmu {
qcom,no-pc-write;
};
clocks {
cxo_board {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <19200000>;
clock-output-names = "cxo_board";
};
pxo_board {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <27000000>;
clock-output-names = "pxo_board";
};
sleep_clk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32768>;
clock-output-names = "sleep_clk";
};
};
soc: soc {
#address-cells = <1>;
#size-cells = <1>;
......
#include "qcom-msm8974.dtsi"
#include "qcom-pm8841.dtsi"
#include "qcom-pm8941.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
/ {
model = "Sony Xperia Z1";
......@@ -14,24 +17,403 @@ chosen {
stdout-path = "serial0:115200n8";
};
gpio-keys {
compatible = "gpio-keys";
input-name = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&gpio_keys_pin_a>;
volume-down {
label = "volume_down";
gpios = <&pm8941_gpios 2 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
linux,code = <KEY_VOLUMEDOWN>;
};
camera-snapshot {
label = "camera_snapshot";
gpios = <&pm8941_gpios 3 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
linux,code = <KEY_CAMERA>;
};
camera-focus {
label = "camera_focus";
gpios = <&pm8941_gpios 4 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
linux,code = <KEY_CAMERA_FOCUS>;
};
volume-up {
label = "volume_up";
gpios = <&pm8941_gpios 5 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
linux,code = <KEY_VOLUMEUP>;
};
};
memory@0 {
reg = <0 0x40000000>, <0x40000000 0x40000000>;
device_type = "memory";
};
smd {
rpm {
rpm_requests {
pm8841-regulators {
s1 {
regulator-min-microvolt = <675000>;
regulator-max-microvolt = <1050000>;
};
s2 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1050000>;
};
s3 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1050000>;
};
s4 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1050000>;
};
};
pm8941-regulators {
vdd_l1_l3-supply = <&pm8941_s1>;
vdd_l2_lvs1_2_3-supply = <&pm8941_s3>;
vdd_l4_l11-supply = <&pm8941_s1>;
vdd_l5_l7-supply = <&pm8941_s2>;
vdd_l6_l12_l14_l15-supply = <&pm8941_s2>;
vdd_l9_l10_l17_l22-supply = <&vreg_boost>;
vdd_l13_l20_l23_l24-supply = <&vreg_boost>;
vdd_l21-supply = <&vreg_boost>;
vin_5vs-supply = <&pm8941_5v>;
s1 {
regulator-min-microvolt = <1300000>;
regulator-max-microvolt = <1300000>;
regulator-always-on;
regulator-boot-on;
};
s2 {
regulator-min-microvolt = <2150000>;
regulator-max-microvolt = <2150000>;
regulator-boot-on;
};
s3 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
};
s4 {
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
};
l1 {
regulator-min-microvolt = <1225000>;
regulator-max-microvolt = <1225000>;
regulator-always-on;
regulator-boot-on;
};
l2 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
};
l3 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
};
l4 {
regulator-min-microvolt = <1225000>;
regulator-max-microvolt = <1225000>;
};
l5 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
l6 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-boot-on;
};
l7 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-boot-on;
};
l8 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
l9 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2950000>;
};
l11 {
regulator-min-microvolt = <1300000>;
regulator-max-microvolt = <1350000>;
};
l12 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
};
l13 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2950000>;
regulator-boot-on;
};
l14 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
l15 {
regulator-min-microvolt = <2050000>;
regulator-max-microvolt = <2050000>;
};
l16 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <2700000>;
};
l17 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <2700000>;
};
l18 {
regulator-min-microvolt = <2850000>;
regulator-max-microvolt = <2850000>;
};
l19 {
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
l20 {
regulator-min-microvolt = <2950000>;
regulator-max-microvolt = <2950000>;
regulator-allow-set-load;
regulator-boot-on;
regulator-system-load = <200000>;
};
l21 {
regulator-min-microvolt = <2950000>;
regulator-max-microvolt = <2950000>;
regulator-boot-on;
};
l22 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
};
l23 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
};
l24 {
regulator-min-microvolt = <3075000>;
regulator-max-microvolt = <3075000>;
regulator-boot-on;
};
};
};
};
};
vreg_boost: vreg-boost {
compatible = "regulator-fixed";
regulator-name = "vreg-boost";
regulator-min-microvolt = <3150000>;
regulator-max-microvolt = <3150000>;
regulator-always-on;
regulator-boot-on;
gpio = <&pm8941_gpios 21 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&boost_bypass_n_pin>;
};
};
&soc {
sdhci@f9824900 {
status = "ok";
vmmc-supply = <&pm8941_l20>;
vqmmc-supply = <&pm8941_s3>;
bus-width = <8>;
non-removable;
pinctrl-names = "default";
pinctrl-0 = <&sdhc1_pin_a>;
};
sdhci@f98a4900 {
status = "ok";
bus-width = <4>;
vmmc-supply = <&pm8941_l21>;
vqmmc-supply = <&pm8941_l13>;
cd-gpios = <&msmgpio 62 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&sdhc2_pin_a>, <&sdhc2_cd_pin_a>;
};
serial@f991e000 {
status = "ok";
pinctrl-names = "default";
pinctrl-0 = <&blsp1_uart2_pin_a>;
};
pinctrl@fd510000 {
blsp1_uart2_pin_a: blsp1-uart2-pin-active {
rx {
pins = "gpio5";
function = "blsp_uart2";
drive-strength = <2>;
bias-pull-up;
};
tx {
pins = "gpio4";
function = "blsp_uart2";
drive-strength = <4>;
bias-disable;
};
};
sdhc1_pin_a: sdhc1-pin-active {
clk {
pins = "sdc1_clk";
drive-strength = <16>;
bias-disable;
};
cmd-data {
pins = "sdc1_cmd", "sdc1_data";
drive-strength = <10>;
bias-pull-up;
};
};
sdhc2_cd_pin_a: sdhc2-cd-pin-active {
pins = "gpio62";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
sdhc2_pin_a: sdhc2-pin-active {
clk {
pins = "sdc2_clk";
drive-strength = <10>;
bias-disable;
};
cmd-data {
pins = "sdc2_cmd", "sdc2_data";
drive-strength = <6>;
bias-pull-up;
};
};
};
};
&spmi_bus {
pm8941@0 {
charger@1000 {
qcom,fast-charge-safe-current = <1500000>;
qcom,fast-charge-current-limit = <1500000>;
qcom,dc-current-limit = <1800000>;
qcom,fast-charge-safe-voltage = <4400000>;
qcom,fast-charge-high-threshold-voltage = <4350000>;
qcom,fast-charge-low-threshold-voltage = <3400000>;
qcom,auto-recharge-threshold-voltage = <4200000>;
qcom,minimum-input-voltage = <4300000>;
};
gpios@c000 {
boost_bypass_n_pin: boost-bypass {
pins = "gpio21";
function = "normal";
};
gpio_keys_pin_a: gpio-keys-active {
pins = "gpio2", "gpio3", "gpio4", "gpio5";
function = "normal";
bias-pull-up;
power-source = <PM8941_GPIO_S3>;
};
};
coincell@2800 {
status = "ok";
qcom,rset-ohms = <2100>;
qcom,vset-millivolts = <3000>;
};
};
pm8941@1 {
wled@d800 {
status = "ok";
qcom,cs-out;
qcom,current-limit = <20>;
qcom,current-boost-limit = <805>;
qcom,switching-freq = <1600>;
qcom,ovp = <29>;
qcom,num-strings = <2>;
};
};
};
......@@ -319,6 +319,17 @@ msmgpio: pinctrl@fd510000 {
interrupts = <0 208 0>;
};
blsp_i2c8: i2c@f9964000 {
status = "disabled";
compatible = "qcom,i2c-qup-v2.1.1";
reg = <0xf9964000 0x1000>;
interrupts = <0 102 IRQ_TYPE_NONE>;
clocks = <&gcc GCC_BLSP2_QUP2_I2C_APPS_CLK>, <&gcc GCC_BLSP2_AHB_CLK>;
clock-names = "core", "iface";
#address-cells = <1>;
#size-cells = <0>;
};
blsp_i2c11: i2c@f9967000 {
status = "disabled";
compatible = "qcom,i2c-qup-v2.1.1";
......
......@@ -3,14 +3,14 @@
&spmi_bus {
usid4: pm8841@4 {
compatible = "qcom,spmi-pmic";
pm8841_0: pm8841@4 {
compatible = "qcom,pm8841", "qcom,spmi-pmic";
reg = <0x4 SPMI_USID>;
#address-cells = <1>;
#size-cells = <0>;
pm8841_mpps: mpps@a000 {
compatible = "qcom,pm8841-mpp";
compatible = "qcom,pm8841-mpp", "qcom,spmi-mpp";
reg = <0xa000 0x400>;
gpio-controller;
#gpio-cells = <2>;
......@@ -27,8 +27,8 @@ temp-alarm@2400 {
};
};
usid5: pm8841@5 {
compatible = "qcom,spmi-pmic";
pm8841_1: pm8841@5 {
compatible = "qcom,pm8841", "qcom,spmi-pmic";
reg = <0x5 SPMI_USID>;
#address-cells = <1>;
#size-cells = <0>;
......
......@@ -4,8 +4,8 @@
&spmi_bus {
usid0: pm8941@0 {
compatible ="qcom,spmi-pmic";
pm8941_0: pm8941@0 {
compatible = "qcom,pm8941", "qcom,spmi-pmic";
reg = <0x0 SPMI_USID>;
#address-cells = <1>;
#size-cells = <0>;
......@@ -48,7 +48,7 @@ charger@1000 {
};
pm8941_gpios: gpios@c000 {
compatible = "qcom,pm8941-gpio";
compatible = "qcom,pm8941-gpio", "qcom,spmi-gpio";
reg = <0xc000 0x2400>;
gpio-controller;
#gpio-cells = <2>;
......@@ -91,7 +91,7 @@ pm8941_gpios: gpios@c000 {
};
pm8941_mpps: mpps@a000 {
compatible = "qcom,pm8941-mpp";
compatible = "qcom,pm8941-mpp", "qcom,spmi-mpp";
reg = <0xa000 0x800>;
gpio-controller;
#gpio-cells = <2>;
......@@ -153,23 +153,18 @@ coincell@2800 {
};
};
usid1: pm8941@1 {
compatible = "qcom,spmi-pmic";
pm8941_1: pm8941@1 {
compatible = "qcom,pm8941", "qcom,spmi-pmic";
reg = <0x1 SPMI_USID>;
#address-cells = <1>;
#size-cells = <0>;
wled@d800 {
pm8941_wled: wled@d800 {
compatible = "qcom,pm8941-wled";
reg = <0xd800 0x100>;
label = "backlight";
qcom,cs-out;
qcom,current-limit = <20>;
qcom,current-boost-limit = <805>;
qcom,switching-freq = <1600>;
qcom,ovp = <29>;
qcom,num-strings = <2>;
status = "disabled";
};
};
};
......@@ -4,8 +4,8 @@
&spmi_bus {
usid0: pma8084@0 {
compatible = "qcom,spmi-pmic";
pma8084_0: pma8084@0 {
compatible = "qcom,pma8084", "qcom,spmi-pmic";
reg = <0x0 SPMI_USID>;
#address-cells = <1>;
#size-cells = <0>;
......@@ -19,7 +19,7 @@ rtc@6000 {
};
pma8084_gpios: gpios@c000 {
compatible = "qcom,pma8084-gpio";
compatible = "qcom,pma8084-gpio", "qcom,spmi-gpio";
reg = <0xc000 0x1600>;
gpio-controller;
#gpio-cells = <2>;
......@@ -48,7 +48,7 @@ pma8084_gpios: gpios@c000 {
};
pma8084_mpps: mpps@a000 {
compatible = "qcom,pma8084-mpp";
compatible = "qcom,pma8084-mpp", "qcom,spmi-mpp";
reg = <0xa000 0x800>;
gpio-controller;
#gpio-cells = <2>;
......@@ -101,8 +101,8 @@ ref_vdd {
};
};
usid1: pma8084@1 {
compatible = "qcom,spmi-pmic";
pma8084_1: pma8084@1 {
compatible = "qcom,pma8084", "qcom,spmi-pmic";
reg = <0x1 SPMI_USID>;
#address-cells = <1>;
#size-cells = <0>;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment