Re: [PATCH 2/2] arm64: dts: qcom: Add qcs9075-radxa-airbox-q900

From: mecid

Date: Wed Mar 18 2026 - 06:06:01 EST


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@xxxxxxxxxxxxxxxxx>
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 = &ethernet0;
+ ethernet1 = &ethernet1;
+ 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