From 6d7c45e0c902d3287800c17677da36d8935db95f Mon Sep 17 00:00:00 2001 From: Taekki Kim Date: Thu, 19 Apr 2018 10:48:04 +0900 Subject: [PATCH] [9610] bts: reduce peak bandwidth of MFC/DPU for FHD480fps Currently, the frame drop occurring when full HD 480fps encoding because the bandwidth from the MFC and DPU. The instantaneous high bandwidth of the MFC and DPU increase the latency of CPU. So, the priority and peak banwidth of MFC and DPU were limited on the full HD 480fps encoding scenario. These limitation does not hurt the MFC and DPU performance on a corresponding scenario. Change-Id: I61a4859d3913fc8015e47aa68567b437e30566fb Signed-off-by: Taekki Kim --- drivers/bts/bts-exynos9610.c | 48 ++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/drivers/bts/bts-exynos9610.c b/drivers/bts/bts-exynos9610.c index f2ce5406d418..61d2fc748379 100644 --- a/drivers/bts/bts-exynos9610.c +++ b/drivers/bts/bts-exynos9610.c @@ -263,6 +263,34 @@ static struct bts_info exynos_bts[] = { .table[BS_DEFAULT].stat.timeout_en = true, .table[BS_DEFAULT].stat.timeout_r = 0x20, .table[BS_DEFAULT].stat.timeout_w = 0x20, + .table[BS_MFC_UHD].stat.scen_en = true, + .table[BS_MFC_UHD].stat.priority = 0xA, + .table[BS_MFC_UHD].stat.rmo = 0x20, + .table[BS_MFC_UHD].stat.wmo = 0x20, + .table[BS_MFC_UHD].stat.timeout_en = true, + .table[BS_MFC_UHD].stat.timeout_r = 0x20, + .table[BS_MFC_UHD].stat.timeout_w = 0x20, + .table[BS_G3D_PERFORMANCE].stat.scen_en = true, + .table[BS_G3D_PERFORMANCE].stat.priority = 0xA, + .table[BS_G3D_PERFORMANCE].stat.rmo = 0x20, + .table[BS_G3D_PERFORMANCE].stat.wmo = 0x20, + .table[BS_G3D_PERFORMANCE].stat.timeout_en = true, + .table[BS_G3D_PERFORMANCE].stat.timeout_r = 0x20, + .table[BS_G3D_PERFORMANCE].stat.timeout_w = 0x20, + .table[BS_CAMERA_DEFAULT].stat.scen_en = true, + .table[BS_CAMERA_DEFAULT].stat.priority = 0xA, + .table[BS_CAMERA_DEFAULT].stat.rmo = 0x20, + .table[BS_CAMERA_DEFAULT].stat.wmo = 0x20, + .table[BS_CAMERA_DEFAULT].stat.timeout_en = true, + .table[BS_CAMERA_DEFAULT].stat.timeout_r = 0x20, + .table[BS_CAMERA_DEFAULT].stat.timeout_w = 0x20, + .table[BS_FHD_480_ENCODING].stat.scen_en = true, + .table[BS_FHD_480_ENCODING].stat.priority = 0xA, + .table[BS_FHD_480_ENCODING].stat.rmo = 0x18, + .table[BS_FHD_480_ENCODING].stat.wmo = 0x18, + .table[BS_FHD_480_ENCODING].stat.timeout_en = true, + .table[BS_FHD_480_ENCODING].stat.timeout_r = 0x20, + .table[BS_FHD_480_ENCODING].stat.timeout_w = 0x20, }, [BTS_IDX_DIT] = { .name = "dit", @@ -470,9 +498,9 @@ static struct bts_info exynos_bts[] = { .table[BS_CAMERA_DEFAULT].stat.max_rmo = 0x1, .table[BS_CAMERA_DEFAULT].stat.max_wmo = 0x1, .table[BS_FHD_480_ENCODING].stat.scen_en = true, - .table[BS_FHD_480_ENCODING].stat.priority = 0x5, - .table[BS_FHD_480_ENCODING].stat.rmo = 0x20, - .table[BS_FHD_480_ENCODING].stat.wmo = 0x20, + .table[BS_FHD_480_ENCODING].stat.priority = 0x4, + .table[BS_FHD_480_ENCODING].stat.rmo = 0x10, + .table[BS_FHD_480_ENCODING].stat.wmo = 0x10, .table[BS_FHD_480_ENCODING].stat.max_rmo = 0x4, .table[BS_FHD_480_ENCODING].stat.max_wmo = 0x4, }, @@ -506,9 +534,9 @@ static struct bts_info exynos_bts[] = { .table[BS_CAMERA_DEFAULT].stat.max_rmo = 0x1, .table[BS_CAMERA_DEFAULT].stat.max_wmo = 0x1, .table[BS_FHD_480_ENCODING].stat.scen_en = true, - .table[BS_FHD_480_ENCODING].stat.priority = 0x5, - .table[BS_FHD_480_ENCODING].stat.rmo = 0x20, - .table[BS_FHD_480_ENCODING].stat.wmo = 0x20, + .table[BS_FHD_480_ENCODING].stat.priority = 0x4, + .table[BS_FHD_480_ENCODING].stat.rmo = 0x10, + .table[BS_FHD_480_ENCODING].stat.wmo = 0x10, .table[BS_FHD_480_ENCODING].stat.max_rmo = 0x4, .table[BS_FHD_480_ENCODING].stat.max_wmo = 0x4, }, @@ -699,7 +727,7 @@ static struct drex_info exynos_drex[] = { .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x2] = 0x000A0100, .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x3] = 0x000A0100, .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x4] = 0x000A0100, - .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x5] = 0x000A0039, + .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x5] = 0x000A0100, .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x6] = 0x000A0100, .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x7] = 0x000A0100, .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x8] = 0x000A0011, @@ -712,7 +740,7 @@ static struct drex_info exynos_drex[] = { .table[BS_FHD_480_ENCODING].stat.drex_timeout[0xF] = 0x000A0001, .table[BS_FHD_480_ENCODING].stat.vc_timer_th[0] = 0x00C100C1, .table[BS_FHD_480_ENCODING].stat.vc_timer_th[1] = 0x00C100C1, - .table[BS_FHD_480_ENCODING].stat.vc_timer_th[2] = 0x001D00C1, + .table[BS_FHD_480_ENCODING].stat.vc_timer_th[2] = 0x00C100C1, .table[BS_FHD_480_ENCODING].stat.vc_timer_th[3] = 0x00C100C1, .table[BS_FHD_480_ENCODING].stat.vc_timer_th[4] = 0x00C10009, .table[BS_FHD_480_ENCODING].stat.vc_timer_th[5] = 0x000D0022, @@ -762,7 +790,7 @@ static struct drex_info exynos_drex[] = { .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x2] = 0x000A0100, .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x3] = 0x000A0100, .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x4] = 0x000A0100, - .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x5] = 0x000A0039, + .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x5] = 0x000A0100, .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x6] = 0x000A0100, .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x7] = 0x000A0100, .table[BS_FHD_480_ENCODING].stat.drex_timeout[0x8] = 0x000A0011, @@ -775,7 +803,7 @@ static struct drex_info exynos_drex[] = { .table[BS_FHD_480_ENCODING].stat.drex_timeout[0xF] = 0x000A0001, .table[BS_FHD_480_ENCODING].stat.vc_timer_th[0] = 0x00C100C1, .table[BS_FHD_480_ENCODING].stat.vc_timer_th[1] = 0x00C100C1, - .table[BS_FHD_480_ENCODING].stat.vc_timer_th[2] = 0x001D00C1, + .table[BS_FHD_480_ENCODING].stat.vc_timer_th[2] = 0x00C100C1, .table[BS_FHD_480_ENCODING].stat.vc_timer_th[3] = 0x00C100C1, .table[BS_FHD_480_ENCODING].stat.vc_timer_th[4] = 0x00C10009, .table[BS_FHD_480_ENCODING].stat.vc_timer_th[5] = 0x000D0022, -- 2.20.1