Samsung SCH-I545 (Verizon) source updates
/drivers/video/msm/mdp.c
blob:bbcb4a21aa8c328c3c44fca069c51963d080a911 -> blob:6f7cabf62cb81e82a3277e0324d5fb3b786d6cae
--- drivers/video/msm/mdp.c
+++ drivers/video/msm/mdp.c
@@ -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 */