summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-10-01 13:47:57 +0100
committerMark Brown <broonie@kernel.org>2026-10-01 13:47:57 +0100
commita49f7694b692e28c6fcba8f8ef3fb594357c13a7 (patch)
tree758a61d13dac4534760207cb3dfa50622782f7d9
parent5430e31c1ad979ccb668e821ec7d56815f17c06f (diff)
parent4bfec57314396c8c816ee78f4803987882b668a7 (diff)
downloadlinux-next-a49f7694b692e28c6fcba8f8ef3fb594357c13a7.tar.gz
linux-next-a49f7694b692e28c6fcba8f8ef3fb594357c13a7.zip
Merge branch 'for-next' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux.git
-rw-r--r--Documentation/devicetree/bindings/arm/mediatek.yaml1
-rw-r--r--arch/arm/boot/dts/mediatek/Makefile1
-rw-r--r--arch/arm/boot/dts/mediatek/mt8127-amazon-ford.dts54
-rw-r--r--arch/arm/boot/dts/mediatek/mt8127.dtsi7
-rw-r--r--arch/arm64/boot/dts/mediatek/mt6878-pinfunc.h2
-rw-r--r--arch/arm64/boot/dts/mediatek/mt6893-pinfunc.h2
-rw-r--r--arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts13
-rw-r--r--arch/arm64/boot/dts/mediatek/mt7986a.dtsi1
-rw-r--r--arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn13.dtso1
-rw-r--r--arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn14.dtso1
-rw-r--r--arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn15.dtso1
-rw-r--r--arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn18.dtso1
-rw-r--r--arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro.dtsi18
-rw-r--r--arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi13
-rw-r--r--arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi5
-rw-r--r--arch/arm64/boot/dts/mediatek/mt8173.dtsi35
-rw-r--r--arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi5
-rw-r--r--arch/arm64/boot/dts/mediatek/mt8186-corsola.dtsi5
-rw-r--r--arch/arm64/boot/dts/mediatek/mt8188-geralt.dtsi7
-rw-r--r--arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi5
-rw-r--r--arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi5
-rw-r--r--drivers/soc/mediatek/mt8167-mmsys.h183
-rw-r--r--drivers/soc/mediatek/mtk-regulator-coupler.c1
23 files changed, 353 insertions, 14 deletions
diff --git a/Documentation/devicetree/bindings/arm/mediatek.yaml b/Documentation/devicetree/bindings/arm/mediatek.yaml
index cd4040ad3437..180e6e4948e7 100644
--- a/Documentation/devicetree/bindings/arm/mediatek.yaml
+++ b/Documentation/devicetree/bindings/arm/mediatek.yaml
@@ -122,6 +122,7 @@ properties:
- const: mediatek,mt7988a
- items:
- enum:
+ - amazon,ford
- mediatek,mt8127-moose
- const: mediatek,mt8127
- items:
diff --git a/arch/arm/boot/dts/mediatek/Makefile b/arch/arm/boot/dts/mediatek/Makefile
index 37c4cded0eae..a610bc75c7d9 100644
--- a/arch/arm/boot/dts/mediatek/Makefile
+++ b/arch/arm/boot/dts/mediatek/Makefile
@@ -14,5 +14,6 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
mt7623n-rfb-emmc.dtb \
mt7623n-bananapi-bpi-r2.dtb \
mt7629-rfb.dtb \
+ mt8127-amazon-ford.dtb \
mt8127-moose.dtb \
mt8135-evbp1.dtb
diff --git a/arch/arm/boot/dts/mediatek/mt8127-amazon-ford.dts b/arch/arm/boot/dts/mediatek/mt8127-amazon-ford.dts
new file mode 100644
index 000000000000..4b138e832795
--- /dev/null
+++ b/arch/arm/boot/dts/mediatek/mt8127-amazon-ford.dts
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: GPL-2.0
+
+/dts-v1/;
+#include "mt8127.dtsi"
+
+/ {
+ model = "Amazon Fire 7 2015 (Ford)";
+ compatible = "amazon,ford", "mediatek,mt8127";
+ chassis-type = "tablet";
+
+ aliases {
+ serial0 = &uart0;
+ };
+
+ chosen {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+ stdout-path = "serial0:921600n8";
+
+ framebuffer0: framebuffer@b7a00000 {
+ compatible = "simple-framebuffer";
+ memory-region = <&framebuffer_reserved>;
+ width = <1024>;
+ height = <600>;
+ stride = <(1024 * 2)>;
+ format = "r5g6b5";
+ };
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0 0x80000000 0 0x40000000>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ framebuffer_reserved: framebuffer@b7a00000 {
+ reg = <0 0xb7a00000 0 0x1000000>;
+ no-map;
+ };
+ };
+};
+
+&uart0 {
+ status = "okay";
+};
+
+&watchdog {
+ status = "okay";
+};
diff --git a/arch/arm/boot/dts/mediatek/mt8127.dtsi b/arch/arm/boot/dts/mediatek/mt8127.dtsi
index bd61ec7e70c0..9bdf55d2da47 100644
--- a/arch/arm/boot/dts/mediatek/mt8127.dtsi
+++ b/arch/arm/boot/dts/mediatek/mt8127.dtsi
@@ -99,6 +99,13 @@
compatible = "simple-bus";
ranges;
+ watchdog: watchdog@10007000 {
+ compatible = "mediatek,mt8127-wdt", "mediatek,mt6589-wdt";
+ reg = <0 0x10007000 0 0x100>;
+ interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_LOW>;
+ status = "disabled";
+ };
+
timer: timer@10008000 {
compatible = "mediatek,mt8127-timer",
"mediatek,mt6577-timer";
diff --git a/arch/arm64/boot/dts/mediatek/mt6878-pinfunc.h b/arch/arm64/boot/dts/mediatek/mt6878-pinfunc.h
index 4e8e475a7454..5aeceb904b18 100644
--- a/arch/arm64/boot/dts/mediatek/mt6878-pinfunc.h
+++ b/arch/arm64/boot/dts/mediatek/mt6878-pinfunc.h
@@ -9,7 +9,7 @@
#ifndef __MT6878_PINFUNC_H
#define __MT6878_PINFUNC_H
-#include "mt65xx.h"
+#include <dt-bindings/pinctrl/mt65xx.h>
#define PINMUX_GPIO0__FUNC_GPIO0 (MTK_PIN_NO(0) | 0)
#define PINMUX_GPIO0__FUNC_TP_GPIO0_AO (MTK_PIN_NO(0) | 1)
diff --git a/arch/arm64/boot/dts/mediatek/mt6893-pinfunc.h b/arch/arm64/boot/dts/mediatek/mt6893-pinfunc.h
index 982bc95c471c..7cda5c73fb68 100644
--- a/arch/arm64/boot/dts/mediatek/mt6893-pinfunc.h
+++ b/arch/arm64/boot/dts/mediatek/mt6893-pinfunc.h
@@ -7,7 +7,7 @@
#ifndef __MT6893_PINFUNC_H
#define __MT6893_PINFUNC_H
-#include "mt65xx.h"
+#include <dt-bindings/pinctrl/mt65xx.h>
#define PINMUX_GPIO0__FUNC_GPIO0 (MTK_PIN_NO(0) | 0)
#define PINMUX_GPIO0__FUNC_SPI6_CLK (MTK_PIN_NO(0) | 1)
diff --git a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts
index 637e5567c1e0..70c693fd0c52 100644
--- a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts
+++ b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts
@@ -140,6 +140,19 @@
tx-disable-gpios = <&pio 15 GPIO_ACTIVE_HIGH>;
tx-fault-gpios = <&pio 48 GPIO_ACTIVE_HIGH>;
};
+
+ reserved-memory {
+ ramoops@42ff0000 {
+ compatible = "ramoops";
+ reg = <0 0x42ff0000 0 0x10000>;
+ no-map;
+ record-size = <0x2000>;
+ console-size = <0x8000>;
+ ftrace-size = <0x2000>;
+ pmsg-size = <0x2000>;
+ ecc-size = <16>;
+ };
+ };
};
&cpu_thermal {
diff --git a/arch/arm64/boot/dts/mediatek/mt7986a.dtsi b/arch/arm64/boot/dts/mediatek/mt7986a.dtsi
index 9ebc196107e5..318639a7c64e 100644
--- a/arch/arm64/boot/dts/mediatek/mt7986a.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt7986a.dtsi
@@ -657,6 +657,7 @@
timer {
compatible = "arm,armv8-timer";
interrupt-parent = <&gic>;
+ clock-frequency = <12986200>;
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
diff --git a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn13.dtso b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn13.dtso
index 973b76ba0cbf..e9c322df15fc 100644
--- a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn13.dtso
+++ b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn13.dtso
@@ -16,5 +16,6 @@
};
&{/soc/pinctrl@1001f000/pcie-2-hog} {
+ line-name = "pcie2-cn13-hog";
output-high;
};
diff --git a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn14.dtso b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn14.dtso
index 90b2a64459c3..9d8de737ca40 100644
--- a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn14.dtso
+++ b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn14.dtso
@@ -16,5 +16,6 @@
};
&{/soc/pinctrl@1001f000/pcie-3-hog} {
+ line-name = "pcie3-cn14-hog";
output-high;
};
diff --git a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn15.dtso b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn15.dtso
index 9750916042de..57ee7dacdd78 100644
--- a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn15.dtso
+++ b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn15.dtso
@@ -16,5 +16,6 @@
};
&{/soc/pinctrl@1001f000/pcie-2-hog} {
+ line-name = "pcie2-cn15-hog";
output-low;
};
diff --git a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn18.dtso b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn18.dtso
index 9830fb0fd97a..7830980ac95a 100644
--- a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn18.dtso
+++ b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro-cn18.dtso
@@ -16,5 +16,6 @@
};
&{/soc/pinctrl@1001f000/pcie-3-hog} {
+ line-name = "pcie3-cn18-hog";
output-low;
};
diff --git a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro.dtsi b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro.dtsi
index 1eeb72108b9b..f54787fbbc71 100644
--- a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-pro.dtsi
@@ -315,6 +315,24 @@
reg = <0x20>;
gpio-controller;
#gpio-cells = <2>;
+
+ gpio-line-names =
+ "BKEY-A-PDN", /* GPIO0 */
+ "BKEY-A-Vset", /* GPIO1 */
+ "BKEY-B-PDN", /* GPIO2 */
+ "BKEY-B-Vset", /* GPIO3 */
+ "BKEY-C-PDN", /* GPIO4 */
+ "BKEY-C-Vset", /* GPIO5 */
+ "SIM_SEL", /* GPIO6 */
+ "mPCIe_AB_Vset",/* GPIO7 */
+ "mPCIe_A_PDN", /* GPIO8 */
+ "mPCIe_B_PDN", /* GPIO9 */
+ "BKEY-A-RST", /* GPIO10 */
+ "VBUS_AB_PDN", /* GPIO11 */
+ "BKEY-B-RST", /* GPIO12 */
+ "BKEY-C-RST", /* GPIO13 */
+ "SYS_LEDB", /* GPIO14 */
+ "SYS_LEDR"; /* GPIO15 */
};
rtc@51 {
diff --git a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi
index 0ff69dae45d3..75f59407794f 100644
--- a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi
@@ -66,6 +66,19 @@
regulator-always-on;
};
+ reserved-memory {
+ ramoops@42f00000 {
+ compatible = "ramoops";
+ reg = <0 0x42f00000 0 0x100000>;
+ no-map;
+ record-size = <0x20000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x10000>;
+ pmsg-size = <0x10000>;
+ ecc-size = <16>;
+ };
+ };
+
/* SFP1 cage (WAN) */
sfp1: sfp1 {
compatible = "sff,sfp";
diff --git a/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi b/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
index a0573bc359fb..777da2129e77 100644
--- a/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
@@ -16,6 +16,11 @@
mmc2 = &mmc3;
};
+ firmware {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ };
+
memory@40000000 {
device_type = "memory";
reg = <0 0x40000000 0 0x80000000>;
diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
index 78c2ccd5be13..66e68702732d 100644
--- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
@@ -505,7 +505,7 @@
};
mfg_async: power-domain@MT8173_POWER_DOMAIN_MFG_ASYNC {
reg = <MT8173_POWER_DOMAIN_MFG_ASYNC>;
- clocks = <&clk26m>;
+ clocks = <&topckgen CLK_TOP_AXI_MFG_IN_SEL>;
clock-names = "mfg";
#address-cells = <1>;
#size-cells = <0>;
@@ -1002,6 +1002,37 @@
};
};
+ gpu: gpu@13000000 {
+ compatible = "mediatek,mt8173-gpu", "img,img-gx6250",
+ "img,img-rogue";
+ reg = <0 0x13000000 0 0x10000>;
+ interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_LOW>;
+ clocks = <&mfgtop CLK_MFG_G3D>,
+ <&mfgtop CLK_MFG_MEM>,
+ <&mfgtop CLK_MFG_AXI>;
+ clock-names = "core", "mem", "sys";
+ /*
+ * Binding and GPU core HW have two power domain
+ * inputs, but MediaTek does not have information
+ * on how this is done internally.
+ */
+ power-domains = <&mfgtop>, <&mfgtop>;
+ power-domain-names = "a", "b";
+ };
+
+ mfgtop: clock-controller@13fff000 {
+ compatible = "mediatek,mt8173-mfgtop";
+ reg = <0 0x13fff000 0 0x1000>;
+ clocks = <&topckgen CLK_TOP_AXI_MFG_IN_SEL>,
+ <&topckgen CLK_TOP_MEM_MFG_IN_SEL>,
+ <&topckgen CLK_TOP_MFG_SEL>,
+ <&clk26m>;
+ clock-names = "sys", "mem", "core", "clk26m";
+ power-domains = <&spm MT8173_POWER_DOMAIN_MFG>;
+ #clock-cells = <1>;
+ #power-domain-cells = <0>;
+ };
+
mmsys: syscon@14000000 {
compatible = "mediatek,mt8173-mmsys", "syscon";
reg = <0 0x14000000 0 0x1000>;
@@ -1291,7 +1322,7 @@
clocks = <&mmsys CLK_MM_MUTEX_32K>;
mediatek,gce-client-reg = <&gce SUBSYS_1402XXXX 0 0x1000>;
mediatek,gce-events = <CMDQ_EVENT_MUTEX0_STREAM_EOF>,
- <CMDQ_EVENT_MUTEX1_STREAM_EOF>;
+ <CMDQ_EVENT_MUTEX1_STREAM_EOF>;
};
larb0: larb@14021000 {
diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
index 69cab9f9c530..acd5f59b0d4c 100644
--- a/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
@@ -22,6 +22,11 @@
stdout-path = "serial0:115200n8";
};
+ firmware {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ };
+
backlight_lcd0: backlight_lcd0 {
compatible = "pwm-backlight";
pwms = <&pwm0 0 500000>;
diff --git a/arch/arm64/boot/dts/mediatek/mt8186-corsola.dtsi b/arch/arm64/boot/dts/mediatek/mt8186-corsola.dtsi
index ff20376a44d7..2b327d9ef65e 100644
--- a/arch/arm64/boot/dts/mediatek/mt8186-corsola.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8186-corsola.dtsi
@@ -26,6 +26,11 @@
stdout-path = "serial0:115200n8";
};
+ firmware {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ };
+
memory@40000000 {
device_type = "memory";
/* The size should be filled in by the bootloader. */
diff --git a/arch/arm64/boot/dts/mediatek/mt8188-geralt.dtsi b/arch/arm64/boot/dts/mediatek/mt8188-geralt.dtsi
index f382f90c48f5..801eee735afe 100644
--- a/arch/arm64/boot/dts/mediatek/mt8188-geralt.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8188-geralt.dtsi
@@ -41,6 +41,11 @@
wakeup-delay-ms = <100>;
};
+ firmware {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ };
+
memory@40000000 {
device_type = "memory";
/* The size will be filled in by the bootloader */
@@ -166,7 +171,7 @@
scp_mem_reserved: memory@50000000 {
compatible = "shared-dma-pool";
- reg = <0 0x50000000 0 0x800000>;
+ reg = <0 0x50000000 0 0x900000>;
no-map;
};
diff --git a/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi b/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
index 40d34b16dc80..e8ebbb74987f 100644
--- a/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi
@@ -25,6 +25,11 @@
stdout-path = "serial0:115200n8";
};
+ firmware {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ };
+
memory@40000000 {
device_type = "memory";
reg = <0 0x40000000 0 0x80000000>;
diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
index ef7afc436aef..f06ca2bc165d 100644
--- a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
@@ -42,6 +42,11 @@
wakeup-delay-ms = <50>;
};
+ firmware {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ };
+
memory@40000000 {
device_type = "memory";
reg = <0 0x40000000 0 0x80000000>;
diff --git a/drivers/soc/mediatek/mt8167-mmsys.h b/drivers/soc/mediatek/mt8167-mmsys.h
index 001379373507..858779ace895 100644
--- a/drivers/soc/mediatek/mt8167-mmsys.h
+++ b/drivers/soc/mediatek/mt8167-mmsys.h
@@ -5,35 +5,200 @@
#define MT8167_DISP_REG_CONFIG_DISP_OVL0_MOUT_EN 0x030
#define MT8167_DISP_REG_CONFIG_DISP_DITHER_MOUT_EN 0x038
+#define MT8167_DISP_REG_CONFIG_DISP_UFOE_MOUT_EN 0x03c
#define MT8167_DISP_REG_CONFIG_DISP_COLOR0_SEL_IN 0x058
+#define MT8167_DISP_REG_CONFIG_DISP_WDMA0_SEL_IN 0x05c
+#define MT8167_DISP_REG_CONFIG_DISP_UFOE_SEL_IN 0x060
#define MT8167_DISP_REG_CONFIG_DISP_DSI0_SEL_IN 0x064
+#define MT8167_DISP_REG_CONFIG_DISP_DPI0_SEL_IN 0x068
#define MT8167_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN 0x06c
+#define MT8167_DISP_REG_CONFIG_DISP_RDMA1_SOUT_SEL_IN 0x070
+#define MT8167_DISP_REG_CONFIG_DISP_DPI1_SEL_IN 0x074
+
+#define MT8167_OVL0_MOUT_EN_COLOR0 0x1
+#define MT8167_OVL0_MOUT_EN_WDMA0 0x2
+#define MT8167_OVL0_MOUT_EN_MASK 0x3
#define MT8167_DITHER_MOUT_EN_RDMA0 0x1
+#define MT8167_DITHER_MOUT_EN_UFOE 0x2
+#define MT8167_DITHER_MOUT_EN_WDMA0 0x4
#define MT8167_DITHER_MOUT_EN_MASK 0x7
-#define MT8167_RDMA0_SOUT_DSI0 0x2
-#define MT8167_RDMA0_SOUT_MASK 0x3
+#define MT8167_UFOE_MOUT_EN_DSI0 0x1
+#define MT8167_UFOE_MOUT_EN_DPI0 0x2
+/*
+ * For some reason Android sources and the data sheet don't agree here,
+ * the data sheet has UFOE_MOUT_EN_WDMA0 as 0x4 and does not mention DPI1.
+ */
+#define MT8167_UFOE_MOUT_EN_DPI1 0x4
+#define MT8167_UFOE_MOUT_EN_WDMA0 0x8
+#define MT8167_UFOE_MOUT_EN_MASK 0xF
+
+#define MT8167_COLOR0_SEL_IN_RDMA0 0x0
+#define MT8167_COLOR0_SEL_IN_OVL0 0x1
+#define MT8167_COLOR0_SEL_IN_MASK 0x1
+
+#define MT8167_WDMA0_SEL_IN_OVL0 0x0
+#define MT8167_WDMA0_SEL_IN_DITHER 0x1
+#define MT8167_WDMA0_SEL_IN_UFOE 0x2
+#define MT8167_WDMA0_SEL_IN_MASK 0x3
+
+#define MT8167_UFOE_SEL_IN_RDMA0 0x0
+#define MT8167_UFOE_SEL_IN_DITHER 0x1
+#define MT8167_UFOE_SEL_IN_MASK 0x1
+#define MT8167_DSI0_SEL_IN_UFOE 0x0
#define MT8167_DSI0_SEL_IN_RDMA0 0x1
+#define MT8167_DSI0_SEL_IN_RDMA1 0x2
#define MT8167_DSI0_SEL_IN_MASK 0x3
+#define MT8167_DPI0_SEL_IN_UFOE 0x0
+#define MT8167_DPI0_SEL_IN_RDMA0 0x1
+#define MT8167_DPI0_SEL_IN_RDMA1 0x2
+#define MT8167_DPI0_SEL_IN_MASK 0x3
+
+#define MT8167_DPI1_SEL_IN_UFOE 0x0
+#define MT8167_DPI1_SEL_IN_RDMA0 0x1
+#define MT8167_DPI1_SEL_IN_RDMA1 0x2
+#define MT8167_DPI1_SEL_IN_MASK 0x3
+
+#define MT8167_RDMA0_SOUT_UFOE 0x0
+#define MT8167_RDMA0_SOUT_COLOR0 0x1
+#define MT8167_RDMA0_SOUT_DSI0 0x2
+#define MT8167_RDMA0_SOUT_DPI0 0x3
+/* DPI1 is only defined in Android sources, not in the data sheet */
+#define MT8167_RDMA0_SOUT_DPI1 0x4
+#define MT8167_RDMA0_SOUT_MASK 0x7
+
+#define MT8167_RDMA1_SOUT_DSI0 0x0
+#define MT8167_RDMA1_SOUT_DPI0 0x1
+/* DPI1 is only defined in Android sources, not in the data sheet */
+#define MT8167_RDMA1_SOUT_DPI1 0x2
+#define MT8167_RDMA1_SOUT_MASK 0x3
+
static const struct mtk_mmsys_routes mt8167_mmsys_routing_table[] = {
+ /* OVL0<->COLOR0 */
MMSYS_ROUTE(OVL, 0, COLOR, 0,
- MT8167_DISP_REG_CONFIG_DISP_OVL0_MOUT_EN, OVL0_MOUT_EN_COLOR0,
- OVL0_MOUT_EN_COLOR0),
+ MT8167_DISP_REG_CONFIG_DISP_OVL0_MOUT_EN, MT8167_OVL0_MOUT_EN_MASK,
+ MT8167_OVL0_MOUT_EN_COLOR0),
+ MMSYS_ROUTE(OVL, 0, COLOR, 0,
+ MT8167_DISP_REG_CONFIG_DISP_COLOR0_SEL_IN, MT8167_COLOR0_SEL_IN_MASK,
+ MT8167_COLOR0_SEL_IN_OVL0),
+
+ /* OVL0<->WDMA0 */
+ MMSYS_ROUTE(OVL, 0, WDMA, 0,
+ MT8167_DISP_REG_CONFIG_DISP_OVL0_MOUT_EN, MT8167_OVL0_MOUT_EN_MASK,
+ MT8167_OVL0_MOUT_EN_WDMA0),
+ MMSYS_ROUTE(OVL, 0, WDMA, 0,
+ MT8167_DISP_REG_CONFIG_DISP_WDMA0_SEL_IN, MT8167_COLOR0_SEL_IN_MASK,
+ MT8167_WDMA0_SEL_IN_OVL0),
+
+ /* DITHER0 outputs */
MMSYS_ROUTE(DITHER, 0, RDMA, 0,
MT8167_DISP_REG_CONFIG_DISP_DITHER_MOUT_EN, MT8167_DITHER_MOUT_EN_MASK,
MT8167_DITHER_MOUT_EN_RDMA0),
- MMSYS_ROUTE(OVL, 0, COLOR, 0,
- MT8167_DISP_REG_CONFIG_DISP_COLOR0_SEL_IN, COLOR0_SEL_IN_OVL0,
- COLOR0_SEL_IN_OVL0),
- MMSYS_ROUTE(RDMA, 0, DSI, 0,
+ MMSYS_ROUTE(DITHER, 0, UFOE, 0,
+ MT8167_DISP_REG_CONFIG_DISP_DITHER_MOUT_EN, MT8167_DITHER_MOUT_EN_MASK,
+ MT8167_DITHER_MOUT_EN_UFOE),
+ MMSYS_ROUTE(DITHER, 0, WDMA, 0,
+ MT8167_DISP_REG_CONFIG_DISP_DITHER_MOUT_EN, MT8167_DITHER_MOUT_EN_MASK,
+ MT8167_DITHER_MOUT_EN_WDMA0),
+
+ /* UFOE<->DSI0 */
+ MMSYS_ROUTE(UFOE, 0, DSI, 0,
+ MT8167_DISP_REG_CONFIG_DISP_UFOE_MOUT_EN, MT8167_UFOE_MOUT_EN_MASK,
+ MT8167_UFOE_MOUT_EN_DSI0),
+ MMSYS_ROUTE(UFOE, 0, DSI, 0,
MT8167_DISP_REG_CONFIG_DISP_DSI0_SEL_IN, MT8167_DSI0_SEL_IN_MASK,
- MT8167_DSI0_SEL_IN_RDMA0),
+ MT8167_DSI0_SEL_IN_UFOE),
+
+ /* UFOE<->DPI0 */
+ MMSYS_ROUTE(UFOE, 0, DPI, 0,
+ MT8167_DISP_REG_CONFIG_DISP_UFOE_MOUT_EN, MT8167_UFOE_MOUT_EN_MASK,
+ MT8167_UFOE_MOUT_EN_DPI0),
+ MMSYS_ROUTE(UFOE, 0, DPI, 0,
+ MT8167_DISP_REG_CONFIG_DISP_DPI0_SEL_IN, MT8167_DPI0_SEL_IN_MASK,
+ MT8167_DPI0_SEL_IN_UFOE),
+
+ /* UFOE<->DPI1 */
+ MMSYS_ROUTE(UFOE, 0, DPI, 1,
+ MT8167_DISP_REG_CONFIG_DISP_UFOE_MOUT_EN, MT8167_UFOE_MOUT_EN_MASK,
+ MT8167_UFOE_MOUT_EN_DPI1),
+ MMSYS_ROUTE(UFOE, 0, DPI, 1,
+ MT8167_DISP_REG_CONFIG_DISP_DPI1_SEL_IN, MT8167_DPI1_SEL_IN_MASK,
+ MT8167_DPI1_SEL_IN_UFOE),
+
+ /* UFOE<->WDMA0 */
+ MMSYS_ROUTE(UFOE, 0, WDMA, 0,
+ MT8167_DISP_REG_CONFIG_DISP_UFOE_MOUT_EN, MT8167_UFOE_MOUT_EN_MASK,
+ MT8167_UFOE_MOUT_EN_WDMA0),
+ MMSYS_ROUTE(UFOE, 0, WDMA, 0,
+ MT8167_DISP_REG_CONFIG_DISP_WDMA0_SEL_IN, MT8167_WDMA0_SEL_IN_MASK,
+ MT8167_WDMA0_SEL_IN_UFOE),
+
+ /* RDMA0<->UFOE */
+ MMSYS_ROUTE(RDMA, 0, UFOE, 0,
+ MT8167_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN, MT8167_RDMA0_SOUT_MASK,
+ MT8167_RDMA0_SOUT_UFOE),
+ MMSYS_ROUTE(RDMA, 0, UFOE, 0,
+ MT8167_DISP_REG_CONFIG_DISP_UFOE_SEL_IN, MT8167_UFOE_SEL_IN_MASK,
+ MT8167_UFOE_SEL_IN_RDMA0),
+
+ /* RDMA0->COLOR0 */
+ MMSYS_ROUTE(RDMA, 0, COLOR, 0,
+ MT8167_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN, MT8167_RDMA0_SOUT_MASK,
+ MT8167_RDMA0_SOUT_COLOR0),
+ MMSYS_ROUTE(RDMA, 0, COLOR, 0,
+ MT8167_DISP_REG_CONFIG_DISP_COLOR0_SEL_IN, MT8167_COLOR0_SEL_IN_MASK,
+ MT8167_COLOR0_SEL_IN_RDMA0),
+
+ /* RDMA0<->DSI0 */
MMSYS_ROUTE(RDMA, 0, DSI, 0,
MT8167_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN, MT8167_RDMA0_SOUT_MASK,
MT8167_RDMA0_SOUT_DSI0),
+ MMSYS_ROUTE(RDMA, 0, DSI, 0,
+ MT8167_DISP_REG_CONFIG_DISP_DSI0_SEL_IN, MT8167_DSI0_SEL_IN_MASK,
+ MT8167_DSI0_SEL_IN_RDMA0),
+
+ /* RDMA0<->DPI0 */
+ MMSYS_ROUTE(RDMA, 0, DPI, 0,
+ MT8167_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN, MT8167_RDMA0_SOUT_MASK,
+ MT8167_RDMA0_SOUT_DPI0),
+ MMSYS_ROUTE(RDMA, 0, DPI, 0,
+ MT8167_DISP_REG_CONFIG_DISP_DPI0_SEL_IN, MT8167_DPI0_SEL_IN_MASK,
+ MT8167_DPI0_SEL_IN_RDMA0),
+
+ /* RDMA0<->DPI1 */
+ MMSYS_ROUTE(RDMA, 0, DPI, 1,
+ MT8167_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN, MT8167_RDMA0_SOUT_MASK,
+ MT8167_RDMA0_SOUT_DPI1),
+ MMSYS_ROUTE(RDMA, 0, DPI, 1,
+ MT8167_DISP_REG_CONFIG_DISP_DPI1_SEL_IN, MT8167_DPI1_SEL_IN_MASK,
+ MT8167_DPI1_SEL_IN_RDMA0),
+
+ /* RDMA1<->DSI0 */
+ MMSYS_ROUTE(RDMA, 1, DSI, 0,
+ MT8167_DISP_REG_CONFIG_DISP_RDMA1_SOUT_SEL_IN, MT8167_RDMA1_SOUT_MASK,
+ MT8167_RDMA1_SOUT_DSI0),
+ MMSYS_ROUTE(RDMA, 1, DSI, 0,
+ MT8167_DISP_REG_CONFIG_DISP_DSI0_SEL_IN, MT8167_DSI0_SEL_IN_MASK,
+ MT8167_DSI0_SEL_IN_RDMA1),
+
+ /* RDMA1<->DPI0 */
+ MMSYS_ROUTE(RDMA, 1, DPI, 0,
+ MT8167_DISP_REG_CONFIG_DISP_RDMA1_SOUT_SEL_IN, MT8167_RDMA1_SOUT_MASK,
+ MT8167_RDMA1_SOUT_DPI0),
+ MMSYS_ROUTE(RDMA, 1, DPI, 0,
+ MT8167_DISP_REG_CONFIG_DISP_DPI0_SEL_IN, MT8167_DPI0_SEL_IN_MASK,
+ MT8167_DPI0_SEL_IN_RDMA1),
+
+ /* RDMA1<->DPI1 */
+ MMSYS_ROUTE(RDMA, 1, DPI, 1,
+ MT8167_DISP_REG_CONFIG_DISP_RDMA1_SOUT_SEL_IN, MT8167_RDMA1_SOUT_MASK,
+ MT8167_RDMA1_SOUT_DPI1),
+ MMSYS_ROUTE(RDMA, 1, DPI, 1,
+ MT8167_DISP_REG_CONFIG_DISP_DPI1_SEL_IN, MT8167_DPI1_SEL_IN_MASK,
+ MT8167_DPI1_SEL_IN_RDMA1),
};
#endif /* __SOC_MEDIATEK_MT8167_MMSYS_H */
diff --git a/drivers/soc/mediatek/mtk-regulator-coupler.c b/drivers/soc/mediatek/mtk-regulator-coupler.c
index 0b6a2884145e..1109e3d9a319 100644
--- a/drivers/soc/mediatek/mtk-regulator-coupler.c
+++ b/drivers/soc/mediatek/mtk-regulator-coupler.c
@@ -148,6 +148,7 @@ static int mediatek_regulator_coupler_init(void)
if (!of_machine_is_compatible("mediatek,mt8183") &&
!of_machine_is_compatible("mediatek,mt8186") &&
!of_machine_is_compatible("mediatek,mt8188") &&
+ !of_machine_is_compatible("mediatek,mt8189") &&
!of_machine_is_compatible("mediatek,mt8192"))
return 0;