[9610] bts: reduce peak bandwidth of MFC/DPU for FHD480fps
authorTaekki Kim <taekki.kim@samsung.com>
Thu, 19 Apr 2018 01:48:04 +0000 (10:48 +0900)
committerJaehyoung Choi <jkkkkk.choi@samsung.com>
Fri, 11 May 2018 05:16:53 +0000 (14:16 +0900)
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 <taekki.kim@samsung.com>
drivers/bts/bts-exynos9610.c

index f2ce5406d418a2c6dcae3f7de5646c775b1baabe..61d2fc748379904a43047622c7a6d12972d2a377 100644 (file)
@@ -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,