From f863ae5dd04081d301055e2622c6ee0137b613d2 Mon Sep 17 00:00:00 2001 From: Li Huang Date: Mon, 28 Mar 2022 20:35:46 +0800 Subject: [PATCH] video: rockchip: rga3: fixup scheduler load Signed-off-by: Li Huang Change-Id: I60a2357d1fd517092d1721cfcd16cd1a2e2dba04 --- drivers/video/rockchip/rga3/include/rga_drv.h | 7 +++++-- drivers/video/rockchip/rga3/rga_debugger.c | 7 +++++-- drivers/video/rockchip/rga3/rga_drv.c | 6 ++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/drivers/video/rockchip/rga3/include/rga_drv.h b/drivers/video/rockchip/rga3/include/rga_drv.h index cfa59e8dbf0c..5c35553ad1fd 100644 --- a/drivers/video/rockchip/rga3/include/rga_drv.h +++ b/drivers/video/rockchip/rga3/include/rga_drv.h @@ -66,8 +66,11 @@ #define RGA_CORE_REG_OFFSET 0x10000 -/* sample interval: 1000ms */ -#define RGA_LOAD_INTERVAL 1000000000 +/* load interval: 1000ms */ +#define RGA_LOAD_INTERVAL_US 1000000 + +/* timer interval: 1000ms */ +#define RGA_TIMER_INTERVAL_NS 1000000000 #if ((defined(CONFIG_RK_IOMMU) || defined(CONFIG_ROCKCHIP_IOMMU)) \ && defined(CONFIG_ION_ROCKCHIP)) diff --git a/drivers/video/rockchip/rga3/rga_debugger.c b/drivers/video/rockchip/rga3/rga_debugger.c index e2f73de3a268..13b8221b7d78 100644 --- a/drivers/video/rockchip/rga3/rga_debugger.c +++ b/drivers/video/rockchip/rga3/rga_debugger.c @@ -178,8 +178,11 @@ static int rga_load_show(struct seq_file *m, void *data) spin_unlock_irqrestore(&rga_scheduler->irq_lock, flags); - load = (busy_time_total * 100000 / RGA_LOAD_INTERVAL); - seq_printf(m, "\t load = %d\n", load); + load = (busy_time_total * 100 / RGA_LOAD_INTERVAL_US); + if (load > 100) + load = 100; + + seq_printf(m, "\t load = %d%%\n", load); seq_printf(m, "-----------------------------------\n"); } return 0; diff --git a/drivers/video/rockchip/rga3/rga_drv.c b/drivers/video/rockchip/rga3/rga_drv.c index b652b2ff338e..87914dca3b90 100644 --- a/drivers/video/rockchip/rga3/rga_drv.c +++ b/drivers/video/rockchip/rga3/rga_drv.c @@ -297,10 +297,12 @@ static enum hrtimer_restart hrtimer_handler(struct hrtimer *timer) static void rga_init_timer(void) { - kt = ktime_set(0, RGA_LOAD_INTERVAL); + kt = ktime_set(0, RGA_TIMER_INTERVAL_NS); hrtimer_init(&timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); - hrtimer_start(&timer, kt, HRTIMER_MODE_REL); + timer.function = hrtimer_handler; + + hrtimer_start(&timer, kt, HRTIMER_MODE_REL); } static void rga_cancel_timer(void)