Skip to content

Commit ddb5862

Browse files
author
AngeloGioacchino Del Regno
committed
soc: mediatek: mtk-dvfsrc: Add a new callback for calc_dram_bw
In preparation for adding support for DVFSRC Version 4, add a new callback for calculating the dram bandwidth, assign the current calculation algo to all of the currently supported SoCs, and use this in __dvfsrc_set_dram_bw_v1(). Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
1 parent c2488fe commit ddb5862

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

drivers/soc/mediatek/mtk-dvfsrc.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ struct mtk_dvfsrc {
7373
struct dvfsrc_soc_data {
7474
const int *regs;
7575
const struct dvfsrc_opp_desc *opps_desc;
76+
u32 (*calc_dram_bw)(struct mtk_dvfsrc *dvfsrc, int type, u64 bw);
7677
u32 (*get_target_level)(struct mtk_dvfsrc *dvfsrc);
7778
u32 (*get_current_level)(struct mtk_dvfsrc *dvfsrc);
7879
u32 (*get_vcore_level)(struct mtk_dvfsrc *dvfsrc);
@@ -274,10 +275,15 @@ static void dvfsrc_set_vscp_level_v2(struct mtk_dvfsrc *dvfsrc, u32 level)
274275
dvfsrc_writel(dvfsrc, DVFSRC_VCORE, val);
275276
}
276277

278+
static u32 dvfsrc_calc_dram_bw_v1(struct mtk_dvfsrc *dvfsrc, int type, u64 bw)
279+
{
280+
return (u32)div_u64(bw, 100 * 1000);
281+
}
282+
277283
static void __dvfsrc_set_dram_bw_v1(struct mtk_dvfsrc *dvfsrc, u32 reg,
278284
int type, u16 max_bw, u16 min_bw, u64 bw)
279285
{
280-
u32 new_bw = (u32)div_u64(bw, 100 * 1000);
286+
u32 new_bw = dvfsrc->dvd->calc_dram_bw(dvfsrc, type, bw);
281287

282288
/* If bw constraints (in mbps) are defined make sure to respect them */
283289
if (max_bw)
@@ -519,6 +525,7 @@ static const struct dvfsrc_opp_desc dvfsrc_opp_mt8183_desc[] = {
519525
static const struct dvfsrc_soc_data mt8183_data = {
520526
.opps_desc = dvfsrc_opp_mt8183_desc,
521527
.regs = dvfsrc_mt8183_regs,
528+
.calc_dram_bw = dvfsrc_calc_dram_bw_v1,
522529
.get_target_level = dvfsrc_get_target_level_v1,
523530
.get_current_level = dvfsrc_get_current_level_v1,
524531
.get_vcore_level = dvfsrc_get_vcore_level_v1,
@@ -549,6 +556,7 @@ static const struct dvfsrc_opp_desc dvfsrc_opp_mt8195_desc[] = {
549556
static const struct dvfsrc_soc_data mt8195_data = {
550557
.opps_desc = dvfsrc_opp_mt8195_desc,
551558
.regs = dvfsrc_mt8195_regs,
559+
.calc_dram_bw = dvfsrc_calc_dram_bw_v1,
552560
.get_target_level = dvfsrc_get_target_level_v2,
553561
.get_current_level = dvfsrc_get_current_level_v2,
554562
.get_vcore_level = dvfsrc_get_vcore_level_v2,

0 commit comments

Comments
 (0)