Re: [PATCH v3 3/4] arm64: dts: qcom: add basic devicetree for Ayaneo Pocket DS gaming console

From: Dmitry Baryshkov

Date: Sun May 17 2026 - 16:32:50 EST


On Sun, May 17, 2026 at 08:14:22PM +0700, Alexandre Hamamdjian via B4 Relay wrote:
> From: Teguh Sobirin <teguh@xxxxxxxx>
>
> Add initial Device Tree for the Ayaneo Pocket DS gaming console based
> on the Qualcomm QCS8550 platform.
>
> The design is similar to a phone without the modem, the game control
> is handled via a standalone controller connected to a Renesas uPD720201
> PCIe USB 3.0 host controller. DisplayPort is muxed over the USB-C
> connector with all four lanes wired.
>
> Display panel support will be added in a second time.
>
> Co-developed-by: Alexandre Hamamdjian <azkali.limited@xxxxxxxxx>
> Signed-off-by: Alexandre Hamamdjian <azkali.limited@xxxxxxxxx>
> Signed-off-by: Teguh Sobirin <teguh@xxxxxxxx>
> ---
> arch/arm64/boot/dts/qcom/Makefile | 1 +
> .../boot/dts/qcom/qcs8550-ayaneo-pocketds.dts | 1883 ++++++++++++++++++++
> 2 files changed, 1884 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index cc42829f92eb..45859e977bc9 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -185,6 +185,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) += qcs8550-ayaneo-pocketds.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
>
> diff --git a/arch/arm64/boot/dts/qcom/qcs8550-ayaneo-pocketds.dts b/arch/arm64/boot/dts/qcom/qcs8550-ayaneo-pocketds.dts
> new file mode 100644
> index 000000000000..416399a4179b
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/qcs8550-ayaneo-pocketds.dts
> @@ -0,0 +1,1883 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2025, Teguh Sobirin.
> + * Copyright (c) 2025, ROCKNIX (https://github.com/ROCKNIX)
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/leds/common.h>
> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
> +#include "qcs8550.dtsi"
> +#include "pm8550.dtsi"
> +#include "pm8550b.dtsi"
> +#define PMK8550VE_SID 5
> +#include "pm8550ve.dtsi"
> +#include "pm8550vs.dtsi"
> +#include "pmk8550.dtsi"
> +
> +/delete-node/ &aop_image_mem;
> +/delete-node/ &aop_config_mem;
> +/delete-node/ &camera_mem;
> +/delete-node/ &ipa_fw_mem;
> +/delete-node/ &ipa_gsi_mem;
> +/delete-node/ &mpss_dsm_mem;
> +/delete-node/ &mpss_mem;
> +/delete-node/ &q6_mpss_dtb_mem;
> +/delete-node/ &cdsp_mem;
> +/delete-node/ &q6_cdsp_dtb_mem;
> +
> +/delete-node/ &remoteproc_mpss;
> +/delete-node/ &remoteproc_cdsp;

Why are you deleting them? Isn't status="disabled" enough? If it's about
the memory-region properties, it might be better to delete the
properties instead of deleting the nodes.

> +
> +&cpu7_top_thermal {
> + polling-delay = <200>;
> +
> + trips {
> + cpu7_top_fan0: trip-point2 {
> + temperature = <70000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };

How are these trip-points being used? If you want to control the fan, is
there a cooling device for them?

> +
> + cpu7_top_fan1: trip-point3 {
> + temperature = <75000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpu7_top_fan2: trip-point4 {
> + temperature = <80000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> + };
> +};
> +
> +&cpuss0_thermal {
> + polling-delay = <200>;
> +
> + trips {
> + cpuss0_fan0: trip-point2 {
> + temperature = <40000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss0_fan1: trip-point3 {
> + temperature = <50000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss0_fan2: trip-point4 {
> + temperature = <60000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss0_fan3: trip-point5 {
> + temperature = <65000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss0_fan4: trip-point6 {
> + temperature = <70000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss0_fan5: trip-point7 {
> + temperature = <75000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss0_fan6: trip-point8 {
> + temperature = <80000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> + };
> +};
> +
> +&cpuss1_thermal {
> + polling-delay = <200>;
> +
> + trips {
> + cpuss1_fan0: trip-point2 {
> + temperature = <40000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss1_fan1: trip-point3 {
> + temperature = <50000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss1_fan2: trip-point4 {
> + temperature = <60000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss1_fan3: trip-point5 {
> + temperature = <65000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss1_fan4: trip-point6 {
> + temperature = <70000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss1_fan5: trip-point7 {
> + temperature = <75000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss1_fan6: trip-point8 {
> + temperature = <80000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> + };
> +};
> +
> +&cpuss2_thermal {
> + polling-delay = <200>;
> +
> + trips {
> + cpuss2_fan0: trip-point2 {
> + temperature = <40000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss2_fan1: trip-point3 {
> + temperature = <50000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss2_fan2: trip-point4 {
> + temperature = <60000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss2_fan3: trip-point5 {
> + temperature = <65000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss2_fan4: trip-point6 {
> + temperature = <70000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss2_fan5: trip-point7 {
> + temperature = <75000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss2_fan6: trip-point8 {
> + temperature = <80000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> + };
> +};
> +
> +&cpuss3_thermal {
> + polling-delay = <200>;
> +
> + trips {
> + cpuss3_fan0: trip-point2 {
> + temperature = <40000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss3_fan1: trip-point3 {
> + temperature = <50000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss3_fan2: trip-point4 {
> + temperature = <60000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss3_fan3: trip-point5 {
> + temperature = <65000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss3_fan4: trip-point6 {
> + temperature = <70000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss3_fan5: trip-point7 {
> + temperature = <75000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> +
> + cpuss3_fan6: trip-point8 {
> + temperature = <80000>;
> + hysteresis = <3000>;
> + type = "passive";
> + };
> + };
> +};
> +
> +&gpi_dma1 {
> + status = "okay";
> +};
> +
> +&gpi_dma2 {
> + status = "okay";
> +};
> +
> +&gpu {
> + status = "okay";
> +};
> +
> +&gpu_opp_table {
> + opp-719000000 {
> + opp-hz = /bits/ 64 <719000000>;
> + opp-level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
> + opp-peak-kBps = <10687500>;
> + qcom,opp-acd-level = <0x882e5ffd>;
> + };

We probably need to get speed bins done...

> +
> + opp-746000000 {
> + opp-hz = /bits/ 64 <746000000>;
> + opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
> + opp-peak-kBps = <10687500>;
> + qcom,opp-acd-level = <0x882e5ffd>;
> + };
> +
> + opp-794000000 {
> + opp-hz = /bits/ 64 <794000000>;
> + opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
> + opp-peak-kBps = <14398438>;
> + qcom,opp-acd-level = <0xa82d5ffd>;
> + };
> +
> + opp-827000000 {
> + opp-hz = /bits/ 64 <827000000>;
> + opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
> + opp-peak-kBps = <16500000>;
> + qcom,opp-acd-level = <0xa82d5ffd>;
> + };
> +
> + opp-860000000 {
> + opp-hz = /bits/ 64 <860000000>;
> + opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
> + opp-peak-kBps = <16500000>;
> + qcom,opp-acd-level = <0x882d5ffd>;
> + };
> +
> + opp-1000000000 {
> + opp-hz = /bits/ 64 <1000000000>;
> + opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L2>;
> + opp-peak-kBps = <16500000>;
> + qcom,opp-acd-level = <0x882d5ffd>;
> + };
> +};
> +

[...]

> +
> +&remoteproc_adsp {
> + firmware-name = "qcom/sm8550/ayaneo/adsp.mdt",
> + "qcom/sm8550/ayaneo/adsp_dtb.mdt";

.mbn, please. Even if the downstream uses .mdt. Either pil-squash them
or just symlink, the code will handle it anyway.


> +
> + status = "okay";
> +};
> +

--
With best wishes
Dmitry