summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBenet Clark <benetc@codeaurora.org>2014-02-05 02:21:25 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:26:59 -0700
commit7922ba463300de71d49cf8e41ef7a8e2bc09f4da (patch)
tree1767a0d8a64bf589668e36ca550b3e97fbac0881 /drivers
parentc8b48bda077af03632f5af22faac91e0661770ad (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.c49
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;
}