Skip to content

Commit 5dcee6d

Browse files
committed
Merge tag 'mtk-soc-for-v6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux into soc/drivers
MediaTek driver updates for v6.16 This brings some cleanups to the MediaTek DVFSRC driver, commonizing the bandwidth constraints platform data, and also adds support for the DVFSRC hardware found in the MediaTek Dimensity 1200 MT6893 SoC. * tag 'mtk-soc-for-v6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux: soc: mediatek: mtk-dvfsrc: remove an unused variable soc: mediatek: mtk-dvfsrc: Add support for Dimensity 1200 MT6893 soc: mediatek: mtk-dvfsrc: Rename and move bw constraints data dt-bindings: soc: mediatek: dvfsrc: Add support for MT6893 Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Arnd Bergmann <[email protected]>
2 parents 29bf77f + 69d63d1 commit 5dcee6d

File tree

2 files changed

+44
-10
lines changed

2 files changed

+44
-10
lines changed

Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ properties:
2323
compatible:
2424
oneOf:
2525
- enum:
26+
- mediatek,mt6893-dvfsrc
2627
- mediatek,mt8183-dvfsrc
2728
- mediatek,mt8195-dvfsrc
2829
- items:

drivers/soc/mediatek/mtk-dvfsrc.c

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,46 @@ static int mtk_dvfsrc_probe(struct platform_device *pdev)
446446
return 0;
447447
}
448448

449+
static const struct dvfsrc_bw_constraints dvfsrc_bw_constr_v1 = { 0, 0, 0 };
450+
static const struct dvfsrc_bw_constraints dvfsrc_bw_constr_v2 = {
451+
.max_dram_nom_bw = 255,
452+
.max_dram_peak_bw = 255,
453+
.max_dram_hrt_bw = 1023,
454+
};
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+
449489
static const struct dvfsrc_opp dvfsrc_opp_mt8183_lp4[] = {
450490
{ 0, 0 }, { 0, 1 }, { 0, 2 }, { 1, 2 },
451491
};
@@ -469,8 +509,6 @@ static const struct dvfsrc_opp_desc dvfsrc_opp_mt8183_desc[] = {
469509
}
470510
};
471511

472-
static const struct dvfsrc_bw_constraints dvfsrc_bw_constr_mt8183 = { 0, 0, 0 };
473-
474512
static const struct dvfsrc_soc_data mt8183_data = {
475513
.opps_desc = dvfsrc_opp_mt8183_desc,
476514
.regs = dvfsrc_mt8183_regs,
@@ -482,7 +520,7 @@ static const struct dvfsrc_soc_data mt8183_data = {
482520
.set_vcore_level = dvfsrc_set_vcore_level_v1,
483521
.wait_for_opp_level = dvfsrc_wait_for_opp_level_v1,
484522
.wait_for_vcore_level = dvfsrc_wait_for_vcore_level_v1,
485-
.bw_constraints = &dvfsrc_bw_constr_mt8183,
523+
.bw_constraints = &dvfsrc_bw_constr_v1,
486524
};
487525

488526
static const struct dvfsrc_opp dvfsrc_opp_mt8195_lp4[] = {
@@ -501,12 +539,6 @@ static const struct dvfsrc_opp_desc dvfsrc_opp_mt8195_desc[] = {
501539
}
502540
};
503541

504-
static const struct dvfsrc_bw_constraints dvfsrc_bw_constr_mt8195 = {
505-
.max_dram_nom_bw = 255,
506-
.max_dram_peak_bw = 255,
507-
.max_dram_hrt_bw = 1023,
508-
};
509-
510542
static const struct dvfsrc_soc_data mt8195_data = {
511543
.opps_desc = dvfsrc_opp_mt8195_desc,
512544
.regs = dvfsrc_mt8195_regs,
@@ -521,10 +553,11 @@ static const struct dvfsrc_soc_data mt8195_data = {
521553
.set_vscp_level = dvfsrc_set_vscp_level_v2,
522554
.wait_for_opp_level = dvfsrc_wait_for_opp_level_v2,
523555
.wait_for_vcore_level = dvfsrc_wait_for_vcore_level_v1,
524-
.bw_constraints = &dvfsrc_bw_constr_mt8195,
556+
.bw_constraints = &dvfsrc_bw_constr_v2,
525557
};
526558

527559
static const struct of_device_id mtk_dvfsrc_of_match[] = {
560+
{ .compatible = "mediatek,mt6893-dvfsrc", .data = &mt6893_data },
528561
{ .compatible = "mediatek,mt8183-dvfsrc", .data = &mt8183_data },
529562
{ .compatible = "mediatek,mt8195-dvfsrc", .data = &mt8195_data },
530563
{ /* sentinel */ }

0 commit comments

Comments
 (0)