* [PATCH v2 0/3] board: sunxi: Add TaiqiCat (TQC) A01
@ 2026-02-27 15:57 Jun Yan
2026-02-27 15:57 ` [PATCH v2 1/3] dt-bindings: vendor-prefixes: Add Beijing Ultrapower Software Co., Ltd Jun Yan
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Jun Yan @ 2026-02-27 15:57 UTC (permalink / raw)
To: devicetree, linux-arm-kernel, linux-sunxi
Cc: robh, krzk+dt, conor+dt, wens, jernej.skrabec, samuel, mripard,
Jun Yan
This series adds support for the TaiqiCat (TQC) A01 —
a set-top box based on the Allwinner H6 SoC.
Originally released by Ultrapower(UQSoft) as a blockchain terminal,
the device has been discontinued and is no longer officially
supported.
https://web.archive.org/web/20190409213228/https://tq.ultrapower.com.cn/product.html
Jun Yan (3):
dt-bindings: vendor-prefixes: Add Beijing Ultrapower Software Co.,
Ltd.
dt-bindings: arm: sunxi: Add TaiqiCat (TQC) A01
arm64: dts: allwinner: h6: Add TaiqiCat (TQC) A01 support
.../devicetree/bindings/arm/sunxi.yaml | 5 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/arm64/boot/dts/allwinner/Makefile | 1 +
.../dts/allwinner/sun50i-h6-taiqicat-a01.dts | 361 ++++++++++++++++++
4 files changed, 369 insertions(+)
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
--
2.53.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 1/3] dt-bindings: vendor-prefixes: Add Beijing Ultrapower Software Co., Ltd.
2026-02-27 15:57 [PATCH v2 0/3] board: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
@ 2026-02-27 15:57 ` Jun Yan
2026-02-28 10:51 ` Krzysztof Kozlowski
2026-02-27 15:57 ` [PATCH v2 2/3] dt-bindings: arm: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Jun Yan @ 2026-02-27 15:57 UTC (permalink / raw)
To: devicetree, linux-arm-kernel, linux-sunxi
Cc: robh, krzk+dt, conor+dt, wens, jernej.skrabec, samuel, mripard,
Jun Yan
Beijing Ultrapower Software Co., Ltd. is a company focusing on global
mobile games, ICT services, cloud computing, and artificial intelligence
solutions.
TaiqiCat A01 is a blockchain-based terminal product launched by UQSoft
(Beijing UQSoft Interactive Technology Co., Ltd.), a wholly-owned
subsidiary of Ultrapower. Its dedicated product homepage[1] was once
hosted on Ultrapower’s official website[2].
It should be noted that UQSoft's official website[3] is no longer
operational, and the company appears to have been discontinued.
[1] https://web.archive.org/web/20190409213228/https://tq.ultrapower.com.cn/product.html
[2] https://www.ultrapower.com.cn
[3] http://www.uqsoft.com
Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index ee7fd3cfe203..bb16ae90a4f6 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -1731,6 +1731,8 @@ patternProperties:
description: Ufi Space Co., Ltd.
"^ugoos,.*":
description: Ugoos Industrial Co., Ltd.
+ "^ultrapower,.*":
+ description: Beijing Ultrapower Software Co., Ltd.
"^uni-t,.*":
description: Uni-Trend Technology (China) Co., Ltd.
"^uniwest,.*":
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/3] dt-bindings: arm: sunxi: Add TaiqiCat (TQC) A01
2026-02-27 15:57 [PATCH v2 0/3] board: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
2026-02-27 15:57 ` [PATCH v2 1/3] dt-bindings: vendor-prefixes: Add Beijing Ultrapower Software Co., Ltd Jun Yan
@ 2026-02-27 15:57 ` Jun Yan
2026-02-28 10:51 ` Krzysztof Kozlowski
2026-02-27 15:58 ` [PATCH v2 3/3] arm64: dts: allwinner: h6: Add TaiqiCat (TQC) A01 support Jun Yan
2026-02-28 1:47 ` [PATCH v2 0/3] board: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
3 siblings, 1 reply; 9+ messages in thread
From: Jun Yan @ 2026-02-27 15:57 UTC (permalink / raw)
To: devicetree, linux-arm-kernel, linux-sunxi
Cc: robh, krzk+dt, conor+dt, wens, jernej.skrabec, samuel, mripard,
Jun Yan
TaiqiCat (TQC) A01 is a set-top box powered by an Allwinner H6 SoC,
equipped with an AXP305 PMIC, 1GB LPDDR3 RAM, 8GB eMMC, an AP6212
WiFi/BT combo module, one 100M Ethernet port, one USB 3.0 Type-A port,
one USB 2.0 Type-A port, one Micro USB port, HDMI, SPDIF, Micro-SD, and
infrared input.
It is a blockchain-based terminal product launched by UQSoft
(Beijing UQSoft Interactive Technology Co., Ltd.), a wholly-owned
subsidiary of Ultrapower. Its dedicated product homepage[1] was once
hosted on Ultrapower’s official website[2].
It should be noted that UQSoft's official website[3] is no longer
operational, and the company appears to have been discontinued.
[1] https://web.archive.org/web/20190409213228/https://tq.ultrapower.com.cn/product.html
[2] https://www.ultrapower.com.cn
[3] http://www.uqsoft.com
Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
---
Documentation/devicetree/bindings/arm/sunxi.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/sunxi.yaml b/Documentation/devicetree/bindings/arm/sunxi.yaml
index 9e4627f97d7e..e6443c266fa1 100644
--- a/Documentation/devicetree/bindings/arm/sunxi.yaml
+++ b/Documentation/devicetree/bindings/arm/sunxi.yaml
@@ -901,6 +901,11 @@ properties:
- const: allwinner,sl631
- const: allwinner,sun8i-v3
+ - description: TaiqiCat A01
+ items:
+ - const: ultrapower,taiqicat-a01
+ - const: allwinner,sun50i-h6
+
- description: Tanix TX1
items:
- const: oranth,tanix-tx1
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 3/3] arm64: dts: allwinner: h6: Add TaiqiCat (TQC) A01 support
2026-02-27 15:57 [PATCH v2 0/3] board: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
2026-02-27 15:57 ` [PATCH v2 1/3] dt-bindings: vendor-prefixes: Add Beijing Ultrapower Software Co., Ltd Jun Yan
2026-02-27 15:57 ` [PATCH v2 2/3] dt-bindings: arm: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
@ 2026-02-27 15:58 ` Jun Yan
2026-03-01 21:54 ` Andre Przywara
2026-02-28 1:47 ` [PATCH v2 0/3] board: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
3 siblings, 1 reply; 9+ messages in thread
From: Jun Yan @ 2026-02-27 15:58 UTC (permalink / raw)
To: devicetree, linux-arm-kernel, linux-sunxi
Cc: robh, krzk+dt, conor+dt, wens, jernej.skrabec, samuel, mripard,
Jun Yan
TaiqiCat (TQC) A01 is a set-top box powered by an Allwinner H6 SoC,
equipped with an AXP305 PMIC, 1GB LPDDR3 RAM, 8GB eMMC, an AP6212
WiFi/BT combo module, one 100M Ethernet port, one USB 3.0 Type-A port,
one USB 2.0 Type-A port, one Micro USB port, HDMI, SPDIF, Micro-SD, and
infrared input.
It was released by Ultrapower(UQSoft) as a blockchain-based terminal and is
now discontinued and no longer supported.
https://web.archive.org/web/20190409213228/https://tq.ultrapower.com.cn/product.html
Hardware schematics are not available at this time; however, the
dts from the vendor firmware is provided for reference [1].
Based on the PCB silkscreen marking "AZW-KT02 2.0", the ODM/OEM
can be confirmed as AZW, and the overall hardware circuit design
is highly similar to the Beelink GS1.
Tested, works:
- debug UART
- status LED
- USB 3.0 Type-A port
- USB 2.0 Type-A port
- Micro USB port (Host)
- MicroSD
- eMMC
- WiFi/Bluetooth
- HDMI video output
Does not work:
- Ethernet (requires AC200 MFD/EPHY driver)
- HDMI audio
Untested:
- SPDIF
- IR receiver
[1] https://archive.org/download/tqc-a01-stock-fw/tqc-a01-stock-fw.dts
Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
---
arch/arm64/boot/dts/allwinner/Makefile | 1 +
.../dts/allwinner/sun50i-h6-taiqicat-a01.dts | 361 ++++++++++++++++++
2 files changed, 362 insertions(+)
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
index 2edfa7bf4ab3..d116864b6c2b 100644
--- a/arch/arm64/boot/dts/allwinner/Makefile
+++ b/arch/arm64/boot/dts/allwinner/Makefile
@@ -38,6 +38,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-lite2.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-one-plus.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64-model-b.dtb
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-taiqicat-a01.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h313-tanix-tx1.dtb
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
new file mode 100644
index 000000000000..381479553f5f
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
@@ -0,0 +1,361 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+// Copyright (C) 2026 Jun Yan <jerrysteve1101@gmail.com>
+
+/dts-v1/;
+
+#include "sun50i-h6.dtsi"
+#include "sun50i-h6-cpu-opp.dtsi"
+#include "sun50i-h6-gpu-opp.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+ model = "TaiqiCat (TQC) A01";
+ compatible = "ultrapower,taiqicat-a01", "allwinner,sun50i-h6";
+
+ aliases {
+ serial0 = &uart0;
+ serial1 = &uart1;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ connector {
+ compatible = "hdmi-connector";
+ ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
+ type = "a";
+
+ port {
+ hdmi_con_in: endpoint {
+ remote-endpoint = <&hdmi_out_con>;
+ };
+ };
+ };
+
+ ext_osc32k: ext-osc32k-clk {
+ #clock-cells = <0>;
+ compatible = "fixed-clock";
+ clock-frequency = <32768>;
+ clock-output-names = "ext_osc32k";
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led-0 {
+ label = "taiqicat:blue:power";
+ gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
+ default-state = "on";
+ };
+ };
+
+ reg_vcc5v: vcc5v {
+ /* board wide 5V supply directly from the DC jack */
+ compatible = "regulator-fixed";
+ regulator-name = "vcc-5v";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-always-on;
+ };
+
+ sound-spdif {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "sun50i-h6-spdif";
+
+ simple-audio-card,cpu {
+ sound-dai = <&spdif>;
+ };
+
+ simple-audio-card,codec {
+ sound-dai = <&spdif_out>;
+ };
+ };
+
+ spdif_out: spdif-out {
+ #sound-dai-cells = <0>;
+ compatible = "linux,spdif-dit";
+ };
+
+ wifi_pwrseq: wifi-pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ clocks = <&rtc CLK_OSC32K_FANOUT>;
+ clock-names = "ext_clock";
+ reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */
+ post-power-on-delay-ms = <200>;
+ };
+};
+
+&cpu0 {
+ cpu-supply = <®_dcdca>;
+};
+
+&de {
+ status = "okay";
+};
+
+&dwc3 {
+ status = "okay";
+};
+
+&ehci0 {
+ status = "okay";
+};
+
+&ehci3 {
+ status = "okay";
+};
+
+&gpu {
+ mali-supply = <®_dcdcc>;
+ status = "okay";
+};
+
+&hdmi {
+ hvcc-supply = <®_bldo2>;
+ status = "okay";
+};
+
+&hdmi_out {
+ hdmi_out_con: endpoint {
+ remote-endpoint = <&hdmi_con_in>;
+ };
+};
+
+&mmc0 {
+ vmmc-supply = <®_cldo1>;
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
+ bus-width = <4>;
+ disable-wp;
+ status = "okay";
+};
+
+&mmc1 {
+ vmmc-supply = <®_cldo3>;
+ vqmmc-supply = <®_bldo3>;
+ mmc-pwrseq = <&wifi_pwrseq>;
+ bus-width = <4>;
+ non-removable;
+ keep-power-in-suspend;
+ status = "okay";
+
+ brcm: sdio-wifi@1 {
+ reg = <1>;
+ compatible = "brcm,bcm43430a1-fmac", "brcm,bcm4329-fmac";
+ interrupt-parent = <&r_pio>;
+ interrupts = <1 0 IRQ_TYPE_LEVEL_LOW>; /* PM0 */
+ interrupt-names = "host-wake";
+ };
+};
+
+&mmc2 {
+ vmmc-supply = <®_cldo1>;
+ vqmmc-supply = <®_bldo2>;
+ cap-mmc-hw-reset;
+ non-removable;
+ mmc-hs200-1_8v;
+ bus-width = <8>;
+ status = "okay";
+};
+
+&ohci0 {
+ status = "okay";
+};
+
+&ohci3 {
+ status = "okay";
+};
+
+&pio {
+ vcc-pc-supply = <®_bldo2>;
+ vcc-pd-supply = <®_cldo1>;
+ vcc-pg-supply = <®_bldo3>;
+};
+
+&r_i2c {
+ status = "okay";
+
+ axp805: pmic@36 {
+ compatible = "x-powers,axp805", "x-powers,axp806";
+ reg = <0x36>;
+ interrupt-parent = <&r_intc>;
+ interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ x-powers,self-working-mode;
+ vina-supply = <®_vcc5v>;
+ vinb-supply = <®_vcc5v>;
+ vinc-supply = <®_vcc5v>;
+ vind-supply = <®_vcc5v>;
+ vine-supply = <®_vcc5v>;
+ aldoin-supply = <®_vcc5v>;
+ bldoin-supply = <®_vcc5v>;
+ cldoin-supply = <®_vcc5v>;
+
+ regulators {
+ reg_aldo1: aldo1 {
+ regulator-always-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-pl-led-ir-pg-pm-ts";
+ };
+
+ reg_aldo2: aldo2 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-ac200";
+ regulator-enable-ramp-delay = <100000>;
+ };
+
+ aldo3 {
+ /* unused */
+ };
+
+ reg_bldo1: bldo1 {
+ regulator-always-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "vcc18-dram-bias-pll";
+ };
+
+ reg_bldo2: bldo2 {
+ regulator-always-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "vcc-pc-emmc-efuse-hdmi";
+ };
+
+ reg_bldo3: bldo3 {
+ regulator-always-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "vcc-pg-wifiio";
+ };
+
+ bldo4 {
+ /* unused */
+ };
+
+ reg_cldo1: cldo1 {
+ regulator-always-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart";
+ };
+
+ /* This regulator is connected with CLDO3 */
+ reg_cldo2: cldo2 {
+ regulator-always-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-wifi-1";
+ };
+
+ reg_cldo3: cldo3 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-wifi-2";
+ };
+
+ reg_dcdca: dcdca {
+ regulator-always-on;
+ regulator-min-microvolt = <810000>;
+ regulator-max-microvolt = <1160000>;
+ regulator-ramp-delay = <2500>;
+ regulator-name = "vdd-cpu";
+ };
+
+ reg_dcdcc: dcdcc {
+ regulator-enable-ramp-delay = <32000>;
+ regulator-min-microvolt = <810000>;
+ regulator-max-microvolt = <1080000>;
+ regulator-ramp-delay = <2500>;
+ regulator-name = "vdd-gpu";
+ };
+
+ reg_dcdcd: dcdcd {
+ regulator-always-on;
+ regulator-min-microvolt = <960000>;
+ regulator-max-microvolt = <960000>;
+ regulator-name = "vdd-sys-hdmi-usb";
+ };
+
+ reg_dcdce: dcdce {
+ regulator-always-on;
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-name = "vcc-dram";
+ };
+
+ sw {
+ /* unused */
+ };
+ };
+ };
+};
+
+&r_ir {
+ status = "okay";
+};
+
+&r_pio {
+ /*
+ * PL0 and PL1 are used for PMIC I2C
+ * don't enable the pl-supply else
+ * it will fail at boot
+ *
+ * vcc-pl-supply = <®_aldo1>;
+ */
+ vcc-pm-supply = <®_aldo1>;
+};
+
+&rtc {
+ clocks = <&ext_osc32k>;
+};
+
+&spdif {
+ pinctrl-names = "default";
+ pinctrl-0 = <&spdif_tx_pin>;
+ status = "okay";
+};
+
+&uart0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart0_ph_pins>;
+ status = "okay";
+};
+
+&uart1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+ uart-has-rtscts;
+ status = "okay";
+
+ bluetooth {
+ compatible = "brcm,bcm43430a1-bt";
+ clocks = <&rtc CLK_OSC32K_FANOUT>;
+ clock-names = "lpo";
+ vbat-supply = <®_cldo3>;
+ vddio-supply = <®_bldo3>;
+ device-wakeup-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */
+ host-wakeup-gpios = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */
+ shutdown-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */
+ max-speed = <1500000>;
+ };
+};
+
+&usb2otg {
+ dr_mode = "host";
+ status = "okay";
+};
+
+&usb2phy {
+ usb0_vbus-supply = <®_vcc5v>;
+ usb3_vbus-supply = <®_vcc5v>;
+ status = "okay";
+};
+
+&usb3phy {
+ status = "okay";
+};
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/3] board: sunxi: Add TaiqiCat (TQC) A01
2026-02-27 15:57 [PATCH v2 0/3] board: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
` (2 preceding siblings ...)
2026-02-27 15:58 ` [PATCH v2 3/3] arm64: dts: allwinner: h6: Add TaiqiCat (TQC) A01 support Jun Yan
@ 2026-02-28 1:47 ` Jun Yan
3 siblings, 0 replies; 9+ messages in thread
From: Jun Yan @ 2026-02-28 1:47 UTC (permalink / raw)
To: jerrysteve1101
Cc: conor+dt, devicetree, jernej.skrabec, krzk+dt, linux-arm-kernel,
linux-sunxi, mripard, robh, samuel, wens
> This series adds support for the TaiqiCat (TQC) A01 —
> a set-top box based on the Allwinner H6 SoC.
> Originally released by Ultrapower(UQSoft) as a blockchain terminal,
> the device has been discontinued and is no longer officially
> supported.
>
> https://web.archive.org/web/20190409213228/https://tq.ultrapower.com.cn/product.html
My apologies for not including the Changes section.
Changes in v2:
- Replace "UQSoft" with "Ultrapower", and add relevant explanations.
- Link to v1: https://lore.kernel.org/all/20260226084850.417731-1-jerrysteve1101@gmail.com
>
> Jun Yan (3):
> dt-bindings: vendor-prefixes: Add Beijing Ultrapower Software Co.,
> Ltd.
> dt-bindings: arm: sunxi: Add TaiqiCat (TQC) A01
> arm64: dts: allwinner: h6: Add TaiqiCat (TQC) A01 support
>
> .../devicetree/bindings/arm/sunxi.yaml | 5 +
> .../devicetree/bindings/vendor-prefixes.yaml | 2 +
> arch/arm64/boot/dts/allwinner/Makefile | 1 +
> .../dts/allwinner/sun50i-h6-taiqicat-a01.dts | 361 ++++++++++++++++++
> 4 files changed, 369 insertions(+)
> create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
>
> --
> 2.53.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/3] dt-bindings: vendor-prefixes: Add Beijing Ultrapower Software Co., Ltd.
2026-02-27 15:57 ` [PATCH v2 1/3] dt-bindings: vendor-prefixes: Add Beijing Ultrapower Software Co., Ltd Jun Yan
@ 2026-02-28 10:51 ` Krzysztof Kozlowski
0 siblings, 0 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2026-02-28 10:51 UTC (permalink / raw)
To: Jun Yan
Cc: devicetree, linux-arm-kernel, linux-sunxi, robh, krzk+dt,
conor+dt, wens, jernej.skrabec, samuel, mripard
On Fri, Feb 27, 2026 at 11:57:58PM +0800, Jun Yan wrote:
> Beijing Ultrapower Software Co., Ltd. is a company focusing on global
> mobile games, ICT services, cloud computing, and artificial intelligence
> solutions.
>
> TaiqiCat A01 is a blockchain-based terminal product launched by UQSoft
> (Beijing UQSoft Interactive Technology Co., Ltd.), a wholly-owned
> subsidiary of Ultrapower. Its dedicated product homepage[1] was once
> hosted on Ultrapower’s official website[2].
>
> It should be noted that UQSoft's official website[3] is no longer
> operational, and the company appears to have been discontinued.
>
> [1] https://web.archive.org/web/20190409213228/https://tq.ultrapower.com.cn/product.html
> [2] https://www.ultrapower.com.cn
> [3] http://www.uqsoft.com
>
> Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
> ---
> Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
> 1 file changed, 2 insertions(+)
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/3] dt-bindings: arm: sunxi: Add TaiqiCat (TQC) A01
2026-02-27 15:57 ` [PATCH v2 2/3] dt-bindings: arm: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
@ 2026-02-28 10:51 ` Krzysztof Kozlowski
0 siblings, 0 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2026-02-28 10:51 UTC (permalink / raw)
To: Jun Yan
Cc: devicetree, linux-arm-kernel, linux-sunxi, robh, krzk+dt,
conor+dt, wens, jernej.skrabec, samuel, mripard
On Fri, Feb 27, 2026 at 11:57:59PM +0800, Jun Yan wrote:
> TaiqiCat (TQC) A01 is a set-top box powered by an Allwinner H6 SoC,
> equipped with an AXP305 PMIC, 1GB LPDDR3 RAM, 8GB eMMC, an AP6212
> WiFi/BT combo module, one 100M Ethernet port, one USB 3.0 Type-A port,
> one USB 2.0 Type-A port, one Micro USB port, HDMI, SPDIF, Micro-SD, and
> infrared input.
>
> It is a blockchain-based terminal product launched by UQSoft
> (Beijing UQSoft Interactive Technology Co., Ltd.), a wholly-owned
> subsidiary of Ultrapower. Its dedicated product homepage[1] was once
> hosted on Ultrapower’s official website[2].
>
> It should be noted that UQSoft's official website[3] is no longer
> operational, and the company appears to have been discontinued.
>
> [1] https://web.archive.org/web/20190409213228/https://tq.ultrapower.com.cn/product.html
> [2] https://www.ultrapower.com.cn
> [3] http://www.uqsoft.com
>
> Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/3] arm64: dts: allwinner: h6: Add TaiqiCat (TQC) A01 support
2026-02-27 15:58 ` [PATCH v2 3/3] arm64: dts: allwinner: h6: Add TaiqiCat (TQC) A01 support Jun Yan
@ 2026-03-01 21:54 ` Andre Przywara
2026-03-02 1:48 ` Jun Yan
0 siblings, 1 reply; 9+ messages in thread
From: Andre Przywara @ 2026-03-01 21:54 UTC (permalink / raw)
To: Jun Yan
Cc: devicetree, linux-arm-kernel, linux-sunxi, robh, krzk+dt,
conor+dt, wens, jernej.skrabec, samuel, mripard
On Fri, 27 Feb 2026 23:58:00 +0800
Jun Yan <jerrysteve1101@gmail.com> wrote:
Hi,
> TaiqiCat (TQC) A01 is a set-top box powered by an Allwinner H6 SoC,
> equipped with an AXP305 PMIC, 1GB LPDDR3 RAM, 8GB eMMC, an AP6212
> WiFi/BT combo module, one 100M Ethernet port, one USB 3.0 Type-A port,
> one USB 2.0 Type-A port, one Micro USB port, HDMI, SPDIF, Micro-SD, and
> infrared input.
Many thanks for sending this upstream, this looks very good overall,
only some small things below...
> It was released by Ultrapower(UQSoft) as a blockchain-based terminal and is
> now discontinued and no longer supported.
>
> https://web.archive.org/web/20190409213228/https://tq.ultrapower.com.cn/product.html
>
> Hardware schematics are not available at this time; however, the
> dts from the vendor firmware is provided for reference [1].
>
> Based on the PCB silkscreen marking "AZW-KT02 2.0", the ODM/OEM
> can be confirmed as AZW, and the overall hardware circuit design
> is highly similar to the Beelink GS1.
>
> Tested, works:
> - debug UART
> - status LED
> - USB 3.0 Type-A port
> - USB 2.0 Type-A port
> - Micro USB port (Host)
> - MicroSD
> - eMMC
> - WiFi/Bluetooth
> - HDMI video output
>
> Does not work:
> - Ethernet (requires AC200 MFD/EPHY driver)
> - HDMI audio
>
> Untested:
> - SPDIF
> - IR receiver
>
> [1] https://archive.org/download/tqc-a01-stock-fw/tqc-a01-stock-fw.dts
>
> Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
> ---
> arch/arm64/boot/dts/allwinner/Makefile | 1 +
> .../dts/allwinner/sun50i-h6-taiqicat-a01.dts | 361 ++++++++++++++++++
> 2 files changed, 362 insertions(+)
> create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
>
> diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
> index 2edfa7bf4ab3..d116864b6c2b 100644
> --- a/arch/arm64/boot/dts/allwinner/Makefile
> +++ b/arch/arm64/boot/dts/allwinner/Makefile
> @@ -38,6 +38,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-lite2.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-one-plus.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64-model-b.dtb
> +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-taiqicat-a01.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h313-tanix-tx1.dtb
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
> new file mode 100644
> index 000000000000..381479553f5f
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
> @@ -0,0 +1,361 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +// Copyright (C) 2026 Jun Yan <jerrysteve1101@gmail.com>
> +
> +/dts-v1/;
> +
> +#include "sun50i-h6.dtsi"
> +#include "sun50i-h6-cpu-opp.dtsi"
> +#include "sun50i-h6-gpu-opp.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> + model = "TaiqiCat (TQC) A01";
> + compatible = "ultrapower,taiqicat-a01", "allwinner,sun50i-h6";
> +
> + aliases {
> + serial0 = &uart0;
> + serial1 = &uart1;
I don't think we need the serial1 alias? Bluetooth should work even
without knowing the ttyS<x> device name, shouldn't it?
But you should add an alias for the WiFi (ethernet0 = &brcm;), so that
U-Boot assigns an ideally unique MAC address.
The rest looks correct, from a pure upstream DT perspective, and by
comparing it to other H6 .dts files, even though I cannot test it, of
course. But I trust you that those things you mentioned work.
So with the aliases changed:
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Cheers,
Andre
> + };
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + connector {
> + compatible = "hdmi-connector";
> + ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
> + type = "a";
> +
> + port {
> + hdmi_con_in: endpoint {
> + remote-endpoint = <&hdmi_out_con>;
> + };
> + };
> + };
> +
> + ext_osc32k: ext-osc32k-clk {
> + #clock-cells = <0>;
> + compatible = "fixed-clock";
> + clock-frequency = <32768>;
> + clock-output-names = "ext_osc32k";
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> +
> + led-0 {
> + label = "taiqicat:blue:power";
> + gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
> + default-state = "on";
> + };
> + };
> +
> + reg_vcc5v: vcc5v {
> + /* board wide 5V supply directly from the DC jack */
> + compatible = "regulator-fixed";
> + regulator-name = "vcc-5v";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + regulator-always-on;
> + };
> +
> + sound-spdif {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "sun50i-h6-spdif";
> +
> + simple-audio-card,cpu {
> + sound-dai = <&spdif>;
> + };
> +
> + simple-audio-card,codec {
> + sound-dai = <&spdif_out>;
> + };
> + };
> +
> + spdif_out: spdif-out {
> + #sound-dai-cells = <0>;
> + compatible = "linux,spdif-dit";
> + };
> +
> + wifi_pwrseq: wifi-pwrseq {
> + compatible = "mmc-pwrseq-simple";
> + clocks = <&rtc CLK_OSC32K_FANOUT>;
> + clock-names = "ext_clock";
> + reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */
> + post-power-on-delay-ms = <200>;
> + };
> +};
> +
> +&cpu0 {
> + cpu-supply = <®_dcdca>;
> +};
> +
> +&de {
> + status = "okay";
> +};
> +
> +&dwc3 {
> + status = "okay";
> +};
> +
> +&ehci0 {
> + status = "okay";
> +};
> +
> +&ehci3 {
> + status = "okay";
> +};
> +
> +&gpu {
> + mali-supply = <®_dcdcc>;
> + status = "okay";
> +};
> +
> +&hdmi {
> + hvcc-supply = <®_bldo2>;
> + status = "okay";
> +};
> +
> +&hdmi_out {
> + hdmi_out_con: endpoint {
> + remote-endpoint = <&hdmi_con_in>;
> + };
> +};
> +
> +&mmc0 {
> + vmmc-supply = <®_cldo1>;
> + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
> + bus-width = <4>;
> + disable-wp;
> + status = "okay";
> +};
> +
> +&mmc1 {
> + vmmc-supply = <®_cldo3>;
> + vqmmc-supply = <®_bldo3>;
> + mmc-pwrseq = <&wifi_pwrseq>;
> + bus-width = <4>;
> + non-removable;
> + keep-power-in-suspend;
> + status = "okay";
> +
> + brcm: sdio-wifi@1 {
> + reg = <1>;
> + compatible = "brcm,bcm43430a1-fmac", "brcm,bcm4329-fmac";
> + interrupt-parent = <&r_pio>;
> + interrupts = <1 0 IRQ_TYPE_LEVEL_LOW>; /* PM0 */
> + interrupt-names = "host-wake";
> + };
> +};
> +
> +&mmc2 {
> + vmmc-supply = <®_cldo1>;
> + vqmmc-supply = <®_bldo2>;
> + cap-mmc-hw-reset;
> + non-removable;
> + mmc-hs200-1_8v;
> + bus-width = <8>;
> + status = "okay";
> +};
> +
> +&ohci0 {
> + status = "okay";
> +};
> +
> +&ohci3 {
> + status = "okay";
> +};
> +
> +&pio {
> + vcc-pc-supply = <®_bldo2>;
> + vcc-pd-supply = <®_cldo1>;
> + vcc-pg-supply = <®_bldo3>;
> +};
> +
> +&r_i2c {
> + status = "okay";
> +
> + axp805: pmic@36 {
> + compatible = "x-powers,axp805", "x-powers,axp806";
> + reg = <0x36>;
> + interrupt-parent = <&r_intc>;
> + interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
> + interrupt-controller;
> + #interrupt-cells = <1>;
> + x-powers,self-working-mode;
> + vina-supply = <®_vcc5v>;
> + vinb-supply = <®_vcc5v>;
> + vinc-supply = <®_vcc5v>;
> + vind-supply = <®_vcc5v>;
> + vine-supply = <®_vcc5v>;
> + aldoin-supply = <®_vcc5v>;
> + bldoin-supply = <®_vcc5v>;
> + cldoin-supply = <®_vcc5v>;
> +
> + regulators {
> + reg_aldo1: aldo1 {
> + regulator-always-on;
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "vcc-pl-led-ir-pg-pm-ts";
> + };
> +
> + reg_aldo2: aldo2 {
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "vcc-ac200";
> + regulator-enable-ramp-delay = <100000>;
> + };
> +
> + aldo3 {
> + /* unused */
> + };
> +
> + reg_bldo1: bldo1 {
> + regulator-always-on;
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "vcc18-dram-bias-pll";
> + };
> +
> + reg_bldo2: bldo2 {
> + regulator-always-on;
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "vcc-pc-emmc-efuse-hdmi";
> + };
> +
> + reg_bldo3: bldo3 {
> + regulator-always-on;
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "vcc-pg-wifiio";
> + };
> +
> + bldo4 {
> + /* unused */
> + };
> +
> + reg_cldo1: cldo1 {
> + regulator-always-on;
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "vcc33-io-pd-emmc-sd-usb-uart";
> + };
> +
> + /* This regulator is connected with CLDO3 */
> + reg_cldo2: cldo2 {
> + regulator-always-on;
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "vcc-wifi-1";
> + };
> +
> + reg_cldo3: cldo3 {
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "vcc-wifi-2";
> + };
> +
> + reg_dcdca: dcdca {
> + regulator-always-on;
> + regulator-min-microvolt = <810000>;
> + regulator-max-microvolt = <1160000>;
> + regulator-ramp-delay = <2500>;
> + regulator-name = "vdd-cpu";
> + };
> +
> + reg_dcdcc: dcdcc {
> + regulator-enable-ramp-delay = <32000>;
> + regulator-min-microvolt = <810000>;
> + regulator-max-microvolt = <1080000>;
> + regulator-ramp-delay = <2500>;
> + regulator-name = "vdd-gpu";
> + };
> +
> + reg_dcdcd: dcdcd {
> + regulator-always-on;
> + regulator-min-microvolt = <960000>;
> + regulator-max-microvolt = <960000>;
> + regulator-name = "vdd-sys-hdmi-usb";
> + };
> +
> + reg_dcdce: dcdce {
> + regulator-always-on;
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + regulator-name = "vcc-dram";
> + };
> +
> + sw {
> + /* unused */
> + };
> + };
> + };
> +};
> +
> +&r_ir {
> + status = "okay";
> +};
> +
> +&r_pio {
> + /*
> + * PL0 and PL1 are used for PMIC I2C
> + * don't enable the pl-supply else
> + * it will fail at boot
> + *
> + * vcc-pl-supply = <®_aldo1>;
> + */
> + vcc-pm-supply = <®_aldo1>;
> +};
> +
> +&rtc {
> + clocks = <&ext_osc32k>;
> +};
> +
> +&spdif {
> + pinctrl-names = "default";
> + pinctrl-0 = <&spdif_tx_pin>;
> + status = "okay";
> +};
> +
> +&uart0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&uart0_ph_pins>;
> + status = "okay";
> +};
> +
> +&uart1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
> + uart-has-rtscts;
> + status = "okay";
> +
> + bluetooth {
> + compatible = "brcm,bcm43430a1-bt";
> + clocks = <&rtc CLK_OSC32K_FANOUT>;
> + clock-names = "lpo";
> + vbat-supply = <®_cldo3>;
> + vddio-supply = <®_bldo3>;
> + device-wakeup-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */
> + host-wakeup-gpios = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */
> + shutdown-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */
> + max-speed = <1500000>;
> + };
> +};
> +
> +&usb2otg {
> + dr_mode = "host";
> + status = "okay";
> +};
> +
> +&usb2phy {
> + usb0_vbus-supply = <®_vcc5v>;
> + usb3_vbus-supply = <®_vcc5v>;
> + status = "okay";
> +};
> +
> +&usb3phy {
> + status = "okay";
> +};
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/3] arm64: dts: allwinner: h6: Add TaiqiCat (TQC) A01 support
2026-03-01 21:54 ` Andre Przywara
@ 2026-03-02 1:48 ` Jun Yan
0 siblings, 0 replies; 9+ messages in thread
From: Jun Yan @ 2026-03-02 1:48 UTC (permalink / raw)
To: andre.przywara
Cc: conor+dt, devicetree, jernej.skrabec, jerrysteve1101, krzk+dt,
linux-arm-kernel, linux-sunxi, mripard, robh, samuel, wens
Hi,
> On Fri, 27 Feb 2026 23:58:00 +0800
> Jun Yan <jerrysteve1101@gmail.com> wrote:
>
> Hi,
>
> > TaiqiCat (TQC) A01 is a set-top box powered by an Allwinner H6 SoC,
> > equipped with an AXP305 PMIC, 1GB LPDDR3 RAM, 8GB eMMC, an AP6212
> > WiFi/BT combo module, one 100M Ethernet port, one USB 3.0 Type-A port,
> > one USB 2.0 Type-A port, one Micro USB port, HDMI, SPDIF, Micro-SD, and
> > infrared input.
>
> Many thanks for sending this upstream, this looks very good overall,
> only some small things below...
>
> > It was released by Ultrapower(UQSoft) as a blockchain-based terminal and is
> > now discontinued and no longer supported.
> >
> > https://web.archive.org/web/20190409213228/https://tq.ultrapower.com.cn/product.html
> >
> > Hardware schematics are not available at this time; however, the
> > dts from the vendor firmware is provided for reference [1].
> >
> > Based on the PCB silkscreen marking "AZW-KT02 2.0", the ODM/OEM
> > can be confirmed as AZW, and the overall hardware circuit design
> > is highly similar to the Beelink GS1.
> >
> > Tested, works:
> > - debug UART
> > - status LED
> > - USB 3.0 Type-A port
> > - USB 2.0 Type-A port
> > - Micro USB port (Host)
> > - MicroSD
> > - eMMC
> > - WiFi/Bluetooth
> > - HDMI video output
> >
> > Does not work:
> > - Ethernet (requires AC200 MFD/EPHY driver)
> > - HDMI audio
> >
> > Untested:
> > - SPDIF
> > - IR receiver
> >
> > [1] https://archive.org/download/tqc-a01-stock-fw/tqc-a01-stock-fw.dts
> >
> > Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
> > ---
> > arch/arm64/boot/dts/allwinner/Makefile | 1 +
> > .../dts/allwinner/sun50i-h6-taiqicat-a01.dts | 361 ++++++++++++++++++
> > 2 files changed, 362 insertions(+)
> > create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
> >
> > diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
> > index 2edfa7bf4ab3..d116864b6c2b 100644
> > --- a/arch/arm64/boot/dts/allwinner/Makefile
> > +++ b/arch/arm64/boot/dts/allwinner/Makefile
> > @@ -38,6 +38,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-lite2.dtb
> > dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-one-plus.dtb
> > dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64.dtb
> > dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64-model-b.dtb
> > +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-taiqicat-a01.dtb
> > dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6.dtb
> > dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb
> > dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h313-tanix-tx1.dtb
> > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
> > new file mode 100644
> > index 000000000000..381479553f5f
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-taiqicat-a01.dts
> > @@ -0,0 +1,361 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +// Copyright (C) 2026 Jun Yan <jerrysteve1101@gmail.com>
> > +
> > +/dts-v1/;
> > +
> > +#include "sun50i-h6.dtsi"
> > +#include "sun50i-h6-cpu-opp.dtsi"
> > +#include "sun50i-h6-gpu-opp.dtsi"
> > +
> > +#include <dt-bindings/gpio/gpio.h>
> > +
> > +/ {
> > + model = "TaiqiCat (TQC) A01";
> > + compatible = "ultrapower,taiqicat-a01", "allwinner,sun50i-h6";
> > +
> > + aliases {
> > + serial0 = &uart0;
> > + serial1 = &uart1;
>
> I don't think we need the serial1 alias? Bluetooth should work even
> without knowing the ttyS<x> device name, shouldn't it?
>
> But you should add an alias for the WiFi (ethernet0 = &brcm;), so that
> U-Boot assigns an ideally unique MAC address.
>
> The rest looks correct, from a pure upstream DT perspective, and by
> comparing it to other H6 .dts files, even though I cannot test it, of
> course. But I trust you that those things you mentioned work.
Thank you for the review.
I will implement the changes you suggested in PATCH v3:
1. drop the serial1 alias
2. add an ethernet0 alias for WiFi.
Best regards,
Jun Yan
>
> So with the aliases changed:
> Reviewed-by: Andre Przywara <andre.przywara@arm.com>
>
> Cheers,
> Andre
>
> > + };
> > +
> > + chosen {
> > + stdout-path = "serial0:115200n8";
> > + };
> > +
> > + connector {
> > + compatible = "hdmi-connector";
> > + ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
> > + type = "a";
> > +
> > + port {
> > + hdmi_con_in: endpoint {
> > + remote-endpoint = <&hdmi_out_con>;
> > + };
> > + };
> > + };
> > +
> > + ext_osc32k: ext-osc32k-clk {
> > + #clock-cells = <0>;
> > + compatible = "fixed-clock";
> > + clock-frequency = <32768>;
> > + clock-output-names = "ext_osc32k";
> > + };
> > +
> > + leds {
> > + compatible = "gpio-leds";
> > +
> > + led-0 {
> > + label = "taiqicat:blue:power";
> > + gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
> > + default-state = "on";
> > + };
> > + };
> > +
> > + reg_vcc5v: vcc5v {
> > + /* board wide 5V supply directly from the DC jack */
> > + compatible = "regulator-fixed";
> > + regulator-name = "vcc-5v";
> > + regulator-min-microvolt = <5000000>;
> > + regulator-max-microvolt = <5000000>;
> > + regulator-always-on;
> > + };
> > +
> > + sound-spdif {
> > + compatible = "simple-audio-card";
> > + simple-audio-card,name = "sun50i-h6-spdif";
> > +
> > + simple-audio-card,cpu {
> > + sound-dai = <&spdif>;
> > + };
> > +
> > + simple-audio-card,codec {
> > + sound-dai = <&spdif_out>;
> > + };
> > + };
> > +
> > + spdif_out: spdif-out {
> > + #sound-dai-cells = <0>;
> > + compatible = "linux,spdif-dit";
> > + };
> > +
> > + wifi_pwrseq: wifi-pwrseq {
> > + compatible = "mmc-pwrseq-simple";
> > + clocks = <&rtc CLK_OSC32K_FANOUT>;
> > + clock-names = "ext_clock";
> > + reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */
> > + post-power-on-delay-ms = <200>;
> > + };
> > +};
> > +
> > +&cpu0 {
> > + cpu-supply = <®_dcdca>;
> > +};
> > +
> > +&de {
> > + status = "okay";
> > +};
> > +
> > +&dwc3 {
> > + status = "okay";
> > +};
> > +
> > +&ehci0 {
> > + status = "okay";
> > +};
> > +
> > +&ehci3 {
> > + status = "okay";
> > +};
> > +
> > +&gpu {
> > + mali-supply = <®_dcdcc>;
> > + status = "okay";
> > +};
> > +
> > +&hdmi {
> > + hvcc-supply = <®_bldo2>;
> > + status = "okay";
> > +};
> > +
> > +&hdmi_out {
> > + hdmi_out_con: endpoint {
> > + remote-endpoint = <&hdmi_con_in>;
> > + };
> > +};
> > +
> > +&mmc0 {
> > + vmmc-supply = <®_cldo1>;
> > + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
> > + bus-width = <4>;
> > + disable-wp;
> > + status = "okay";
> > +};
> > +
> > +&mmc1 {
> > + vmmc-supply = <®_cldo3>;
> > + vqmmc-supply = <®_bldo3>;
> > + mmc-pwrseq = <&wifi_pwrseq>;
> > + bus-width = <4>;
> > + non-removable;
> > + keep-power-in-suspend;
> > + status = "okay";
> > +
> > + brcm: sdio-wifi@1 {
> > + reg = <1>;
> > + compatible = "brcm,bcm43430a1-fmac", "brcm,bcm4329-fmac";
> > + interrupt-parent = <&r_pio>;
> > + interrupts = <1 0 IRQ_TYPE_LEVEL_LOW>; /* PM0 */
> > + interrupt-names = "host-wake";
> > + };
> > +};
> > +
> > +&mmc2 {
> > + vmmc-supply = <®_cldo1>;
> > + vqmmc-supply = <®_bldo2>;
> > + cap-mmc-hw-reset;
> > + non-removable;
> > + mmc-hs200-1_8v;
> > + bus-width = <8>;
> > + status = "okay";
> > +};
> > +
> > +&ohci0 {
> > + status = "okay";
> > +};
> > +
> > +&ohci3 {
> > + status = "okay";
> > +};
> > +
> > +&pio {
> > + vcc-pc-supply = <®_bldo2>;
> > + vcc-pd-supply = <®_cldo1>;
> > + vcc-pg-supply = <®_bldo3>;
> > +};
> > +
> > +&r_i2c {
> > + status = "okay";
> > +
> > + axp805: pmic@36 {
> > + compatible = "x-powers,axp805", "x-powers,axp806";
> > + reg = <0x36>;
> > + interrupt-parent = <&r_intc>;
> > + interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
> > + interrupt-controller;
> > + #interrupt-cells = <1>;
> > + x-powers,self-working-mode;
> > + vina-supply = <®_vcc5v>;
> > + vinb-supply = <®_vcc5v>;
> > + vinc-supply = <®_vcc5v>;
> > + vind-supply = <®_vcc5v>;
> > + vine-supply = <®_vcc5v>;
> > + aldoin-supply = <®_vcc5v>;
> > + bldoin-supply = <®_vcc5v>;
> > + cldoin-supply = <®_vcc5v>;
> > +
> > + regulators {
> > + reg_aldo1: aldo1 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-name = "vcc-pl-led-ir-pg-pm-ts";
> > + };
> > +
> > + reg_aldo2: aldo2 {
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-name = "vcc-ac200";
> > + regulator-enable-ramp-delay = <100000>;
> > + };
> > +
> > + aldo3 {
> > + /* unused */
> > + };
> > +
> > + reg_bldo1: bldo1 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-name = "vcc18-dram-bias-pll";
> > + };
> > +
> > + reg_bldo2: bldo2 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-name = "vcc-pc-emmc-efuse-hdmi";
> > + };
> > +
> > + reg_bldo3: bldo3 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-name = "vcc-pg-wifiio";
> > + };
> > +
> > + bldo4 {
> > + /* unused */
> > + };
> > +
> > + reg_cldo1: cldo1 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-name = "vcc33-io-pd-emmc-sd-usb-uart";
> > + };
> > +
> > + /* This regulator is connected with CLDO3 */
> > + reg_cldo2: cldo2 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-name = "vcc-wifi-1";
> > + };
> > +
> > + reg_cldo3: cldo3 {
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-name = "vcc-wifi-2";
> > + };
> > +
> > + reg_dcdca: dcdca {
> > + regulator-always-on;
> > + regulator-min-microvolt = <810000>;
> > + regulator-max-microvolt = <1160000>;
> > + regulator-ramp-delay = <2500>;
> > + regulator-name = "vdd-cpu";
> > + };
> > +
> > + reg_dcdcc: dcdcc {
> > + regulator-enable-ramp-delay = <32000>;
> > + regulator-min-microvolt = <810000>;
> > + regulator-max-microvolt = <1080000>;
> > + regulator-ramp-delay = <2500>;
> > + regulator-name = "vdd-gpu";
> > + };
> > +
> > + reg_dcdcd: dcdcd {
> > + regulator-always-on;
> > + regulator-min-microvolt = <960000>;
> > + regulator-max-microvolt = <960000>;
> > + regulator-name = "vdd-sys-hdmi-usb";
> > + };
> > +
> > + reg_dcdce: dcdce {
> > + regulator-always-on;
> > + regulator-min-microvolt = <1200000>;
> > + regulator-max-microvolt = <1200000>;
> > + regulator-name = "vcc-dram";
> > + };
> > +
> > + sw {
> > + /* unused */
> > + };
> > + };
> > + };
> > +};
> > +
> > +&r_ir {
> > + status = "okay";
> > +};
> > +
> > +&r_pio {
> > + /*
> > + * PL0 and PL1 are used for PMIC I2C
> > + * don't enable the pl-supply else
> > + * it will fail at boot
> > + *
> > + * vcc-pl-supply = <®_aldo1>;
> > + */
> > + vcc-pm-supply = <®_aldo1>;
> > +};
> > +
> > +&rtc {
> > + clocks = <&ext_osc32k>;
> > +};
> > +
> > +&spdif {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&spdif_tx_pin>;
> > + status = "okay";
> > +};
> > +
> > +&uart0 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart0_ph_pins>;
> > + status = "okay";
> > +};
> > +
> > +&uart1 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
> > + uart-has-rtscts;
> > + status = "okay";
> > +
> > + bluetooth {
> > + compatible = "brcm,bcm43430a1-bt";
> > + clocks = <&rtc CLK_OSC32K_FANOUT>;
> > + clock-names = "lpo";
> > + vbat-supply = <®_cldo3>;
> > + vddio-supply = <®_bldo3>;
> > + device-wakeup-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */
> > + host-wakeup-gpios = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */
> > + shutdown-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */
> > + max-speed = <1500000>;
> > + };
> > +};
> > +
> > +&usb2otg {
> > + dr_mode = "host";
> > + status = "okay";
> > +};
> > +
> > +&usb2phy {
> > + usb0_vbus-supply = <®_vcc5v>;
> > + usb3_vbus-supply = <®_vcc5v>;
> > + status = "okay";
> > +};
> > +
> > +&usb3phy {
> > + status = "okay";
> > +};
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-03-02 1:49 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-27 15:57 [PATCH v2 0/3] board: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
2026-02-27 15:57 ` [PATCH v2 1/3] dt-bindings: vendor-prefixes: Add Beijing Ultrapower Software Co., Ltd Jun Yan
2026-02-28 10:51 ` Krzysztof Kozlowski
2026-02-27 15:57 ` [PATCH v2 2/3] dt-bindings: arm: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
2026-02-28 10:51 ` Krzysztof Kozlowski
2026-02-27 15:58 ` [PATCH v2 3/3] arm64: dts: allwinner: h6: Add TaiqiCat (TQC) A01 support Jun Yan
2026-03-01 21:54 ` Andre Przywara
2026-03-02 1:48 ` Jun Yan
2026-02-28 1:47 ` [PATCH v2 0/3] board: sunxi: Add TaiqiCat (TQC) A01 Jun Yan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.