--- bbcb4a21aa8c328c3c44fca069c51963d080a911 +++ 6f7cabf62cb81e82a3277e0324d5fb3b786d6cae @@ -2280,9 +2280,7 @@ static int mdp_off(struct platform_devic mdp_clk_ctrl(0); #ifdef CONFIG_MSM_BUS_SCALING - - mdp_bus_scale_update_request(0, 0, 0, 0); - + mdp_bus_scale_update_request(0, 0); #endif if (mdp_rev >= MDP_REV_41 && mfd->panel.type == MIPI_CMD_PANEL) mdp_dsi_cmd_overlay_suspend(mfd); @@ -2405,8 +2403,8 @@ void mdp_hw_version(void) #ifdef CONFIG_MSM_BUS_SCALING -#ifndef MDP_BUS_VECTOR_ENTRY_P0 -#define MDP_BUS_VECTOR_ENTRY_P0(ab_val, ib_val) \ +#ifndef MDP_BUS_VECTOR_ENTRY +#define MDP_BUS_VECTOR_ENTRY(ab_val, ib_val) \ { \ .src = MSM_BUS_MASTER_MDP_PORT0, \ .dst = MSM_BUS_SLAVE_EBI_CH0, \ @@ -2414,51 +2412,17 @@ void mdp_hw_version(void) .ib = (ib_val), \ } #endif -#ifndef MDP_BUS_VECTOR_ENTRY_P1 -#define MDP_BUS_VECTOR_ENTRY_P1(ab_val, ib_val) \ - { \ - .src = MSM_BUS_MASTER_MDP_PORT1, \ - .dst = MSM_BUS_SLAVE_EBI_CH0, \ - .ab = (ab_val), \ - .ib = (ib_val), \ - } -#endif - - /* * Entry 0 hold 0 request * Entry 1 and 2 do ping pong request */ -static struct msm_bus_vectors mdp_bus_init_vectors[] = { - MDP_BUS_VECTOR_ENTRY_P0(0, 0), - MDP_BUS_VECTOR_ENTRY_P1(0, 0), -}; - -static struct msm_bus_vectors mdp_bus_ping_vectors[] = { - MDP_BUS_VECTOR_ENTRY_P0(128000000, 160000000), - MDP_BUS_VECTOR_ENTRY_P1(128000000, 160000000), -}; - -static struct msm_bus_vectors mdp_bus_pong_vectors[] = { - MDP_BUS_VECTOR_ENTRY_P0(128000000, 160000000), - MDP_BUS_VECTOR_ENTRY_P1(128000000, 160000000), -}; - -static struct msm_bus_paths mdp_bus_usecases[] = { - { - ARRAY_SIZE(mdp_bus_init_vectors), - mdp_bus_init_vectors, - }, - { - ARRAY_SIZE(mdp_bus_ping_vectors), - mdp_bus_ping_vectors, - }, - { - ARRAY_SIZE(mdp_bus_pong_vectors), - mdp_bus_pong_vectors, - }, +static struct msm_bus_vectors mdp_bus_vectors[] = { + MDP_BUS_VECTOR_ENTRY(0, 0), + MDP_BUS_VECTOR_ENTRY( 128000000, 160000000), + MDP_BUS_VECTOR_ENTRY( 128000000, 160000000), }; +static struct msm_bus_paths mdp_bus_usecases[ARRAY_SIZE(mdp_bus_vectors)]; static struct msm_bus_scale_pdata mdp_bus_scale_table = { .usecase = mdp_bus_usecases, .num_usecases = ARRAY_SIZE(mdp_bus_usecases), @@ -2469,7 +2433,12 @@ static uint32_t mdp_bus_scale_handle; static int mdp_bus_scale_register(void) { struct msm_bus_scale_pdata *bus_pdata = &mdp_bus_scale_table; - + int i; + for (i = 0; i < bus_pdata->num_usecases; i++) { + mdp_bus_usecases[i].num_paths = 1; + mdp_bus_usecases[i].vectors = &mdp_bus_vectors[i]; + } + if (!mdp_bus_scale_handle) { mdp_bus_scale_handle = msm_bus_scale_register_client(bus_pdata); if (!mdp_bus_scale_handle) { @@ -2481,14 +2450,14 @@ static int mdp_bus_scale_register(void) } static int bus_index = 1; -int mdp_bus_scale_update_request(u64 ab_p0, u64 ib_p0, u64 ab_p1, u64 ib_p1) +int mdp_bus_scale_update_request(u64 ab, u64 ib) { if (mdp_bus_scale_handle < 1) { pr_err("%s invalid bus handle\n", __func__); return -EINVAL; } - if ((!ab_p0) && (!ab_p1)) + if (!ab) return msm_bus_scale_client_update_request (mdp_bus_scale_handle, 0); @@ -2496,23 +2465,14 @@ int mdp_bus_scale_update_request(u64 ab_ bus_index++; bus_index = (bus_index > 2) ? 1 : bus_index; - mdp_bus_usecases[bus_index].vectors[0].ab = min(ab_p0, mdp_max_bw); - ib_p0 = max(ib_p0, ab_p0); - mdp_bus_usecases[bus_index].vectors[0].ib = min(ib_p0, mdp_max_bw); - - mdp_bus_usecases[bus_index].vectors[1].ab = min(ab_p1, mdp_max_bw); - ib_p1 = max(ib_p1, ab_p1); - mdp_bus_usecases[bus_index].vectors[1].ib = min(ib_p1, mdp_max_bw); - + mdp_bus_usecases[bus_index].vectors->ab = min(ab, mdp_max_bw); + ib = max(ib, ab); + mdp_bus_usecases[bus_index].vectors->ib = min(ib, mdp_max_bw); + pr_debug("%s: handle=%d index=%d ab=%llu ib=%llu\n", __func__, (u32)mdp_bus_scale_handle, bus_index, - mdp_bus_usecases[bus_index].vectors[0].ab, - mdp_bus_usecases[bus_index].vectors[0].ib); - pr_debug("%s: p1 handle=%d index=%d ab=%llu ib=%llu\n", __func__, - (u32)mdp_bus_scale_handle, bus_index, - mdp_bus_usecases[bus_index].vectors[1].ab, - mdp_bus_usecases[bus_index].vectors[1].ib); - + mdp_bus_usecases[bus_index].vectors->ab, + mdp_bus_usecases[bus_index].vectors->ib); return msm_bus_scale_client_update_request (mdp_bus_scale_handle, bus_index); @@ -2522,25 +2482,15 @@ int mdp_bus_scale_restore_request(void) { u64 ab, ib; if (!bus_index || - !mdp_bus_usecases[bus_index].vectors[0].ab) { + !mdp_bus_usecases[bus_index].vectors->ab) { ab = mdp_max_bw; ib = mdp_max_bw; } else { - ab = mdp_bus_usecases[bus_index].vectors[0].ab; - ib = mdp_bus_usecases[bus_index].vectors[0].ib; + ab = mdp_bus_usecases[bus_index].vectors->ab; + ib = mdp_bus_usecases[bus_index].vectors->ib; } pr_info("%s: ab=%llu ib=%llu\n", __func__, ab, ib); - - pr_debug("%s: index=%d ab_p0=%llu ib_p0=%llu\n", __func__, bus_index, - mdp_bus_usecases[bus_index].vectors[0].ab, - mdp_bus_usecases[bus_index].vectors[0].ib); - pr_debug("%s: index=%d ab_p1=%llu ib_p1=%llu\n", __func__, bus_index, - mdp_bus_usecases[bus_index].vectors[1].ab, - mdp_bus_usecases[bus_index].vectors[1].ib); - - return mdp_bus_scale_update_request(ab, ib, - mdp_bus_usecases[bus_index].vectors[1].ab, - mdp_bus_usecases[bus_index].vectors[1].ib); + return mdp_bus_scale_update_request(ab, ib); } #endif @@ -3080,7 +3030,7 @@ static int mdp_probe(struct platform_dev /* req bus bandwidth immediately */ if (!(mfd->cont_splash_done)) - mdp_bus_scale_update_request(mdp_max_bw, mdp_max_bw,mdp_max_bw,mdp_max_bw); + mdp_bus_scale_update_request(mdp_max_bw, mdp_max_bw); #endif /* set driver data */