]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mailbox: mtk-cmdq: Add driver data to support for MT8196
authorJason-JH Lin <jason-jh.lin@mediatek.com>
Fri, 31 Oct 2025 15:56:33 +0000 (23:56 +0800)
committerAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Mon, 19 Jan 2026 11:57:45 +0000 (12:57 +0100)
MT8196 has 2 new hardware configuration compared with the previous SoC,
which correspond to the 2 new driver data:

1. mminfra_offset: For GCE data path control
   Since GCE has been moved into mminfra, GCE needs to append the
   mminfra offset to the DRAM address when accessing the DRAM.

2. gce_vm: For GCE hardware virtualization control
   Currently, the first version of the mt8196 mailbox controller only
   requires setting the VM-related registers to enable the permissions
   of a host VM.

Signed-off-by: Jason-JH Lin <jason-jh.lin@mediatek.com>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
Acked-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
drivers/mailbox/mtk-cmdq-mailbox.c

index a9c06e4bbad4d260eaaab5b9646ef52d3873df8c..1bf6984948ef13eb3e7ef02197d3463b4353637a 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
+#include <linux/sizes.h>
 #include <linux/mailbox_controller.h>
 #include <linux/mailbox/mtk-cmdq-mailbox.h>
 #include <linux/of.h>
@@ -840,6 +841,16 @@ static const struct gce_plat gce_plat_mt8195 = {
        .gce_num = 2
 };
 
+static const struct gce_plat gce_plat_mt8196 = {
+       .thread_nr = 32,
+       .shift = 3,
+       .mminfra_offset = SZ_2G,
+       .control_by_sw = true,
+       .sw_ddr_en = true,
+       .gce_vm = true,
+       .gce_num = 2
+};
+
 static const struct of_device_id cmdq_of_ids[] = {
        {.compatible = "mediatek,mt6779-gce", .data = (void *)&gce_plat_mt6779},
        {.compatible = "mediatek,mt8173-gce", .data = (void *)&gce_plat_mt8173},
@@ -848,6 +859,7 @@ static const struct of_device_id cmdq_of_ids[] = {
        {.compatible = "mediatek,mt8188-gce", .data = (void *)&gce_plat_mt8188},
        {.compatible = "mediatek,mt8192-gce", .data = (void *)&gce_plat_mt8192},
        {.compatible = "mediatek,mt8195-gce", .data = (void *)&gce_plat_mt8195},
+       {.compatible = "mediatek,mt8196-gce", .data = (void *)&gce_plat_mt8196},
        {}
 };
 MODULE_DEVICE_TABLE(of, cmdq_of_ids);