diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-03-13 11:03:50 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-03-13 11:03:34 -0700 |
commit | 9b42cc287d25e1797128c50f463da882b25846d7 (patch) | |
tree | 59597d26a5e7022e7a0370726704020fc8d4604a | |
parent | 0fce8b329562659bca440e44d7298c02b43e2eb6 (diff) | |
parent | 6822f2bd48643a9e8d99707ef5109ed648e2bf25 (diff) |
Merge "msm: mdss: propagate pipe priority to user-space"
-rw-r--r-- | drivers/video/msm/mdss/mdss_compat_utils.c | 5 | ||||
-rw-r--r-- | drivers/video/msm/mdss/mdss_compat_utils.h | 1 | ||||
-rw-r--r-- | drivers/video/msm/mdss/mdss_mdp_overlay.c | 4 | ||||
-rw-r--r-- | include/uapi/linux/msm_mdp.h | 6 |
4 files changed, 14 insertions, 2 deletions
diff --git a/drivers/video/msm/mdss/mdss_compat_utils.c b/drivers/video/msm/mdss/mdss_compat_utils.c index 8fdf1b75f1c8..c67ed82dc93f 100644 --- a/drivers/video/msm/mdss/mdss_compat_utils.c +++ b/drivers/video/msm/mdss/mdss_compat_utils.c @@ -2224,6 +2224,7 @@ static int __to_user_mdp_overlay(struct mdp_overlay32 __user *ov32, ret |= put_user(ov->transp_mask, &ov32->transp_mask); ret |= put_user(ov->flags, &ov32->flags); ret |= put_user(ov->id, &ov32->id); + ret |= put_user(ov->priority, &ov32->priority); if (ret) return -EFAULT; @@ -2277,7 +2278,9 @@ static int __from_user_mdp_overlay(struct mdp_overlay *ov, get_user(data, &ov32->flags) || put_user(data, &ov->flags) || get_user(data, &ov32->id) || - put_user(data, &ov->id)) + put_user(data, &ov->id) || + get_user(data, &ov32->priority) || + put_user(data, &ov->priority)) return -EFAULT; if (copy_in_user(&ov->user_data, &ov32->user_data, diff --git a/drivers/video/msm/mdss/mdss_compat_utils.h b/drivers/video/msm/mdss/mdss_compat_utils.h index 79e077d1866d..86ca77f52313 100644 --- a/drivers/video/msm/mdss/mdss_compat_utils.h +++ b/drivers/video/msm/mdss/mdss_compat_utils.h @@ -356,6 +356,7 @@ struct mdp_overlay32 { uint32_t transp_mask; uint32_t flags; uint32_t id; + uint8_t priority; uint32_t user_data[6]; uint32_t bg_color; uint8_t horz_deci; diff --git a/drivers/video/msm/mdss/mdss_mdp_overlay.c b/drivers/video/msm/mdss/mdss_mdp_overlay.c index 918b6c18bffc..25fee8bb9d3b 100644 --- a/drivers/video/msm/mdss/mdss_mdp_overlay.c +++ b/drivers/video/msm/mdss/mdss_mdp_overlay.c @@ -699,6 +699,7 @@ static int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd, pipe->bg_color = req->bg_color; req->id = pipe->ndx; + req->priority = pipe->priority; pipe->req_data = *req; if (pipe->flags & MDP_OVERLAY_PP_CFG_EN) { @@ -2542,8 +2543,9 @@ static int __mdss_overlay_map(struct mdp_overlay *ovs, if ((ovs[j].dst_rect.x == op_ovs[k].dst_rect.x) && (ovs[j].z_order == op_ovs[k].z_order)) { op_ovs[k].id = ovs[j].id; + op_ovs[k].priority = ovs[j].priority; break; - } + } } if ((i != num_ovs) && (i != j) && (ovs[j].dst_rect.x == op_ovs[k].dst_rect.x) && diff --git a/include/uapi/linux/msm_mdp.h b/include/uapi/linux/msm_mdp.h index 0b817d108c33..d4ec981b3f41 100644 --- a/include/uapi/linux/msm_mdp.h +++ b/include/uapi/linux/msm_mdp.h @@ -586,6 +586,11 @@ struct mdp_scale_data { * 4: decimation by 16 (drop 15 lines for each line fetched) * @overlay_pp_cfg: Overlay post processing configuration, for more information * see struct mdp_overlay_pp_params. + * @priority: Priority is returned by the driver when overlay is set for the + * first time. It indicates the priority of the underlying pipe + * serving the overlay. This priority can be used by user-space + * in source split when pipes are re-used and shuffled around to + * reduce fallbacks. */ struct mdp_overlay { struct msmfb_img src; @@ -598,6 +603,7 @@ struct mdp_overlay { uint32_t transp_mask; uint32_t flags; uint32_t id; + uint8_t priority; uint32_t user_data[6]; uint32_t bg_color; uint8_t horz_deci; |