diff options
| author | Benet Clark <benetc@codeaurora.org> | 2014-02-05 02:21:25 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:26:59 -0700 |
| commit | 7922ba463300de71d49cf8e41ef7a8e2bc09f4da (patch) | |
| tree | 1767a0d8a64bf589668e36ca550b3e97fbac0881 /drivers | |
| parent | c8b48bda077af03632f5af22faac91e0661770ad (diff) | |
msm: mdss: Add calib config compat ioctl to PP compat layer
Added calib config compat structures to PP compat ioctl.
Signed-off-by: Benet Clark <benetc@codeaurora.org>
Change-Id: I0cf88caa1dfaf474664fbfa5f00b1afd39c731ce
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_compat_utils.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/mdss_compat_utils.c b/drivers/video/fbdev/msm/mdss_compat_utils.c index b1f81fb0eec7..abb581c0e809 100644 --- a/drivers/video/fbdev/msm/mdss_compat_utils.c +++ b/drivers/video/fbdev/msm/mdss_compat_utils.c @@ -1261,6 +1261,42 @@ static int __to_user_gamut_cfg_data( return 0; } +static int __from_user_calib_config_data( + struct mdp_calib_config_data32 __user *calib_cfg32, + struct mdp_calib_config_data __user *calib_cfg) +{ + if (copy_in_user(&calib_cfg->ops, + &calib_cfg32->ops, + sizeof(uint32_t)) || + copy_in_user(&calib_cfg->addr, + &calib_cfg32->addr, + sizeof(uint32_t)) || + copy_in_user(&calib_cfg->data, + &calib_cfg32->data, + sizeof(uint32_t))) + return -EFAULT; + + return 0; +} + +static int __to_user_calib_config_data( + struct mdp_calib_config_data32 __user *calib_cfg32, + struct mdp_calib_config_data __user *calib_cfg) +{ + if (copy_in_user(&calib_cfg32->ops, + &calib_cfg->ops, + sizeof(uint32_t)) || + copy_in_user(&calib_cfg32->addr, + &calib_cfg->addr, + sizeof(uint32_t)) || + copy_in_user(&calib_cfg32->data, + &calib_cfg->data, + sizeof(uint32_t))) + return -EFAULT; + + return 0; +} + static int __pp_compat_alloc(struct msmfb_mdp_pp32 __user *pp32, struct msmfb_mdp_pp __user **pp, uint32_t op) @@ -1474,6 +1510,19 @@ static int mdss_compat_pp_ioctl(struct fb_info *info, unsigned int cmd, compat_ptr((uintptr_t)&pp32->data.gamut_cfg_data), &pp->data.gamut_cfg_data); break; + case mdp_op_calib_cfg: + ret = __from_user_calib_config_data( + compat_ptr((uintptr_t)&pp32->data.calib_cfg), + &pp->data.calib_cfg); + if (ret) + goto pp_compat_exit; + ret = mdss_fb_do_ioctl(info, cmd, (unsigned long) pp); + if (ret) + goto pp_compat_exit; + ret = __to_user_calib_config_data( + compat_ptr((uintptr_t)&pp32->data.calib_cfg), + &pp->data.calib_cfg); + break; default: break; } |
