Merge tag 'for-linus-5.11-ofs1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / drivers / memory / mtk-smi.c
index c212625..ac350f8 100644 (file)
@@ -19,6 +19,9 @@
 /* mt8173 */
 #define SMI_LARB_MMU_EN                0xf00
 
+/* mt8167 */
+#define MT8167_SMI_LARB_MMU_EN 0xfc0
+
 /* mt2701 */
 #define REG_SMI_SECUR_CON_BASE         0x5c0
 
@@ -179,6 +182,13 @@ static void mtk_smi_larb_config_port_mt8173(struct device *dev)
        writel(*larb->mmu, larb->base + SMI_LARB_MMU_EN);
 }
 
+static void mtk_smi_larb_config_port_mt8167(struct device *dev)
+{
+       struct mtk_smi_larb *larb = dev_get_drvdata(dev);
+
+       writel(*larb->mmu, larb->base + MT8167_SMI_LARB_MMU_EN);
+}
+
 static void mtk_smi_larb_config_port_gen1(struct device *dev)
 {
        struct mtk_smi_larb *larb = dev_get_drvdata(dev);
@@ -226,6 +236,11 @@ static const struct mtk_smi_larb_gen mtk_smi_larb_mt8173 = {
        .config_port = mtk_smi_larb_config_port_mt8173,
 };
 
+static const struct mtk_smi_larb_gen mtk_smi_larb_mt8167 = {
+       /* mt8167 do not need the port in larb */
+       .config_port = mtk_smi_larb_config_port_mt8167,
+};
+
 static const struct mtk_smi_larb_gen mtk_smi_larb_mt2701 = {
        .port_in_larb = {
                LARB0_PORT_OFFSET, LARB1_PORT_OFFSET,
@@ -253,7 +268,15 @@ static const struct mtk_smi_larb_gen mtk_smi_larb_mt8183 = {
                                      /* IPU0 | IPU1 | CCU */
 };
 
+static const struct mtk_smi_larb_gen mtk_smi_larb_mt8192 = {
+       .config_port                = mtk_smi_larb_config_port_gen2_general,
+};
+
 static const struct of_device_id mtk_smi_larb_of_ids[] = {
+       {
+               .compatible = "mediatek,mt8167-smi-larb",
+               .data = &mtk_smi_larb_mt8167
+       },
        {
                .compatible = "mediatek,mt8173-smi-larb",
                .data = &mtk_smi_larb_mt8173
@@ -274,6 +297,10 @@ static const struct of_device_id mtk_smi_larb_of_ids[] = {
                .compatible = "mediatek,mt8183-smi-larb",
                .data = &mtk_smi_larb_mt8183
        },
+       {
+               .compatible = "mediatek,mt8192-smi-larb",
+               .data = &mtk_smi_larb_mt8192
+       },
        {}
 };
 
@@ -413,11 +440,22 @@ static const struct mtk_smi_common_plat mtk_smi_common_mt8183 = {
                    F_MMU1_LARB(7),
 };
 
+static const struct mtk_smi_common_plat mtk_smi_common_mt8192 = {
+       .gen      = MTK_SMI_GEN2,
+       .has_gals = true,
+       .bus_sel  = F_MMU1_LARB(1) | F_MMU1_LARB(2) | F_MMU1_LARB(5) |
+                   F_MMU1_LARB(6),
+};
+
 static const struct of_device_id mtk_smi_common_of_ids[] = {
        {
                .compatible = "mediatek,mt8173-smi-common",
                .data = &mtk_smi_common_gen2,
        },
+       {
+               .compatible = "mediatek,mt8167-smi-common",
+               .data = &mtk_smi_common_gen2,
+       },
        {
                .compatible = "mediatek,mt2701-smi-common",
                .data = &mtk_smi_common_gen1,
@@ -434,6 +472,10 @@ static const struct of_device_id mtk_smi_common_of_ids[] = {
                .compatible = "mediatek,mt8183-smi-common",
                .data = &mtk_smi_common_mt8183,
        },
+       {
+               .compatible = "mediatek,mt8192-smi-common",
+               .data = &mtk_smi_common_mt8192,
+       },
        {}
 };