Add device tree support for the Sony Xperia XA2, XA2 Plus and
XA2 Ultra smartphones. They are all based on the Sony Nile
platform (sdm630) and share a lot of common code. The
differences are really minor, so a Nile-common DTSI
has been created to reduce clutter.
XA2 - Pioneer
XA2 Plus - Voyager
XA2 Ultra - Discovery
The boards currently support:
* Screen console
* SDHCI
* I2C
* pstore log dump
* GPIO keys
* PSCI idle states
Signed-off-by: Konrad Dybcio <[email protected]>
Tested-by: Ćukasz Patron <[email protected]>
---
arch/arm64/boot/dts/qcom/Makefile | 3 +
.../sdm630-sony-xperia-nile-discovery.dts | 13 ++
.../qcom/sdm630-sony-xperia-nile-pioneer.dts | 13 ++
.../qcom/sdm630-sony-xperia-nile-voyager.dts | 20 +++
.../dts/qcom/sdm630-sony-xperia-nile.dtsi | 135 ++++++++++++++++++
5 files changed, 184 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dts
create mode 100644 arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dts
create mode 100644 arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dts
create mode 100644 arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 0f2c33d611df..1cad7cb07574 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -16,6 +16,9 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8998-hp-envy-x2.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8998-lenovo-miix-630.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8998-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc7180-idp.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-nile-discovery.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-nile-pioneer.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-nile-voyager.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm660-xiaomi-lavender.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-cheza-r1.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-cheza-r2.dtb
diff --git a/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dts b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dts
new file mode 100644
index 000000000000..1312eebe76a1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dts
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2020, Konrad Dybcio
+ */
+
+/dts-v1/;
+
+#include "sdm630-sony-xperia-nile.dtsi"
+
+/ {
+ model = "SoMC Discovery-RoW";
+ compatible = "sony,discovery-row", "qcom,sdm630", "qcom,sdm630-mtp";
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dts b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dts
new file mode 100644
index 000000000000..76f20ad5273f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dts
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2020, Konrad Dybcio
+ */
+
+/dts-v1/;
+
+#include "sdm630-sony-xperia-nile.dtsi"
+
+/ {
+ model = "SoMC Pioneer-RoW";
+ compatible = "sony,pioneer-row", "qcom,sdm630", "qcom,sdm630-mtp";
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dts b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dts
new file mode 100644
index 000000000000..82e54a73d172
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dts
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2020, Konrad Dybcio
+ */
+
+/dts-v1/;
+
+#include "sdm630-sony-xperia-nile.dtsi"
+
+/ {
+ model = "SoMC Voyager-RoW";
+ compatible = "sony,voyager-row", "qcom,sdm630", "qcom,sdm630-mtp";
+
+ chosen {
+ framebuffer@9d400000 {
+ reg = <0 0x9d400000 0 (2160 * 1080 * 4)>;
+ height = <2160>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi
new file mode 100644
index 000000000000..af75ab211b5f
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi
@@ -0,0 +1,135 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2020, Konrad Dybcio
+ */
+
+/dts-v1/;
+
+#include "sdm630.dtsi"
+#include "pm660.dtsi"
+#include "pm660l.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/input/gpio-keys.h>
+
+/ {
+ /* required for bootloader to select correct board */
+ qcom,msm-id = <318 0>;
+ qcom,board-id = <8 1>;
+ qcom,pmic-id = <0x1001b 0x101011a 0x00 0x00 0x1001b 0x201011a 0x00 0x00>;
+
+ /* This part enables graphical output via bootloader-enabled display */
+ chosen {
+ bootargs = "earlycon=tty0 console=tty0";
+
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ stdout-path = "framebuffer0";
+
+ framebuffer0: framebuffer@9d400000 {
+ compatible = "simple-framebuffer";
+ reg = <0 0x9d400000 0 (1920 * 1080 * 4)>;
+ width = <1080>;
+ height = <1920>;
+ stride = <(1080 * 4)>;
+ format = "a8r8g8b8";
+ status= "okay";
+ };
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ramoops@ffc00000 {
+ compatible = "ramoops";
+ reg = <0x0 0xffc00000 0x0 0x100000>;
+ record-size = <0x10000>;
+ console-size = <0x60000>;
+ ftrace-size = <0x10000>;
+ pmsg-size = <0x20000>;
+ ecc-size = <16>;
+ status = "okay";
+ };
+
+ debug_region@ffb00000 {
+ reg = <0x00 0xffb00000 0x00 0x100000>;
+ no-map;
+ };
+
+ removed_region@85800000 {
+ reg = <0x00 0x85800000 0x00 0x3700000>;
+ no-map;
+ };
+ };
+
+ soc {
+ gpio_keys {
+ status = "okay";
+ compatible = "gpio-keys";
+ input-name = "gpio-keys";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ autorepeat;
+
+ camera_focus {
+ label = "Camera Focus";
+ gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
+ linux,input-type = <1>;
+ linux,code = <KEY_CAMERA_FOCUS>;
+ debounce-interval = <15>;
+ };
+
+ camera_snapshot {
+ label = "Camera Snapshot";
+ gpios = <&tlmm 113 GPIO_ACTIVE_LOW>;
+ linux,input-type = <1>;
+ linux,code = <KEY_CAMERA>;
+ debounce-interval = <15>;
+ };
+
+ vol_down {
+ label = "Volume Down";
+ gpios = <&pm660l_gpios 7 GPIO_ACTIVE_LOW>;
+ linux,input-type = <1>;
+ linux,code = <KEY_VOLUMEDOWN>;
+ gpio-key,wakeup;
+ debounce-interval = <15>;
+ };
+ };
+
+ sdhci@c0c4000 {
+ status = "okay";
+
+ /* SoMC Nile platform's eMMC doesn't support HS200 mode */
+ /delete-property/ mmc-hs200-1_8v;
+ };
+
+ i2c@c175000 {
+ status = "okay";
+
+ /* Synaptics touchscreen */
+ };
+
+ i2c@c176000 {
+ status = "okay";
+
+ /* SMB1351 charger */
+ };
+
+ /* I2C3, 4, 5, 7 and 8 are disabled on this board. */
+
+ i2c@c1b6000 {
+ status = "okay";
+
+ /* NXP NFC */
+ };
+
+ serial@c1af000 {
+ status = "okay";
+ };
+ };
+};
--
2.27.0
On Mon 22 Jun 00:57 PDT 2020, Konrad Dybcio wrote:
> Add device tree support for the Sony Xperia XA2, XA2 Plus and
> XA2 Ultra smartphones. They are all based on the Sony Nile
> platform (sdm630) and share a lot of common code. The
> differences are really minor, so a Nile-common DTSI
> has been created to reduce clutter.
>
> XA2 - Pioneer
> XA2 Plus - Voyager
> XA2 Ultra - Discovery
>
> The boards currently support:
> * Screen console
> * SDHCI
> * I2C
> * pstore log dump
> * GPIO keys
> * PSCI idle states
>
> Signed-off-by: Konrad Dybcio <[email protected]>
> Tested-by: ??ukasz Patron <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/Makefile | 3 +
> .../sdm630-sony-xperia-nile-discovery.dts | 13 ++
> .../qcom/sdm630-sony-xperia-nile-pioneer.dts | 13 ++
> .../qcom/sdm630-sony-xperia-nile-voyager.dts | 20 +++
> .../dts/qcom/sdm630-sony-xperia-nile.dtsi | 135 ++++++++++++++++++
> 5 files changed, 184 insertions(+)
> create mode 100644 arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dts
> create mode 100644 arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dts
> create mode 100644 arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dts
> create mode 100644 arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 0f2c33d611df..1cad7cb07574 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -16,6 +16,9 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8998-hp-envy-x2.dtb
> dtb-$(CONFIG_ARCH_QCOM) += msm8998-lenovo-miix-630.dtb
> dtb-$(CONFIG_ARCH_QCOM) += msm8998-mtp.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sc7180-idp.dtb
> +dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-nile-discovery.dtb
> +dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-nile-pioneer.dtb
> +dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-nile-voyager.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sdm660-xiaomi-lavender.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sdm845-cheza-r1.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sdm845-cheza-r2.dtb
> diff --git a/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dts b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dts
> new file mode 100644
> index 000000000000..1312eebe76a1
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dts
> @@ -0,0 +1,13 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2020, Konrad Dybcio
> + */
> +
> +/dts-v1/;
> +
> +#include "sdm630-sony-xperia-nile.dtsi"
> +
> +/ {
> + model = "SoMC Discovery-RoW";
Given that this is already stated by the compatible, would it be
reasonable to make this use the marketing name instead?
(I.e. "Sony Mobile Xperia XA2 Ultra")
> + compatible = "sony,discovery-row", "qcom,sdm630", "qcom,sdm630-mtp";
Does the -mtp one have any significance? Otherwise I would like you to
drop this - given that this isn't going to be compatible with the actual
MTP hardware.
> +};
> diff --git a/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dts b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dts
> new file mode 100644
> index 000000000000..76f20ad5273f
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dts
> @@ -0,0 +1,13 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2020, Konrad Dybcio
> + */
> +
> +/dts-v1/;
> +
> +#include "sdm630-sony-xperia-nile.dtsi"
> +
> +/ {
> + model = "SoMC Pioneer-RoW";
> + compatible = "sony,pioneer-row", "qcom,sdm630", "qcom,sdm630-mtp";
> +};
> diff --git a/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dts b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dts
> new file mode 100644
> index 000000000000..82e54a73d172
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dts
> @@ -0,0 +1,20 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2020, Konrad Dybcio
> + */
> +
> +/dts-v1/;
> +
> +#include "sdm630-sony-xperia-nile.dtsi"
> +
> +/ {
> + model = "SoMC Voyager-RoW";
> + compatible = "sony,voyager-row", "qcom,sdm630", "qcom,sdm630-mtp";
> +
> + chosen {
> + framebuffer@9d400000 {
> + reg = <0 0x9d400000 0 (2160 * 1080 * 4)>;
> + height = <2160>;
> + };
> + };
> +};
> diff --git a/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi
> new file mode 100644
> index 000000000000..af75ab211b5f
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi
> @@ -0,0 +1,135 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2020, Konrad Dybcio
> + */
> +
> +/dts-v1/;
> +
> +#include "sdm630.dtsi"
> +#include "pm660.dtsi"
> +#include "pm660l.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/input/gpio-keys.h>
> +
> +/ {
> + /* required for bootloader to select correct board */
> + qcom,msm-id = <318 0>;
> + qcom,board-id = <8 1>;
> + qcom,pmic-id = <0x1001b 0x101011a 0x00 0x00 0x1001b 0x201011a 0x00 0x00>;
> +
> + /* This part enables graphical output via bootloader-enabled display */
> + chosen {
> + bootargs = "earlycon=tty0 console=tty0";
> +
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + stdout-path = "framebuffer0";
> +
> + framebuffer0: framebuffer@9d400000 {
> + compatible = "simple-framebuffer";
Please check the indentation here.
> + reg = <0 0x9d400000 0 (1920 * 1080 * 4)>;
> + width = <1080>;
> + height = <1920>;
> + stride = <(1080 * 4)>;
> + format = "a8r8g8b8";
> + status= "okay";
> + };
> + };
> +
> + reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + ramoops@ffc00000 {
> + compatible = "ramoops";
> + reg = <0x0 0xffc00000 0x0 0x100000>;
> + record-size = <0x10000>;
> + console-size = <0x60000>;
> + ftrace-size = <0x10000>;
> + pmsg-size = <0x20000>;
> + ecc-size = <16>;
> + status = "okay";
> + };
> +
> + debug_region@ffb00000 {
> + reg = <0x00 0xffb00000 0x00 0x100000>;
> + no-map;
> + };
> +
> + removed_region@85800000 {
> + reg = <0x00 0x85800000 0x00 0x3700000>;
> + no-map;
> + };
> + };
> +
> + soc {
> + gpio_keys {
/soc is for mmio devices, as such gpio_keys should be moved outside
"soc".
Regards,
Bjorn
> + status = "okay";
> + compatible = "gpio-keys";
> + input-name = "gpio-keys";
> + #address-cells = <1>;
> + #size-cells = <0>;
> + autorepeat;
> +
> + camera_focus {
> + label = "Camera Focus";
> + gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
> + linux,input-type = <1>;
> + linux,code = <KEY_CAMERA_FOCUS>;
> + debounce-interval = <15>;
> + };
> +
> + camera_snapshot {
> + label = "Camera Snapshot";
> + gpios = <&tlmm 113 GPIO_ACTIVE_LOW>;
> + linux,input-type = <1>;
> + linux,code = <KEY_CAMERA>;
> + debounce-interval = <15>;
> + };
> +
> + vol_down {
> + label = "Volume Down";
> + gpios = <&pm660l_gpios 7 GPIO_ACTIVE_LOW>;
> + linux,input-type = <1>;
> + linux,code = <KEY_VOLUMEDOWN>;
> + gpio-key,wakeup;
> + debounce-interval = <15>;
> + };
> + };
> +
> + sdhci@c0c4000 {
> + status = "okay";
> +
> + /* SoMC Nile platform's eMMC doesn't support HS200 mode */
> + /delete-property/ mmc-hs200-1_8v;
> + };
> +
> + i2c@c175000 {
> + status = "okay";
> +
> + /* Synaptics touchscreen */
> + };
> +
> + i2c@c176000 {
> + status = "okay";
> +
> + /* SMB1351 charger */
> + };
> +
> + /* I2C3, 4, 5, 7 and 8 are disabled on this board. */
> +
> + i2c@c1b6000 {
> + status = "okay";
> +
> + /* NXP NFC */
> + };
> +
> + serial@c1af000 {
> + status = "okay";
> + };
> + };
> +};
> --
> 2.27.0
>