Skip to content

Commit c2488fe

Browse files
author
AngeloGioacchino Del Regno
committed
soc: mediatek: mtk-dvfsrc: Add and propagate DVFSRC bandwidth type
In preparation for adding support for DVFSRC Version 4, add a new mtk_dvfsrc_bw_type enumeration, and propagate it from specific bw setting callbacks to __dvfsrc_set_dram_bw_v1(), which will use it to choose calculation multipliers and dividers in v4 callbacks. Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
1 parent 23f1b49 commit c2488fe

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

drivers/soc/mediatek/mtk-dvfsrc.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@
3636
#define MTK_SIP_DVFSRC_INIT 0x0
3737
#define MTK_SIP_DVFSRC_START 0x1
3838

39+
enum mtk_dvfsrc_bw_type {
40+
DVFSRC_BW_AVG,
41+
DVFSRC_BW_PEAK,
42+
DVFSRC_BW_HRT,
43+
DVFSRC_BW_MAX,
44+
};
45+
3946
struct dvfsrc_bw_constraints {
4047
u16 max_dram_nom_bw;
4148
u16 max_dram_peak_bw;
@@ -268,7 +275,7 @@ static void dvfsrc_set_vscp_level_v2(struct mtk_dvfsrc *dvfsrc, u32 level)
268275
}
269276

270277
static void __dvfsrc_set_dram_bw_v1(struct mtk_dvfsrc *dvfsrc, u32 reg,
271-
u16 max_bw, u16 min_bw, u64 bw)
278+
int type, u16 max_bw, u16 min_bw, u64 bw)
272279
{
273280
u32 new_bw = (u32)div_u64(bw, 100 * 1000);
274281

@@ -285,21 +292,21 @@ static void dvfsrc_set_dram_bw_v1(struct mtk_dvfsrc *dvfsrc, u64 bw)
285292
{
286293
u64 max_bw = dvfsrc->dvd->bw_constraints->max_dram_nom_bw;
287294

288-
__dvfsrc_set_dram_bw_v1(dvfsrc, DVFSRC_SW_BW, max_bw, 0, bw);
295+
__dvfsrc_set_dram_bw_v1(dvfsrc, DVFSRC_SW_BW, DVFSRC_BW_AVG, max_bw, 0, bw);
289296
};
290297

291298
static void dvfsrc_set_dram_peak_bw_v1(struct mtk_dvfsrc *dvfsrc, u64 bw)
292299
{
293300
u64 max_bw = dvfsrc->dvd->bw_constraints->max_dram_peak_bw;
294301

295-
__dvfsrc_set_dram_bw_v1(dvfsrc, DVFSRC_SW_PEAK_BW, max_bw, 0, bw);
302+
__dvfsrc_set_dram_bw_v1(dvfsrc, DVFSRC_SW_PEAK_BW, DVFSRC_BW_PEAK, max_bw, 0, bw);
296303
}
297304

298305
static void dvfsrc_set_dram_hrt_bw_v1(struct mtk_dvfsrc *dvfsrc, u64 bw)
299306
{
300307
u64 max_bw = dvfsrc->dvd->bw_constraints->max_dram_hrt_bw;
301308

302-
__dvfsrc_set_dram_bw_v1(dvfsrc, DVFSRC_SW_HRT_BW, max_bw, 0, bw);
309+
__dvfsrc_set_dram_bw_v1(dvfsrc, DVFSRC_SW_HRT_BW, DVFSRC_BW_HRT, max_bw, 0, bw);
303310
}
304311

305312
static void dvfsrc_set_opp_level_v1(struct mtk_dvfsrc *dvfsrc, u32 level)

0 commit comments

Comments
 (0)