video: driver: add clock residency calculation support

Add logic to derive clock residency values for each
frequency levels.

Change-Id: Iadad29d2733cb083fce627999a31dd96475b73c1
Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
This commit is contained in:
Govindaraj Rajagopal
2022-12-23 20:54:53 +05:30
parent 4f297753f7
commit e15f3afabd
5 changed files with 281 additions and 12 deletions

View File

@@ -117,6 +117,13 @@ struct regulator_set {
u32 count;
};
struct clock_residency {
struct list_head list;
u64 rate;
u64 start_time_us;
u64 total_time_us;
};
struct clock_info {
struct clk *clk;
const char *name;
@@ -126,6 +133,7 @@ struct clock_info {
#ifdef CONFIG_MSM_MMRM
struct mmrm_client *mmrm_client;
#endif
struct list_head residency_list; /* list of struct clock_residency */
};
struct clock_set {
@@ -227,6 +235,8 @@ struct msm_vidc_resources_ops {
int (*clk_enable)(struct msm_vidc_core *core, const char *name);
int (*clk_set_flag)(struct msm_vidc_core *core,
const char *name, enum branch_mem_flags flag);
int (*clk_print_residency_stats)(struct msm_vidc_core *core);
int (*clk_reset_residency_stats)(struct msm_vidc_core *core);
};
const struct msm_vidc_resources_ops *get_resources_ops(void);