Loading drivers/video/msm/mdss/mdss_mdp_overlay.c +0 −6 Original line number Original line Diff line number Diff line Loading @@ -611,12 +611,6 @@ static int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd, !mdp5_data->mdata->has_wfd_blk) !mdp5_data->mdata->has_wfd_blk) mdss_mdp_smp_release(pipe); mdss_mdp_smp_release(pipe); /* * Clear previous SMP reservations and reserve according to the * latest configuration */ mdss_mdp_smp_unreserve(pipe); ret = mdss_mdp_smp_reserve(pipe); ret = mdss_mdp_smp_reserve(pipe); if (ret) { if (ret) { pr_debug("mdss_mdp_smp_reserve failed. ret=%d\n", ret); pr_debug("mdss_mdp_smp_reserve failed. ret=%d\n", ret); Loading drivers/video/msm/mdss/mdss_mdp_pipe.c +32 −2 Original line number Original line Diff line number Diff line Loading @@ -32,6 +32,8 @@ static DEFINE_MUTEX(mdss_mdp_sspp_lock); static DEFINE_MUTEX(mdss_mdp_smp_lock); static DEFINE_MUTEX(mdss_mdp_smp_lock); static int mdss_mdp_pipe_free(struct mdss_mdp_pipe *pipe); static int mdss_mdp_pipe_free(struct mdss_mdp_pipe *pipe); static int mdss_mdp_smp_mmb_set(int client_id, unsigned long *smp); static void mdss_mdp_smp_mmb_free(unsigned long *smp, bool write); static struct mdss_mdp_pipe *mdss_mdp_pipe_search_by_client_id( static struct mdss_mdp_pipe *mdss_mdp_pipe_search_by_client_id( struct mdss_data_type *mdata, int client_id); struct mdss_data_type *mdata, int client_id); Loading @@ -58,8 +60,27 @@ static u32 mdss_mdp_smp_mmb_reserve(struct mdss_mdp_pipe_smp_map *smp_map, else else n -= fixed_cnt; n -= fixed_cnt; /* reserve more blocks if needed, but can't free mmb at this point */ i = bitmap_weight(smp_map->allocated, SMP_MB_CNT); for (i = bitmap_weight(smp_map->allocated, SMP_MB_CNT); i < n; i++) { /* * SMP programming is not double buffered. Fail the request, * that calls for change in smp configuration (addition/removal * of smp blocks), so that fallback solution happens. */ if (i != 0 && n != i) { pr_debug("Can't change mmb config, num_blks: %d alloc: %d\n", n, i); return 0; } /* * Clear previous SMP reservations and reserve according to the * latest configuration */ mdss_mdp_smp_mmb_free(smp_map->reserved, false); /* Reserve mmb blocks*/ for (; i < n; i++) { if (bitmap_full(mdata->mmb_alloc_map, SMP_MB_CNT)) if (bitmap_full(mdata->mmb_alloc_map, SMP_MB_CNT)) break; break; Loading Loading @@ -280,6 +301,15 @@ int mdss_mdp_smp_reserve(struct mdss_mdp_pipe *pipe) wb_mixer = 1; wb_mixer = 1; mutex_lock(&mdss_mdp_smp_lock); mutex_lock(&mdss_mdp_smp_lock); for (i = (MAX_PLANES - 1); i >= ps.num_planes; i--) { if (bitmap_weight(pipe->smp_map[i].allocated, SMP_MB_CNT)) { pr_debug("Extra mmb identified for pnum=%d plane=%d\n", pipe->num, i); mutex_unlock(&mdss_mdp_smp_lock); return -EAGAIN; } } for (i = 0; i < ps.num_planes; i++) { for (i = 0; i < ps.num_planes; i++) { if (rot_mode || wb_mixer) { if (rot_mode || wb_mixer) { num_blks = 1; num_blks = 1; Loading drivers/video/msm/mdss/mdss_mdp_rotator.c +0 −6 Original line number Original line Diff line number Diff line Loading @@ -224,12 +224,6 @@ static int __mdss_mdp_rotator_to_pipe(struct mdss_mdp_rotator_session *rot, pipe->params_changed++; pipe->params_changed++; rot->params_changed = 0; rot->params_changed = 0; /* * Clear previous SMP reservations and reserve according * to the latest configuration */ mdss_mdp_smp_unreserve(pipe); ret = mdss_mdp_smp_reserve(pipe); ret = mdss_mdp_smp_reserve(pipe); if (ret) { if (ret) { pr_err("unable to mdss_mdp_smp_reserve rot data\n"); pr_err("unable to mdss_mdp_smp_reserve rot data\n"); Loading Loading
drivers/video/msm/mdss/mdss_mdp_overlay.c +0 −6 Original line number Original line Diff line number Diff line Loading @@ -611,12 +611,6 @@ static int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd, !mdp5_data->mdata->has_wfd_blk) !mdp5_data->mdata->has_wfd_blk) mdss_mdp_smp_release(pipe); mdss_mdp_smp_release(pipe); /* * Clear previous SMP reservations and reserve according to the * latest configuration */ mdss_mdp_smp_unreserve(pipe); ret = mdss_mdp_smp_reserve(pipe); ret = mdss_mdp_smp_reserve(pipe); if (ret) { if (ret) { pr_debug("mdss_mdp_smp_reserve failed. ret=%d\n", ret); pr_debug("mdss_mdp_smp_reserve failed. ret=%d\n", ret); Loading
drivers/video/msm/mdss/mdss_mdp_pipe.c +32 −2 Original line number Original line Diff line number Diff line Loading @@ -32,6 +32,8 @@ static DEFINE_MUTEX(mdss_mdp_sspp_lock); static DEFINE_MUTEX(mdss_mdp_smp_lock); static DEFINE_MUTEX(mdss_mdp_smp_lock); static int mdss_mdp_pipe_free(struct mdss_mdp_pipe *pipe); static int mdss_mdp_pipe_free(struct mdss_mdp_pipe *pipe); static int mdss_mdp_smp_mmb_set(int client_id, unsigned long *smp); static void mdss_mdp_smp_mmb_free(unsigned long *smp, bool write); static struct mdss_mdp_pipe *mdss_mdp_pipe_search_by_client_id( static struct mdss_mdp_pipe *mdss_mdp_pipe_search_by_client_id( struct mdss_data_type *mdata, int client_id); struct mdss_data_type *mdata, int client_id); Loading @@ -58,8 +60,27 @@ static u32 mdss_mdp_smp_mmb_reserve(struct mdss_mdp_pipe_smp_map *smp_map, else else n -= fixed_cnt; n -= fixed_cnt; /* reserve more blocks if needed, but can't free mmb at this point */ i = bitmap_weight(smp_map->allocated, SMP_MB_CNT); for (i = bitmap_weight(smp_map->allocated, SMP_MB_CNT); i < n; i++) { /* * SMP programming is not double buffered. Fail the request, * that calls for change in smp configuration (addition/removal * of smp blocks), so that fallback solution happens. */ if (i != 0 && n != i) { pr_debug("Can't change mmb config, num_blks: %d alloc: %d\n", n, i); return 0; } /* * Clear previous SMP reservations and reserve according to the * latest configuration */ mdss_mdp_smp_mmb_free(smp_map->reserved, false); /* Reserve mmb blocks*/ for (; i < n; i++) { if (bitmap_full(mdata->mmb_alloc_map, SMP_MB_CNT)) if (bitmap_full(mdata->mmb_alloc_map, SMP_MB_CNT)) break; break; Loading Loading @@ -280,6 +301,15 @@ int mdss_mdp_smp_reserve(struct mdss_mdp_pipe *pipe) wb_mixer = 1; wb_mixer = 1; mutex_lock(&mdss_mdp_smp_lock); mutex_lock(&mdss_mdp_smp_lock); for (i = (MAX_PLANES - 1); i >= ps.num_planes; i--) { if (bitmap_weight(pipe->smp_map[i].allocated, SMP_MB_CNT)) { pr_debug("Extra mmb identified for pnum=%d plane=%d\n", pipe->num, i); mutex_unlock(&mdss_mdp_smp_lock); return -EAGAIN; } } for (i = 0; i < ps.num_planes; i++) { for (i = 0; i < ps.num_planes; i++) { if (rot_mode || wb_mixer) { if (rot_mode || wb_mixer) { num_blks = 1; num_blks = 1; Loading
drivers/video/msm/mdss/mdss_mdp_rotator.c +0 −6 Original line number Original line Diff line number Diff line Loading @@ -224,12 +224,6 @@ static int __mdss_mdp_rotator_to_pipe(struct mdss_mdp_rotator_session *rot, pipe->params_changed++; pipe->params_changed++; rot->params_changed = 0; rot->params_changed = 0; /* * Clear previous SMP reservations and reserve according * to the latest configuration */ mdss_mdp_smp_unreserve(pipe); ret = mdss_mdp_smp_reserve(pipe); ret = mdss_mdp_smp_reserve(pipe); if (ret) { if (ret) { pr_err("unable to mdss_mdp_smp_reserve rot data\n"); pr_err("unable to mdss_mdp_smp_reserve rot data\n"); Loading