Re: [PATCH 2/2] arm64: dts: qcom: sm8650: Add initial Valve Deckard devicetree

From: Neil Armstrong

Date: Tue Sep 22 2026 - 07:55:51 EST


Hi,

On 9/22/26 13:39, Konrad Dybcio wrote:
On 9/22/26 1:28 PM, Neil Armstrong wrote:
Add an initial DeviceTree for the Valve "Steam Frame"
codename Deckard. The Steam Frame is a virtual reality headset
based on the Qualcomm Snapdragon 8 Gen 3 SoC (SM8650).

Providing initial support for:
- System reserved memory, regulators, gpio keys, PMIC functions..
- PMIC ADC Channels
- UFS Storage
- USB Gadget
- WCN7850 Wifi7 + Bluetooth
- I2C + basic peripherals
- SDCard slot

The bootloader starts Linux in EL2, thus a bunch of EL1 & DSP related
nodes needs to be removed and the reserved-memory mapping must
be defined.

Signed-off-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx>
---

[...]

+/* Remove nodes */
+/delete-node/ &ipa;
+/delete-node/ &gpu_zap_shader;
+/delete-node/ &lpass_wsa2macro;
+/delete-node/ &lpass_rxmacro;
+/delete-node/ &lpass_txmacro;
+/delete-node/ &lpass_wsamacro;
+/delete-node/ &lpass_vamacro;
+/delete-node/ &lpass_tlmm;
+/delete-node/ &remoteproc_adsp;
+/delete-node/ &remoteproc_cdsp;
+/delete-node/ &remoteproc_mpss;
+/delete-node/ &reserved_memory;
+/delete-node/ &swr0;
+/delete-node/ &swr1;
+/delete-node/ &swr2;
+/delete-node/ &swr3;

Hm, maybe we should think about sm8650-audioreach (simialrly to
how we have a split for the kodiak variants)

I will probably go in this direction when adding support for audio.



+
+/ {
+ model = "Valve Deckard";
+ compatible = "valve,deckard", "qcom,sm8650";
+
+ aliases {
+ serial0 = &uart15;
+ serial1 = &uart14;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+
+ framebuffer {
+ compatible = "simple-framebuffer";
+ width = <4320>;
+ height = <2160>;
+ stride = <(4320 * 4)>;
+ format = "a8r8g8b8";
+ memory-region = <&framebuffer_mem>;
+
+ /* Bootloader will enable the node */
+ status = "disabled";

Is there a reason not to enable it? Does the bootloader prefer to
only enable it sometiems?

Exact


[...]

+ reserved-memory {
+ ranges;
+
+ #address-cells = <2>;
+ #size-cells = <2>;

it's usually:

addr
size
ranges
<newline>

Ack


[...]

+
+ aop_mem: aop-region@81c00000 {
+ no-map;
+ reg = <0x0 0x81c00000 0x0 0x60000>;

0.dtsi

Good catch


+ };
+
+ ramoops: ramoops-region@84a00000 {
+ compatible = "ramoops";
+ reg = <0 0x84a00000 0 0x100000>;
+ record-size = <0x40000>;
+ console-size = <0x40000>;
+ pmsg-size = <0x1000>;
+ ecc-size = <16>;
+ };
+
+ aop_cmd_db_mem: aop-cmd-db-region@81c60000 {
+ compatible = "qcom,cmd-db";
+ reg = <0x0 0x81c60000 0x0 0x20000>;
+ no-map;
+ };

Likewise many of these reservations also exist there

Not sure slitting this would be worth it.


[...]

+ /delete-node/ smp2p-adsp;
+ /delete-node/ smp2p-cdsp;
+ /delete-node/ smp2p-modem;

I think these shouldn't hurt even if your usecase is different

Right, but those describes a pure firmware interface.

+
+ wcn7850-pmu {
+ compatible = "qcom,wcn7850-pmu";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wlan_en>, <&bt_default>;

nit:

property-n
property-names

Will fix


please

otherwise looks pretty good

Konrad

Thanks,
Neil