arm64: dts: qcom: Add initial QTI RB1 device tree
authorKonrad Dybcio <konrad.dybcio@linaro.org>
Wed, 5 Apr 2023 15:50:34 +0000 (17:50 +0200)
committerBjorn Andersson <andersson@kernel.org>
Fri, 7 Apr 2023 18:35:15 +0000 (11:35 -0700)
Add an initial device tree for the QTI RB1 development board, based on
the QRB2210 (QCM2290 derivative) SoC. This device tree targets the SoM
revision 4, a.k.a. the Mass Production SKU.

To get a successful boot, run:

cat arch/arm64/boot/Image.gz arch/arm64/boot/dts/qcom/qrb2210-rb1.dtb >\
.Image.gz-dtb

mkbootimg \
--kernel .Image.gz-dtb \
--ramdisk some_initrd \
--output rb1-boot.img \
--pagesize 4096 \
--base 0x8000 \
--cmdline 'some cmdline'

fastboot boot rb1-boot.img

There's no dtbo or other craziness to worry about.
For the best dev experience, you can erase boot and use fastboot boot
everytime, so that the bootloader doesn't mess with you.

If you have a SoM revision 3 or older (there should be a sticker on it
with text like -r00, where r is the revision), you will need to apply
this additional diff:

aliases {
-   serial0 = &uart0;
+   serial0 = &uart4;

/* UART connected to the Micro-USB port via a FTDI chip */
-   &uart0 {
+   &uart4 {

That should however only concern preproduction boards.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230403-topic-rb1_qcm-v2-5-dae06f8830dc@linaro.org
arch/arm64/boot/dts/qcom/Makefile
arch/arm64/boot/dts/qcom/qrb2210-rb1.dts [new file with mode: 0644]

index 915ff1e..c5f42cb 100644 (file)
@@ -72,6 +72,7 @@ dtb-$(CONFIG_ARCH_QCOM)       += msm8998-xiaomi-sagit.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += qcs404-evb-1000.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += qcs404-evb-4000.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += qdu1000-idp.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += qrb2210-rb1.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += qrb5165-rb5.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += qrb5165-rb5-vision-mezzanine.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += qru1000-idp.dtb
diff --git a/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts b/arch/arm64/boot/dts/qcom/qrb2210-rb1.dts
new file mode 100644 (file)
index 0000000..ef36160
--- /dev/null
@@ -0,0 +1,112 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) 2023, Linaro Ltd
+ */
+
+/dts-v1/;
+
+#include "qcm2290.dtsi"
+#include "pm2250.dtsi"
+
+/ {
+       model = "Qualcomm Technologies, Inc. Robotics RB1";
+       compatible = "qcom,qrb2210-rb1", "qcom,qrb2210", "qcom,qcm2290";
+
+       aliases {
+               serial0 = &uart0;
+               sdhc1 = &sdhc_1;
+               sdhc2 = &sdhc_2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               label = "gpio-keys";
+
+               pinctrl-0 = <&key_volp_n>;
+               pinctrl-names = "default";
+
+               key-volume-up {
+                       label = "Volume Up";
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpios = <&tlmm 96 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <15>;
+                       linux,can-disable;
+                       wakeup-source;
+               };
+       };
+};
+
+&pm2250_resin {
+       linux,code = <KEY_VOLUMEDOWN>;
+       status = "okay";
+};
+
+&qupv3_id_0 {
+       status = "okay";
+};
+
+&sdhc_1 {
+       pinctrl-0 = <&sdc1_state_on>;
+       pinctrl-1 = <&sdc1_state_off>;
+       pinctrl-names = "default", "sleep";
+       non-removable;
+       supports-cqe;
+       no-sdio;
+       no-sd;
+       status = "okay";
+};
+
+&sdhc_2 {
+       cd-gpios = <&tlmm 88 GPIO_ACTIVE_LOW>;
+       pinctrl-0 = <&sdc2_state_on &sd_det_in_on>;
+       pinctrl-1 = <&sdc2_state_off &sd_det_in_off>;
+       pinctrl-names = "default", "sleep";
+       no-sdio;
+       no-mmc;
+       status = "okay";
+};
+
+&tlmm {
+       sd_det_in_on: sd-det-in-on-state {
+               pins = "gpio88";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       sd_det_in_off: sd-det-in-off-state {
+               pins = "gpio88";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       key_volp_n: key-volp-n-state {
+               pins = "gpio96";
+               function = "gpio";
+               bias-pull-up;
+               output-disable;
+       };
+};
+
+/* UART connected to the Micro-USB port via a FTDI chip */
+&uart0 {
+       compatible = "qcom,geni-debug-uart";
+       status = "okay";
+};
+
+&usb {
+       status = "okay";
+};
+
+&usb_hsphy {
+       status = "okay";
+};
+
+&xo_board {
+       clock-frequency = <38400000>;
+};