* [PATCH 0/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
@ 2025-11-14 16:34 Hongyang Zhao
2025-11-14 16:34 ` [PATCH 1/2] " Hongyang Zhao
2025-11-14 16:34 ` [PATCH 2/2] dt-bindings: arm: qcom: rubikpi3: document rubikpi3 board binding Hongyang Zhao
0 siblings, 2 replies; 12+ messages in thread
From: Hongyang Zhao @ 2025-11-14 16:34 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, Hongyang Zhao,
Roger Shimizu
RUBIK Pi 3 (https://rubikpi.ai/), a lightweight development board based on
Qualcomm Dragonwing™ QCS6490 platform, is the first Pi built on Qualcomm
AI platforms for developers.
This commit enables the following features:
Works:
- Bluetooth (AP6256)
- Wi-Fi (AP6256)
- Ethernet (AX88179B connected to UPD720201)
- FAN
- Two USB Type-A 3.0 ports (UPD720201 connected to PCIe0)
- M.2 M-Key 2280 PCIe 3.0
- RTC
- USB Type-C
- USB Type-A 2.0 port
- 40PIN: I2C x1, UART x1
Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
---
Changes in v6:
- Fix device tree formatting issues.
- Add firmware-name to QUPv3 nodes.
- An "Internal error: synchronous external abort" error occurred while
executing the `qcom_pcie_clear_hpc` function in the PCIe1 RC. The following
changes were rolled back(overriding the configuration in `kodiak.dtsi`):
03e928442d46 arm64: dts: qcom: sc7280: Increase config size to 256MB for ECAM feature
- Replace the three monochrome LEDs with multicolor LEDs.
- The drive-strength value of the pins is modified uniformly.
- Link to v5: https://lore.kernel.org/linux-arm-msm/20251025122724.633766-1-hongyang.zhao@thundersoft.com/
Changes in v5:
- Fix device tree formatting issues.
- Add fan control that follows CPU0 temperature.
- Link to v4: https://lore.kernel.org/linux-arm-msm/20250930043258.249641-1-hongyang.zhao@thundersoft.com/
Changes in v4:
- Enable PCIe0 node.
- Added AX88179B Ethernet and UPD720201 USBHUB power control.
- Delete the nodes and attributes defined in sc7280.dtsi.
- Modify qcom.yaml to add binding for the Thundercomm RUBIK Pi 3 board.
- Link to v3: https://lore.kernel.org/linux-arm-msm/20250924161120.27051-1-hongyang.zhao@thundersoft.com/
Changes in v3:
- Rebase on linux-next/master.
- Link to v2: https://lore.kernel.org/linux-arm-msm/20250924121541.128582-1-hongyang.zhao@thundersoft.com/
Changes in v2:
- Fix problems found when running device tree check.
- Enable USB2.0 interface.
- Link to v1: https://lore.kernel.org/linux-arm-msm/20250923064330.518784-1-hongyang.zhao@thundersoft.com/
---
---
Hongyang Zhao (2):
arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
dt-bindings: arm: qcom: rubikpi3: document rubikpi3 board binding
Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 1415 ++++++++++++++++++++
3 files changed, 1417 insertions(+)
---
base-commit: 0f2995693867bfb26197b117cd55624ddc57582f
change-id: 20251114-rubikpi-next-20251114-bdc23cf16ed6
Best regards,
--
Hongyang Zhao <hongyang.zhao@thundersoft.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
2025-11-14 16:34 [PATCH 0/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts Hongyang Zhao
@ 2025-11-14 16:34 ` Hongyang Zhao
2025-11-15 17:08 ` Jens Reidel
2025-11-16 17:46 ` Dmitry Baryshkov
2025-11-14 16:34 ` [PATCH 2/2] dt-bindings: arm: qcom: rubikpi3: document rubikpi3 board binding Hongyang Zhao
1 sibling, 2 replies; 12+ messages in thread
From: Hongyang Zhao @ 2025-11-14 16:34 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, Hongyang Zhao,
Roger Shimizu
Add DTS for Thundercomm qcs6490-rubikpi3 board which uses
QCS6490 SoC.
Works:
- Bluetooth (AP6256)
- Wi-Fi (AP6256)
- Ethernet (AX88179B connected to UPD720201)
- FAN
- Two USB Type-A 3.0 ports (UPD720201 connected to PCIe0)
- M.2 M-Key 2280 PCIe 3.0
- RTC
- USB Type-C
- USB Type-A 2.0 port
- 40PIN: I2C x1, UART x1
Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
Reviewed-by: Roger Shimizu <rosh@debian.org>
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 1415 ++++++++++++++++++++
2 files changed, 1416 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 6f34d5ed331c..2433b15754fe 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -138,6 +138,7 @@ qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2
dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-vision-mezzanine.dtb
+dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-rubikpi3.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
new file mode 100644
index 000000000000..4c9016992de3
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
@@ -0,0 +1,1415 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025, Thundercomm All rights reserved.
+ */
+
+/dts-v1/;
+
+/* PM7250B is configured to use SID8/9 */
+#define PM7250B_SID 8
+#define PM7250B_SID1 9
+
+#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
+#include <dt-bindings/iio/qcom,spmi-adc7-pm7325.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include "kodiak.dtsi"
+#include "pm7250b.dtsi"
+#include "pm7325.dtsi"
+#include "pm8350c.dtsi" /* PM7350C */
+#include "pmk8350.dtsi" /* PMK7325 */
+
+/delete-node/ &adsp_mem;
+/delete-node/ &cdsp_mem;
+/delete-node/ &ipa_fw_mem;
+/delete-node/ &mpss_mem;
+/delete-node/ &remoteproc_mpss;
+/delete-node/ &remoteproc_wpss;
+/delete-node/ &rmtfs_mem;
+/delete-node/ &video_mem;
+/delete-node/ &wifi;
+/delete-node/ &wlan_ce_mem;
+/delete-node/ &wlan_fw_mem;
+/delete-node/ &wpss_mem;
+/delete-node/ &xbl_mem;
+
+/ {
+ model = "Thundercomm RUBIK Pi 3";
+ compatible = "thundercomm,rubikpi3", "qcom,qcm6490";
+
+ chassis-type = "embedded";
+
+ aliases {
+ serial0 = &uart5;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&kypd_vol_up_n>;
+ pinctrl-names = "default";
+
+ key-volume-up {
+ label = "Volume Up";
+ gpios = <&pm7325_gpios 6 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_VOLUMEUP>;
+ linux,can-disable;
+ };
+ };
+
+ hdmi-connector {
+ compatible = "hdmi-connector";
+ type = "a";
+
+ port {
+ hdmi_con: endpoint {
+ remote-endpoint = <<9611_out>;
+ };
+ };
+ };
+
+ pmic-glink {
+ compatible = "qcom,qcm6490-pmic-glink", "qcom,pmic-glink";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+ orientation-gpios = <&tlmm 140 GPIO_ACTIVE_HIGH>;
+
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_hs_in: endpoint {
+ remote-endpoint = <&usb_1_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_ss_in: endpoint {
+ remote-endpoint = <&usb_dp_qmpphy_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_sbu_in: endpoint {
+ remote-endpoint = <&usb1_sbu_mux>;
+ };
+ };
+ };
+ };
+ };
+
+ fan0: pwm-fan {
+ compatible = "pwm-fan";
+ /* cooling level (0, 1, 2, 3) : (0% duty, 25% duty, 50% duty, 100% duty) */
+ cooling-levels = <0 64 128 255>;
+ #cooling-cells = <2>;
+ pwms = <&pm8350c_pwm 3 1000000>;
+ pinctrl-0 = <&fan_pwm_out_default>;
+ pinctrl-names = "default";
+ };
+
+ vreg_eth_1v8: regulator-eth-1v8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "vreg_eth_1v8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-enable-ramp-delay = <50000>;
+
+ gpio = <&tlmm 7 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usb_eth_power>;
+ pinctrl-names = "default";
+
+ vin-supply = <&vreg_usbhub_pwr_1v8>;
+ };
+
+ vreg_lt9611_3v3: regulator-lt9611-3v3 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "vreg_lt9611_3v3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 83 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <<9611_vcc_pin>;
+ pinctrl-names = "default";
+ };
+
+ vreg_m2_1v8: regulator-m2-1v8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "vreg_m2_1v8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-enable-ramp-delay = <50000>;
+
+ gpio = <&tlmm 56 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&m2_vcc_pin>;
+ pinctrl-names = "default";
+
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ vreg_usbhub_pwr_1v8: regulator-usbhub-pwr-1v8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "vreg_usbhub_pwr_1v8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-enable-ramp-delay = <50000>;
+
+ gpio = <&tlmm 86 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usbhub_power>;
+ pinctrl-names = "default";
+
+ regulator-always-on;
+ };
+
+ vreg_usbhub_rest_1v8: regulator-usbhub-rest-1v8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "vreg_usbhub_rest_1v8";
+ regulator-min-microvolt = <1800000>;
+ regulator-enable-ramp-delay = <50000>;
+ regulator-max-microvolt = <1800000>;
+
+ gpio = <&tlmm 136 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usbhub_rest>;
+ pinctrl-names = "default";
+
+ vin-supply = <&vreg_eth_1v8>;
+
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ vph_pwr: regulator-vph-pwr {
+ compatible = "regulator-fixed";
+
+ regulator-name = "vph_pwr";
+ regulator-min-microvolt = <3700000>;
+ regulator-max-microvolt = <3700000>;
+ };
+
+ vreg_wifi_1v8: regulator-wifi-1v8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "vreg_wifi_1v8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-enable-ramp-delay = <50000>;
+
+ gpio = <&tlmm 125 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&wifi_reset_active>,
+ <&wifi_host_wake>,
+ <&wifi_power_on>;
+ pinctrl-names = "default";
+
+ regulator-always-on;
+ };
+
+ reserved-memory {
+ xbl_mem: xbl@80700000 {
+ reg = <0x0 0x80700000 0x0 0x100000>;
+ no-map;
+ };
+
+ cdsp_secure_heap_mem: cdsp-secure-heap@81800000 {
+ reg = <0x0 0x81800000 0x0 0x1e00000>;
+ no-map;
+ };
+
+ camera_mem: camera@84300000 {
+ reg = <0x0 0x84300000 0x0 0x500000>;
+ no-map;
+ };
+
+ adsp_mem: adsp@86100000 {
+ reg = <0x0 0x86100000 0x0 0x2800000>;
+ no-map;
+ };
+
+ cdsp_mem: cdsp@88900000 {
+ reg = <0x0 0x88900000 0x0 0x1e00000>;
+ no-map;
+ };
+
+ video_mem: video@8a700000 {
+ reg = <0x0 0x8a700000 0x0 0x700000>;
+ no-map;
+ };
+
+ cvp_mem: cvp@8ae00000 {
+ reg = <0x0 0x8ae00000 0x0 0x500000>;
+ no-map;
+ };
+
+ gpu_microcode_mem: gpu-microcode@8b31a000 {
+ reg = <0x0 0x8b31a000 0x0 0x2000>;
+ no-map;
+ };
+
+ tz_stat_mem: tz-stat@c0000000 {
+ reg = <0x0 0xc0000000 0x0 0x100000>;
+ no-map;
+ };
+
+ tags_mem: tags@c0100000 {
+ reg = <0x0 0xc0100000 0x0 0x1200000>;
+ no-map;
+ };
+
+ qtee_mem: qtee@c1300000 {
+ reg = <0x0 0xc1300000 0x0 0x500000>;
+ no-map;
+ };
+
+ trusted_apps_mem: trusted-apps@c1800000 {
+ reg = <0x0 0xc1800000 0x0 0x1c00000>;
+ no-map;
+ };
+
+ debug_vm_mem: debug-vm@d0600000 {
+ reg = <0x0 0xd0600000 0x0 0x100000>;
+ no-map;
+ };
+ };
+
+ thermal-zones {
+ quiet-thermal {
+ thermal-sensors = <&pmk8350_adc_tm 1>;
+
+ trips {
+ active-config0 {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "passive";
+ };
+ };
+ };
+
+ sdm-skin-thermal {
+ thermal-sensors = <&pmk8350_adc_tm 3>;
+
+ trips {
+ active-config0 {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "passive";
+ };
+ };
+ };
+
+ xo-thermal {
+ thermal-sensors = <&pmk8350_adc_tm 0>;
+
+ trips {
+ active-config0 {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "passive";
+ };
+ };
+ };
+ };
+
+ usb1-sbu-mux {
+ compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+ enable-gpios = <&tlmm 53 GPIO_ACTIVE_LOW>;
+ select-gpios = <&tlmm 52 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&usb1_sbu_default>;
+ pinctrl-names = "default";
+ mode-switch;
+ orientation-switch;
+
+ port {
+ usb1_sbu_mux: endpoint {
+ remote-endpoint = <&pmic_glink_sbu_in>;
+ };
+ };
+ };
+};
+
+&apps_rsc {
+ regulators-0 {
+ compatible = "qcom,pm7325-rpmh-regulators";
+ qcom,pmic-id = "b";
+
+ vdd-s1-supply = <&vph_pwr>;
+ vdd-s2-supply = <&vph_pwr>;
+ vdd-s3-supply = <&vph_pwr>;
+ vdd-s4-supply = <&vph_pwr>;
+ vdd-s5-supply = <&vph_pwr>;
+ vdd-s6-supply = <&vph_pwr>;
+ vdd-s7-supply = <&vph_pwr>;
+ vdd-s8-supply = <&vph_pwr>;
+ vdd-l1-l4-l12-l15-supply = <&vreg_s7b_0p972>;
+ vdd-l2-l7-supply = <&vreg_bob_3p296>;
+ vdd-l3-supply = <&vreg_s2b_0p876>;
+ vdd-l5-supply = <&vreg_s2b_0p876>;
+ vdd-l6-l9-l10-supply = <&vreg_s8b_1p272>;
+ vdd-l8-supply = <&vreg_s7b_0p972>;
+ vdd-l11-l17-l18-l19-supply = <&vreg_s1b_1p872>;
+ vdd-l13-supply = <&vreg_s7b_0p972>;
+ vdd-l14-l16-supply = <&vreg_s8b_1p272>;
+
+ vreg_s1b_1p872: smps1 {
+ regulator-name = "vreg_s1b_1p872";
+ regulator-min-microvolt = <1840000>;
+ regulator-max-microvolt = <2040000>;
+ };
+
+ vreg_s2b_0p876: smps2 {
+ regulator-name = "vreg_s2b_0p876";
+ regulator-min-microvolt = <570070>;
+ regulator-max-microvolt = <1050000>;
+ };
+
+ vreg_s7b_0p972: smps7 {
+ regulator-name = "vreg_s7b_0p972";
+ regulator-min-microvolt = <535000>;
+ regulator-max-microvolt = <1120000>;
+ };
+
+ vreg_s8b_1p272: smps8 {
+ regulator-name = "vreg_s8b_1p272";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1500000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_RET>;
+ };
+
+ vreg_l1b_0p912: ldo1 {
+ regulator-name = "vreg_l1b_0p912";
+ regulator-min-microvolt = <825000>;
+ regulator-max-microvolt = <925000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2b_3p072: ldo2 {
+ regulator-name = "vreg_l2b_3p072";
+ regulator-min-microvolt = <2700000>;
+ regulator-max-microvolt = <3544000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3b_0p504: ldo3 {
+ regulator-name = "vreg_l3b_0p504";
+ regulator-min-microvolt = <312000>;
+ regulator-max-microvolt = <910000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4b_0p752: ldo4 {
+ regulator-name = "vreg_l4b_0p752";
+ regulator-min-microvolt = <752000>;
+ regulator-max-microvolt = <820000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ reg_l5b_0p752: ldo5 {
+ regulator-name = "reg_l5b_0p752";
+ regulator-min-microvolt = <552000>;
+ regulator-max-microvolt = <832000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6b_1p2: ldo6 {
+ regulator-name = "vreg_l6b_1p2";
+ regulator-min-microvolt = <1140000>;
+ regulator-max-microvolt = <1260000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7b_2p952: ldo7 {
+ regulator-name = "vreg_l7b_2p952";
+ regulator-min-microvolt = <2952000>;
+ regulator-max-microvolt = <2952000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l8b_0p904: ldo8 {
+ regulator-name = "vreg_l8b_0p904";
+ regulator-min-microvolt = <870000>;
+ regulator-max-microvolt = <970000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l9b_1p2: ldo9 {
+ regulator-name = "vreg_l9b_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l11b_1p504: ldo11 {
+ regulator-name = "vreg_l11b_1p504";
+ regulator-min-microvolt = <1504000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l12b_0p751: ldo12 {
+ regulator-name = "vreg_l12b_0p751";
+ regulator-min-microvolt = <751000>;
+ regulator-max-microvolt = <824000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l13b_0p53: ldo13 {
+ regulator-name = "vreg_l13b_0p53";
+ regulator-min-microvolt = <530000>;
+ regulator-max-microvolt = <824000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l14b_1p08: ldo14 {
+ regulator-name = "vreg_l14b_1p08";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1304000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l15b_0p765: ldo15 {
+ regulator-name = "vreg_l15b_0p765";
+ regulator-min-microvolt = <765000>;
+ regulator-max-microvolt = <1020000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l16b_1p1: ldo16 {
+ regulator-name = "vreg_l16b_1p1";
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l17b_1p7: ldo17 {
+ regulator-name = "vreg_l17b_1p7";
+ regulator-min-microvolt = <1700000>;
+ regulator-max-microvolt = <1900000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l18b_1p8: ldo18 {
+ regulator-name = "vreg_l18b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l19b_1p8: ldo19 {
+ regulator-name = "vreg_l19b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-1 {
+ compatible = "qcom,pm8350c-rpmh-regulators";
+ qcom,pmic-id = "c";
+
+ vdd-s1-supply = <&vph_pwr>;
+ vdd-s2-supply = <&vph_pwr>;
+ vdd-s3-supply = <&vph_pwr>;
+ vdd-s4-supply = <&vph_pwr>;
+ vdd-s5-supply = <&vph_pwr>;
+ vdd-s6-supply = <&vph_pwr>;
+ vdd-s7-supply = <&vph_pwr>;
+ vdd-s8-supply = <&vph_pwr>;
+ vdd-s9-supply = <&vph_pwr>;
+ vdd-s10-supply = <&vph_pwr>;
+ vdd-l1-l12-supply = <&vreg_s1b_1p872>;
+ vdd-l2-l8-supply = <&vreg_s1b_1p872>;
+ vdd-l3-l4-l5-l7-l13-supply = <&vreg_bob_3p296>;
+ vdd-l6-l9-l11-supply = <&vreg_bob_3p296>;
+ vdd-l10-supply = <&vreg_s7b_0p972>;
+ vdd-bob-supply = <&vph_pwr>;
+
+ vreg_s1c_2p19: smps1 {
+ regulator-name = "vreg_s1c_2p19";
+ regulator-min-microvolt = <2190000>;
+ regulator-max-microvolt = <2210000>;
+ };
+
+ vreg_s2c_0p752: smps2 {
+ regulator-name = "vreg_s2c_0p752";
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <800000>;
+ };
+
+ vreg_s5c_0p752: smps5 {
+ regulator-name = "vreg_s5c_0p752";
+ regulator-min-microvolt = <465000>;
+ regulator-max-microvolt = <1050000>;
+ };
+
+ vreg_s7c_0p752: smps7 {
+ regulator-name = "vreg_s7c_0p752";
+ regulator-min-microvolt = <465000>;
+ regulator-max-microvolt = <800000>;
+ };
+
+ vreg_s9c_1p084: smps9 {
+ regulator-name = "vreg_s9c_1p084";
+ regulator-min-microvolt = <1010000>;
+ regulator-max-microvolt = <1170000>;
+ };
+
+ vreg_l1c_1p8: ldo1 {
+ regulator-name = "vreg_l1c_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1980000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2c_1p62: ldo2 {
+ regulator-name = "vreg_l2c_1p62";
+ regulator-min-microvolt = <1620000>;
+ regulator-max-microvolt = <1980000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3c_2p8: ldo3 {
+ regulator-name = "vreg_l3c_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <3540000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4c_1p62: ldo4 {
+ regulator-name = "vreg_l4c_1p62";
+ regulator-min-microvolt = <1620000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5c_1p62: ldo5 {
+ regulator-name = "vreg_l5c_1p62";
+ regulator-min-microvolt = <1620000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6c_2p96: ldo6 {
+ regulator-name = "vreg_l6c_2p96";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7c_3p0: ldo7 {
+ regulator-name = "vreg_l7c_3p0";
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3544000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l8c_1p62: ldo8 {
+ regulator-name = "vreg_l8c_1p62";
+ regulator-min-microvolt = <1620000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l9c_2p96: ldo9 {
+ regulator-name = "vreg_l9c_2p96";
+ regulator-min-microvolt = <2700000>;
+ regulator-max-microvolt = <3544000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l10c_0p88: ldo10 {
+ regulator-name = "vreg_l10c_0p88";
+ regulator-min-microvolt = <720000>;
+ regulator-max-microvolt = <1050000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l11c_2p8: ldo11 {
+ regulator-name = "vreg_l11c_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <3544000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l12c_1p65: ldo12 {
+ regulator-name = "vreg_l12c_1p65";
+ regulator-min-microvolt = <1650000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l13c_2p7: ldo13 {
+ regulator-name = "vreg_l13c_2p7";
+ regulator-min-microvolt = <2700000>;
+ regulator-max-microvolt = <3544000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_bob_3p296: bob {
+ regulator-name = "vreg_bob_3p296";
+ regulator-min-microvolt = <3008000>;
+ regulator-max-microvolt = <3960000>;
+ };
+ };
+};
+
+&gcc {
+ protected-clocks = <GCC_CFG_NOC_LPASS_CLK>,
+ <GCC_MSS_CFG_AHB_CLK>,
+ <GCC_MSS_GPLL0_MAIN_DIV_CLK_SRC>,
+ <GCC_MSS_OFFLINE_AXI_CLK>,
+ <GCC_MSS_Q6SS_BOOT_CLK_SRC>,
+ <GCC_MSS_Q6_MEMNOC_AXI_CLK>,
+ <GCC_MSS_SNOC_AXI_CLK>,
+ <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
+ <GCC_QSPI_CORE_CLK>,
+ <GCC_QSPI_CORE_CLK_SRC>,
+ <GCC_SEC_CTRL_CLK_SRC>,
+ <GCC_WPSS_AHB_BDG_MST_CLK>,
+ <GCC_WPSS_AHB_CLK>,
+ <GCC_WPSS_RSCP_CLK>;
+};
+
+&gpi_dma0 {
+ status = "okay";
+};
+
+&gpi_dma1 {
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/qcs6490/a660_zap.mbn";
+};
+
+/* Pin 3, 5 in 40-pin connector */
+&i2c1 {
+ status = "okay";
+};
+
+&i2c9 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ lt9611_codec: hdmi-bridge@39 {
+ compatible = "lontium,lt9611";
+ reg = <0x39>;
+
+ interrupts-extended = <&tlmm 20 IRQ_TYPE_EDGE_FALLING>;
+ reset-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
+
+ vdd-supply = <&vreg_lt9611_3v3>;
+ vcc-supply = <&vreg_lt9611_3v3>;
+
+ pinctrl-0 = <<9611_irq_pin>,
+ <<9611_rst_pin>;
+ pinctrl-names = "default";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ lt9611_a: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ lt9611_out: endpoint {
+ remote-endpoint = <&hdmi_con>;
+ };
+ };
+ };
+ };
+};
+
+&lpass_audiocc {
+ compatible = "qcom,qcm6490-lpassaudiocc";
+ /delete-property/ power-domains;
+};
+
+&mdss {
+ status = "okay";
+};
+
+&mdss_dp {
+ status = "okay";
+};
+
+&mdss_dp_out {
+ data-lanes = <0 1>;
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+
+ remote-endpoint = <&usb_dp_qmpphy_dp_in>;
+};
+
+&mdss_dsi {
+ vdda-supply = <&vreg_l6b_1p2>;
+
+ status = "okay";
+};
+
+&mdss_dsi0_out {
+ remote-endpoint = <<9611_a>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi_phy {
+ vdds-supply = <&vreg_l10c_0p88>;
+
+ status = "okay";
+};
+
+&pcie0 {
+ perst-gpios = <&tlmm 87 GPIO_ACTIVE_LOW>;
+ wake-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-0 = <&pcie0_clkreq_n>,
+ <&pcie0_reset_n>,
+ <&pcie0_wake_n>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&pcie0_phy {
+ vdda-phy-supply = <&vreg_l10c_0p88>;
+ vdda-pll-supply = <&vreg_l6b_1p2>;
+
+ status = "okay";
+};
+
+&pcie1 {
+ /* Using traditional address mapping */
+ reg = <0 0x01c08000 0 0x3000>,
+ <0 0x40000000 0 0xf1d>,
+ <0 0x40000f20 0 0xa8>,
+ <0 0x40001000 0 0x1000>,
+ <0 0x40100000 0 0x100000>;
+
+ ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
+ <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
+
+
+ perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
+ wake-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&pcie1_clkreq_n>,
+ <&pcie1_reset_n>,
+ <&pcie1_wake_n>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&pcie1_phy {
+ vdda-phy-supply = <&vreg_l10c_0p88>;
+ vdda-pll-supply = <&vreg_l6b_1p2>;
+
+ status = "okay";
+};
+
+&pm7325_gpios {
+ kypd_vol_up_n: kypd-vol-up-n-state {
+ pins = "gpio6";
+ function = PMIC_GPIO_FUNC_NORMAL;
+ power-source = <1>;
+ bias-pull-up;
+ input-enable;
+ };
+};
+
+&pm7325_temp_alarm {
+ io-channels = <&pmk8350_vadc PM7325_ADC7_DIE_TEMP>;
+ io-channel-names = "thermal";
+};
+
+&pmk8350_adc_tm {
+ status = "okay";
+
+ xo-therm@0 {
+ reg = <0>;
+ io-channels = <&pmk8350_vadc PMK8350_ADC7_AMUX_THM1_100K_PU>;
+ qcom,ratiometric;
+ qcom,hw-settle-time-us = <200>;
+ };
+
+ quiet-therm@1 {
+ reg = <1>;
+ io-channels = <&pmk8350_vadc PM7325_ADC7_AMUX_THM1_100K_PU>;
+ qcom,ratiometric;
+ qcom,hw-settle-time-us = <200>;
+ };
+
+ sdm-skin-therm@3 {
+ reg = <3>;
+ io-channels = <&pmk8350_vadc PM7325_ADC7_AMUX_THM3_100K_PU>;
+ qcom,ratiometric;
+ qcom,hw-settle-time-us = <200>;
+ };
+};
+
+&pm8350c_pwm {
+ status = "okay";
+
+ multi-led {
+ color = <LED_COLOR_ID_RGB>;
+ function = LED_FUNCTION_INDICATOR;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@1 {
+ reg = <1>;
+ color = <LED_COLOR_ID_RED>;
+ };
+
+ led@2 {
+ reg = <2>;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+
+ led@3 {
+ reg = <3>;
+ color = <LED_COLOR_ID_BLUE>;
+ };
+ };
+};
+
+&pmk8350_rtc {
+ allow-set-time;
+
+ status = "okay";
+};
+
+&pmk8350_vadc {
+ channel@3 {
+ reg = <PMK8350_ADC7_DIE_TEMP>;
+ label = "pmk8350_die_temp";
+ qcom,pre-scaling = <1 1>;
+ };
+
+ channel@44 {
+ reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>;
+ label = "xo_therm";
+ qcom,hw-settle-time = <200>;
+ qcom,pre-scaling = <1 1>;
+ qcom,ratiometric;
+ };
+
+ channel@103 {
+ reg = <PM7325_ADC7_DIE_TEMP>;
+ label = "pm7325_die_temp";
+ qcom,pre-scaling = <1 1>;
+ };
+
+ channel@144 {
+ reg = <PM7325_ADC7_AMUX_THM1_100K_PU>;
+ qcom,ratiometric;
+ qcom,hw-settle-time = <200>;
+ qcom,pre-scaling = <1 1>;
+ label = "pm7325_quiet_therm";
+ };
+
+ channel@146 {
+ reg = <PM7325_ADC7_AMUX_THM3_100K_PU>;
+ qcom,ratiometric;
+ qcom,hw-settle-time = <200>;
+ qcom,pre-scaling = <1 1>;
+ label = "pm7325_sdm_skin_therm";
+ };
+};
+
+&pon_pwrkey {
+ status = "okay";
+};
+
+&pon_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&qupv3_id_0 {
+ firmware-name = "qcom/qcm6490/qupv3fw.elf";
+ status = "okay";
+};
+
+&qupv3_id_1 {
+ firmware-name = "qcom/qcm6490/qupv3fw.elf";
+ status = "okay";
+};
+
+&remoteproc_adsp {
+ firmware-name = "qcom/qcs6490/adsp.mbn";
+
+ status = "okay";
+};
+
+&remoteproc_cdsp {
+ firmware-name = "qcom/qcs6490/cdsp.mbn";
+
+ status = "okay";
+};
+
+/* WIFI part of the AP6256 connected with SDIO */
+&sdhc_2 {
+ vmmc-supply = <&vreg_l9c_2p96>;
+ vqmmc-supply = <&vreg_l6c_2p96>;
+
+ non-removable;
+ keep-power-in-suspend;
+ /delete-property/ cd-gpios;
+
+ status = "okay";
+};
+
+/* Pin 19, 21, 23, 24 in 40-pin connector */
+&spi12 {
+ status = "okay";
+};
+
+&thermal_zones {
+ cpu0-thermal {
+ trips {
+ cpu_tepid: cpu-tepid {
+ temperature = <65000>;
+ hysteresis = <5000>;
+ type = "active";
+ };
+
+ cpu_warm: cpu-warm {
+ temperature = <80000>;
+ hysteresis = <5000>;
+ type = "active";
+ };
+ };
+
+ cooling-maps {
+ map-cpu-tepid {
+ cooling-device = <&fan0 1 1>;
+ trip = <&cpu_tepid>;
+ };
+
+ map-cpu-warm {
+ cooling-device = <&fan0 2 2>;
+ trip = <&cpu_warm>;
+ };
+
+ map-cpu-hot {
+ cooling-device = <&fan0 3 3>;
+ trip = <&cpu0_alert0>;
+ };
+ };
+ };
+};
+
+/* Pin 8, 10 in 40-pin connector */
+&uart2 {
+ status = "okay";
+};
+
+&uart5 {
+ status = "okay";
+};
+
+/* BT part of the AP6256 connected with UART */
+&uart7 {
+ /delete-property/ interrupts;
+ interrupts-extended = <&intc GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>,
+ <&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
+ pinctrl-1 = <&qup_uart7_sleep_cts>,
+ <&qup_uart7_sleep_rts>,
+ <&qup_uart7_sleep_tx>,
+ <&qup_uart7_sleep_rx>;
+ pinctrl-names = "default",
+ "sleep";
+
+ status = "okay";
+
+ bluetooth {
+ compatible = "brcm,bcm4345c5";
+ clocks = <&sleep_clk>;
+ clock-names = "lpo";
+ device-wakeup-gpios = <&tlmm 39 GPIO_ACTIVE_HIGH>;
+ host-wakeup-gpios = <&tlmm 137 GPIO_ACTIVE_HIGH>;
+ shutdown-gpios = <&tlmm 17 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&bt_device_wake>,
+ <&bt_host_wake>,
+ <&bt_reset>;
+ pinctrl-names = "default";
+ vbat-supply = <&vreg_wifi_1v8>;
+ vddio-supply = <&vreg_wifi_1v8>;
+ max-speed = <3000000>;
+ };
+};
+
+&usb_1 {
+ status = "okay";
+};
+
+&usb_1_dwc3_hs {
+ remote-endpoint = <&pmic_glink_hs_in>;
+};
+
+&usb_1_hsphy {
+ vdda-pll-supply = <&vreg_l10c_0p88>;
+ vdda33-supply = <&vreg_l2b_3p072>;
+ vdda18-supply = <&vreg_l1c_1p8>;
+
+ status = "okay";
+};
+
+&usb_1_qmpphy {
+ vdda-phy-supply = <&vreg_l6b_1p2>;
+ vdda-pll-supply = <&vreg_l1b_0p912>;
+
+ status = "okay";
+};
+
+&usb_2 {
+ dr_mode = "host";
+
+ status = "okay";
+};
+
+&usb_2_hsphy {
+ vdda-pll-supply = <&vreg_l10c_0p88>;
+ vdda18-supply = <&vreg_l1c_1p8>;
+ vdda33-supply = <&vreg_l2b_3p072>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy_out {
+ remote-endpoint = <&pmic_glink_ss_in>;
+};
+
+&ufs_mem_hc {
+ reset-gpios = <&tlmm 175 GPIO_ACTIVE_LOW>;
+ vcc-supply = <&vreg_l7b_2p952>;
+ vcc-max-microamp = <800000>;
+ vccq-supply = <&vreg_l9b_1p2>;
+ vccq-max-microamp = <900000>;
+ vccq2-supply = <&vreg_l9b_1p2>;
+ vccq2-max-microamp = <900000>;
+
+ status = "okay";
+};
+
+&ufs_mem_phy {
+ vdda-phy-supply = <&vreg_l10c_0p88>;
+ vdda-pll-supply = <&vreg_l6b_1p2>;
+
+ status = "okay";
+};
+
+&venus {
+ status = "okay";
+};
+
+/* PINCTRL - additions to nodes defined in kodiak.dtsi */
+&pcie0_clkreq_n {
+ bias-pull-up;
+ drive-strength = <8>;
+};
+
+&pcie1_clkreq_n {
+ bias-pull-up;
+ drive-strength = <8>;
+};
+
+&pm8350c_gpios {
+ fan_pwm_out_default: fan-pwm-out-default-state {
+ pins = "gpio8";
+ function = "func1";
+ power-source = <1>;
+ drive-push-pull;
+ output-high;
+ qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+ };
+};
+
+&qup_uart7_cts {
+ /*
+ * Configure a bias-bus-hold on CTS to lower power
+ * usage when Bluetooth is turned off. Bus hold will
+ * maintain a low power state regardless of whether
+ * the Bluetooth module drives the pin in either
+ * direction or leaves the pin fully unpowered.
+ */
+ bias-bus-hold;
+};
+
+&qup_uart7_rts {
+ /* We'll drive RTS, so no pull */
+ bias-disable;
+ drive-strength = <2>;
+};
+
+&qup_uart7_rx {
+ /*
+ * Configure a pull-up on RX. This is needed to avoid
+ * garbage data when the TX pin of the Bluetooth module is
+ * in tri-state (module powered off or not driving the
+ * signal yet).
+ */
+ bias-pull-up;
+};
+
+&qup_uart7_tx {
+ /* We'll drive TX, so no pull */
+ bias-disable;
+ drive-strength = <2>;
+};
+
+&sdc2_clk {
+ bias-disable;
+ drive-strength = <16>;
+};
+
+&sdc2_cmd {
+ bias-pull-up;
+ drive-strength = <10>;
+};
+
+&sdc2_data {
+ bias-pull-up;
+ drive-strength = <10>;
+};
+
+&tlmm {
+ pcie1_reset_n: pcie1-reset-n-state {
+ pins = "gpio2";
+ function = "gpio";
+ drive-strength = <8>;
+ output-low;
+ bias-disable;
+ };
+
+ pcie1_wake_n: pcie1-wake-n-state {
+ pins = "gpio3";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+
+ usb_eth_power: usb-eth-power-state {
+ pins = "gpio7";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ wifi_reset_active: wifi-reset-active-state {
+ pins = "gpio16";
+ function = "gpio";
+ drive-strength = <8>;
+ output-high;
+ bias-disable;
+ };
+
+ bt_reset: bt-reset-state {
+ pins = "gpio17";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ lt9611_irq_pin: lt9611-irq-state {
+ pins = "gpio20";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ lt9611_rst_pin: lt9611-rst-state {
+ pins = "gpio21";
+ function = "gpio";
+ drive-strength = <8>;
+ output-high;
+ input-disable;
+ };
+
+ qup_uart7_sleep_cts: qup-uart7-sleep-cts-state {
+ pins = "gpio28";
+ function = "gpio";
+ /*
+ * Configure a bias-bus-hold on CTS to lower power
+ * usage when Bluetooth is turned off. Bus hold will
+ * maintain a low power state regardless of whether
+ * the Bluetooth module drives the pin in either
+ * direction or leaves the pin fully unpowered.
+ */
+ bias-bus-hold;
+ };
+
+ qup_uart7_sleep_rts: qup-uart7-sleep-rts-state {
+ pins = "gpio29";
+ function = "gpio";
+ /*
+ * Configure pull-down on RTS. As RTS is active low
+ * signal, pull it low to indicate the BT SoC that it
+ * can wakeup the system anytime from suspend state by
+ * pulling RX low (by sending wakeup bytes).
+ */
+ bias-pull-down;
+ };
+
+ qup_uart7_sleep_tx: qup-uart7-sleep-tx-state {
+ pins = "gpio30";
+ function = "gpio";
+ /*
+ * Configure pull-up on TX when it isn't actively driven
+ * to prevent BT SoC from receiving garbage during sleep.
+ */
+ bias-pull-up;
+ };
+
+ qup_uart7_sleep_rx: qup-uart7-sleep-rx-state {
+ pins = "gpio31";
+ function = "gpio";
+ /*
+ * Configure a pull-up on RX. This is needed to avoid
+ * garbage data when the TX pin of the Bluetooth module
+ * is floating which may cause spurious wakeups.
+ */
+ bias-pull-up;
+ };
+
+ wifi_host_wake: wifi-host-wake-state {
+ pins = "gpio38";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ bt_device_wake: bt-device-wake-state {
+ pins = "gpio39";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ usb1_sbu_default: usb1-sbu-state {
+ sel-pins {
+ pins = "gpio52";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ oe-n-pins {
+ pins = "gpio53";
+ function = "gpio";
+ drive-strength = <8>;
+ output-high;
+ bias-disable;
+ };
+ };
+
+ m2_vcc_pin: m2-vcc-state {
+ pins = "gpio56";
+ function = "gpio";
+ drive-strength = <8>;
+ output-high;
+ input-disable;
+ };
+
+ lt9611_vcc_pin: lt9611-vcc-pin-state {
+ pins = "gpio83";
+ function = "gpio";
+ drive-strength = <8>;
+ output-high;
+ input-disable;
+ };
+
+ usbhub_power: usbhub-power-state {
+ pins = "gpio86";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ pcie0_reset_n: pcie0-reset-n-state {
+ pins = "gpio87";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ pcie0_wake_n: pcie0-wake-n-state {
+ pins = "gpio89";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+
+ wifi_power_on: wifi-power-on-state {
+ pins = "gpio125";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ usbhub_rest: usbhub-reset-state {
+ pins = "gpio136";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ bt_host_wake: bt-host-wake-state {
+ pins = "gpio137";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/2] dt-bindings: arm: qcom: rubikpi3: document rubikpi3 board binding
2025-11-14 16:34 [PATCH 0/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts Hongyang Zhao
2025-11-14 16:34 ` [PATCH 1/2] " Hongyang Zhao
@ 2025-11-14 16:34 ` Hongyang Zhao
2025-11-15 12:26 ` Krzysztof Kozlowski
1 sibling, 1 reply; 12+ messages in thread
From: Hongyang Zhao @ 2025-11-14 16:34 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, Hongyang Zhao,
Roger Shimizu
Add binding for the Thundercomm RUBIK Pi 3 board,
which is based on the Qualcomm Dragonwing QCS6490 SoC.
Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
Reviewed-by: Roger Shimizu <rosh@debian.org>
---
Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index d84bd3bca201..8c7dbf764ec2 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -348,6 +348,7 @@ properties:
- qcom,qcs6490-rb3gen2
- radxa,dragon-q6a
- shift,otter
+ - thundercomm,rubikpi3
- const: qcom,qcm6490
- description: Qualcomm Technologies, Inc. Distributed Unit 1000 platform
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 2/2] dt-bindings: arm: qcom: rubikpi3: document rubikpi3 board binding
2025-11-14 16:34 ` [PATCH 2/2] dt-bindings: arm: qcom: rubikpi3: document rubikpi3 board binding Hongyang Zhao
@ 2025-11-15 12:26 ` Krzysztof Kozlowski
0 siblings, 0 replies; 12+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-15 12:26 UTC (permalink / raw)
To: Hongyang Zhao
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel,
Roger Shimizu
On Sat, Nov 15, 2025 at 12:34:16AM +0800, Hongyang Zhao wrote:
> Add binding for the Thundercomm RUBIK Pi 3 board,
> which is based on the Qualcomm Dragonwing QCS6490 SoC.
>
> Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
> Reviewed-by: Roger Shimizu <rosh@debian.org>
> ---
> Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
> 1 file changed, 1 insertion(+)
>
A nit, subject: drop second/last, redundant "binding". The
"dt-bindings" prefix is already stating that these are bindings. And
that this is documentation...
See also:
https://elixir.bootlin.com/linux/v6.17-rc3/source/Documentation/devicetree/bindings/submitting-patches.rst#L18
Please organize the patch documenting the compatible (DT bindings) before the patch using that compatible.
See also: https://elixir.bootlin.com/linux/v6.14-rc6/source/Documentation/devicetree/bindings/submitting-patches.rst#L46
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
2025-11-14 16:34 ` [PATCH 1/2] " Hongyang Zhao
@ 2025-11-15 17:08 ` Jens Reidel
2025-11-17 7:36 ` Roger Shimizu
2025-11-19 9:09 ` Hongyang Zhao
2025-11-16 17:46 ` Dmitry Baryshkov
1 sibling, 2 replies; 12+ messages in thread
From: Jens Reidel @ 2025-11-15 17:08 UTC (permalink / raw)
To: Hongyang Zhao, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, Roger Shimizu
Hi,
On 11/14/25 5:34 PM, Hongyang Zhao wrote:
> Add DTS for Thundercomm qcs6490-rubikpi3 board which uses
> QCS6490 SoC.
>
> Works:
> - Bluetooth (AP6256)
> - Wi-Fi (AP6256)
> - Ethernet (AX88179B connected to UPD720201)
> - FAN
> - Two USB Type-A 3.0 ports (UPD720201 connected to PCIe0)
> - M.2 M-Key 2280 PCIe 3.0
> - RTC
> - USB Type-C
> - USB Type-A 2.0 port
> - 40PIN: I2C x1, UART x1
>
> Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
> Reviewed-by: Roger Shimizu <rosh@debian.org>
> ---
> arch/arm64/boot/dts/qcom/Makefile | 1 +
> .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 1415 ++++++++++++++++++++
> 2 files changed, 1416 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 6f34d5ed331c..2433b15754fe 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -138,6 +138,7 @@ qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2
>
> dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-vision-mezzanine.dtb
> +dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-rubikpi3.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> new file mode 100644
> index 000000000000..4c9016992de3
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> @@ -0,0 +1,1415 @@
[snip]
> +
> +&pcie0 {
> + perst-gpios = <&tlmm 87 GPIO_ACTIVE_LOW>;
> + wake-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>;
> +
> + pinctrl-0 = <&pcie0_clkreq_n>,
> + <&pcie0_reset_n>,
> + <&pcie0_wake_n>;
> + pinctrl-names = "default";
> +
> + status = "okay";
> +};
> +
> +&pcie0_phy {
> + vdda-phy-supply = <&vreg_l10c_0p88>;
> + vdda-pll-supply = <&vreg_l6b_1p2>;
> +
> + status = "okay";
> +};
> +
> +&pcie1 {
> + /* Using traditional address mapping */
> + reg = <0 0x01c08000 0 0x3000>,
> + <0 0x40000000 0 0xf1d>,
> + <0 0x40000f20 0 0xa8>,
> + <0 0x40001000 0 0x1000>,
> + <0 0x40100000 0 0x100000>;
> +
> + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
> + <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
Thanks for attempting to fix the PCIe issues. With your patch series
applied on top of linux-next, I'm still seeing PCIe issues:
[ 0.380693] Internal error: synchronous external abort:
0000000096000010 [#1] SMP
[ 0.406491] Modules linked in:
[ 0.406495] CPU: 5 UID: 0 PID: 106 Comm: kworker/u32:6 Tainted: G M
6.18.0-rc5-next-20251113 #13 NONE
[ 0.406499] Tainted: [M]=MACHINE_CHECK
[ 0.406500] Hardware name: thundercomm Thundercomm RUBIK Pi
3/Thundercomm RUBIK Pi 3, BIOS 2025.10-rc4 10/01/2025
[ 0.406502] Workqueue: async async_run_entry_fn
[ 0.406508] pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS
BTYPE=--)
[ 0.428362] pc : __pi_memset_generic+0x16c/0x188
[ 0.428366] lr : dma_direct_alloc+0x19c/0x3d0
[ 0.428370] sp : ffff8000810e3920
[ 0.428371] x29: ffff8000810e3920 x28: ffff000080d0f810 x27:
ffffba4c6196ec48
[ 0.428373] x26: ffff000080d0f810 x25: ffffba4c607b31cc x24:
0000000000000000
[ 0.428375] x23: ffff000080d0f810 x22: ffff000000c00000 x21:
ffff000082858948
[ 0.428376] x20: 0000000000001000 x19: fffffdffc0030000 x18:
000000000000000a
[ 0.428378] x17: ffff0000823dae00 x16: 0000000000000000 x15:
0000000000000000
[ 0.428380] x14: 00000000ffffffff x13: 0000000000000068 x12:
0000000000000100
[ 0.449344] x11: 0000000000000000 x10: ffff0001fef99500 x9 :
0000000000000000
[ 0.449345] x8 : ffff000000c00000 x7 : 0000000000000000 x6 :
000000000000003f
[ 0.449347] x5 : 0000000000000040 x4 : 0000000000000000 x3 :
0000000000000004
[ 0.449349] x2 : 0000000000000fc0 x1 : 0000000000000000 x0 :
ffff000000c00000
[ 0.449350] Call trace:
[ 0.449351] __pi_memset_generic+0x16c/0x188 (P)
[ 0.449354] dma_alloc_attrs+0x94/0x210
[ 0.449357] dmam_alloc_attrs+0x74/0xc0
[ 0.469967] dw_pcie_msi_host_init+0x100/0x300
[ 0.469971] dw_pcie_host_init+0x5e4/0x6d8
[ 0.491913] qcom_pcie_probe+0x5a8/0x838
[ 0.491916] platform_probe+0x64/0xc0
[ 0.491919] really_probe+0xc8/0x3f0
[ 0.491921] __driver_probe_device+0x88/0x170
[ 0.491922] driver_probe_device+0x48/0x130
[ 0.491923] __device_attach_driver+0xc4/0x190
[ 0.491925] bus_for_each_drv+0x90/0x100
[ 0.491928] __device_attach_async_helper+0xb8/0x120
[ 0.491929] async_run_entry_fn+0x3c/0x1e0
[ 0.491931] process_one_work+0x150/0x3a0
[ 0.491934] worker_thread+0x288/0x480
[ 0.491936] kthread+0x118/0x1e0
[ 0.491938] ret_from_fork+0x10/0x20
[ 0.513092] Code: 91010108 54ffff4a 8b040108 cb050042 (d50b7428)
[ 0.513094] ---[ end trace 0000000000000000 ]---
I can only get the device to boot by disabling both pcie0 and pcie1.
> +
> +
> + perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
> + wake-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> +
> + pinctrl-0 = <&pcie1_clkreq_n>,
> + <&pcie1_reset_n>,
> + <&pcie1_wake_n>;
> + pinctrl-names = "default";
> +
> + status = "okay";
> +};
> +
> +&pcie1_phy {
> + vdda-phy-supply = <&vreg_l10c_0p88>;
> + vdda-pll-supply = <&vreg_l6b_1p2>;
> +
> + status = "okay";
> +};
> +
[snip]
> +
> +&remoteproc_adsp {
> + firmware-name = "qcom/qcs6490/adsp.mbn";
> +
> + status = "okay";
> +};
I'm fairly sure that this is the wrong ADSP firmware. With the firmware
in linux-firmware, I'm seeing charger pd crashes and the ADSP constantly
restarting. Using the Radxa Dragon Q6A ADSP firmware which disables the
charging feature in the firmware works way better and does not result in
crashes.
> +
> +&remoteproc_cdsp {
> + firmware-name = "qcom/qcs6490/cdsp.mbn";
> +
> + status = "okay";
> +};
> +
[snip]
Thanks,
Jens
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
2025-11-14 16:34 ` [PATCH 1/2] " Hongyang Zhao
2025-11-15 17:08 ` Jens Reidel
@ 2025-11-16 17:46 ` Dmitry Baryshkov
1 sibling, 0 replies; 12+ messages in thread
From: Dmitry Baryshkov @ 2025-11-16 17:46 UTC (permalink / raw)
To: Hongyang Zhao
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel,
Roger Shimizu
On Sat, Nov 15, 2025 at 12:34:15AM +0800, Hongyang Zhao wrote:
> Add DTS for Thundercomm qcs6490-rubikpi3 board which uses
> QCS6490 SoC.
>
> Works:
> - Bluetooth (AP6256)
> - Wi-Fi (AP6256)
> - Ethernet (AX88179B connected to UPD720201)
> - FAN
> - Two USB Type-A 3.0 ports (UPD720201 connected to PCIe0)
> - M.2 M-Key 2280 PCIe 3.0
> - RTC
> - USB Type-C
> - USB Type-A 2.0 port
> - 40PIN: I2C x1, UART x1
>
> Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
> Reviewed-by: Roger Shimizu <rosh@debian.org>
> ---
> arch/arm64/boot/dts/qcom/Makefile | 1 +
> .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 1415 ++++++++++++++++++++
> 2 files changed, 1416 insertions(+)
>
> +&pcie1 {
> + /* Using traditional address mapping */
> + reg = <0 0x01c08000 0 0x3000>,
> + <0 0x40000000 0 0xf1d>,
> + <0 0x40000f20 0 0xa8>,
> + <0 0x40001000 0 0x1000>,
> + <0 0x40100000 0 0x100000>;
> +
> + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
> + <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
No. Don't workaround bugs in kodiak.dtsi in your DT file. Please fix it
in kodiak.dtsi instead.
> +
> +
> + perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
> + wake-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> +
> + pinctrl-0 = <&pcie1_clkreq_n>,
> + <&pcie1_reset_n>,
> + <&pcie1_wake_n>;
> + pinctrl-names = "default";
> +
> + status = "okay";
> +};
> +
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
2025-11-15 17:08 ` Jens Reidel
@ 2025-11-17 7:36 ` Roger Shimizu
2025-11-18 15:49 ` Bjorn Andersson
2025-11-18 18:08 ` Dmitry Baryshkov
2025-11-19 9:09 ` Hongyang Zhao
1 sibling, 2 replies; 12+ messages in thread
From: Roger Shimizu @ 2025-11-17 7:36 UTC (permalink / raw)
To: Jens Reidel, Dmitry Baryshkov
Cc: Hongyang Zhao, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
linux-kernel
Thanks Jens, and Dmitry for the review!
On Sat, Nov 15, 2025 at 9:25 AM Jens Reidel <adrian@mainlining.org> wrote:
>
> Hi,
>
> On 11/14/25 5:34 PM, Hongyang Zhao wrote:
> > Add DTS for Thundercomm qcs6490-rubikpi3 board which uses
> > QCS6490 SoC.
> >
> > Works:
> > - Bluetooth (AP6256)
> > - Wi-Fi (AP6256)
> > - Ethernet (AX88179B connected to UPD720201)
> > - FAN
> > - Two USB Type-A 3.0 ports (UPD720201 connected to PCIe0)
> > - M.2 M-Key 2280 PCIe 3.0
> > - RTC
> > - USB Type-C
> > - USB Type-A 2.0 port
> > - 40PIN: I2C x1, UART x1
> >
> > Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
> > Reviewed-by: Roger Shimizu <rosh@debian.org>
> > ---
> > arch/arm64/boot/dts/qcom/Makefile | 1 +
> > .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 1415 ++++++++++++++++++++
> > 2 files changed, 1416 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> > index 6f34d5ed331c..2433b15754fe 100644
> > --- a/arch/arm64/boot/dts/qcom/Makefile
> > +++ b/arch/arm64/boot/dts/qcom/Makefile
> > @@ -138,6 +138,7 @@ qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2
> >
> > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-vision-mezzanine.dtb
> > +dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-rubikpi3.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> > diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > new file mode 100644
> > index 000000000000..4c9016992de3
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > @@ -0,0 +1,1415 @@
>
> [snip]
>
> > +
> > +&pcie0 {
> > + perst-gpios = <&tlmm 87 GPIO_ACTIVE_LOW>;
> > + wake-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>;
> > +
> > + pinctrl-0 = <&pcie0_clkreq_n>,
> > + <&pcie0_reset_n>,
> > + <&pcie0_wake_n>;
> > + pinctrl-names = "default";
> > +
> > + status = "okay";
> > +};
> > +
> > +&pcie0_phy {
> > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > +
> > + status = "okay";
> > +};
> > +
> > +&pcie1 {
> > + /* Using traditional address mapping */
> > + reg = <0 0x01c08000 0 0x3000>,
> > + <0 0x40000000 0 0xf1d>,
> > + <0 0x40000f20 0 0xa8>,
> > + <0 0x40001000 0 0x1000>,
> > + <0 0x40100000 0 0x100000>;
> > +
> > + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
> > + <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
>
> Thanks for attempting to fix the PCIe issues. With your patch series
> applied on top of linux-next, I'm still seeing PCIe issues:
>
> [ 0.380693] Internal error: synchronous external abort:
> 0000000096000010 [#1] SMP
> [ 0.406491] Modules linked in:
> [ 0.406495] CPU: 5 UID: 0 PID: 106 Comm: kworker/u32:6 Tainted: G M
> 6.18.0-rc5-next-20251113 #13 NONE
> [ 0.406499] Tainted: [M]=MACHINE_CHECK
> [ 0.406500] Hardware name: thundercomm Thundercomm RUBIK Pi
> 3/Thundercomm RUBIK Pi 3, BIOS 2025.10-rc4 10/01/2025
> [ 0.406502] Workqueue: async async_run_entry_fn
> [ 0.406508] pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS
> BTYPE=--)
> [ 0.428362] pc : __pi_memset_generic+0x16c/0x188
> [ 0.428366] lr : dma_direct_alloc+0x19c/0x3d0
> [ 0.428370] sp : ffff8000810e3920
> [ 0.428371] x29: ffff8000810e3920 x28: ffff000080d0f810 x27:
> ffffba4c6196ec48
> [ 0.428373] x26: ffff000080d0f810 x25: ffffba4c607b31cc x24:
> 0000000000000000
> [ 0.428375] x23: ffff000080d0f810 x22: ffff000000c00000 x21:
> ffff000082858948
> [ 0.428376] x20: 0000000000001000 x19: fffffdffc0030000 x18:
> 000000000000000a
> [ 0.428378] x17: ffff0000823dae00 x16: 0000000000000000 x15:
> 0000000000000000
> [ 0.428380] x14: 00000000ffffffff x13: 0000000000000068 x12:
> 0000000000000100
> [ 0.449344] x11: 0000000000000000 x10: ffff0001fef99500 x9 :
> 0000000000000000
> [ 0.449345] x8 : ffff000000c00000 x7 : 0000000000000000 x6 :
> 000000000000003f
> [ 0.449347] x5 : 0000000000000040 x4 : 0000000000000000 x3 :
> 0000000000000004
> [ 0.449349] x2 : 0000000000000fc0 x1 : 0000000000000000 x0 :
> ffff000000c00000
> [ 0.449350] Call trace:
> [ 0.449351] __pi_memset_generic+0x16c/0x188 (P)
> [ 0.449354] dma_alloc_attrs+0x94/0x210
> [ 0.449357] dmam_alloc_attrs+0x74/0xc0
> [ 0.469967] dw_pcie_msi_host_init+0x100/0x300
> [ 0.469971] dw_pcie_host_init+0x5e4/0x6d8
> [ 0.491913] qcom_pcie_probe+0x5a8/0x838
> [ 0.491916] platform_probe+0x64/0xc0
> [ 0.491919] really_probe+0xc8/0x3f0
> [ 0.491921] __driver_probe_device+0x88/0x170
> [ 0.491922] driver_probe_device+0x48/0x130
> [ 0.491923] __device_attach_driver+0xc4/0x190
> [ 0.491925] bus_for_each_drv+0x90/0x100
> [ 0.491928] __device_attach_async_helper+0xb8/0x120
> [ 0.491929] async_run_entry_fn+0x3c/0x1e0
> [ 0.491931] process_one_work+0x150/0x3a0
> [ 0.491934] worker_thread+0x288/0x480
> [ 0.491936] kthread+0x118/0x1e0
> [ 0.491938] ret_from_fork+0x10/0x20
> [ 0.513092] Code: 91010108 54ffff4a 8b040108 cb050042 (d50b7428)
> [ 0.513094] ---[ end trace 0000000000000000 ]---
>
> I can only get the device to boot by disabling both pcie0 and pcie1.
I think there're some regressions in "next-20251114".
After some time to "git bisect", I found after running 2 revert
commands below, it can boot for both RUBIK Pi 3 and RB3 Gen2.
$ git revert b15ce3c0882c9cd2fbe4f87047874ad087b583ff -m 1
$ git revert 03e928442d469f7d8dafc549638730647202d9ce
> > +
> > +
> > + perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
> > + wake-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> > +
> > + pinctrl-0 = <&pcie1_clkreq_n>,
> > + <&pcie1_reset_n>,
> > + <&pcie1_wake_n>;
> > + pinctrl-names = "default";
> > +
> > + status = "okay";
> > +};
> > +
> > +&pcie1_phy {
> > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > +
> > + status = "okay";
> > +};
> > +
>
> [snip]
>
> > +
> > +&remoteproc_adsp {
> > + firmware-name = "qcom/qcs6490/adsp.mbn";
> > +
> > + status = "okay";
> > +};
>
> I'm fairly sure that this is the wrong ADSP firmware. With the firmware
> in linux-firmware, I'm seeing charger pd crashes and the ADSP constantly
> restarting. Using the Radxa Dragon Q6A ADSP firmware which disables the
> charging feature in the firmware works way better and does not result in
> crashes.
I run the Ubuntu 24.04 base system:
* https://ubuntu.com/download/qualcomm-iot#rubikpi3
Currently it boots well with adsp fw from RB3 Gen2 (from deb pkg:
firmware-qcom-hlosfw) without crash.
But I heard from next release, adsp will be customized, so Hongyang
will make another patch to upstream the adsp for RUBIK Pi 3.
Cheers,
Roger
> > +
> > +&remoteproc_cdsp {
> > + firmware-name = "qcom/qcs6490/cdsp.mbn";
> > +
> > + status = "okay";
> > +};
> > +
>
> [snip]
>
> Thanks,
> Jens
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
2025-11-17 7:36 ` Roger Shimizu
@ 2025-11-18 15:49 ` Bjorn Andersson
2025-11-18 18:08 ` Dmitry Baryshkov
1 sibling, 0 replies; 12+ messages in thread
From: Bjorn Andersson @ 2025-11-18 15:49 UTC (permalink / raw)
To: Roger Shimizu
Cc: Jens Reidel, Dmitry Baryshkov, Hongyang Zhao, Konrad Dybcio,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
devicetree, linux-kernel
On Sun, Nov 16, 2025 at 11:36:13PM -0800, Roger Shimizu wrote:
> Thanks Jens, and Dmitry for the review!
>
> On Sat, Nov 15, 2025 at 9:25 AM Jens Reidel <adrian@mainlining.org> wrote:
> >
> > Hi,
> >
> > On 11/14/25 5:34 PM, Hongyang Zhao wrote:
> > > Add DTS for Thundercomm qcs6490-rubikpi3 board which uses
> > > QCS6490 SoC.
> > >
> > > Works:
> > > - Bluetooth (AP6256)
> > > - Wi-Fi (AP6256)
> > > - Ethernet (AX88179B connected to UPD720201)
> > > - FAN
> > > - Two USB Type-A 3.0 ports (UPD720201 connected to PCIe0)
> > > - M.2 M-Key 2280 PCIe 3.0
> > > - RTC
> > > - USB Type-C
> > > - USB Type-A 2.0 port
> > > - 40PIN: I2C x1, UART x1
> > >
> > > Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
> > > Reviewed-by: Roger Shimizu <rosh@debian.org>
> > > ---
> > > arch/arm64/boot/dts/qcom/Makefile | 1 +
> > > .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 1415 ++++++++++++++++++++
> > > 2 files changed, 1416 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> > > index 6f34d5ed331c..2433b15754fe 100644
> > > --- a/arch/arm64/boot/dts/qcom/Makefile
> > > +++ b/arch/arm64/boot/dts/qcom/Makefile
> > > @@ -138,6 +138,7 @@ qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2
> > >
> > > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine.dtb
> > > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-vision-mezzanine.dtb
> > > +dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-rubikpi3.dtb
> > > dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride.dtb
> > > dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
> > > dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> > > diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > > new file mode 100644
> > > index 000000000000..4c9016992de3
> > > --- /dev/null
> > > +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > > @@ -0,0 +1,1415 @@
> >
> > [snip]
> >
> > > +
> > > +&pcie0 {
> > > + perst-gpios = <&tlmm 87 GPIO_ACTIVE_LOW>;
> > > + wake-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>;
> > > +
> > > + pinctrl-0 = <&pcie0_clkreq_n>,
> > > + <&pcie0_reset_n>,
> > > + <&pcie0_wake_n>;
> > > + pinctrl-names = "default";
> > > +
> > > + status = "okay";
> > > +};
> > > +
> > > +&pcie0_phy {
> > > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > > +
> > > + status = "okay";
> > > +};
> > > +
> > > +&pcie1 {
> > > + /* Using traditional address mapping */
> > > + reg = <0 0x01c08000 0 0x3000>,
> > > + <0 0x40000000 0 0xf1d>,
> > > + <0 0x40000f20 0 0xa8>,
> > > + <0 0x40001000 0 0x1000>,
> > > + <0 0x40100000 0 0x100000>;
> > > +
> > > + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
> > > + <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
> >
> > Thanks for attempting to fix the PCIe issues. With your patch series
> > applied on top of linux-next, I'm still seeing PCIe issues:
> >
> > [ 0.380693] Internal error: synchronous external abort:
> > 0000000096000010 [#1] SMP
> > [ 0.406491] Modules linked in:
> > [ 0.406495] CPU: 5 UID: 0 PID: 106 Comm: kworker/u32:6 Tainted: G M
> > 6.18.0-rc5-next-20251113 #13 NONE
> > [ 0.406499] Tainted: [M]=MACHINE_CHECK
> > [ 0.406500] Hardware name: thundercomm Thundercomm RUBIK Pi
> > 3/Thundercomm RUBIK Pi 3, BIOS 2025.10-rc4 10/01/2025
> > [ 0.406502] Workqueue: async async_run_entry_fn
> > [ 0.406508] pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS
> > BTYPE=--)
> > [ 0.428362] pc : __pi_memset_generic+0x16c/0x188
> > [ 0.428366] lr : dma_direct_alloc+0x19c/0x3d0
> > [ 0.428370] sp : ffff8000810e3920
> > [ 0.428371] x29: ffff8000810e3920 x28: ffff000080d0f810 x27:
> > ffffba4c6196ec48
> > [ 0.428373] x26: ffff000080d0f810 x25: ffffba4c607b31cc x24:
> > 0000000000000000
> > [ 0.428375] x23: ffff000080d0f810 x22: ffff000000c00000 x21:
> > ffff000082858948
> > [ 0.428376] x20: 0000000000001000 x19: fffffdffc0030000 x18:
> > 000000000000000a
> > [ 0.428378] x17: ffff0000823dae00 x16: 0000000000000000 x15:
> > 0000000000000000
> > [ 0.428380] x14: 00000000ffffffff x13: 0000000000000068 x12:
> > 0000000000000100
> > [ 0.449344] x11: 0000000000000000 x10: ffff0001fef99500 x9 :
> > 0000000000000000
> > [ 0.449345] x8 : ffff000000c00000 x7 : 0000000000000000 x6 :
> > 000000000000003f
> > [ 0.449347] x5 : 0000000000000040 x4 : 0000000000000000 x3 :
> > 0000000000000004
> > [ 0.449349] x2 : 0000000000000fc0 x1 : 0000000000000000 x0 :
> > ffff000000c00000
> > [ 0.449350] Call trace:
> > [ 0.449351] __pi_memset_generic+0x16c/0x188 (P)
> > [ 0.449354] dma_alloc_attrs+0x94/0x210
> > [ 0.449357] dmam_alloc_attrs+0x74/0xc0
> > [ 0.469967] dw_pcie_msi_host_init+0x100/0x300
> > [ 0.469971] dw_pcie_host_init+0x5e4/0x6d8
> > [ 0.491913] qcom_pcie_probe+0x5a8/0x838
> > [ 0.491916] platform_probe+0x64/0xc0
> > [ 0.491919] really_probe+0xc8/0x3f0
> > [ 0.491921] __driver_probe_device+0x88/0x170
> > [ 0.491922] driver_probe_device+0x48/0x130
> > [ 0.491923] __device_attach_driver+0xc4/0x190
> > [ 0.491925] bus_for_each_drv+0x90/0x100
> > [ 0.491928] __device_attach_async_helper+0xb8/0x120
> > [ 0.491929] async_run_entry_fn+0x3c/0x1e0
> > [ 0.491931] process_one_work+0x150/0x3a0
> > [ 0.491934] worker_thread+0x288/0x480
> > [ 0.491936] kthread+0x118/0x1e0
> > [ 0.491938] ret_from_fork+0x10/0x20
> > [ 0.513092] Code: 91010108 54ffff4a 8b040108 cb050042 (d50b7428)
> > [ 0.513094] ---[ end trace 0000000000000000 ]---
> >
> > I can only get the device to boot by disabling both pcie0 and pcie1.
>
> I think there're some regressions in "next-20251114".
> After some time to "git bisect", I found after running 2 revert
> commands below, it can boot for both RUBIK Pi 3 and RB3 Gen2.
>
Thanks for confirming that his was related to the ECAM size patch.
FWIW:
> $ git revert b15ce3c0882c9cd2fbe4f87047874ad087b583ff -m 1
This was handled in f838d624fd11 ("scsi: ufs: core: Revert "Make HID
attributes visible""), which is part of next-20251114.
> $ git revert 03e928442d469f7d8dafc549638730647202d9ce
>
This is bba4562adc06 ("Revert "arm64: dts: qcom: sc7280: Increase config
size to 256MB for ECAM feature""), available from next-20251117
Regards,
Bjorn
> > > +
> > > +
> > > + perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
> > > + wake-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> > > +
> > > + pinctrl-0 = <&pcie1_clkreq_n>,
> > > + <&pcie1_reset_n>,
> > > + <&pcie1_wake_n>;
> > > + pinctrl-names = "default";
> > > +
> > > + status = "okay";
> > > +};
> > > +
> > > +&pcie1_phy {
> > > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > > +
> > > + status = "okay";
> > > +};
> > > +
> >
> > [snip]
> >
> > > +
> > > +&remoteproc_adsp {
> > > + firmware-name = "qcom/qcs6490/adsp.mbn";
> > > +
> > > + status = "okay";
> > > +};
> >
> > I'm fairly sure that this is the wrong ADSP firmware. With the firmware
> > in linux-firmware, I'm seeing charger pd crashes and the ADSP constantly
> > restarting. Using the Radxa Dragon Q6A ADSP firmware which disables the
> > charging feature in the firmware works way better and does not result in
> > crashes.
>
> I run the Ubuntu 24.04 base system:
> * https://ubuntu.com/download/qualcomm-iot#rubikpi3
>
> Currently it boots well with adsp fw from RB3 Gen2 (from deb pkg:
> firmware-qcom-hlosfw) without crash.
> But I heard from next release, adsp will be customized, so Hongyang
> will make another patch to upstream the adsp for RUBIK Pi 3.
>
> Cheers,
> Roger
>
> > > +
> > > +&remoteproc_cdsp {
> > > + firmware-name = "qcom/qcs6490/cdsp.mbn";
> > > +
> > > + status = "okay";
> > > +};
> > > +
> >
> > [snip]
> >
> > Thanks,
> > Jens
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
2025-11-17 7:36 ` Roger Shimizu
2025-11-18 15:49 ` Bjorn Andersson
@ 2025-11-18 18:08 ` Dmitry Baryshkov
2025-11-19 9:56 ` Roger Shimizu
1 sibling, 1 reply; 12+ messages in thread
From: Dmitry Baryshkov @ 2025-11-18 18:08 UTC (permalink / raw)
To: Roger Shimizu
Cc: Jens Reidel, Hongyang Zhao, Bjorn Andersson, Konrad Dybcio,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
devicetree, linux-kernel
On Sun, Nov 16, 2025 at 11:36:13PM -0800, Roger Shimizu wrote:
> Thanks Jens, and Dmitry for the review!
>
> On Sat, Nov 15, 2025 at 9:25 AM Jens Reidel <adrian@mainlining.org> wrote:
> >
> > Hi,
> >
> > On 11/14/25 5:34 PM, Hongyang Zhao wrote:
> > > Add DTS for Thundercomm qcs6490-rubikpi3 board which uses
> > > QCS6490 SoC.
> > >
> > > Works:
> > > - Bluetooth (AP6256)
> > > - Wi-Fi (AP6256)
> > > - Ethernet (AX88179B connected to UPD720201)
> > > - FAN
> > > - Two USB Type-A 3.0 ports (UPD720201 connected to PCIe0)
> > > - M.2 M-Key 2280 PCIe 3.0
> > > - RTC
> > > - USB Type-C
> > > - USB Type-A 2.0 port
> > > - 40PIN: I2C x1, UART x1
> > >
> > > Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
> > > Reviewed-by: Roger Shimizu <rosh@debian.org>
> > > ---
> > > arch/arm64/boot/dts/qcom/Makefile | 1 +
> > > .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 1415 ++++++++++++++++++++
> > > 2 files changed, 1416 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> > > index 6f34d5ed331c..2433b15754fe 100644
> > > --- a/arch/arm64/boot/dts/qcom/Makefile
> > > +++ b/arch/arm64/boot/dts/qcom/Makefile
> > > @@ -138,6 +138,7 @@ qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2
> > >
> > > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine.dtb
> > > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-vision-mezzanine.dtb
> > > +dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-rubikpi3.dtb
> > > dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride.dtb
> > > dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
> > > dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> > > diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > > new file mode 100644
> > > index 000000000000..4c9016992de3
> > > --- /dev/null
> > > +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > > @@ -0,0 +1,1415 @@
> >
> > [snip]
> >
> > > +
> > > +&pcie0 {
> > > + perst-gpios = <&tlmm 87 GPIO_ACTIVE_LOW>;
> > > + wake-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>;
> > > +
> > > + pinctrl-0 = <&pcie0_clkreq_n>,
> > > + <&pcie0_reset_n>,
> > > + <&pcie0_wake_n>;
> > > + pinctrl-names = "default";
> > > +
> > > + status = "okay";
> > > +};
> > > +
> > > +&pcie0_phy {
> > > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > > +
> > > + status = "okay";
> > > +};
> > > +
> > > +&pcie1 {
> > > + /* Using traditional address mapping */
> > > + reg = <0 0x01c08000 0 0x3000>,
> > > + <0 0x40000000 0 0xf1d>,
> > > + <0 0x40000f20 0 0xa8>,
> > > + <0 0x40001000 0 0x1000>,
> > > + <0 0x40100000 0 0x100000>;
> > > +
> > > + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
> > > + <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
> >
> > Thanks for attempting to fix the PCIe issues. With your patch series
> > applied on top of linux-next, I'm still seeing PCIe issues:
> >
> > [ 0.380693] Internal error: synchronous external abort:
> > 0000000096000010 [#1] SMP
> > [ 0.406491] Modules linked in:
> > [ 0.406495] CPU: 5 UID: 0 PID: 106 Comm: kworker/u32:6 Tainted: G M
> > 6.18.0-rc5-next-20251113 #13 NONE
> > [ 0.406499] Tainted: [M]=MACHINE_CHECK
> > [ 0.406500] Hardware name: thundercomm Thundercomm RUBIK Pi
> > 3/Thundercomm RUBIK Pi 3, BIOS 2025.10-rc4 10/01/2025
> > [ 0.406502] Workqueue: async async_run_entry_fn
> > [ 0.406508] pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS
> > BTYPE=--)
> > [ 0.428362] pc : __pi_memset_generic+0x16c/0x188
> > [ 0.428366] lr : dma_direct_alloc+0x19c/0x3d0
> > [ 0.428370] sp : ffff8000810e3920
> > [ 0.428371] x29: ffff8000810e3920 x28: ffff000080d0f810 x27:
> > ffffba4c6196ec48
> > [ 0.428373] x26: ffff000080d0f810 x25: ffffba4c607b31cc x24:
> > 0000000000000000
> > [ 0.428375] x23: ffff000080d0f810 x22: ffff000000c00000 x21:
> > ffff000082858948
> > [ 0.428376] x20: 0000000000001000 x19: fffffdffc0030000 x18:
> > 000000000000000a
> > [ 0.428378] x17: ffff0000823dae00 x16: 0000000000000000 x15:
> > 0000000000000000
> > [ 0.428380] x14: 00000000ffffffff x13: 0000000000000068 x12:
> > 0000000000000100
> > [ 0.449344] x11: 0000000000000000 x10: ffff0001fef99500 x9 :
> > 0000000000000000
> > [ 0.449345] x8 : ffff000000c00000 x7 : 0000000000000000 x6 :
> > 000000000000003f
> > [ 0.449347] x5 : 0000000000000040 x4 : 0000000000000000 x3 :
> > 0000000000000004
> > [ 0.449349] x2 : 0000000000000fc0 x1 : 0000000000000000 x0 :
> > ffff000000c00000
> > [ 0.449350] Call trace:
> > [ 0.449351] __pi_memset_generic+0x16c/0x188 (P)
> > [ 0.449354] dma_alloc_attrs+0x94/0x210
> > [ 0.449357] dmam_alloc_attrs+0x74/0xc0
> > [ 0.469967] dw_pcie_msi_host_init+0x100/0x300
> > [ 0.469971] dw_pcie_host_init+0x5e4/0x6d8
> > [ 0.491913] qcom_pcie_probe+0x5a8/0x838
> > [ 0.491916] platform_probe+0x64/0xc0
> > [ 0.491919] really_probe+0xc8/0x3f0
> > [ 0.491921] __driver_probe_device+0x88/0x170
> > [ 0.491922] driver_probe_device+0x48/0x130
> > [ 0.491923] __device_attach_driver+0xc4/0x190
> > [ 0.491925] bus_for_each_drv+0x90/0x100
> > [ 0.491928] __device_attach_async_helper+0xb8/0x120
> > [ 0.491929] async_run_entry_fn+0x3c/0x1e0
> > [ 0.491931] process_one_work+0x150/0x3a0
> > [ 0.491934] worker_thread+0x288/0x480
> > [ 0.491936] kthread+0x118/0x1e0
> > [ 0.491938] ret_from_fork+0x10/0x20
> > [ 0.513092] Code: 91010108 54ffff4a 8b040108 cb050042 (d50b7428)
> > [ 0.513094] ---[ end trace 0000000000000000 ]---
> >
> > I can only get the device to boot by disabling both pcie0 and pcie1.
>
> I think there're some regressions in "next-20251114".
> After some time to "git bisect", I found after running 2 revert
> commands below, it can boot for both RUBIK Pi 3 and RB3 Gen2.
>
> $ git revert b15ce3c0882c9cd2fbe4f87047874ad087b583ff -m 1
> $ git revert 03e928442d469f7d8dafc549638730647202d9ce
>
> > > +
> > > +
> > > + perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
> > > + wake-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> > > +
> > > + pinctrl-0 = <&pcie1_clkreq_n>,
> > > + <&pcie1_reset_n>,
> > > + <&pcie1_wake_n>;
> > > + pinctrl-names = "default";
> > > +
> > > + status = "okay";
> > > +};
> > > +
> > > +&pcie1_phy {
> > > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > > +
> > > + status = "okay";
> > > +};
> > > +
> >
> > [snip]
> >
> > > +
> > > +&remoteproc_adsp {
> > > + firmware-name = "qcom/qcs6490/adsp.mbn";
> > > +
> > > + status = "okay";
> > > +};
> >
> > I'm fairly sure that this is the wrong ADSP firmware. With the firmware
> > in linux-firmware, I'm seeing charger pd crashes and the ADSP constantly
> > restarting. Using the Radxa Dragon Q6A ADSP firmware which disables the
> > charging feature in the firmware works way better and does not result in
> > crashes.
>
> I run the Ubuntu 24.04 base system:
> * https://ubuntu.com/download/qualcomm-iot#rubikpi3
>
> Currently it boots well with adsp fw from RB3 Gen2 (from deb pkg:
> firmware-qcom-hlosfw) without crash.
> But I heard from next release, adsp will be customized, so Hongyang
> will make another patch to upstream the adsp for RUBIK Pi 3.
Then it would be nice to include the new path for ADSP firmware from the
day 0 (you can do this even before it is sent to linux-firmware).
>
> Cheers,
> Roger
>
> > > +
> > > +&remoteproc_cdsp {
> > > + firmware-name = "qcom/qcs6490/cdsp.mbn";
> > > +
> > > + status = "okay";
> > > +};
> > > +
> >
> > [snip]
> >
> > Thanks,
> > Jens
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
2025-11-15 17:08 ` Jens Reidel
2025-11-17 7:36 ` Roger Shimizu
@ 2025-11-19 9:09 ` Hongyang Zhao
1 sibling, 0 replies; 12+ messages in thread
From: Hongyang Zhao @ 2025-11-19 9:09 UTC (permalink / raw)
To: adrian
Cc: andersson, conor+dt, devicetree, hongyang.zhao, konradybcio,
krzk+dt, linux-arm-msm, linux-kernel, robh, rosh
Hi, thank you for your review.
On 11/14/25 5:34 PM, Hongyang Zhao wrote:
> > Add DTS for Thundercomm qcs6490-rubikpi3 board which uses
> > QCS6490 SoC.
> >
> > Works:
> > - Bluetooth (AP6256)
> > - Wi-Fi (AP6256)
> > - Ethernet (AX88179B connected to UPD720201)
> > - FAN
> > - Two USB Type-A 3.0 ports (UPD720201 connected to PCIe0)
> > - M.2 M-Key 2280 PCIe 3.0
> > - RTC
> > - USB Type-C
> > - USB Type-A 2.0 port
> > - 40PIN: I2C x1, UART x1
> >
> > Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
> > Reviewed-by: Roger Shimizu <rosh@debian.org>
> > ---
> > arch/arm64/boot/dts/qcom/Makefile | 1 +
> > .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 1415 ++++++++++++++++++++
> > 2 files changed, 1416 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> > index 6f34d5ed331c..2433b15754fe 100644
> > --- a/arch/arm64/boot/dts/qcom/Makefile
> > +++ b/arch/arm64/boot/dts/qcom/Makefile
> > @@ -138,6 +138,7 @@ qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2
> >
> > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-vision-mezzanine.dtb
> > +dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-rubikpi3.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
> > dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> > diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > new file mode 100644
> > index 000000000000..4c9016992de3
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > @@ -0,0 +1,1415 @@
>
> [snip]
>
> > +
> > +&pcie0 {
> > + perst-gpios = <&tlmm 87 GPIO_ACTIVE_LOW>;
> > + wake-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>;
> > +
> > + pinctrl-0 = <&pcie0_clkreq_n>,
> > + <&pcie0_reset_n>,
> > + <&pcie0_wake_n>;
> > + pinctrl-names = "default";
> > +
> > + status = "okay";
> > +};
> > +
> > +&pcie0_phy {
> > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > +
> > + status = "okay";
> > +};
> > +
> > +&pcie1 {
> > + /* Using traditional address mapping */
> > + reg = <0 0x01c08000 0 0x3000>,
> > + <0 0x40000000 0 0xf1d>,
> > + <0 0x40000f20 0 0xa8>,
> > + <0 0x40001000 0 0x1000>,
> > + <0 0x40100000 0 0x100000>;
> > +
> > + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
> > + <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
>
This issue has been resolved (bba4562adc Revert "arm64: dts: qcom: sc7280: Increase config size to 256MB for ECAM feature").
And I will remove this part of the modification, like this:
&pcie1 {
perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
wake-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
pinctrl-0 = <&pcie1_clkreq_n>,
<&pcie1_reset_n>,
<&pcie1_wake_n>;
pinctrl-names = "default";
status = "okay";
};
> Thanks for attempting to fix the PCIe issues. With your patch series
> applied on top of linux-next, I'm still seeing PCIe issues:
>
> [ 0.380693] Internal error: synchronous external abort:
> 0000000096000010 [#1] SMP
> [ 0.406491] Modules linked in:
> [ 0.406495] CPU: 5 UID: 0 PID: 106 Comm: kworker/u32:6 Tainted: G M
> 6.18.0-rc5-next-20251113 #13 NONE
> [ 0.406499] Tainted: [M]=MACHINE_CHECK
> [ 0.406500] Hardware name: thundercomm Thundercomm RUBIK Pi
> 3/Thundercomm RUBIK Pi 3, BIOS 2025.10-rc4 10/01/2025
> [ 0.406502] Workqueue: async async_run_entry_fn
> [ 0.406508] pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS
> BTYPE=--)
> [ 0.428362] pc : __pi_memset_generic+0x16c/0x188
> [ 0.428366] lr : dma_direct_alloc+0x19c/0x3d0
> [ 0.428370] sp : ffff8000810e3920
> [ 0.428371] x29: ffff8000810e3920 x28: ffff000080d0f810 x27:
> ffffba4c6196ec48
> [ 0.428373] x26: ffff000080d0f810 x25: ffffba4c607b31cc x24:
> 0000000000000000
> [ 0.428375] x23: ffff000080d0f810 x22: ffff000000c00000 x21:
> ffff000082858948
> [ 0.428376] x20: 0000000000001000 x19: fffffdffc0030000 x18:
> 000000000000000a
> [ 0.428378] x17: ffff0000823dae00 x16: 0000000000000000 x15:
> 0000000000000000
> [ 0.428380] x14: 00000000ffffffff x13: 0000000000000068 x12:
> 0000000000000100
> [ 0.449344] x11: 0000000000000000 x10: ffff0001fef99500 x9 :
> 0000000000000000
> [ 0.449345] x8 : ffff000000c00000 x7 : 0000000000000000 x6 :
> 000000000000003f
> [ 0.449347] x5 : 0000000000000040 x4 : 0000000000000000 x3 :
> 0000000000000004
> [ 0.449349] x2 : 0000000000000fc0 x1 : 0000000000000000 x0 :
> ffff000000c00000
> [ 0.449350] Call trace:
> [ 0.449351] __pi_memset_generic+0x16c/0x188 (P)
> [ 0.449354] dma_alloc_attrs+0x94/0x210
> [ 0.449357] dmam_alloc_attrs+0x74/0xc0
> [ 0.469967] dw_pcie_msi_host_init+0x100/0x300
> [ 0.469971] dw_pcie_host_init+0x5e4/0x6d8
> [ 0.491913] qcom_pcie_probe+0x5a8/0x838
> [ 0.491916] platform_probe+0x64/0xc0
> [ 0.491919] really_probe+0xc8/0x3f0
> [ 0.491921] __driver_probe_device+0x88/0x170
> [ 0.491922] driver_probe_device+0x48/0x130
> [ 0.491923] __device_attach_driver+0xc4/0x190
> [ 0.491925] bus_for_each_drv+0x90/0x100
> [ 0.491928] __device_attach_async_helper+0xb8/0x120
> [ 0.491929] async_run_entry_fn+0x3c/0x1e0
> [ 0.491931] process_one_work+0x150/0x3a0
> [ 0.491934] worker_thread+0x288/0x480
> [ 0.491936] kthread+0x118/0x1e0
> [ 0.491938] ret_from_fork+0x10/0x20
> [ 0.513092] Code: 91010108 54ffff4a 8b040108 cb050042 (d50b7428)
> [ 0.513094] ---[ end trace 0000000000000000 ]---
>
> I can only get the device to boot by disabling both pcie0 and pcie1.
>
I've tried several approaches, but the same call trace has never appeared;
PCIe0 and PCIe1 work fine, and my boot parameters are as follows:
linux /boot/vmlinuz-mainline root=UUID=131450ff-95bc-4791-b611-70855201b0cd rw console=ttyMSM0,115200n8 earlycon ignore_loglevel quiet splash vt.handoff=7
> > +
> > +
> > + perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
> > + wake-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> > +
> > + pinctrl-0 = <&pcie1_clkreq_n>,
> > + <&pcie1_reset_n>,
> > + <&pcie1_wake_n>;
> > + pinctrl-names = "default";
> > +
> > + status = "okay";
> > +};
> > +
> > +&pcie1_phy {
> > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > +
> > + status = "okay";
> > +};
> > +
>
> [snip]
>
> > +
> > +&remoteproc_adsp {
> > + firmware-name = "qcom/qcs6490/adsp.mbn";
> > +
> > + status = "okay";
> > +};
>
> I'm fairly sure that this is the wrong ADSP firmware. With the firmware
> in linux-firmware, I'm seeing charger pd crashes and the ADSP constantly
> restarting. Using the Radxa Dragon Q6A ADSP firmware which disables the
> charging feature in the firmware works way better and does not result in
> crashes.
>
Sorry, I didn't use linux-firmware for verification before.
Using firmware customized for RUBIK Pi 3 has solved this problem,
and I will submit this firmware to the linux-firmware repository
with the following modifications:
&remoteproc_adsp {
firmware-name = "qcom/qcs6490/thundercomm/rubikpi3/adsp.mbn";
status = "okay";
};
> > +
> > +&remoteproc_cdsp {
> > + firmware-name = "qcom/qcs6490/cdsp.mbn";
> > +
> > + status = "okay";
> > +};
> > +
> > [snip]
---
Thank you for the review!
Hongyang
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
2025-11-18 18:08 ` Dmitry Baryshkov
@ 2025-11-19 9:56 ` Roger Shimizu
2025-11-19 10:18 ` Dmitry Baryshkov
0 siblings, 1 reply; 12+ messages in thread
From: Roger Shimizu @ 2025-11-19 9:56 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Jens Reidel, Hongyang Zhao, Bjorn Andersson, Konrad Dybcio,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
devicetree, linux-kernel
Dear Dmitry,
Glad that you're checking for the changes for RUBIK Pi 3!
On Tue, Nov 18, 2025 at 10:08 AM Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> On Sun, Nov 16, 2025 at 11:36:13PM -0800, Roger Shimizu wrote:
> > Thanks Jens, and Dmitry for the review!
> >
> > On Sat, Nov 15, 2025 at 9:25 AM Jens Reidel <adrian@mainlining.org> wrote:
> > >
> > > Hi,
> > >
> > > On 11/14/25 5:34 PM, Hongyang Zhao wrote:
> > > > Add DTS for Thundercomm qcs6490-rubikpi3 board which uses
> > > > QCS6490 SoC.
> > > >
> > > > Works:
> > > > - Bluetooth (AP6256)
> > > > - Wi-Fi (AP6256)
> > > > - Ethernet (AX88179B connected to UPD720201)
> > > > - FAN
> > > > - Two USB Type-A 3.0 ports (UPD720201 connected to PCIe0)
> > > > - M.2 M-Key 2280 PCIe 3.0
> > > > - RTC
> > > > - USB Type-C
> > > > - USB Type-A 2.0 port
> > > > - 40PIN: I2C x1, UART x1
> > > >
> > > > Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
> > > > Reviewed-by: Roger Shimizu <rosh@debian.org>
> > > > ---
> > > > arch/arm64/boot/dts/qcom/Makefile | 1 +
> > > > .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 1415 ++++++++++++++++++++
> > > > 2 files changed, 1416 insertions(+)
> > > >
> > > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> > > > index 6f34d5ed331c..2433b15754fe 100644
> > > > --- a/arch/arm64/boot/dts/qcom/Makefile
> > > > +++ b/arch/arm64/boot/dts/qcom/Makefile
> > > > @@ -138,6 +138,7 @@ qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2
> > > >
> > > > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine.dtb
> > > > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-vision-mezzanine.dtb
> > > > +dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-rubikpi3.dtb
> > > > dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride.dtb
> > > > dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
> > > > dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> > > > diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > > > new file mode 100644
> > > > index 000000000000..4c9016992de3
> > > > --- /dev/null
> > > > +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > > > @@ -0,0 +1,1415 @@
> > >
> > > [snip]
> > >
> > > > +
> > > > +&pcie0 {
> > > > + perst-gpios = <&tlmm 87 GPIO_ACTIVE_LOW>;
> > > > + wake-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>;
> > > > +
> > > > + pinctrl-0 = <&pcie0_clkreq_n>,
> > > > + <&pcie0_reset_n>,
> > > > + <&pcie0_wake_n>;
> > > > + pinctrl-names = "default";
> > > > +
> > > > + status = "okay";
> > > > +};
> > > > +
> > > > +&pcie0_phy {
> > > > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > > > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > > > +
> > > > + status = "okay";
> > > > +};
> > > > +
> > > > +&pcie1 {
> > > > + /* Using traditional address mapping */
> > > > + reg = <0 0x01c08000 0 0x3000>,
> > > > + <0 0x40000000 0 0xf1d>,
> > > > + <0 0x40000f20 0 0xa8>,
> > > > + <0 0x40001000 0 0x1000>,
> > > > + <0 0x40100000 0 0x100000>;
> > > > +
> > > > + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
> > > > + <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
> > >
> > > Thanks for attempting to fix the PCIe issues. With your patch series
> > > applied on top of linux-next, I'm still seeing PCIe issues:
> > >
> > > [ 0.380693] Internal error: synchronous external abort:
> > > 0000000096000010 [#1] SMP
> > > [ 0.406491] Modules linked in:
> > > [ 0.406495] CPU: 5 UID: 0 PID: 106 Comm: kworker/u32:6 Tainted: G M
> > > 6.18.0-rc5-next-20251113 #13 NONE
> > > [ 0.406499] Tainted: [M]=MACHINE_CHECK
> > > [ 0.406500] Hardware name: thundercomm Thundercomm RUBIK Pi
> > > 3/Thundercomm RUBIK Pi 3, BIOS 2025.10-rc4 10/01/2025
> > > [ 0.406502] Workqueue: async async_run_entry_fn
> > > [ 0.406508] pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS
> > > BTYPE=--)
> > > [ 0.428362] pc : __pi_memset_generic+0x16c/0x188
> > > [ 0.428366] lr : dma_direct_alloc+0x19c/0x3d0
> > > [ 0.428370] sp : ffff8000810e3920
> > > [ 0.428371] x29: ffff8000810e3920 x28: ffff000080d0f810 x27:
> > > ffffba4c6196ec48
> > > [ 0.428373] x26: ffff000080d0f810 x25: ffffba4c607b31cc x24:
> > > 0000000000000000
> > > [ 0.428375] x23: ffff000080d0f810 x22: ffff000000c00000 x21:
> > > ffff000082858948
> > > [ 0.428376] x20: 0000000000001000 x19: fffffdffc0030000 x18:
> > > 000000000000000a
> > > [ 0.428378] x17: ffff0000823dae00 x16: 0000000000000000 x15:
> > > 0000000000000000
> > > [ 0.428380] x14: 00000000ffffffff x13: 0000000000000068 x12:
> > > 0000000000000100
> > > [ 0.449344] x11: 0000000000000000 x10: ffff0001fef99500 x9 :
> > > 0000000000000000
> > > [ 0.449345] x8 : ffff000000c00000 x7 : 0000000000000000 x6 :
> > > 000000000000003f
> > > [ 0.449347] x5 : 0000000000000040 x4 : 0000000000000000 x3 :
> > > 0000000000000004
> > > [ 0.449349] x2 : 0000000000000fc0 x1 : 0000000000000000 x0 :
> > > ffff000000c00000
> > > [ 0.449350] Call trace:
> > > [ 0.449351] __pi_memset_generic+0x16c/0x188 (P)
> > > [ 0.449354] dma_alloc_attrs+0x94/0x210
> > > [ 0.449357] dmam_alloc_attrs+0x74/0xc0
> > > [ 0.469967] dw_pcie_msi_host_init+0x100/0x300
> > > [ 0.469971] dw_pcie_host_init+0x5e4/0x6d8
> > > [ 0.491913] qcom_pcie_probe+0x5a8/0x838
> > > [ 0.491916] platform_probe+0x64/0xc0
> > > [ 0.491919] really_probe+0xc8/0x3f0
> > > [ 0.491921] __driver_probe_device+0x88/0x170
> > > [ 0.491922] driver_probe_device+0x48/0x130
> > > [ 0.491923] __device_attach_driver+0xc4/0x190
> > > [ 0.491925] bus_for_each_drv+0x90/0x100
> > > [ 0.491928] __device_attach_async_helper+0xb8/0x120
> > > [ 0.491929] async_run_entry_fn+0x3c/0x1e0
> > > [ 0.491931] process_one_work+0x150/0x3a0
> > > [ 0.491934] worker_thread+0x288/0x480
> > > [ 0.491936] kthread+0x118/0x1e0
> > > [ 0.491938] ret_from_fork+0x10/0x20
> > > [ 0.513092] Code: 91010108 54ffff4a 8b040108 cb050042 (d50b7428)
> > > [ 0.513094] ---[ end trace 0000000000000000 ]---
> > >
> > > I can only get the device to boot by disabling both pcie0 and pcie1.
> >
> > I think there're some regressions in "next-20251114".
> > After some time to "git bisect", I found after running 2 revert
> > commands below, it can boot for both RUBIK Pi 3 and RB3 Gen2.
> >
> > $ git revert b15ce3c0882c9cd2fbe4f87047874ad087b583ff -m 1
> > $ git revert 03e928442d469f7d8dafc549638730647202d9ce
> >
> > > > +
> > > > +
> > > > + perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
> > > > + wake-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> > > > +
> > > > + pinctrl-0 = <&pcie1_clkreq_n>,
> > > > + <&pcie1_reset_n>,
> > > > + <&pcie1_wake_n>;
> > > > + pinctrl-names = "default";
> > > > +
> > > > + status = "okay";
> > > > +};
> > > > +
> > > > +&pcie1_phy {
> > > > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > > > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > > > +
> > > > + status = "okay";
> > > > +};
> > > > +
> > >
> > > [snip]
> > >
> > > > +
> > > > +&remoteproc_adsp {
> > > > + firmware-name = "qcom/qcs6490/adsp.mbn";
> > > > +
> > > > + status = "okay";
> > > > +};
> > >
> > > I'm fairly sure that this is the wrong ADSP firmware. With the firmware
> > > in linux-firmware, I'm seeing charger pd crashes and the ADSP constantly
> > > restarting. Using the Radxa Dragon Q6A ADSP firmware which disables the
> > > charging feature in the firmware works way better and does not result in
> > > crashes.
> >
> > I run the Ubuntu 24.04 base system:
> > * https://ubuntu.com/download/qualcomm-iot#rubikpi3
> >
> > Currently it boots well with adsp fw from RB3 Gen2 (from deb pkg:
> > firmware-qcom-hlosfw) without crash.
> > But I heard from next release, adsp will be customized, so Hongyang
> > will make another patch to upstream the adsp for RUBIK Pi 3.
>
> Then it would be nice to include the new path for ADSP firmware from the
> day 0 (you can do this even before it is sent to linux-firmware).
Thanks for letting me know we can post it here, before sending to
linux-firmware!
Currently we're using the same adsp blob as QLI1.4 for RB3 Gen2.
It's packaged in ubuntu:
* https://launchpad.net/~ubuntu-qcom-iot/+archive/ubuntu/qcom-ppa/+packages
* Package: firmware-qcm6490-msl
* Version: 1.0.r00083.0+dsp103-0ubuntu1
I heard from Hongyang that from QLI1.5, RUBIK Pi 3 will have a
slightly different adsp than RB3 Gen2.
Hongyang will make it public after full testing.
Cheers,
Roger
> > Cheers,
> > Roger
> >
> > > > +
> > > > +&remoteproc_cdsp {
> > > > + firmware-name = "qcom/qcs6490/cdsp.mbn";
> > > > +
> > > > + status = "okay";
> > > > +};
> > > > +
> > >
> > > [snip]
> > >
> > > Thanks,
> > > Jens
>
> --
> With best wishes
> Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts
2025-11-19 9:56 ` Roger Shimizu
@ 2025-11-19 10:18 ` Dmitry Baryshkov
0 siblings, 0 replies; 12+ messages in thread
From: Dmitry Baryshkov @ 2025-11-19 10:18 UTC (permalink / raw)
To: Roger Shimizu
Cc: Jens Reidel, Hongyang Zhao, Bjorn Andersson, Konrad Dybcio,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
devicetree, linux-kernel
On Wed, Nov 19, 2025 at 01:56:54AM -0800, Roger Shimizu wrote:
> Dear Dmitry,
>
> Glad that you're checking for the changes for RUBIK Pi 3!
>
> On Tue, Nov 18, 2025 at 10:08 AM Dmitry Baryshkov
> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> >
> > On Sun, Nov 16, 2025 at 11:36:13PM -0800, Roger Shimizu wrote:
> > > Thanks Jens, and Dmitry for the review!
> > >
> > > On Sat, Nov 15, 2025 at 9:25 AM Jens Reidel <adrian@mainlining.org> wrote:
> > > >
> > > > Hi,
> > > >
> > > > On 11/14/25 5:34 PM, Hongyang Zhao wrote:
> > > > > Add DTS for Thundercomm qcs6490-rubikpi3 board which uses
> > > > > QCS6490 SoC.
> > > > >
> > > > > Works:
> > > > > - Bluetooth (AP6256)
> > > > > - Wi-Fi (AP6256)
> > > > > - Ethernet (AX88179B connected to UPD720201)
> > > > > - FAN
> > > > > - Two USB Type-A 3.0 ports (UPD720201 connected to PCIe0)
> > > > > - M.2 M-Key 2280 PCIe 3.0
> > > > > - RTC
> > > > > - USB Type-C
> > > > > - USB Type-A 2.0 port
> > > > > - 40PIN: I2C x1, UART x1
> > > > >
> > > > > Signed-off-by: Hongyang Zhao <hongyang.zhao@thundersoft.com>
> > > > > Reviewed-by: Roger Shimizu <rosh@debian.org>
> > > > > ---
> > > > > arch/arm64/boot/dts/qcom/Makefile | 1 +
> > > > > .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 1415 ++++++++++++++++++++
> > > > > 2 files changed, 1416 insertions(+)
> > > > >
> > > > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> > > > > index 6f34d5ed331c..2433b15754fe 100644
> > > > > --- a/arch/arm64/boot/dts/qcom/Makefile
> > > > > +++ b/arch/arm64/boot/dts/qcom/Makefile
> > > > > @@ -138,6 +138,7 @@ qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2
> > > > >
> > > > > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine.dtb
> > > > > dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-vision-mezzanine.dtb
> > > > > +dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-rubikpi3.dtb
> > > > > dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride.dtb
> > > > > dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
> > > > > dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> > > > > diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > > > > new file mode 100644
> > > > > index 000000000000..4c9016992de3
> > > > > --- /dev/null
> > > > > +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts
> > > > > @@ -0,0 +1,1415 @@
> > > >
> > > > [snip]
> > > >
> > > > > +
> > > > > +&pcie0 {
> > > > > + perst-gpios = <&tlmm 87 GPIO_ACTIVE_LOW>;
> > > > > + wake-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>;
> > > > > +
> > > > > + pinctrl-0 = <&pcie0_clkreq_n>,
> > > > > + <&pcie0_reset_n>,
> > > > > + <&pcie0_wake_n>;
> > > > > + pinctrl-names = "default";
> > > > > +
> > > > > + status = "okay";
> > > > > +};
> > > > > +
> > > > > +&pcie0_phy {
> > > > > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > > > > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > > > > +
> > > > > + status = "okay";
> > > > > +};
> > > > > +
> > > > > +&pcie1 {
> > > > > + /* Using traditional address mapping */
> > > > > + reg = <0 0x01c08000 0 0x3000>,
> > > > > + <0 0x40000000 0 0xf1d>,
> > > > > + <0 0x40000f20 0 0xa8>,
> > > > > + <0 0x40001000 0 0x1000>,
> > > > > + <0 0x40100000 0 0x100000>;
> > > > > +
> > > > > + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
> > > > > + <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
> > > >
> > > > Thanks for attempting to fix the PCIe issues. With your patch series
> > > > applied on top of linux-next, I'm still seeing PCIe issues:
> > > >
> > > > [ 0.380693] Internal error: synchronous external abort:
> > > > 0000000096000010 [#1] SMP
> > > > [ 0.406491] Modules linked in:
> > > > [ 0.406495] CPU: 5 UID: 0 PID: 106 Comm: kworker/u32:6 Tainted: G M
> > > > 6.18.0-rc5-next-20251113 #13 NONE
> > > > [ 0.406499] Tainted: [M]=MACHINE_CHECK
> > > > [ 0.406500] Hardware name: thundercomm Thundercomm RUBIK Pi
> > > > 3/Thundercomm RUBIK Pi 3, BIOS 2025.10-rc4 10/01/2025
> > > > [ 0.406502] Workqueue: async async_run_entry_fn
> > > > [ 0.406508] pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS
> > > > BTYPE=--)
> > > > [ 0.428362] pc : __pi_memset_generic+0x16c/0x188
> > > > [ 0.428366] lr : dma_direct_alloc+0x19c/0x3d0
> > > > [ 0.428370] sp : ffff8000810e3920
> > > > [ 0.428371] x29: ffff8000810e3920 x28: ffff000080d0f810 x27:
> > > > ffffba4c6196ec48
> > > > [ 0.428373] x26: ffff000080d0f810 x25: ffffba4c607b31cc x24:
> > > > 0000000000000000
> > > > [ 0.428375] x23: ffff000080d0f810 x22: ffff000000c00000 x21:
> > > > ffff000082858948
> > > > [ 0.428376] x20: 0000000000001000 x19: fffffdffc0030000 x18:
> > > > 000000000000000a
> > > > [ 0.428378] x17: ffff0000823dae00 x16: 0000000000000000 x15:
> > > > 0000000000000000
> > > > [ 0.428380] x14: 00000000ffffffff x13: 0000000000000068 x12:
> > > > 0000000000000100
> > > > [ 0.449344] x11: 0000000000000000 x10: ffff0001fef99500 x9 :
> > > > 0000000000000000
> > > > [ 0.449345] x8 : ffff000000c00000 x7 : 0000000000000000 x6 :
> > > > 000000000000003f
> > > > [ 0.449347] x5 : 0000000000000040 x4 : 0000000000000000 x3 :
> > > > 0000000000000004
> > > > [ 0.449349] x2 : 0000000000000fc0 x1 : 0000000000000000 x0 :
> > > > ffff000000c00000
> > > > [ 0.449350] Call trace:
> > > > [ 0.449351] __pi_memset_generic+0x16c/0x188 (P)
> > > > [ 0.449354] dma_alloc_attrs+0x94/0x210
> > > > [ 0.449357] dmam_alloc_attrs+0x74/0xc0
> > > > [ 0.469967] dw_pcie_msi_host_init+0x100/0x300
> > > > [ 0.469971] dw_pcie_host_init+0x5e4/0x6d8
> > > > [ 0.491913] qcom_pcie_probe+0x5a8/0x838
> > > > [ 0.491916] platform_probe+0x64/0xc0
> > > > [ 0.491919] really_probe+0xc8/0x3f0
> > > > [ 0.491921] __driver_probe_device+0x88/0x170
> > > > [ 0.491922] driver_probe_device+0x48/0x130
> > > > [ 0.491923] __device_attach_driver+0xc4/0x190
> > > > [ 0.491925] bus_for_each_drv+0x90/0x100
> > > > [ 0.491928] __device_attach_async_helper+0xb8/0x120
> > > > [ 0.491929] async_run_entry_fn+0x3c/0x1e0
> > > > [ 0.491931] process_one_work+0x150/0x3a0
> > > > [ 0.491934] worker_thread+0x288/0x480
> > > > [ 0.491936] kthread+0x118/0x1e0
> > > > [ 0.491938] ret_from_fork+0x10/0x20
> > > > [ 0.513092] Code: 91010108 54ffff4a 8b040108 cb050042 (d50b7428)
> > > > [ 0.513094] ---[ end trace 0000000000000000 ]---
> > > >
> > > > I can only get the device to boot by disabling both pcie0 and pcie1.
> > >
> > > I think there're some regressions in "next-20251114".
> > > After some time to "git bisect", I found after running 2 revert
> > > commands below, it can boot for both RUBIK Pi 3 and RB3 Gen2.
> > >
> > > $ git revert b15ce3c0882c9cd2fbe4f87047874ad087b583ff -m 1
> > > $ git revert 03e928442d469f7d8dafc549638730647202d9ce
> > >
> > > > > +
> > > > > +
> > > > > + perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
> > > > > + wake-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> > > > > +
> > > > > + pinctrl-0 = <&pcie1_clkreq_n>,
> > > > > + <&pcie1_reset_n>,
> > > > > + <&pcie1_wake_n>;
> > > > > + pinctrl-names = "default";
> > > > > +
> > > > > + status = "okay";
> > > > > +};
> > > > > +
> > > > > +&pcie1_phy {
> > > > > + vdda-phy-supply = <&vreg_l10c_0p88>;
> > > > > + vdda-pll-supply = <&vreg_l6b_1p2>;
> > > > > +
> > > > > + status = "okay";
> > > > > +};
> > > > > +
> > > >
> > > > [snip]
> > > >
> > > > > +
> > > > > +&remoteproc_adsp {
> > > > > + firmware-name = "qcom/qcs6490/adsp.mbn";
> > > > > +
> > > > > + status = "okay";
> > > > > +};
> > > >
> > > > I'm fairly sure that this is the wrong ADSP firmware. With the firmware
> > > > in linux-firmware, I'm seeing charger pd crashes and the ADSP constantly
> > > > restarting. Using the Radxa Dragon Q6A ADSP firmware which disables the
> > > > charging feature in the firmware works way better and does not result in
> > > > crashes.
> > >
> > > I run the Ubuntu 24.04 base system:
> > > * https://ubuntu.com/download/qualcomm-iot#rubikpi3
> > >
> > > Currently it boots well with adsp fw from RB3 Gen2 (from deb pkg:
> > > firmware-qcom-hlosfw) without crash.
> > > But I heard from next release, adsp will be customized, so Hongyang
> > > will make another patch to upstream the adsp for RUBIK Pi 3.
> >
> > Then it would be nice to include the new path for ADSP firmware from the
> > day 0 (you can do this even before it is sent to linux-firmware).
>
> Thanks for letting me know we can post it here, before sending to
> linux-firmware!
>
> Currently we're using the same adsp blob as QLI1.4 for RB3 Gen2.
I hope you mean the adsp from linux-firmware here.
> It's packaged in ubuntu:
> * https://launchpad.net/~ubuntu-qcom-iot/+archive/ubuntu/qcom-ppa/+packages
> * Package: firmware-qcm6490-msl
> * Version: 1.0.r00083.0+dsp103-0ubuntu1
It's some non-standard Ubuntu package, so it doesn't exist from my PoV.
I might be very extreme, but from my point of view, it's either in
linux-firmware (and available for everybody) or it's some downstream
proprietary non-available firmware, not packaged here-or-there.
> I heard from Hongyang that from QLI1.5, RUBIK Pi 3 will have a
> slightly different adsp than RB3 Gen2.
> Hongyang will make it public after full testing.
Great. Please land it to linux-firmware, I'd be happy to ack it there.
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-11-19 10:18 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-14 16:34 [PATCH 0/2] arm64: dts: qcom: rubikpi3: Add qcs6490-rubikpi3 board dts Hongyang Zhao
2025-11-14 16:34 ` [PATCH 1/2] " Hongyang Zhao
2025-11-15 17:08 ` Jens Reidel
2025-11-17 7:36 ` Roger Shimizu
2025-11-18 15:49 ` Bjorn Andersson
2025-11-18 18:08 ` Dmitry Baryshkov
2025-11-19 9:56 ` Roger Shimizu
2025-11-19 10:18 ` Dmitry Baryshkov
2025-11-19 9:09 ` Hongyang Zhao
2025-11-16 17:46 ` Dmitry Baryshkov
2025-11-14 16:34 ` [PATCH 2/2] dt-bindings: arm: qcom: rubikpi3: document rubikpi3 board binding Hongyang Zhao
2025-11-15 12:26 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).