* [PATCH 1/5] dt-bindings: arm: mediatek: Add MT6895 and Xiaomi Poco X4 GT
2026-11-05 21:05 [PATCH 0/5] arm64: mediatek: Add initial MT6895 and Xiaomi Poco X4 GT support Alexander Letuchiy
@ 2026-11-05 21:05 ` Alexander Letuchiy
2026-11-05 21:06 ` [PATCH 2/5] dt-bindings: serial: mediatek,uart: Add compatible for MT6895 Alexander Letuchiy
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Alexander Letuchiy @ 2026-11-05 21:05 UTC (permalink / raw)
To: devicetree, linux-mediatek
Cc: linux-arm-kernel, Alexander Letuchiy, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
AngeloGioacchino Del Regno, Zakariya Hadrami, Manuel Ebner,
Gary Bisson, Sean Wang, linux-kernel
Add the compatible for the MediaTek MT6895 (Dimensity 8100) SoC, along
with the Xiaomi xaga board based on it, which is sold as Xiaomi Poco
X4 GT, Redmi Note 11T Pro/Pro+ and Redmi K50i.
Signed-off-by: Alexander Letuchiy <asalde.le1@gmail.com>
---
Documentation/devicetree/bindings/arm/mediatek.yaml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/mediatek.yaml b/Documentation/devicetree/bindings/arm/mediatek.yaml
index 180e6e4948e7..28180ed0e815 100644
--- a/Documentation/devicetree/bindings/arm/mediatek.yaml
+++ b/Documentation/devicetree/bindings/arm/mediatek.yaml
@@ -72,6 +72,10 @@ properties:
- archermind,mt6797-x20-dev
- mediatek,mt6797-evb
- const: mediatek,mt6797
+ - items:
+ - enum:
+ - xiaomi,xaga
+ - const: mediatek,mt6895
- items:
- enum:
- bananapi,bpi-r64
--
2.56.0
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 2/5] dt-bindings: serial: mediatek,uart: Add compatible for MT6895
2026-11-05 21:05 [PATCH 0/5] arm64: mediatek: Add initial MT6895 and Xiaomi Poco X4 GT support Alexander Letuchiy
2026-11-05 21:05 ` [PATCH 1/5] dt-bindings: arm: mediatek: Add MT6895 and Xiaomi Poco X4 GT Alexander Letuchiy
@ 2026-11-05 21:06 ` Alexander Letuchiy
2026-11-05 21:06 ` [PATCH 3/5] dt-bindings: watchdog: mediatek,mtk-wdt: " Alexander Letuchiy
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Alexander Letuchiy @ 2026-11-05 21:06 UTC (permalink / raw)
To: devicetree, linux-mediatek
Cc: linux-arm-kernel, Alexander Letuchiy, Greg Kroah-Hartman,
Jiri Slaby, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Matthias Brugger, AngeloGioacchino Del Regno, linux-kernel,
linux-serial
Add a compatible string for the UART of the MediaTek MT6895 (Dimensity
8100) SoC. It works with the existing driver through the
mediatek,mt6577-uart fallback.
Signed-off-by: Alexander Letuchiy <asalde.le1@gmail.com>
---
Documentation/devicetree/bindings/serial/mediatek,uart.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/serial/mediatek,uart.yaml b/Documentation/devicetree/bindings/serial/mediatek,uart.yaml
index 5bd8a8853ae0..a3969cfdea7e 100644
--- a/Documentation/devicetree/bindings/serial/mediatek,uart.yaml
+++ b/Documentation/devicetree/bindings/serial/mediatek,uart.yaml
@@ -35,6 +35,7 @@ properties:
- mediatek,mt6795-uart
- mediatek,mt6797-uart
- mediatek,mt6893-uart
+ - mediatek,mt6895-uart
- mediatek,mt7622-uart
- mediatek,mt7623-uart
- mediatek,mt7629-uart
--
2.56.0
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 3/5] dt-bindings: watchdog: mediatek,mtk-wdt: Add compatible for MT6895
2026-11-05 21:05 [PATCH 0/5] arm64: mediatek: Add initial MT6895 and Xiaomi Poco X4 GT support Alexander Letuchiy
2026-11-05 21:05 ` [PATCH 1/5] dt-bindings: arm: mediatek: Add MT6895 and Xiaomi Poco X4 GT Alexander Letuchiy
2026-11-05 21:06 ` [PATCH 2/5] dt-bindings: serial: mediatek,uart: Add compatible for MT6895 Alexander Letuchiy
@ 2026-11-05 21:06 ` Alexander Letuchiy
2026-11-05 21:50 ` Roman Vivchar
2026-11-05 21:06 ` [PATCH 4/5] arm64: dts: mediatek: Add MT6895 SoC Alexander Letuchiy
2026-11-05 21:06 ` [PATCH 5/5] arm64: dts: mediatek: Add Xiaomi Poco X4 GT Alexander Letuchiy
4 siblings, 1 reply; 8+ messages in thread
From: Alexander Letuchiy @ 2026-11-05 21:06 UTC (permalink / raw)
To: devicetree, linux-mediatek
Cc: linux-arm-kernel, Alexander Letuchiy, Wim Van Sebroeck,
Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Matthias Brugger, AngeloGioacchino Del Regno, linux-watchdog,
linux-kernel
Add a compatible string for the watchdog of the MediaTek MT6895
(Dimensity 8100) SoC, which uses mediatek,mt6589-wdt as its fallback.
Signed-off-by: Alexander Letuchiy <asalde.le1@gmail.com>
---
Documentation/devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml b/Documentation/devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml
index f9b725592c27..cac7d9ae98dd 100644
--- a/Documentation/devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml
+++ b/Documentation/devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml
@@ -38,6 +38,7 @@ properties:
- mediatek,mt6572-wdt
- mediatek,mt6582-wdt
- mediatek,mt6797-wdt
+ - mediatek,mt6895-wdt
- mediatek,mt7622-wdt
- mediatek,mt7623-wdt
- mediatek,mt7629-wdt
--
2.56.0
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 3/5] dt-bindings: watchdog: mediatek,mtk-wdt: Add compatible for MT6895
2026-11-05 21:06 ` [PATCH 3/5] dt-bindings: watchdog: mediatek,mtk-wdt: " Alexander Letuchiy
@ 2026-11-05 21:50 ` Roman Vivchar
2026-11-05 22:24 ` Alexander Letuchiy
0 siblings, 1 reply; 8+ messages in thread
From: Roman Vivchar @ 2026-11-05 21:50 UTC (permalink / raw)
To: Alexander Letuchiy
Cc: devicetree, linux-mediatek, linux-arm-kernel, Wim Van Sebroeck,
Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Matthias Brugger, AngeloGioacchino Del Regno, linux-watchdog,
linux-kernel
Hi,
On Thursday, November 5th, 2026 at 11:07 PM, Alexander Letuchiy <asalde.le1@gmail.com> wrote:
> Add a compatible string for the watchdog of the MediaTek MT6895
> (Dimensity 8100) SoC, which uses mediatek,mt6589-wdt as its fallback.
>
> Signed-off-by: Alexander Letuchiy <asalde.le1@gmail.com>
Does mt6895 actually share the same reset layout as mt6589? Given the
generation leap between these, the former is very unlikely to use
the same resets.
Best regards,
Roman
> ---
> Documentation/devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/Documentation/devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml b/Documentation/devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml
> index f9b725592c27..cac7d9ae98dd 100644
> --- a/Documentation/devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml
> +++ b/Documentation/devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml
> @@ -38,6 +38,7 @@ properties:
> - mediatek,mt6572-wdt
> - mediatek,mt6582-wdt
> - mediatek,mt6797-wdt
> + - mediatek,mt6895-wdt
> - mediatek,mt7622-wdt
> - mediatek,mt7623-wdt
> - mediatek,mt7629-wdt
> --
> 2.56.0
>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/5] dt-bindings: watchdog: mediatek,mtk-wdt: Add compatible for MT6895
2026-11-05 21:50 ` Roman Vivchar
@ 2026-11-05 22:24 ` Alexander Letuchiy
0 siblings, 0 replies; 8+ messages in thread
From: Alexander Letuchiy @ 2026-11-05 22:24 UTC (permalink / raw)
To: Roman Vivchar
Cc: Alexander Letuchiy, devicetree, linux-mediatek, linux-arm-kernel,
Wim Van Sebroeck, Guenter Roeck, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
AngeloGioacchino Del Regno, linux-watchdog, linux-kernel
Hi Roman,
Thanks for looking.
On Thu, Nov 5, 2026 at 11:50 PM, Roman Vivchar wrote:
> Does mt6895 actually share the same reset layout as mt6589? Given the
> generation leap between these, the former is very unlikely to use
> the same resets.
The vendor kernel for this SoC binds the watchdog with the same
compatible list ("mediatek,mt6895-wdt", "mediatek,mt6589-wdt") at the
same address, and its register definitions are identical to mtk_wdt.c.
The TOPRGU reset layout is the one thing I can't confirm, as I found no
reset table for MT6895 there. This series does not use it: the DT has
no #reset-cells and no consumers. If reset lines are needed later, I
will add a dedicated mt6895_data to the driver.
I also tested the watchdog on the device: while userspace keeps
kicking it, the system stays up, and once the kicks stop the watchdog
resets the board after the timeout.
Best regards,
Alexander
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 4/5] arm64: dts: mediatek: Add MT6895 SoC
2026-11-05 21:05 [PATCH 0/5] arm64: mediatek: Add initial MT6895 and Xiaomi Poco X4 GT support Alexander Letuchiy
` (2 preceding siblings ...)
2026-11-05 21:06 ` [PATCH 3/5] dt-bindings: watchdog: mediatek,mtk-wdt: " Alexander Letuchiy
@ 2026-11-05 21:06 ` Alexander Letuchiy
2026-11-05 21:06 ` [PATCH 5/5] arm64: dts: mediatek: Add Xiaomi Poco X4 GT Alexander Letuchiy
4 siblings, 0 replies; 8+ messages in thread
From: Alexander Letuchiy @ 2026-11-05 21:06 UTC (permalink / raw)
To: devicetree, linux-mediatek
Cc: linux-arm-kernel, Alexander Letuchiy, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
AngeloGioacchino Del Regno, linux-kernel
Add initial support for the MediaTek MT6895 (Dimensity 8100) SoC, which
has four Cortex-A55 and four Cortex-A78 cores.
Describe the CPUs, PSCI, the GICv3 interrupt controller, the architected
timer, two UARTs and the watchdog. There is no clock controller driver
for this SoC yet, so both UART clocks use a fixed 26 MHz clock.
Signed-off-by: Alexander Letuchiy <asalde.le1@gmail.com>
---
arch/arm64/boot/dts/mediatek/mt6895.dtsi | 166 +++++++++++++++++++++++
1 file changed, 166 insertions(+)
create mode 100644 arch/arm64/boot/dts/mediatek/mt6895.dtsi
diff --git a/arch/arm64/boot/dts/mediatek/mt6895.dtsi b/arch/arm64/boot/dts/mediatek/mt6895.dtsi
new file mode 100644
index 000000000000..c80f30da7bf9
--- /dev/null
+++ b/arch/arm64/boot/dts/mediatek/mt6895.dtsi
@@ -0,0 +1,166 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+ compatible = "mediatek,mt6895";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu-map {
+ cluster0 {
+ core0 {
+ cpu = <&cpu0>;
+ };
+
+ core1 {
+ cpu = <&cpu1>;
+ };
+
+ core2 {
+ cpu = <&cpu2>;
+ };
+
+ core3 {
+ cpu = <&cpu3>;
+ };
+
+ core4 {
+ cpu = <&cpu4>;
+ };
+
+ core5 {
+ cpu = <&cpu5>;
+ };
+
+ core6 {
+ cpu = <&cpu6>;
+ };
+
+ core7 {
+ cpu = <&cpu7>;
+ };
+ };
+ };
+
+ cpu0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x0>;
+ enable-method = "psci";
+ };
+
+ cpu1: cpu@100 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x100>;
+ enable-method = "psci";
+ };
+
+ cpu2: cpu@200 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x200>;
+ enable-method = "psci";
+ };
+
+ cpu3: cpu@300 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x300>;
+ enable-method = "psci";
+ };
+
+ cpu4: cpu@400 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a78";
+ reg = <0x400>;
+ enable-method = "psci";
+ };
+
+ cpu5: cpu@500 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a78";
+ reg = <0x500>;
+ enable-method = "psci";
+ };
+
+ cpu6: cpu@600 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a78";
+ reg = <0x600>;
+ enable-method = "psci";
+ };
+
+ cpu7: cpu@700 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a78";
+ reg = <0x700>;
+ enable-method = "psci";
+ };
+ };
+
+ clk26m: clock-26m {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <26000000>;
+ clock-output-names = "clk26m";
+ };
+
+ psci {
+ compatible = "arm,psci-1.0";
+ method = "smc";
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>,
+ <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>,
+ <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>,
+ <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>;
+ };
+
+ soc {
+ compatible = "simple-bus";
+ ranges;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ gic: interrupt-controller@c000000 {
+ compatible = "arm,gic-v3";
+ reg = <0 0x0c000000 0 0x40000>,
+ <0 0x0c040000 0 0x200000>;
+ #interrupt-cells = <4>;
+ interrupt-controller;
+ interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH 0>;
+ };
+
+ uart0: serial@11001000 {
+ compatible = "mediatek,mt6895-uart", "mediatek,mt6577-uart";
+ reg = <0 0x11001000 0 0x1000>;
+ interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH 0>;
+ clocks = <&clk26m>, <&clk26m>;
+ clock-names = "baud", "bus";
+ status = "disabled";
+ };
+
+ uart1: serial@11002000 {
+ compatible = "mediatek,mt6895-uart", "mediatek,mt6577-uart";
+ reg = <0 0x11002000 0 0x1000>;
+ interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH 0>;
+ clocks = <&clk26m>, <&clk26m>;
+ clock-names = "baud", "bus";
+ status = "disabled";
+ };
+
+ watchdog: watchdog@1c007000 {
+ compatible = "mediatek,mt6895-wdt", "mediatek,mt6589-wdt";
+ reg = <0 0x1c007000 0 0x100>;
+ };
+ };
+};
--
2.56.0
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 5/5] arm64: dts: mediatek: Add Xiaomi Poco X4 GT
2026-11-05 21:05 [PATCH 0/5] arm64: mediatek: Add initial MT6895 and Xiaomi Poco X4 GT support Alexander Letuchiy
` (3 preceding siblings ...)
2026-11-05 21:06 ` [PATCH 4/5] arm64: dts: mediatek: Add MT6895 SoC Alexander Letuchiy
@ 2026-11-05 21:06 ` Alexander Letuchiy
4 siblings, 0 replies; 8+ messages in thread
From: Alexander Letuchiy @ 2026-11-05 21:06 UTC (permalink / raw)
To: devicetree, linux-mediatek
Cc: linux-arm-kernel, Alexander Letuchiy, Matthias Brugger,
AngeloGioacchino Del Regno, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli,
linux-kernel
Add a device tree for the Xiaomi xaga board, which is sold as Xiaomi
Poco X4 GT, Redmi Note 11T Pro/Pro+ and Redmi K50i. It enables a serial
console on UART0.
The DT only describes the memory that Linux itself uses, which is the
ramoops region. The bootloader updates the /memory node and adds the
firmware carveouts to /reserved-memory, so their addresses are not
hardcoded here. This DT must not be booted with a bootloader that does
not do this, as Linux would then use memory owned by the firmware.
The ramoops zone sizes place the console zone at the offset where the
bootloader expects to find it.
Signed-off-by: Alexander Letuchiy <asalde.le1@gmail.com>
---
arch/arm64/boot/dts/mediatek/Makefile | 1 +
.../boot/dts/mediatek/mt6895-xiaomi-xaga.dts | 46 +++++++++++++++++++
2 files changed, 47 insertions(+)
create mode 100644 arch/arm64/boot/dts/mediatek/mt6895-xiaomi-xaga.dts
diff --git a/arch/arm64/boot/dts/mediatek/Makefile b/arch/arm64/boot/dts/mediatek/Makefile
index a86fb313b1a9..d73489149ab5 100644
--- a/arch/arm64/boot/dts/mediatek/Makefile
+++ b/arch/arm64/boot/dts/mediatek/Makefile
@@ -6,6 +6,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt6795-evb.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt6795-sony-xperia-m5.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt6797-evb.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt6797-x20-dev.dtb
+dtb-$(CONFIG_ARCH_MEDIATEK) += mt6895-xiaomi-xaga.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt7622-rfb1.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt7622-bananapi-bpi-r64.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt7981b-cudy-wr3000-v1.dtb
diff --git a/arch/arm64/boot/dts/mediatek/mt6895-xiaomi-xaga.dts b/arch/arm64/boot/dts/mediatek/mt6895-xiaomi-xaga.dts
new file mode 100644
index 000000000000..f53425c536c3
--- /dev/null
+++ b/arch/arm64/boot/dts/mediatek/mt6895-xiaomi-xaga.dts
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+#include "mt6895.dtsi"
+
+/ {
+ model = "Xiaomi Poco X4 GT";
+ compatible = "xiaomi,xaga", "mediatek,mt6895";
+ chassis-type = "handset";
+
+ aliases {
+ serial0 = &uart0;
+ };
+
+ chosen {
+ stdout-path = "serial0:921600n8";
+ };
+
+ memory@40000000 {
+ device_type = "memory";
+ /* The size is updated by the bootloader. */
+ reg = <0x0 0x40000000 0x2 0x0>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ /* The firmware carveouts are added by the bootloader. */
+
+ ramoops@48090000 {
+ compatible = "ramoops";
+ reg = <0 0x48090000 0 0xe0000>;
+ no-map;
+ record-size = <0x10000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x10000>;
+ pmsg-size = <0x10000>;
+ };
+ };
+};
+
+&uart0 {
+ status = "okay";
+};
--
2.56.0
^ permalink raw reply [flat|nested] 8+ messages in thread