]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
soc: mediatek: mtk-dvfsrc: Add support for Dimensity 1200 MT6893
authorAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Thu, 10 Apr 2025 14:40:19 +0000 (16:40 +0200)
committerAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Mon, 14 Apr 2025 09:53:50 +0000 (11:53 +0200)
Add support for the MediaTek Dimensity 1200 (MT6893) SoC's DVFSRC
v2 hardware: the only difference between this and the only other
supported DVFSRCv2 SoC (MT8195) is the VCore-DRAM OPP array.

Link: https://lore.kernel.org/r/20250410144019.475930-6-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
drivers/soc/mediatek/mtk-dvfsrc.c

index 65c7d7bf743e11880a70a0a5784de6ad5d7b58cd..7b8486ce1c66204169193213676cbf36dd525b64 100644 (file)
@@ -453,6 +453,39 @@ static const struct dvfsrc_bw_constraints dvfsrc_bw_constr_v2 = {
        .max_dram_hrt_bw = 1023,
 };
 
+static const struct dvfsrc_opp dvfsrc_opp_mt6893_lp4[] = {
+       { 0, 0 }, { 1, 0 }, { 2, 0 }, { 3, 0 },
+       { 0, 1 }, { 1, 1 }, { 2, 1 }, { 3, 1 },
+       { 0, 2 }, { 1, 2 }, { 2, 2 }, { 3, 2 },
+       { 0, 3 }, { 1, 3 }, { 2, 3 }, { 3, 3 },
+       { 1, 4 }, { 2, 4 }, { 3, 4 }, { 2, 5 },
+       { 3, 5 }, { 3, 6 }, { 4, 6 }, { 4, 7 },
+};
+
+static const struct dvfsrc_opp_desc dvfsrc_opp_mt6893_desc[] = {
+       [0] = {
+               .opps = dvfsrc_opp_mt6893_lp4,
+               .num_opp = ARRAY_SIZE(dvfsrc_opp_mt6893_lp4),
+       }
+};
+
+static const struct dvfsrc_soc_data mt6893_data = {
+       .opps_desc = dvfsrc_opp_mt6893_desc,
+       .regs = dvfsrc_mt8195_regs,
+       .get_target_level = dvfsrc_get_target_level_v2,
+       .get_current_level = dvfsrc_get_current_level_v2,
+       .get_vcore_level = dvfsrc_get_vcore_level_v2,
+       .get_vscp_level = dvfsrc_get_vscp_level_v2,
+       .set_dram_bw = dvfsrc_set_dram_bw_v1,
+       .set_dram_peak_bw = dvfsrc_set_dram_peak_bw_v1,
+       .set_dram_hrt_bw = dvfsrc_set_dram_hrt_bw_v1,
+       .set_vcore_level = dvfsrc_set_vcore_level_v2,
+       .set_vscp_level = dvfsrc_set_vscp_level_v2,
+       .wait_for_opp_level = dvfsrc_wait_for_opp_level_v2,
+       .wait_for_vcore_level = dvfsrc_wait_for_vcore_level_v1,
+       .bw_constraints = &dvfsrc_bw_constr_v2,
+};
+
 static const struct dvfsrc_opp dvfsrc_opp_mt8183_lp4[] = {
        { 0, 0 }, { 0, 1 }, { 0, 2 }, { 1, 2 },
 };
@@ -530,6 +563,7 @@ static const struct dvfsrc_soc_data mt8195_data = {
 };
 
 static const struct of_device_id mtk_dvfsrc_of_match[] = {
+       { .compatible = "mediatek,mt6893-dvfsrc", .data = &mt6893_data },
        { .compatible = "mediatek,mt8183-dvfsrc", .data = &mt8183_data },
        { .compatible = "mediatek,mt8195-dvfsrc", .data = &mt8195_data },
        { /* sentinel */ }