diff options
author | Tao Huang <huangtao@rock-chips.com> | 2018-10-10 18:50:25 +0800 |
---|---|---|
committer | Tao Huang <huangtao@rock-chips.com> | 2018-10-10 18:50:25 +0800 |
commit | 9b1d6cb325c6923c270304747e55896d4212742a (patch) | |
tree | 2a97238a0866a49125153e6933cb170230e2dde5 /drivers/staging | |
parent | ea8f1b0e82c689e2866536a7f0331ccafea0f7e9 (diff) |
staging: ion: rockchip: remove useless ION_IOC_GET_PHYS
Recent ION do not support ion_handle_get_by_id. So ION_IOC_GET_PHYS
is broken. Remove custom ioctl support entirely.
Change-Id: I591d4b8521a96d17cd2171c7b364e44d1b97cf24
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/android/ion/rockchip/rockchip_ion.c | 129 |
1 files changed, 2 insertions, 127 deletions
diff --git a/drivers/staging/android/ion/rockchip/rockchip_ion.c b/drivers/staging/android/ion/rockchip/rockchip_ion.c index 432345afd186..d3c3d06856ad 100644 --- a/drivers/staging/android/ion/rockchip/rockchip_ion.c +++ b/drivers/staging/android/ion/rockchip/rockchip_ion.c @@ -17,13 +17,9 @@ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/slab.h> -#include <linux/uaccess.h> -#include <linux/compat.h> #include <linux/dma-buf.h> #include <linux/dma-contiguous.h> -#include <linux/memblock.h> -#include <linux/of_fdt.h> -#include <linux/of_gpio.h> +#include <linux/of.h> #include <linux/of_reserved_mem.h> #include <linux/rockchip_ion.h> @@ -54,127 +50,6 @@ static struct ion_heap_desc ion_heap_meta[] = { }, }; -#ifdef CONFIG_COMPAT -struct compat_ion_phys_data { - compat_int_t handle; - compat_ulong_t phys; - compat_ulong_t size; -}; - -#define COMPAT_ION_IOC_GET_PHYS _IOWR(ION_IOC_ROCKCHIP_MAGIC, 0, \ - struct compat_ion_phys_data) - -static int compat_get_ion_phys_data( - struct compat_ion_phys_data __user *data32, - struct ion_phys_data __user *data) -{ - compat_ulong_t l; - compat_int_t i; - int err; - - err = get_user(i, &data32->handle); - err |= put_user(i, &data->handle); - err |= get_user(l, &data32->phys); - err |= put_user(l, &data->phys); - err |= get_user(l, &data32->size); - err |= put_user(l, &data->size); - - return err; -}; - -static int compat_put_ion_phys_data( - struct compat_ion_phys_data __user *data32, - struct ion_phys_data __user *data) -{ - compat_ulong_t l; - compat_int_t i; - int err; - - err = get_user(i, &data->handle); - err |= put_user(i, &data32->handle); - err |= get_user(l, &data->phys); - err |= put_user(l, &data32->phys); - err |= get_user(l, &data->size); - err |= put_user(l, &data32->size); - - return err; -}; -#endif - -static int rk_ion_get_phys(struct ion_client *client, - unsigned long arg) -{ - struct ion_phys_data data; - struct ion_handle *handle; - int ret; - - if (copy_from_user(&data, (void __user *)arg, - sizeof(struct ion_phys_data))) - return -EFAULT; - - handle = ion_handle_get_by_id(client, data.handle); - if (IS_ERR(handle)) - return PTR_ERR(handle); - - ret = ion_phys(client, handle, &data.phys, - (size_t *)&data.size); - ion_handle_put(handle); - if (ret < 0) - return ret; - if (copy_to_user((void __user *)arg, &data, - sizeof(struct ion_phys_data))) - return -EFAULT; - - return 0; -} - -#ifdef CONFIG_COMPAT -static int compat_rk_ion_get_phys(struct ion_client *client, - unsigned long arg) -{ - struct compat_ion_phys_data __user *data32; - struct ion_phys_data __user *data; - int err; - long ret; - - data32 = compat_ptr(arg); - data = compat_alloc_user_space(sizeof(*data)); - if (!data) - return -EFAULT; - - err = compat_get_ion_phys_data(data32, data); - if (err) - return err; - - ret = rk_ion_get_phys(client, (unsigned long)data); - err = compat_put_ion_phys_data(data32, data); - - return ret ? ret : err; -} -#endif - -static long rk_custom_ioctl(struct ion_client *client, - unsigned int cmd, - unsigned long arg) -{ - int ret = 0; - - switch (cmd) { -#ifdef CONFIG_COMPAT - case COMPAT_ION_IOC_GET_PHYS: - ret = compat_rk_ion_get_phys(client, arg); - break; -#endif - case ION_IOC_GET_PHYS: - ret = rk_ion_get_phys(client, arg); - break; - default: - return -ENOTTY; - } - - return ret; -} - /* Return result of step for heap array. */ static int rk_ion_of_heap(struct ion_platform_heap *myheap, struct device_node *node) @@ -254,7 +129,7 @@ static int rk_ion_probe(struct platform_device *pdev) heaps = kcalloc(pdata->nr, sizeof(*heaps), GFP_KERNEL); - idev = ion_device_create(rk_custom_ioctl); + idev = ion_device_create(NULL); if (IS_ERR_OR_NULL(idev)) { kfree(heaps); return PTR_ERR(idev); |