From nobody Thu Oct 2 09:20:56 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 429CE18A6DB; Thu, 18 Sep 2025 10:58:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758193138; cv=none; b=tEIrglz+jFuAwd3ko0E8X9Zv1v9uxObIdPBA5v5Nc88sWsph1fYM+kjy73tCGn2Hx8+QeQfsWXxaRMnfia8qrnjKuk9RSci6Fb1imyGrpAWWnbMomWtTUwwi/xnOnzGla9COKfP44D4ZIJTcEsbWPXh9vd0M4lfaVVZpqyD71rs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758193138; c=relaxed/simple; bh=JfXbLoAYPx2pAIs4oJkUHnbn8HvPZWOeNhod4g901PI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DlLw+VyDgOde6hSnVQfD21GOM8ASHhyxDdVjfeOi0cMQVPsMfiRv8XxkExVz+eUZTYEPHQA1SOnorecU49LGaQXi+N0GhB3ZLUdgZSZGX51uXTJejLWG+RCGlqm0VvqxAVyUnnYixdWS3uFvkIrovb8gdxmqhz1A/rhxjkSXfRk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=G8s7hZmY; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="G8s7hZmY" Received: by smtp.kernel.org (Postfix) with ESMTPS id D853DC4CEEB; Thu, 18 Sep 2025 10:58:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758193137; bh=JfXbLoAYPx2pAIs4oJkUHnbn8HvPZWOeNhod4g901PI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=G8s7hZmYRBl/oX5E5GiAt5vgrOdiDJz8LYbP/1T3fQp6qOOMLI83oZjDoRVr1Qrsj K6Z2GwGj9FWzIUNNMUo4qFz2NSi9DXNaJkRnbGvjFYypusZ/T6/1fSrylCYOeqCh2O gUubEuysEzu5FeVMJIbBBlOzUbNcvolj7igVqo5Exb66+wbLQceKPVwyVM1kKw7mPD F3cJ3lh0cjJmSOU2hWKQB5PAVPL9xiA86pnyjskI7UUGk/iSo++8Hn5gNtQnmRNiCx 3eAIyS2CSC1prjxxrOZY8S+7hp7sKllxH/hU1O6hGfi5dFZDmO05jEhsAw5NJeNt1Z 96Gq6MZzIikMA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6FC5CAC59A; Thu, 18 Sep 2025 10:58:57 +0000 (UTC) From: =?utf-8?q?J=2E_Neusch=C3=A4fer_via_B4_Relay?= Date: Thu, 18 Sep 2025 12:58:43 +0200 Subject: [PATCH v2 1/2] dt-bindings: arm: sunxi: Add Amediatech X96Q Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-x96q-v2-1-51bd39928806@posteo.net> References: <20250918-x96q-v2-0-51bd39928806@posteo.net> In-Reply-To: <20250918-x96q-v2-0-51bd39928806@posteo.net> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Maxime Ripard , Andre Przywara Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1758193136; l=1236; i=j.ne@posteo.net; s=20240329; h=from:subject:message-id; bh=GxXI6NJW9t/fO0BoT9gBld9sqiI4uwUuxiCCn6jsYZ8=; b=7ViBDRCcbfuuKW0xOEmrt/a3RTnfDNy5KfIEfIkmiwQTwlnz8y5ogApOKM6L9sH60C93kaQCU Qu0Q5bIUhynB6wV8+AZk3SLm/48afNXFvMtvd94CZUdA2fvn8owAmPN X-Developer-Key: i=j.ne@posteo.net; a=ed25519; pk=NIe0bK42wNaX/C4bi6ezm7NJK0IQE+8MKBm7igFMIS4= X-Endpoint-Received: by B4 Relay for j.ne@posteo.net/20240329 with auth_id=156 X-Original-From: =?utf-8?q?J=2E_Neusch=C3=A4fer?= Reply-To: j.ne@posteo.net From: "J. Neusch=C3=A4fer" The X96Q is a set-top box with an H313 SoC, AXP305 PMIC, 1 or 2 GiB RAM, 8 or 16 GiB eMMC flash, 2x USB A, Micro-SD, HDMI, Ethernet, audio/video output, and infrared input. https://x96mini.com/products/x96q-tv-box-android-10-set-top-box Reviewed-by: Andre Przywara Acked-by: Rob Herring (Arm) Signed-off-by: J. Neusch=C3=A4fer --- v2: - add review/ack tags --- Documentation/devicetree/bindings/arm/sunxi.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/sunxi.yaml b/Documentati= on/devicetree/bindings/arm/sunxi.yaml index c25a22fe4d25cbd8a8132689f1326548f7f43f2c..c9940b44bc888f7ab81ace67104= 0bd663556c113 100644 --- a/Documentation/devicetree/bindings/arm/sunxi.yaml +++ b/Documentation/devicetree/bindings/arm/sunxi.yaml @@ -963,6 +963,11 @@ properties: - const: hechuang,x96-mate - const: allwinner,sun50i-h616 =20 + - description: X96Q + items: + - const: amediatech,x96q + - const: allwinner,sun50i-h616 + - description: X96Q Pro+ items: - const: amediatech,x96q-pro-plus --=20 2.48.0.rc1.219.gb6b6757d772 From nobody Thu Oct 2 09:20:56 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 884F52FFDE9; Thu, 18 Sep 2025 10:58:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758193138; cv=none; b=nUNmSHCIdARXJuSphoH3Bc0SOxqYwIWP4td+TfZNM6aOXjxFjM6mDWCupMxfRsV1jDUKotcOkYLnSJvmBTjFnLtayR1Qpinz0O3m8mtOIc9TtHan1/RY/FX4iqgtPGxDVFvKRhDM1UUrZ1GlP3lIUp6hcR51Ou7mS6DCwW+XAV8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758193138; c=relaxed/simple; bh=kD3K8Xe3BbL9JyjY9GPgOu5+Y08QVaO/5/xOL7rPEI0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gC8s6YdRUJiMlFKK6OByqGeEN70ksV9FVTnCSjAMT8pcish67S8P7tXH3RzpEfKjFz/vtepGMgxbRW2CqFGXfhaj1MCA9GBLNLoe66iQWy7u71BIWrhPNtZgL/HfFHqucs+HxvA8/JbHoaHOCphGU8T/xwJCPyL2ddPZx47644k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KwOsoLmM; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KwOsoLmM" Received: by smtp.kernel.org (Postfix) with ESMTPS id EAC9DC4CEFA; Thu, 18 Sep 2025 10:58:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758193138; bh=kD3K8Xe3BbL9JyjY9GPgOu5+Y08QVaO/5/xOL7rPEI0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=KwOsoLmMVLK8pqnkGxvlczGdHwe7vmnHYQtZqi7FfLBaXpH5LDdq4cco8IQCeVzck RWcq7NdOhucrxBzgyHfAy75jqmc66oN1qHTDYf+nj2QWdJxivfLfpE9JRzt/oviv18 9iUNJGyV5/3mUEfrA28yANSrOI7oZAfqIn9RhNKjb0gaW+FIkEydMI3k+TUhZI7k/A La47PBaNPBmkKS/EoSvO3w03ipvOEf2cacYPfYoqR6Y2USbomOkFpwwjDND/cj8M2W KW5S8QIEaXNBfXHxkvc3VDHO5dp2GbzZrzX+2P9a7PI/aPn4ODS5qNrUbAvsLYkfAV H34hQJg0nfH3w== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id D82FECAC5A9; Thu, 18 Sep 2025 10:58:57 +0000 (UTC) From: =?utf-8?q?J=2E_Neusch=C3=A4fer_via_B4_Relay?= Date: Thu, 18 Sep 2025 12:58:44 +0200 Subject: [PATCH v2 2/2] arm64: dts: allwinner: h313: Add Amediatech X96Q Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250918-x96q-v2-2-51bd39928806@posteo.net> References: <20250918-x96q-v2-0-51bd39928806@posteo.net> In-Reply-To: <20250918-x96q-v2-0-51bd39928806@posteo.net> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Maxime Ripard , Andre Przywara Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, =?utf-8?q?J=2E_Neusch=C3=A4fer?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1758193136; l=7815; i=j.ne@posteo.net; s=20240329; h=from:subject:message-id; bh=cZj2m00YOVK7IJwAMGtwDtxtTWMWa5ExPqDO69uVrjo=; b=DTX6Ua+KxTrdLRXkeaxSf7NFx+vZkixrg9Iy3eOn8Y9gHDSLI0OS7TOQ+wQ+IuP4NXVK2nO+E z/c6HOu0vITALuFssF94EnXM6vNbEPlpD8EE648Iv+LESrqhTQiTKz7 X-Developer-Key: i=j.ne@posteo.net; a=ed25519; pk=NIe0bK42wNaX/C4bi6ezm7NJK0IQE+8MKBm7igFMIS4= X-Endpoint-Received: by B4 Relay for j.ne@posteo.net/20240329 with auth_id=156 X-Original-From: =?utf-8?q?J=2E_Neusch=C3=A4fer?= Reply-To: j.ne@posteo.net From: "J. Neusch=C3=A4fer" The X96Q is a set-top box with an H313 SoC, AXP305 PMIC, 1 or 2 GiB RAM, 8 or 16 GiB eMMC flash, 2x USB A, Micro-SD, HDMI, Ethernet, audio/video output, and infrared input. https://x96mini.com/products/x96q-tv-box-android-10-set-top-box Tested, works: - debug UART - status LED - USB ports in host mode - MicroSD - eMMC - recovery button hidden behind audio/video port - analog audio (line out) Does not work: - Ethernet (requires AC200 MFD/EPHY driver) - WLAN (requires out-of-tree XRadio driver) - analog video output (requires AC200 driver) - HDMI audio/video output Untested: - "OTG" USB port in device mode - built-in IR receiver - external IR receiver Table of regulators on the downstream kernel, for reference: vcc-5v 1 15 0 unknown 5000mV 0mA 5000mV 5000mV dcdca 0 0 0 unknown 900mV 0mA 0mV 0mV dcdcb 0 0 0 unknown 1350mV 0mA 0mV 0mV dcdcc 0 0 0 unknown 900mV 0mA 0mV 0mV dcdcd 0 0 0 unknown 1500mV 0mA 0mV 0mV dcdce 0 0 0 unknown 3300mV 0mA 0mV 0mV aldo1 0 0 0 unknown 3300mV 0mA 0mV 0mV aldo2 0 0 0 unknown 700mV 0mA 0mV 0mV aldo3 0 0 0 unknown 700mV 0mA 0mV 0mV bldo1 0 0 0 unknown 1800mV 0mA 0mV 0mV bldo2 0 0 0 unknown 1800mV 0mA 0mV 0mV bldo3 0 0 0 unknown 700mV 0mA 0mV 0mV bldo4 0 0 0 unknown 700mV 0mA 0mV 0mV cldo1 0 0 0 unknown 2500mV 0mA 0mV 0mV cldo2 0 0 0 unknown 700mV 0mA 0mV 0mV cldo3 0 0 0 unknown 700mV 0mA 0mV 0mV Signed-off-by: J. Neusch=C3=A4fer Reviewed-by: Andre Przywara --- v2: - remove mmc aliases, &mmc0/max-frequency property (Andre Przywara) - document reason for &mmc2/max-frequency property - clean up mmc-releated comments (Andre Przywara) - rename dcdcd regulator to vdd-dram, because it's the only source of 1.5V (needed by the Micron MT41J256M4 DDR3 RAM), and the system halts when it's turned off. --- arch/arm64/boot/dts/allwinner/Makefile | 1 + arch/arm64/boot/dts/allwinner/sun50i-h313-x96q.dts | 230 +++++++++++++++++= ++++ 2 files changed, 231 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/a= llwinner/Makefile index 780aeba0f3a4e14d69c9602e37b8d299165507b9..2edfa7bf4ab31c4aa934da98e5e= 042edc9aaf600 100644 --- a/arch/arm64/boot/dts/allwinner/Makefile +++ b/arch/arm64/boot/dts/allwinner/Makefile @@ -41,6 +41,7 @@ dtb-$(CONFIG_ARCH_SUNXI) +=3D sun50i-h6-pine-h64-model-b.= dtb dtb-$(CONFIG_ARCH_SUNXI) +=3D sun50i-h6-tanix-tx6.dtb dtb-$(CONFIG_ARCH_SUNXI) +=3D sun50i-h6-tanix-tx6-mini.dtb dtb-$(CONFIG_ARCH_SUNXI) +=3D sun50i-h313-tanix-tx1.dtb +dtb-$(CONFIG_ARCH_SUNXI) +=3D sun50i-h313-x96q.dtb dtb-$(CONFIG_ARCH_SUNXI) +=3D sun50i-h616-bigtreetech-cb1-manta.dtb dtb-$(CONFIG_ARCH_SUNXI) +=3D sun50i-h616-bigtreetech-pi.dtb dtb-$(CONFIG_ARCH_SUNXI) +=3D sun50i-h616-orangepi-zero2.dtb diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h313-x96q.dts b/arch/arm6= 4/boot/dts/allwinner/sun50i-h313-x96q.dts new file mode 100644 index 0000000000000000000000000000000000000000..b2275eb3d55b9dacbd9006b9379= 5a8011e06bf2f --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/sun50i-h313-x96q.dts @@ -0,0 +1,230 @@ +// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT) +/* + * Copyright (C) 2025 J. Neusch=C3=A4fer + */ + +/dts-v1/; + +#include "sun50i-h616.dtsi" +#include "sun50i-h616-cpu-opp.dtsi" + +#include +#include +#include +#include + +/ { + model =3D "X96Q"; + compatible =3D "amediatech,x96q", "allwinner,sun50i-h616"; + + aliases { + serial0 =3D &uart0; + }; + + chosen { + stdout-path =3D "serial0:115200n8"; + }; + + reg_vcc5v: vcc5v { + /* board wide 5V supply directly from the DC input */ + compatible =3D "regulator-fixed"; + regulator-name =3D "vcc-5v"; + regulator-min-microvolt =3D <5000000>; + regulator-max-microvolt =3D <5000000>; + regulator-always-on; + }; + + gpio-keys { + compatible =3D "gpio-keys"; + + key-recovery { + label =3D "Recovery"; + linux,code =3D ; + gpios =3D <&pio 7 9 GPIO_ACTIVE_LOW>; + }; + }; + + leds { + compatible =3D "gpio-leds"; + + led-0 { + color =3D ; + gpios =3D <&pio 7 6 GPIO_ACTIVE_LOW>; + default-state =3D "on"; + }; + }; +}; + +&codec { + allwinner,audio-routing =3D "Line Out", "LINEOUT"; + status =3D "okay"; +}; + +&cpu0 { + cpu-supply =3D <®_dcdca>; +}; + +&ehci0 { + status =3D "okay"; +}; + +&ehci3 { + status =3D "okay"; +}; + +/* TODO: EMAC1 connected to AC200 PHY */ + +&gpu { + mali-supply =3D <®_dcdcc>; + status =3D "okay"; +}; + +&ir { + status =3D "okay"; +}; + +&mmc0 { + /* microSD */ + vmmc-supply =3D <®_aldo1>; + cd-gpios =3D <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ + disable-wp; + bus-width =3D <4>; + status =3D "okay"; +}; + +/* TODO: XRadio XR819 WLAN @ mmc1 */ + +&mmc2 { + /* eMMC */ + vmmc-supply =3D <®_aldo1>; + vqmmc-supply =3D <®_bldo1>; + non-removable; + cap-mmc-hw-reset; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + max-frequency =3D <100000000>; /* required for stable operation */ + bus-width =3D <8>; + status =3D "okay"; +}; + +&ohci0 { + status =3D "okay"; +}; + +&ohci3 { + status =3D "okay"; +}; + +&r_i2c { + status =3D "okay"; + + axp305: pmic@36 { + compatible =3D "x-powers,axp305", "x-powers,axp805", + "x-powers,axp806"; + interrupt-controller; + #interrupt-cells =3D <1>; + reg =3D <0x36>; + + x-powers,self-working-mode; + vina-supply =3D <®_vcc5v>; + vinb-supply =3D <®_vcc5v>; + vinc-supply =3D <®_vcc5v>; + vind-supply =3D <®_vcc5v>; + vine-supply =3D <®_vcc5v>; + aldoin-supply =3D <®_vcc5v>; + bldoin-supply =3D <®_vcc5v>; + cldoin-supply =3D <®_vcc5v>; + + regulators { + reg_dcdca: dcdca { + regulator-always-on; + regulator-min-microvolt =3D <810000>; + regulator-max-microvolt =3D <1100000>; + regulator-name =3D "vdd-cpu"; + }; + + dcdcb { + /* unused */ + }; + + reg_dcdcc: dcdcc { + regulator-always-on; + regulator-min-microvolt =3D <810000>; + regulator-max-microvolt =3D <990000>; + regulator-name =3D "vdd-gpu-sys"; + }; + + dcdcd { + regulator-always-on; + regulator-min-microvolt =3D <1500000>; + regulator-max-microvolt =3D <1500000>; + regulator-name =3D "vdd-dram"; + }; + + dcdce { + /* unused */ + }; + + reg_aldo1: aldo1 { + regulator-always-on; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + regulator-name =3D "vcc3v3"; + }; + + aldo2 { + /* unused */ + }; + + aldo3 { + /* unused */ + }; + + reg_bldo1: bldo1 { + regulator-always-on; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-name =3D "vcc1v8"; + }; + + bldo2 { + /* unused */ + }; + + bldo3 { + /* unused */ + }; + + bldo4 { + /* unused */ + }; + + cldo1 { + /* unused */ + }; + + cldo2 { + /* unused */ + }; + + cldo3 { + /* unused */ + }; + }; + }; +}; + +&uart0 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&uart0_ph_pins>; + status =3D "okay"; +}; + +&usbotg { + dr_mode =3D "host"; /* USB A type receptacle */ + status =3D "okay"; +}; + +&usbphy { + status =3D "okay"; +}; --=20 2.48.0.rc1.219.gb6b6757d772