On Wed, Jan 21, 2026 at 05:40:28PM +0100, Neil Armstrong wrote:
> From: KancyJoe <[email protected]>
>
> Add initial Device Tree for the Ayaneo Pocket S2 gaming console based
> on the Qualcomm Snapdragon 8 Gen 3 platform.
>
> The design is similar to a phone wihout the modem, the game control
> is handled via a standalone controller connected to a PCIe USB
> controller.
>
> Display support will be added in a second time.
>
> Signed-off-by: KancyJoe <[email protected]>
> Signed-off-by: Neil Armstrong <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/Makefile | 1 +
> .../boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts | 1445
> ++++++++++++++++++++
> arch/arm64/boot/dts/qcom/sm8650.dtsi | 2 +-
> drivers/gpu/drm/msm/dsi/dsi.c | 4 +-
> 4 files changed, 1449 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile
> b/arch/arm64/boot/dts/qcom/Makefile
> index 6f34d5ed331c..1ba29755e5ba 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -313,6 +313,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8550-mtp.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sm8550-qrd.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sm8550-samsung-q5q.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sm8550-sony-xperia-yodo-pdx234.dtb
> +dtb-$(CONFIG_ARCH_QCOM) += sm8650-ayaneo-pocket-s2.dtb
>
> sm8650-hdk-display-card-dtbs := sm8650-hdk.dtb sm8650-hdk-display-card.dtbo
>
> diff --git a/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
> b/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
> new file mode 100644
> index 000000000000..141d92933957
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
> +
> +&i2c3 {
clock-frequency?
> + status = "okay";
> +
> + wcd_usbss: typec-mux@e {
> + compatible = "qcom,wcd9395-usbss", "qcom,wcd9390-usbss";
> + reg = <0xe>;
> +
> + vdd-supply = <&vreg_l15b_1p8>;
> + reset-gpios = <&tlmm 152 GPIO_ACTIVE_HIGH>;
> +
> + mode-switch;
> + orientation-switch;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + wcd_usbss_sbu_mux: endpoint {
> + remote-endpoint = <&pmic_glink_sbu>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + wcd_usbss_headset_out: endpoint {
> + remote-endpoint =
> <&wcd_codec_headset_in>;
> + };
> + };
> + };
> + };
> +};
> +
> +&i2c6 {
clock-frequency?
> + status = "okay";
> +
> + typec-mux@1c {
> + compatible = "onnn,nb7vpq904m";
> + reg = <0x1c>;
> +
> + vcc-supply = <&vreg_l15b_1p8>;
> +
> + retimer-switch;
> + orientation-switch;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + redriver_ss_out: endpoint {
> + remote-endpoint = <&pmic_glink_ss_in>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + redriver_ss_in: endpoint {
> + remote-endpoint = <&usb_dp_qmpphy_out>;
> + };
> + };
> + };
> + };
> +};
> +
> +&iris {
> + status = "okay";
With the default firmware?
> +&remoteproc_adsp {
> + firmware-name = "qcom/sm8650/ayaneo/ps2/adsp.mbn",
> + "qcom/sm8650/ayaneo/ps2/adsp_dtb.mbn";
> +
> + status = "okay";
> +};
> +
> +&remoteproc_cdsp {
> + firmware-name = "qcom/sm8650/ayaneo/ps2/cdsp.mbn",
> + "qcom/sm8650/ayaneo/ps2/cdsp_dtb.mbn";
Is it fused?
> +
> + status = "okay";
> +};
> +
> diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi
> b/arch/arm64/boot/dts/qcom/sm8650.dtsi
> index 07ae74851621..fcd5a1a45803 100644
> --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
> @@ -3917,7 +3917,7 @@ opp-32000000-4 {
> };
> };
>
> - pcie@0 {
> + pcieport1: pcie@0 {
> device_type = "pci";
> reg = <0x0 0x0 0x0 0x0 0x0>;
> bus-range = <0x01 0xff>;
> diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c
> index d8bb40ef820e..0781dce7cda2 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi.c
Something stray
> @@ -43,12 +43,12 @@ static int dsi_get_phy(struct msm_dsi *msm_dsi)
> of_node_put(phy_node);
>
> if (!phy_pdev) {
> - DRM_DEV_ERROR(&pdev->dev, "%s: phy driver is not ready\n",
> __func__);
> + DRM_DEV_ERROR(&pdev->dev, "%s: 0 phy driver is not ready\n",
> __func__);
> return -EPROBE_DEFER;
> }
> if (!msm_dsi->phy) {
> put_device(&phy_pdev->dev);
> - DRM_DEV_ERROR(&pdev->dev, "%s: phy driver is not ready\n",
> __func__);
> + DRM_DEV_ERROR(&pdev->dev, "%s: 1 phy driver is not ready\n",
> __func__);
> return -EPROBE_DEFER;
> }
>
>
> --
> 2.34.1
>
--
With best wishes
Dmitry