Add device tree support for the Radxa AirBox Q900 board based on the
Qualcomm QCS9075 SoC (Lemans Family).
This board features HDMI 2.0 via dp0, 2x USB 3.1 Gen 2 ports,
2x 2.5GbE Ethernet ports and onboard UFS storage.
Further information: https://radxa.com/products/fogwise/airbox-q900/
Functionality has been tested and confirmed working via an Armbian
Debian Trixie build.
Signed-off-by: Mecid Urganci <mecid@mecomediagroup.de>
Made-with: Cursor
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../dts/qcom/qcs9075-radxa-airbox-q900.dts | 1012 +++++++++++++++++
2 files changed, 1013 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index a4dc9e8b2d25..c8b7dd67806d 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -180,6 +180,7 @@ qcs8300-ride-el2-dtbs := qcs8300-ride.dtb monaco-el2.dtbo
dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride-el2.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
+dtb-$(CONFIG_ARCH_QCOM) += qcs9075-radxa-airbox-q900.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
diff --git a/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts b/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
new file mode 100644
index 000000000000..8b5202b527cb
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
@@ -0,0 +1,1012 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2026 Mecid Urganci
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+
+#include "lemans.dtsi"
+#include "lemans-pmics.dtsi"
+
+/ {
+ model = "Radxa AIRbox Q900";
+ compatible = "radxa,airbox-q900", "qcom,qcs9075", "qcom,sa8775p";
+
+ aliases {
+ ethernet0 = ðernet0;
+ ethernet1 = ðernet1;
+ i2c15 = &i2c15;
+ i2c18 = &i2c18;
+ serial0 = &uart10;
+ ufshc1 = &ufs_mem_hc;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ vcc_5v0_regulator: vcc-5v0-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_5v0";
+ gpio = <&pmm8654au_3_gpios 6 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vcc_5v0_en_state>;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ vcc5v0_usb30_otg_regulator: vcc5v0-usb30-otg-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc5v0_usb30_otg";
+ gpio = <&pmm8654au_2_gpios 3 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vcc3v3_usb30_otg_en_state>;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ vcc5v0_usb30_regulator: vcc5v0-usb30-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc5v0_usb30";
+ gpio = <&pmm8654au_2_gpios 4 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vcc3v3_usb30_en_state>;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ vcc_3v3_ssd_regulator: vcc-3p3-ssd-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_3v3_ssd";
+ gpio = <&pmm8654au_1_gpios 9 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vcc_3v3_ssd_en_state>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ vcc3v3_minipcie_regulator: vcc3v3-minipcie-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc3v3_minipcie";
+ gpio = <&pmm8654au_2_gpios 10 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vcc3v3_minipcie_en_state>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ gpio_leds: gpio-leds {
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&status_led_state>, <&power_led_state>;
+
+ status-led {
+ gpios = <&pmm8654au_1_gpios 11 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "heartbeat";
+ function = LED_FUNCTION_STATUS;
+ color = <LED_COLOR_ID_BLUE>;
+ };
+
+ power-led {
+ gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "default-on";
+ function = LED_FUNCTION_POWER;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+ };
+
+ gpio_keys: gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&gpio_keys_default>;
+ pinctrl-names = "default";
+
+ power-key {
+ label = "Power Off";
+ gpios = <&tlmm 97 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_POWER>;
+ wakeup-source;
+ debounce-interval = <30>;
+ };
+ };
+
+ fan0: gpio-fan {
+ compatible = "gpio-fan";
+ gpios = <&pmm8654au_1_gpios 12 GPIO_ACTIVE_HIGH>;
+ gpio-fan,speed-map = <0 0>, <5000 1>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&fan_en_state>;
+ #cooling-cells = <2>;
+ };
+
+ dp0-connector {
+ compatible = "dp-connector";
+ label = "eDP0";
+ type = "full-size";
+
+ port {
+ dp0_connector_in: endpoint {
+ remote-endpoint = <&mdss0_dp0_out>;
+ };
+ };
+ };
+};
+
+&apps_rsc {
+ regulators-0 {
+ compatible = "qcom,pmm8654au-rpmh-regulators";
+ qcom,pmic-id = "a";
+
+ vreg_s4a: smps4 {
+ regulator-name = "vreg_s4a";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1816000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5a: smps5 {
+ regulator-name = "vreg_s5a";
+ regulator-min-microvolt = <1850000>;
+ regulator-max-microvolt = <1996000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s9a: smps9 {
+ regulator-name = "vreg_s9a";
+ regulator-min-microvolt = <535000>;
+ regulator-max-microvolt = <1120000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4a: ldo4 {
+ regulator-name = "vreg_l4a";
+ regulator-min-microvolt = <788000>;
+ regulator-max-microvolt = <1050000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5a: ldo5 {
+ regulator-name = "vreg_l5a";
+ regulator-min-microvolt = <870000>;
+ regulator-max-microvolt = <950000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6a: ldo6 {
+ regulator-name = "vreg_l6a";
+ regulator-min-microvolt = <870000>;
+ regulator-max-microvolt = <970000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7a: ldo7 {
+ regulator-name = "vreg_l7a";
+ regulator-min-microvolt = <720000>;
+ regulator-max-microvolt = <950000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l8a: ldo8 {
+ regulator-name = "vreg_l8a";
+ regulator-min-microvolt = <2504000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l9a: ldo9 {
+ regulator-name = "vreg_l9a";
+ regulator-min-microvolt = <2970000>;
+ regulator-max-microvolt = <3544000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-1 {
+ compatible = "qcom,pmm8654au-rpmh-regulators";
+ qcom,pmic-id = "c";
+
+ vreg_l1c: ldo1 {
+ regulator-name = "vreg_l1c";
+ regulator-min-microvolt = <1140000>;
+ regulator-max-microvolt = <1260000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2c: ldo2 {
+ regulator-name = "vreg_l2c";
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <1100000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3c: ldo3 {
+ regulator-name = "vreg_l3c";
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4c: ldo4 {
+ regulator-name = "vreg_l4c";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ /*
+ * FIXME: This should have regulator-allow-set-load but
+ * we're getting an over-current fault from the PMIC
+ * when switching to LPM.
+ */
+ };
+
+ vreg_l5c: ldo5 {
+ regulator-name = "vreg_l5c";
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6c: ldo6 {
+ regulator-name = "vreg_l6c";
+ regulator-min-microvolt = <1620000>;
+ regulator-max-microvolt = <1980000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7c: ldo7 {
+ regulator-name = "vreg_l7c";
+ regulator-min-microvolt = <1620000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l8c: ldo8 {
+ regulator-name = "vreg_l8c";
+ regulator-min-microvolt = <2400000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l9c: ldo9 {
+ regulator-name = "vreg_l9c";
+ regulator-min-microvolt = <1650000>;
+ regulator-max-microvolt = <2700000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-2 {
+ compatible = "qcom,pmm8654au-rpmh-regulators";
+ qcom,pmic-id = "e";
+
+ vreg_s4e: smps4 {
+ regulator-name = "vreg_s4e";
+ regulator-min-microvolt = <970000>;
+ regulator-max-microvolt = <1520000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s7e: smps7 {
+ regulator-name = "vreg_s7e";
+ regulator-min-microvolt = <1010000>;
+ regulator-max-microvolt = <1170000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s9e: smps9 {
+ regulator-name = "vreg_s9e";
+ regulator-min-microvolt = <300000>;
+ regulator-max-microvolt = <570000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6e: ldo6 {
+ regulator-name = "vreg_l6e";
+ regulator-min-microvolt = <1280000>;
+ regulator-max-microvolt = <1450000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l8e: ldo8 {
+ regulator-name = "vreg_l8e";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1950000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-allow-set-load;
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+ RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+};
+
+ðernet0 {
+ phy-handle = <&sgmii_phy0>;
+ phy-mode = "2500base-x";
+
+ pinctrl-0 = <ðernet0_default>;
+ pinctrl-names = "default";
+
+ snps,mtl-rx-config = <&mtl_rx_setup>;
+ snps,mtl-tx-config = <&mtl_tx_setup>;
+ snps,ps-speed = <2500>;
+
+ status = "okay";
+
+ mdio {
+ compatible = "snps,dwmac-mdio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ sgmii_phy0: ethernet-phy@1c {
+ compatible = "ethernet-phy-id004d.d101";
+ reg = <0x1c>;
+ reset-gpios = <&pmm8654au_2_gpios 8 GPIO_ACTIVE_LOW>;
+ reset-assert-us = <11000>;
+ reset-deassert-us = <70000>;
+
+ leds {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@0 {
+ reg = <0>;
+ active-low;
+ color = <LED_COLOR_ID_YELLOW>;
+ };
+
+ led@1 {
+ reg = <1>;
+ active-low;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+ };
+ };
+ };
+
+ mtl_rx_setup: rx-queues-config {
+ snps,rx-queues-to-use = <4>;
+ snps,rx-sched-sp;
+
+ queue0 {
+ snps,dcb-algorithm;
+ snps,map-to-dma-channel = <0x0>;
+ snps,route-up;
+ snps,priority = <0x1>;
+ };
+
+ queue1 {
+ snps,dcb-algorithm;
+ snps,map-to-dma-channel = <0x1>;
+ snps,route-ptp;
+ };
+
+ queue2 {
+ snps,avb-algorithm;
+ snps,map-to-dma-channel = <0x2>;
+ snps,route-avcp;
+ };
+
+ queue3 {
+ snps,avb-algorithm;
+ snps,map-to-dma-channel = <0x3>;
+ snps,priority = <0xc>;
+ };
+ };
+
+ mtl_tx_setup: tx-queues-config {
+ snps,tx-queues-to-use = <4>;
+
+ queue0 {
+ snps,dcb-algorithm;
+ };
+
+ queue1 {
+ snps,dcb-algorithm;
+ };
+
+ queue2 {
+ snps,avb-algorithm;
+ snps,send_slope = <0x1000>;
+ snps,idle_slope = <0x1000>;
+ snps,high_credit = <0x3e800>;
+ snps,low_credit = <0xffc18000>;
+ };
+
+ queue3 {
+ snps,avb-algorithm;
+ snps,send_slope = <0x1000>;
+ snps,idle_slope = <0x1000>;
+ snps,high_credit = <0x3e800>;
+ snps,low_credit = <0xffc18000>;
+ };
+ };
+};
+
+ðernet1 {
+ phy-handle = <&sgmii_phy1>;
+ phy-mode = "2500base-x";
+
+ pinctrl-0 = <ðernet1_default>;
+ pinctrl-names = "default";
+
+ snps,mtl-rx-config = <&mtl_rx_setup1>;
+ snps,mtl-tx-config = <&mtl_tx_setup1>;
+ snps,ps-speed = <2500>;
+
+ status = "okay";
+
+ mdio {
+ compatible = "snps,dwmac-mdio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ sgmii_phy1: ethernet-phy@1c {
+ compatible = "ethernet-phy-id004d.d101";
+ reg = <0x1c>;
+ reset-gpios = <&pmm8654au_2_gpios 9 GPIO_ACTIVE_LOW>;
+ reset-assert-us = <11000>;
+ reset-deassert-us = <70000>;
+
+ leds {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@0 {
+ reg = <0>;
+ active-low;
+ color = <LED_COLOR_ID_YELLOW>;
+ };
+
+ led@1 {
+ reg = <1>;
+ active-low;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+ };
+ };
+ };
+
+ mtl_rx_setup1: rx-queues-config {
+ snps,rx-queues-to-use = <4>;
+ snps,rx-sched-sp;
+
+ queue0 {
+ snps,dcb-algorithm;
+ snps,map-to-dma-channel = <0x0>;
+ snps,route-up;
+ snps,priority = <0x1>;
+ };
+
+ queue1 {
+ snps,dcb-algorithm;
+ snps,map-to-dma-channel = <0x1>;
+ snps,route-ptp;
+ };
+
+ queue2 {
+ snps,avb-algorithm;
+ snps,map-to-dma-channel = <0x2>;
+ snps,route-avcp;
+ };
+
+ queue3 {
+ snps,avb-algorithm;
+ snps,map-to-dma-channel = <0x3>;
+ snps,priority = <0xc>;
+ };
+ };
+
+ mtl_tx_setup1: tx-queues-config {
+ snps,tx-queues-to-use = <4>;
+
+ queue0 {
+ snps,dcb-algorithm;
+ };
+
+ queue1 {
+ snps,dcb-algorithm;
+ };
+
+ queue2 {
+ snps,avb-algorithm;
+ snps,send_slope = <0x1000>;
+ snps,idle_slope = <0x1000>;
+ snps,high_credit = <0x3e800>;
+ snps,low_credit = <0xffc18000>;
+ };
+
+ queue3 {
+ snps,avb-algorithm;
+ snps,send_slope = <0x1000>;
+ snps,idle_slope = <0x1000>;
+ snps,high_credit = <0x3e800>;
+ snps,low_credit = <0xffc18000>;
+ };
+ };
+};
+
+&i2c15 {
+ clock-frequency = <400000>;
+ status = "okay";
+
+ eeprom: eeprom@50 {
+ compatible = "atmel,24c16";
+ reg = <0x50>;
+ pagesize = <16>;
+ };
+};
+
+&i2c18 {
+ clock-frequency = <400000>;
+ pinctrl-0 = <&qup_i2c18_default>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ /* RTC RS4C411ZAE */
+ rtc_m41t11: rtc@68 {
+ compatible = "st,m41t11";
+ reg = <0x68>;
+ };
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/sa8775p/a663_zap.mbn";
+};
+
+&iris {
+ firmware-name = "qcom/vpu/vpu30_p4_s6.mbn";
+ status = "okay";
+};
+
+&mdss0 {
+ status = "okay";
+};
+
+&mdss0_dp0 {
+ pinctrl-0 = <&dp_hot_plug_det>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&mdss0_dp0_out {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+ remote-endpoint = <&dp0_connector_in>;
+};
+
+&mdss0_dp0_phy {
+ vdda-phy-supply = <&vreg_l1c>;
+ vdda-pll-supply = <&vreg_l4a>;
+
+ status = "okay";
+};
+
+&pcie0 {
+ perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
+ wake-gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie0_default_state>;
+
+ status = "okay";
+};
+
+&pcie1 {
+ perst-gpios = <&tlmm 4 GPIO_ACTIVE_LOW>;
+ wake-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie1_default_state>;
+
+ status = "okay";
+};
+
+&pcie0_phy {
+ vdda-phy-supply = <&vreg_l5a>;
+ vdda-pll-supply = <&vreg_l1c>;
+
+ status = "okay";
+};
+
+&pcie1_phy {
+ vdda-phy-supply = <&vreg_l5a>;
+ vdda-pll-supply = <&vreg_l1c>;
+
+ status = "okay";
+};
+
+&pmm8654au_0_pon_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+ status = "okay";
+};
+
+&qupv3_id_0 {
+ status = "okay";
+};
+
+&qupv3_id_1 {
+ status = "okay";
+};
+
+&qupv3_id_2 {
+ status = "okay";
+};
+
+&remoteproc_adsp {
+ firmware-name = "qcom/sa8775p/adsp.mbn";
+ status = "okay";
+};
+
+&remoteproc_cdsp0 {
+ firmware-name = "qcom/sa8775p/cdsp0.mbn";
+ status = "okay";
+};
+
+&remoteproc_cdsp1 {
+ firmware-name = "qcom/sa8775p/cdsp1.mbn";
+ status = "okay";
+};
+
+&remoteproc_gpdsp0 {
+ firmware-name = "qcom/sa8775p/gpdsp0.mbn";
+ status = "okay";
+};
+
+&remoteproc_gpdsp1 {
+ firmware-name = "qcom/sa8775p/gpdsp1.mbn";
+ status = "okay";
+};
+
+&serdes0 {
+ phy-supply = <&vreg_l5a>;
+ vdda-0p9-supply = <&vreg_l4a>;
+
+ status = "okay";
+};
+
+&serdes1 {
+ phy-supply = <&vreg_l5a>;
+ vdda-0p9-supply = <&vreg_l4a>;
+
+ status = "okay";
+};
+
+&sleep_clk {
+ clock-frequency = <32768>;
+};
+
+&uart10 {
+ compatible = "qcom,geni-debug-uart";
+ status = "okay";
+};
+
+&ufs_mem_hc {
+ reset-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>;
+ vcc-supply = <&vreg_l8a>;
+ vcc-max-microamp = <1100000>;
+ vccq-supply = <&vreg_l4c>;
+ vccq-max-microamp = <1200000>;
+
+ status = "okay";
+};
+
+&ufs_mem_phy {
+ vdda-phy-supply = <&vreg_l4a>;
+ vdda-pll-supply = <&vreg_l1c>;
+
+ status = "okay";
+};
+
+&usb_0 {
+ dr_mode = "host";
+
+ status = "okay";
+};
+
+&usb_0_hsphy {
+ vdda-pll-supply = <&vreg_l7a>;
+ vdda18-supply = <&vreg_l6c>;
+ vdda33-supply = <&vreg_l9a>;
+
+ status = "okay";
+};
+
+&usb_0_qmpphy {
+ vdda-phy-supply = <&vreg_l1c>;
+ vdda-pll-supply = <&vreg_l7a>;
+
+ status = "okay";
+};
+
+&usb_1 {
+ dr_mode = "host";
+
+ status = "okay";
+};
+
+&usb_1_hsphy {
+ vdda-pll-supply = <&vreg_l7a>;
+ vdda18-supply = <&vreg_l6c>;
+ vdda33-supply = <&vreg_l9a>;
+
+ status = "okay";
+};
+
+&usb_1_qmpphy {
+ vdda-phy-supply = <&vreg_l1c>;
+ vdda-pll-supply = <&vreg_l7a>;
+
+ status = "okay";
+};
+
+&usb_2 {
+ dr_mode = "host";
+
+ status = "okay";
+};
+
+&usb_2_hsphy {
+ vdda-pll-supply = <&vreg_l7a>;
+ vdda18-supply = <&vreg_l6c>;
+ vdda33-supply = <&vreg_l9a>;
+
+ status = "okay";
+};
+
+&xo_board_clk {
+ clock-frequency = <38400000>;
+};
+
+&pmm8654au_1_gpios {
+ vcc_3v3_ssd_en_state: vcc-3v3-ssd-en-state {
+ pins = "gpio9";
+ function = "normal";
+ output-high;
+ bias-pull-up;
+ };
+
+ status_led_state: status-led-state {
+ pins = "gpio11";
+ function = "normal";
+ output-high;
+ bias-pull-up;
+ };
+
+ fan_en_state: fan-en-state {
+ pins = "gpio12";
+ function = "normal";
+ output-low;
+ bias-pull-down;
+ };
+};
+
+&pmm8654au_2_gpios {
+ vcc3v3_usb30_otg_en_state: vcc3v3-usb30-otg-en-state {
+ pins = "gpio3";
+ function = "normal";
+ output-high;
+ bias-pull-up;
+ };
+
+ vcc3v3_usb30_en_state: vcc3v3-usb30-en-state {
+ pins = "gpio4";
+ function = "normal";
+ output-high;
+ bias-pull-up;
+ };
+
+ vcc3v3_minipcie_en_state: vcc3v3-minipcie-en-state {
+ pins = "gpio10";
+ function = "normal";
+ output-high;
+ bias-pull-up;
+ };
+};
+
+&pmm8654au_3_gpios {
+ vcc_5v0_en_state: vcc-5v0-en-state {
+ pins = "gpio6";
+ function = "normal";
+ output-high;
+ bias-pull-up;
+ };
+};
+
+&tlmm {
+ dp_hot_plug_det: dp-hot-plug-det-state {
+ pins = "gpio101";
+ function = "edp0_hot";
+ bias-disable;
+ };
+
+ ethernet0_default: ethernet0-default-state {
+ ethernet0_mdc: ethernet0-mdc-pins {
+ pins = "gpio8";
+ function = "emac0_mdc";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+
+ ethernet0_mdio: ethernet0-mdio-pins {
+ pins = "gpio9";
+ function = "emac0_mdio";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+
+ ethernet1_default: ethernet1-default-state {
+ ethernet1_mdc: ethernet1-mdc-pins {
+ pins = "gpio20";
+ function = "emac1_mdc";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+
+ ethernet1_mdio: ethernet1-mdio-pins {
+ pins = "gpio21";
+ function = "emac1_mdio";
+ drive-strength = <16>;
+ bias-pull-up;
+ };
+ };
+
+ pcie0_default_state: pcie0-default-state {
+ perst-pins {
+ pins = "gpio2";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ clkreq-pins {
+ pins = "gpio1";
+ function = "pcie0_clkreq";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ wake-pins {
+ pins = "gpio0";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ pcie1_default_state: pcie1-default-state {
+ perst-pins {
+ pins = "gpio4";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ clkreq-pins {
+ pins = "gpio3";
+ function = "pcie1_clkreq";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ wake-pins {
+ pins = "gpio5";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ qup_i2c18_default: qup-i2c18-state {
+ pins = "gpio95", "gpio96";
+ function = "qup2_se4";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ gpio_keys_default: gpio-keys-default-state {
+ pins = "gpio97";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ power_led_state: power-led-state {
+ pins = "gpio98";
+ function = "gpio";
+ output-high;
+ bias-pull-up;
+ };
+};
+
+/ {
+ thermal-zones {
+ cpu-0-0-0-thermal {
+ polling-delay-passive = <1000>;
+ polling-delay = <5000>;
+
+ trips {
+ fan_on: fan-on {
+ temperature = <40000>;
+ hysteresis = <5000>;
+ type = "active";
+ };
+ };
+
+ cooling-maps {
+ map-fan {
+ trip = <&fan_on>;
+ cooling-device = <&fan0 1 1>;
+ };
+ };
+ };
+ };
+};
--
2.47.3
On 3/18/26 9:36 AM, Mecid Urganci wrote:
> Add device tree support for the Radxa AirBox Q900 board based on the
> Qualcomm QCS9075 SoC (Lemans Family).
>
> This board features HDMI 2.0 via dp0, 2x USB 3.1 Gen 2 ports,
> 2x 2.5GbE Ethernet ports and onboard UFS storage.
>
> Further information: https://radxa.com/products/fogwise/airbox-q900/
>
> Functionality has been tested and confirmed working via an Armbian
> Debian Trixie build.
>
> Signed-off-by: Mecid Urganci <mecid@mecomediagroup.de>
> Made-with: Cursor
> ---
[...]
> + gpio_leds: gpio-leds {
Please strip unused labels
> + compatible = "gpio-leds";
> + pinctrl-names = "default";
> + pinctrl-0 = <&status_led_state>, <&power_led_state>;
property-n
property-names
in this order, file-wide, please
[...]
> + vreg_l4c: ldo4 {
> + regulator-name = "vreg_l4c";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + /*
> + * FIXME: This should have regulator-allow-set-load but
> + * we're getting an over-current fault from the PMIC
> + * when switching to LPM.
> + */
Are you actually experiencing that, or is that a copy-pasta?
[...]
> +&i2c15 {
> + clock-frequency = <400000>;
> + status = "okay";
Please uniformly keep a \n before 'status'
[...]
> +&gpu_zap_shader {
> + firmware-name = "qcom/sa8775p/a663_zap.mbn";
> +};
> +
> +&iris {
> + firmware-name = "qcom/vpu/vpu30_p4_s6.mbn";
> + status = "okay";
> +};
Those are only Qualcomm-signed (i.e. not vendor-signed) - are you
using the ones from linux-firmware?
[...]
> +&remoteproc_adsp {
> + firmware-name = "qcom/sa8775p/adsp.mbn";
Notably the ADSP firmware normally contains board-specific modifications..
[...]
> + power_led_state: power-led-state {
> + pins = "gpio98";
> + function = "gpio";
> + output-high;
You're already manipulating this pin from the gpio-leds node, no need
> + bias-pull-up;
pull-up of an active-high pin sounds odd
Konrad
Hi,
On 3/18/26 09:36, Mecid Urganci wrote:
> Add device tree support for the Radxa AirBox Q900 board based on the
> Qualcomm QCS9075 SoC (Lemans Family).
>
> This board features HDMI 2.0 via dp0, 2x USB 3.1 Gen 2 ports,
> 2x 2.5GbE Ethernet ports and onboard UFS storage.
>
> Further information: https://radxa.com/products/fogwise/airbox-q900/
>
> Functionality has been tested and confirmed working via an Armbian
> Debian Trixie build.
>
> Signed-off-by: Mecid Urganci <mecid@mecomediagroup.de>
> Made-with: Cursor
> ---
> arch/arm64/boot/dts/qcom/Makefile | 1 +
> .../dts/qcom/qcs9075-radxa-airbox-q900.dts | 1012 +++++++++++++++++
> 2 files changed, 1013 insertions(+)
> create mode 100644 arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index a4dc9e8b2d25..c8b7dd67806d 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -180,6 +180,7 @@ qcs8300-ride-el2-dtbs := qcs8300-ride.dtb monaco-el2.dtbo
>
> dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride-el2.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
> +dtb-$(CONFIG_ARCH_QCOM) += qcs9075-radxa-airbox-q900.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
>
> diff --git a/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts b/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
> new file mode 100644
> index 000000000000..8b5202b527cb
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
> @@ -0,0 +1,1012 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2026 Mecid Urganci
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/leds/common.h>
> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
> +
> +#include "lemans.dtsi"
> +#include "lemans-pmics.dtsi"
> +
> +/ {
> + model = "Radxa AIRbox Q900";
The radxa pages shows "Radxa Fogwise® AIRbox Q900", why did you drop Fogwise ?
> + compatible = "radxa,airbox-q900", "qcom,qcs9075", "qcom,sa8775p";
> +
<snip>
> +
> + dp0-connector {
> + compatible = "dp-connector";
> + label = "eDP0";
> + type = "full-size";
> +
> + port {
> + dp0_connector_in: endpoint {
> + remote-endpoint = <&mdss0_dp0_out>;
> + };
> + };
The device has an HDMI output, and this is probably provided by a DP to HDMI IC,
please represent it here.
> + };
> +};
> +
<snip>
> +};
> +
> +/ {
> + thermal-zones {
> + cpu-0-0-0-thermal {
> + polling-delay-passive = <1000>;
> + polling-delay = <5000>;
> +
> + trips {
> + fan_on: fan-on {
> + temperature = <40000>;
> + hysteresis = <5000>;
> + type = "active";
> + };
> + };
> +
> + cooling-maps {
> + map-fan {
> + trip = <&fan_on>;
> + cooling-device = <&fan0 1 1>;
> + };
> + };
> + };
> + };
So the fan only cools the cpu0 ?? not the gpu ?
Neil
> +};
On 18/03/2026 09:36, Mecid Urganci wrote:
> Add device tree support for the Radxa AirBox Q900 board based on the
> Qualcomm QCS9075 SoC (Lemans Family).
>
> This board features HDMI 2.0 via dp0, 2x USB 3.1 Gen 2 ports,
> 2x 2.5GbE Ethernet ports and onboard UFS storage.
>
> Further information: https://radxa.com/products/fogwise/airbox-q900/
>
> Functionality has been tested and confirmed working via an Armbian
> Debian Trixie build.
>
> Signed-off-by: Mecid Urganci <mecid@mecomediagroup.de>
> Made-with: Cursor
Not a correct tag. Please read full docs about usage of LLM, because if
you came with wrong tag, I assume you did not read the rest of it.
What's more, did you review this code before posting it?
> ---
> arch/arm64/boot/dts/qcom/Makefile | 1 +
> .../dts/qcom/qcs9075-radxa-airbox-q900.dts | 1012 +++++++++++++++++
> 2 files changed, 1013 insertions(+)
> create mode 100644 arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index a4dc9e8b2d25..c8b7dd67806d 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -180,6 +180,7 @@ qcs8300-ride-el2-dtbs := qcs8300-ride.dtb monaco-el2.dtbo
>
> dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride-el2.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
> +dtb-$(CONFIG_ARCH_QCOM) += qcs9075-radxa-airbox-q900.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
>
> diff --git a/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts b/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
> new file mode 100644
> index 000000000000..8b5202b527cb
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
> @@ -0,0 +1,1012 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2026 Mecid Urganci
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/leds/common.h>
> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
> +
> +#include "lemans.dtsi"
> +#include "lemans-pmics.dtsi"
> +
> +/ {
> + model = "Radxa AIRbox Q900";
> + compatible = "radxa,airbox-q900", "qcom,qcs9075", "qcom,sa8775p";
> +
> + aliases {
> + ethernet0 = ðernet0;
> + ethernet1 = ðernet1;
> + i2c15 = &i2c15;
> + i2c18 = &i2c18;
> + serial0 = &uart10;
> + ufshc1 = &ufs_mem_hc;
> + };
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + vcc_5v0_regulator: vcc-5v0-regulator {
Please use name for all fixed regulators which matches current format
recommendation: 'regulator-[0-9]v[0-9]'
https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
> + compatible = "regulator-fixed";
> + regulator-name = "vcc_5v0";
> + gpio = <&pmm8654au_3_gpios 6 GPIO_ACTIVE_HIGH>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&vcc_5v0_en_state>;
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + regulator-boot-on;
> + enable-active-high;
> + regulator-always-on;
> + };
> +
> + vcc5v0_usb30_otg_regulator: vcc5v0-usb30-otg-regulator {
> + compatible = "regulator-fixed";
> + regulator-name = "vcc5v0_usb30_otg";
> + gpio = <&pmm8654au_2_gpios 3 GPIO_ACTIVE_HIGH>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&vcc3v3_usb30_otg_en_state>;
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + regulator-boot-on;
> + enable-active-high;
> + regulator-always-on;
> + };
> +
> + vcc5v0_usb30_regulator: vcc5v0-usb30-regulator {
> + compatible = "regulator-fixed";
> + regulator-name = "vcc5v0_usb30";
> + gpio = <&pmm8654au_2_gpios 4 GPIO_ACTIVE_HIGH>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&vcc3v3_usb30_en_state>;
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + regulator-boot-on;
> + enable-active-high;
> + regulator-always-on;
> + };
> +
> + vcc_3v3_ssd_regulator: vcc-3p3-ssd-regulator {
> + compatible = "regulator-fixed";
> + regulator-name = "vcc_3v3_ssd";
> + gpio = <&pmm8654au_1_gpios 9 GPIO_ACTIVE_HIGH>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&vcc_3v3_ssd_en_state>;
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-boot-on;
> + enable-active-high;
> + regulator-always-on;
> + };
> +
> + vcc3v3_minipcie_regulator: vcc3v3-minipcie-regulator {
> + compatible = "regulator-fixed";
> + regulator-name = "vcc3v3_minipcie";
> + gpio = <&pmm8654au_2_gpios 10 GPIO_ACTIVE_HIGH>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&vcc3v3_minipcie_en_state>;
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-boot-on;
> + enable-active-high;
> + regulator-always-on;
> + };
> +
> + gpio_leds: gpio-leds {
> + compatible = "gpio-leds";
> + pinctrl-names = "default";
> + pinctrl-0 = <&status_led_state>, <&power_led_state>;
> +
> + status-led {
> + gpios = <&pmm8654au_1_gpios 11 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "heartbeat";
> + function = LED_FUNCTION_STATUS;
> + color = <LED_COLOR_ID_BLUE>;
> + };
> +
> + power-led {
> + gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "default-on";
> + function = LED_FUNCTION_POWER;
> + color = <LED_COLOR_ID_GREEN>;
> + };
> + };
> +
> + gpio_keys: gpio-keys {
> + compatible = "gpio-keys";
> +
> + pinctrl-0 = <&gpio_keys_default>;
> + pinctrl-names = "default";
> +
> + power-key {
> + label = "Power Off";
> + gpios = <&tlmm 97 GPIO_ACTIVE_LOW>;
> + linux,code = <KEY_POWER>;
> + wakeup-source;
> + debounce-interval = <30>;
> + };
> + };
> +
> + fan0: gpio-fan {
> + compatible = "gpio-fan";
> + gpios = <&pmm8654au_1_gpios 12 GPIO_ACTIVE_HIGH>;
> + gpio-fan,speed-map = <0 0>, <5000 1>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&fan_en_state>;
> + #cooling-cells = <2>;
> + };
> +
> + dp0-connector {
dp-connector
> + compatible = "dp-connector";
> + label = "eDP0";
> + type = "full-size";
> +
> + port {
> + dp0_connector_in: endpoint {
> + remote-endpoint = <&mdss0_dp0_out>;
> + };
> + };
> + };
> +};
> +
...
> +
> + gpio_keys_default: gpio-keys-default-state {
> + pins = "gpio97";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-up;
> + };
> +
> + power_led_state: power-led-state {
> + pins = "gpio98";
> + function = "gpio";
> + output-high;
> + bias-pull-up;
> + };
> +};
> +
> +/ {
> + thermal-zones {
> + cpu-0-0-0-thermal {
You should override given thermal zone by phandle/label style, not by
full path.
Best regards,
Krzysztof
On 2026-03-18 09:56, Krzysztof Kozlowski wrote:
> On 18/03/2026 09:36, Mecid Urganci wrote:
>> Add device tree support for the Radxa AirBox Q900 board based on the
>> Qualcomm QCS9075 SoC (Lemans Family).
>>
>> This board features HDMI 2.0 via dp0, 2x USB 3.1 Gen 2 ports,
>> 2x 2.5GbE Ethernet ports and onboard UFS storage.
>>
>> Further information: https://radxa.com/products/fogwise/airbox-q900/
>>
>> Functionality has been tested and confirmed working via an Armbian
>> Debian Trixie build.
>>
>> Signed-off-by: Mecid Urganci <mecid@mecomediagroup.de>
>> Made-with: Cursor
>
> Not a correct tag. Please read full docs about usage of LLM, because if
> you came with wrong tag, I assume you did not read the rest of it.
>
> What's more, did you review this code before posting it?
Sorry for the confusion as this is my first time sending a patch
upstream and I tried to address what could come up with an LLM as
sparing partner before.
I did review the code and tested for functionality.
>
>> ---
>> arch/arm64/boot/dts/qcom/Makefile | 1 +
>> .../dts/qcom/qcs9075-radxa-airbox-q900.dts | 1012
>> +++++++++++++++++
>> 2 files changed, 1013 insertions(+)
>> create mode 100644
>> arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
>>
>> diff --git a/arch/arm64/boot/dts/qcom/Makefile
>> b/arch/arm64/boot/dts/qcom/Makefile
>> index a4dc9e8b2d25..c8b7dd67806d 100644
>> --- a/arch/arm64/boot/dts/qcom/Makefile
>> +++ b/arch/arm64/boot/dts/qcom/Makefile
>> @@ -180,6 +180,7 @@ qcs8300-ride-el2-dtbs := qcs8300-ride.dtb
>> monaco-el2.dtbo
>>
>> dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride-el2.dtb
>> dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
>> +dtb-$(CONFIG_ARCH_QCOM) += qcs9075-radxa-airbox-q900.dtb
>> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
>> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
>>
>> diff --git a/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
>> b/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
>> new file mode 100644
>> index 000000000000..8b5202b527cb
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/qcs9075-radxa-airbox-q900.dts
>> @@ -0,0 +1,1012 @@
>> +// SPDX-License-Identifier: BSD-3-Clause
>> +/*
>> + * Copyright (c) 2026 Mecid Urganci
>> + */
>> +
>> +/dts-v1/;
>> +
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/leds/common.h>
>> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
>> +
>> +#include "lemans.dtsi"
>> +#include "lemans-pmics.dtsi"
>> +
>> +/ {
>> + model = "Radxa AIRbox Q900";
>> + compatible = "radxa,airbox-q900", "qcom,qcs9075", "qcom,sa8775p";
>> +
>> + aliases {
>> + ethernet0 = ðernet0;
>> + ethernet1 = ðernet1;
>> + i2c15 = &i2c15;
>> + i2c18 = &i2c18;
>> + serial0 = &uart10;
>> + ufshc1 = &ufs_mem_hc;
>> + };
>> +
>> + chosen {
>> + stdout-path = "serial0:115200n8";
>> + };
>> +
>> + vcc_5v0_regulator: vcc-5v0-regulator {
>
> Please use name for all fixed regulators which matches current format
> recommendation: 'regulator-[0-9]v[0-9]'
>
> https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
>
Will address in V2, thank you!
>> + compatible = "regulator-fixed";
>> + regulator-name = "vcc_5v0";
>> + gpio = <&pmm8654au_3_gpios 6 GPIO_ACTIVE_HIGH>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&vcc_5v0_en_state>;
>> + regulator-min-microvolt = <5000000>;
>> + regulator-max-microvolt = <5000000>;
>> + regulator-boot-on;
>> + enable-active-high;
>> + regulator-always-on;
>> + };
>> +
>> + vcc5v0_usb30_otg_regulator: vcc5v0-usb30-otg-regulator {
>> + compatible = "regulator-fixed";
>> + regulator-name = "vcc5v0_usb30_otg";
>> + gpio = <&pmm8654au_2_gpios 3 GPIO_ACTIVE_HIGH>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&vcc3v3_usb30_otg_en_state>;
>> + regulator-min-microvolt = <5000000>;
>> + regulator-max-microvolt = <5000000>;
>> + regulator-boot-on;
>> + enable-active-high;
>> + regulator-always-on;
>> + };
>> +
>> + vcc5v0_usb30_regulator: vcc5v0-usb30-regulator {
>> + compatible = "regulator-fixed";
>> + regulator-name = "vcc5v0_usb30";
>> + gpio = <&pmm8654au_2_gpios 4 GPIO_ACTIVE_HIGH>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&vcc3v3_usb30_en_state>;
>> + regulator-min-microvolt = <5000000>;
>> + regulator-max-microvolt = <5000000>;
>> + regulator-boot-on;
>> + enable-active-high;
>> + regulator-always-on;
>> + };
>> +
>> + vcc_3v3_ssd_regulator: vcc-3p3-ssd-regulator {
>> + compatible = "regulator-fixed";
>> + regulator-name = "vcc_3v3_ssd";
>> + gpio = <&pmm8654au_1_gpios 9 GPIO_ACTIVE_HIGH>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&vcc_3v3_ssd_en_state>;
>> + regulator-min-microvolt = <3300000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-boot-on;
>> + enable-active-high;
>> + regulator-always-on;
>> + };
>> +
>> + vcc3v3_minipcie_regulator: vcc3v3-minipcie-regulator {
>> + compatible = "regulator-fixed";
>> + regulator-name = "vcc3v3_minipcie";
>> + gpio = <&pmm8654au_2_gpios 10 GPIO_ACTIVE_HIGH>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&vcc3v3_minipcie_en_state>;
>> + regulator-min-microvolt = <3300000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-boot-on;
>> + enable-active-high;
>> + regulator-always-on;
>> + };
>> +
>> + gpio_leds: gpio-leds {
>> + compatible = "gpio-leds";
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&status_led_state>, <&power_led_state>;
>> +
>> + status-led {
>> + gpios = <&pmm8654au_1_gpios 11 GPIO_ACTIVE_HIGH>;
>> + linux,default-trigger = "heartbeat";
>> + function = LED_FUNCTION_STATUS;
>> + color = <LED_COLOR_ID_BLUE>;
>> + };
>> +
>> + power-led {
>> + gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>;
>> + linux,default-trigger = "default-on";
>> + function = LED_FUNCTION_POWER;
>> + color = <LED_COLOR_ID_GREEN>;
>> + };
>> + };
>> +
>> + gpio_keys: gpio-keys {
>> + compatible = "gpio-keys";
>> +
>> + pinctrl-0 = <&gpio_keys_default>;
>> + pinctrl-names = "default";
>> +
>> + power-key {
>> + label = "Power Off";
>> + gpios = <&tlmm 97 GPIO_ACTIVE_LOW>;
>> + linux,code = <KEY_POWER>;
>> + wakeup-source;
>> + debounce-interval = <30>;
>> + };
>> + };
>> +
>> + fan0: gpio-fan {
>> + compatible = "gpio-fan";
>> + gpios = <&pmm8654au_1_gpios 12 GPIO_ACTIVE_HIGH>;
>> + gpio-fan,speed-map = <0 0>, <5000 1>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&fan_en_state>;
>> + #cooling-cells = <2>;
>> + };
>> +
>> + dp0-connector {
>
> dp-connector
>
>> + compatible = "dp-connector";
>> + label = "eDP0";
>> + type = "full-size";
>> +
>> + port {
>> + dp0_connector_in: endpoint {
>> + remote-endpoint = <&mdss0_dp0_out>;
>> + };
>> + };
>> + };
>> +};
>> +
>
> ...
>
>> +
>> + gpio_keys_default: gpio-keys-default-state {
>> + pins = "gpio97";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-pull-up;
>> + };
>> +
>> + power_led_state: power-led-state {
>> + pins = "gpio98";
>> + function = "gpio";
>> + output-high;
>> + bias-pull-up;
>> + };
>> +};
>> +
>> +/ {
>> + thermal-zones {
>> + cpu-0-0-0-thermal {
>
> You should override given thermal zone by phandle/label style, not by
> full path.
Will address in V2 here too.
>
>
>
> Best regards,
> Krzysztof
Thank you for feedback,
Mecid Urganci
© 2016 - 2026 Red Hat, Inc.