Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

soc: mediatek: mtk-dvfsrc: Add support for Dimensity 1200 MT6893

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>

+34
+34
drivers/soc/mediatek/mtk-dvfsrc.c
··· 453 453 .max_dram_hrt_bw = 1023, 454 454 }; 455 455 456 + static const struct dvfsrc_opp dvfsrc_opp_mt6893_lp4[] = { 457 + { 0, 0 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, 458 + { 0, 1 }, { 1, 1 }, { 2, 1 }, { 3, 1 }, 459 + { 0, 2 }, { 1, 2 }, { 2, 2 }, { 3, 2 }, 460 + { 0, 3 }, { 1, 3 }, { 2, 3 }, { 3, 3 }, 461 + { 1, 4 }, { 2, 4 }, { 3, 4 }, { 2, 5 }, 462 + { 3, 5 }, { 3, 6 }, { 4, 6 }, { 4, 7 }, 463 + }; 464 + 465 + static const struct dvfsrc_opp_desc dvfsrc_opp_mt6893_desc[] = { 466 + [0] = { 467 + .opps = dvfsrc_opp_mt6893_lp4, 468 + .num_opp = ARRAY_SIZE(dvfsrc_opp_mt6893_lp4), 469 + } 470 + }; 471 + 472 + static const struct dvfsrc_soc_data mt6893_data = { 473 + .opps_desc = dvfsrc_opp_mt6893_desc, 474 + .regs = dvfsrc_mt8195_regs, 475 + .get_target_level = dvfsrc_get_target_level_v2, 476 + .get_current_level = dvfsrc_get_current_level_v2, 477 + .get_vcore_level = dvfsrc_get_vcore_level_v2, 478 + .get_vscp_level = dvfsrc_get_vscp_level_v2, 479 + .set_dram_bw = dvfsrc_set_dram_bw_v1, 480 + .set_dram_peak_bw = dvfsrc_set_dram_peak_bw_v1, 481 + .set_dram_hrt_bw = dvfsrc_set_dram_hrt_bw_v1, 482 + .set_vcore_level = dvfsrc_set_vcore_level_v2, 483 + .set_vscp_level = dvfsrc_set_vscp_level_v2, 484 + .wait_for_opp_level = dvfsrc_wait_for_opp_level_v2, 485 + .wait_for_vcore_level = dvfsrc_wait_for_vcore_level_v1, 486 + .bw_constraints = &dvfsrc_bw_constr_v2, 487 + }; 488 + 456 489 static const struct dvfsrc_opp dvfsrc_opp_mt8183_lp4[] = { 457 490 { 0, 0 }, { 0, 1 }, { 0, 2 }, { 1, 2 }, 458 491 }; ··· 563 530 }; 564 531 565 532 static const struct of_device_id mtk_dvfsrc_of_match[] = { 533 + { .compatible = "mediatek,mt6893-dvfsrc", .data = &mt6893_data }, 566 534 { .compatible = "mediatek,mt8183-dvfsrc", .data = &mt8183_data }, 567 535 { .compatible = "mediatek,mt8195-dvfsrc", .data = &mt8195_data }, 568 536 { /* sentinel */ }