Add device tree support for the Sony Xperia Z5 smartphone.
The kitakami part in DT name comes from Sony platform naming
and is there to indicate that as more Sony devices using msm8994
are added to the kernel, they will share a lot of common code.

The board currently supports
* Serial
* SDHCI
* I2C
* Regulator configuration
* pstore log dump
* GPIO keys

Signed-off-by: Konrad Dybcio <konradyb...@gmail.com>
---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../msm8994-sony-xperia-kitakami-sumire.dts   | 410 ++++++++++++++++++
 2 files changed, 411 insertions(+)
 create mode 100644 
arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-sumire.dts

diff --git a/arch/arm64/boot/dts/qcom/Makefile 
b/arch/arm64/boot/dts/qcom/Makefile
index 0f2c33d611df..01ca9ac9f905 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -10,6 +10,7 @@ dtb-$(CONFIG_ARCH_QCOM)       += msm8916-samsung-a3u-eur.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-samsung-a5u-eur.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8992-bullhead-rev-101.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8994-angler-rev-101.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8994-sony-xperia-kitakami-sumire.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8996-mtp.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-asus-novago-tp370ql.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-hp-envy-x2.dtb
diff --git a/arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-sumire.dts 
b/arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-sumire.dts
new file mode 100644
index 000000000000..3b0a880416c4
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-sumire.dts
@@ -0,0 +1,410 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2020, Konrad Dybcio
+ */
+
+/dts-v1/;
+
+#include "msm8994.dtsi"
+#include "pm8994.dtsi"
+#include "pmi8994.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/gpio-keys.h>
+
+/ {
+       model = "SoMC Sumire-ROW";
+       compatible = "somc,sumire-row", "qcom,msm8994";
+       /* required for bootloader to select correct board */
+       qcom,msm-id = <0xcf 0x20001>;
+       qcom,pmic-id = <0x10009 0x1000a 0x00 0x00>;
+       qcom,board-id = <8 0>;
+
+       /* Xperia Z5's firmware doesn't support PSCI */
+       /delete-node/ psci;
+
+       soc {
+               serial@f991e000 {
+                       status = "okay";
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&blsp1_uart2_default>;
+                       pinctrl-1 = <&blsp1_uart2_sleep>;
+               };
+
+               serial@f995e000 {
+                       status = "okay";
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&blsp2_uart2_default>;
+                       pinctrl-1 = <&blsp2_uart2_sleep>;
+               };
+
+               /* I2C1 is disabled on this board */
+
+               i2c@f9924000 {
+                       status = "okay";
+
+                       /* NXP NFC */
+               };
+
+               i2c@f9926000 {
+                       status = "okay";
+
+                       /* Empty but active */
+               };
+
+               i2c@f9967000 {
+                       status = "okay";
+
+                       /* SMB1357 charger and sii8620 HDMI/MHL bridge */
+               };
+
+               i2c@f9928000 {
+                       status = "okay";
+
+                       /* Synaptics touchscreen */
+               };
+
+               sdhci@f9824900 {
+                       status = "okay";
+
+                       /* Downstream pushes 2.95V to the sdhci device,
+                       but upstream driver REALLY wants to make vmmc 1.8v
+                       cause of the hs400-1_8v mode. MMC works fine without
+                       that regulator, so let's not use it for now.
+                       vqmmc is also disabled cause driver stll complains.
+
+                       vmmc-supply = <&pm8994_l20>;
+                       vqmmc-supply = <&pm8994_s4>;
+                       */
+               };
+
+               spi@f9923000 {
+                       status = "okay";
+
+                       /* FPC fingerprint reader */
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+               input-name = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+
+               button@0 {
+                       label = "Volume Down";
+                       gpios = <&pm8994_gpios 2 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <1>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       wakeup-source;
+                       debounce-interval = <15>;
+               };
+
+               button@1 {
+                       label = "Volume Up";
+                       gpios = <&pm8994_gpios 3 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <1>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       wakeup-source;
+                       debounce-interval = <15>;
+               };
+
+               button@2 {
+                       label = "Camera Snapshot";
+                       gpios = <&pm8994_gpios 4 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <1>;
+                       linux,code = <KEY_CAMERA>;
+                       wakeup-source;
+                       debounce-interval = <15>;
+               };
+
+               button@3 {
+                       label = "Camera Focus";
+                       gpios = <&pm8994_gpios 5 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <1>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       wakeup-source;
+                       debounce-interval = <15>;
+               };
+
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /* This is for getting crash logs using Android downstream 
kernels */
+               ramoops@1fe00000 {
+                       compatible = "ramoops";
+                       reg = <0x0 0x1fe00000 0x0 0x200000>;
+                       console-size = <0x100000>;
+                       record-size = <0x10000>;
+                       ftrace-size = <0x10000>;
+                       pmsg-size = <0x80000>;
+               };
+
+               continuous_splash: framebuffer@3401000{
+                       reg = <0x0 0x3401000 0x0 0x2200000>;
+                       no-map;
+               };
+
+               dfps_data_mem: dfps_data_mem@3400000 {
+                       reg = <0x0 0x3400000 0x0 0x1000>;
+                       no-map;
+               };
+
+               peripheral_region: peripheral_region@7400000 {
+                       reg = <0x0 0x7400000 0x0 0x1c00000>;
+                       no-map;
+               };
+
+               modem_region: modem_region@9000000 {
+                       reg = <0x0 0x9000000 0x0 0x5a00000>;
+                       no-map;
+               };
+
+               tzapp: modem_region@ea00000 {
+                       reg = <0x0 0xea00000 0x0 0x1900000>;
+                       no-map;
+               };
+
+               fb_region: fb_region@40000000 {
+                       reg = <0x00 0x40000000 0x00 0x1000000>;
+                       no-map;
+               };
+       };
+};
+
+&smd_rpm {
+       rpm {
+               rpm_requests {
+                       pm8994-regulators {
+                               s1 {
+                                       /* Unused */
+                                       status = "disabled";
+                               };
+
+                               s2 {
+                                       /* Unused */
+                                       status = "disabled";
+                               };
+
+                               s3 {
+                                       regulator-min-microvolt = <1300000>;
+                                       regulator-max-microvolt = <1300000>;
+                               };
+
+                               s4 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               s5 {
+                                       regulator-min-microvolt = <2150000>;
+                                       regulator-max-microvolt = <2150000>;
+                               };
+
+                               s7 {
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                               };
+
+                               l1 {
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                               };
+
+                               l2 {
+                                       regulator-min-microvolt = <1250000>;
+                                       regulator-max-microvolt = <1250000>;
+                               };
+
+                               l3 {
+                                       regulator-min-microvolt = <1100000>;
+                                       regulator-max-microvolt = <1100000>;
+                               };
+
+                               l4 {
+                                       regulator-min-microvolt = <1225000>;
+                                       regulator-max-microvolt = <1225000>;
+                               };
+
+                               l5 {
+                                       /* Unused */
+                                       status = "disabled";
+                               };
+
+                               l6 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               l7 {
+                                       /* Unused */
+                                       status = "disabled";
+                               };
+
+                               l8 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               l9 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               l10 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               l11 {
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                               };
+
+                               l12 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               l13 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <2950000>;
+                               };
+
+                               l14 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               l15 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               l16 {
+                                       regulator-min-microvolt = <2700000>;
+                                       regulator-max-microvolt = <2700000>;
+                               };
+
+                               l17 {
+                                       regulator-min-microvolt = <2200000>;
+                                       regulator-max-microvolt = <2200000>;
+                               };
+
+                               l18 {
+                                       regulator-min-microvolt = <2850000>;
+                                       regulator-max-microvolt = <2850000>;
+                                       regulator-always-on;
+                               };
+
+                               l19 {
+                                       regulator-min-microvolt = <2850000>;
+                                       regulator-max-microvolt = <2850000>;
+                               };
+
+                               l20 {
+                                       regulator-min-microvolt = <2950000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               l21 {
+                                       regulator-min-microvolt = <2950000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       regulator-always-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 = <3150000>;
+                               };
+
+                               l25 {
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                               };
+
+                               l26 {
+                                       regulator-min-microvolt = <987500>;
+                                       regulator-max-microvolt = <987500>;
+                               };
+
+                               l27 {
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                               };
+
+                               l28 {
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                               };
+
+                               l29 {
+                                       regulator-min-microvolt = <2700000>;
+                                       regulator-max-microvolt = <2700000>;
+                               };
+
+                               l30 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               l31 {
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-boot-on;
+                               };
+
+                               l32 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               lvs1 {
+                                       /* Downstream sets it to enabled but
+                                       doesn't specify a voltage range */
+                                       status = "okay";
+                               };
+
+                               lvs2 {
+                                       /* Downstream sets it to enabled but
+                                       doesn't specify a voltage range */
+                                       status = "okay";
+                               };
+                       };
+                       pmi8994-regulators {
+                               s1 {
+                                       regulator-min-microvolt = <1025000>;
+                                       regulator-max-microvolt = <1025000>;
+                               };
+
+                               s2 {
+                                       /* Unused */
+                                       status = "disabled";
+                               };
+
+                               boost-bypass {
+                                       regulator-min-microvolt = <3150000>;
+                                       regulator-max-microvolt = <3600000>;
+                               };
+                       };
+               };
+       };
+};
\ No newline at end of file
-- 
2.27.0

Reply via email to