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

Configure Feed

Select the types of activity you want to include in your feed.

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>

+9 -1
+9 -1
drivers/soc/mediatek/mtk-dvfsrc.c
··· 73 73 struct dvfsrc_soc_data { 74 74 const int *regs; 75 75 const struct dvfsrc_opp_desc *opps_desc; 76 + u32 (*calc_dram_bw)(struct mtk_dvfsrc *dvfsrc, int type, u64 bw); 76 77 u32 (*get_target_level)(struct mtk_dvfsrc *dvfsrc); 77 78 u32 (*get_current_level)(struct mtk_dvfsrc *dvfsrc); 78 79 u32 (*get_vcore_level)(struct mtk_dvfsrc *dvfsrc); ··· 275 274 dvfsrc_writel(dvfsrc, DVFSRC_VCORE, val); 276 275 } 277 276 277 + static u32 dvfsrc_calc_dram_bw_v1(struct mtk_dvfsrc *dvfsrc, int type, u64 bw) 278 + { 279 + return (u32)div_u64(bw, 100 * 1000); 280 + } 281 + 278 282 static void __dvfsrc_set_dram_bw_v1(struct mtk_dvfsrc *dvfsrc, u32 reg, 279 283 int type, u16 max_bw, u16 min_bw, u64 bw) 280 284 { 281 - u32 new_bw = (u32)div_u64(bw, 100 * 1000); 285 + u32 new_bw = dvfsrc->dvd->calc_dram_bw(dvfsrc, type, bw); 282 286 283 287 /* If bw constraints (in mbps) are defined make sure to respect them */ 284 288 if (max_bw) ··· 525 519 static const struct dvfsrc_soc_data mt8183_data = { 526 520 .opps_desc = dvfsrc_opp_mt8183_desc, 527 521 .regs = dvfsrc_mt8183_regs, 522 + .calc_dram_bw = dvfsrc_calc_dram_bw_v1, 528 523 .get_target_level = dvfsrc_get_target_level_v1, 529 524 .get_current_level = dvfsrc_get_current_level_v1, 530 525 .get_vcore_level = dvfsrc_get_vcore_level_v1, ··· 556 549 static const struct dvfsrc_soc_data mt8195_data = { 557 550 .opps_desc = dvfsrc_opp_mt8195_desc, 558 551 .regs = dvfsrc_mt8195_regs, 552 + .calc_dram_bw = dvfsrc_calc_dram_bw_v1, 559 553 .get_target_level = dvfsrc_get_target_level_v2, 560 554 .get_current_level = dvfsrc_get_current_level_v2, 561 555 .get_vcore_level = dvfsrc_get_vcore_level_v2,