#endif
#include <linux/compat.h>
+#include <linux/rockchip/psci.h>
struct ion_device *rockchip_ion_dev;
EXPORT_SYMBOL(rockchip_ion_dev);
}
EXPORT_SYMBOL(rockchip_ion_client_create);
+static int rockchip_ion_set_secured(struct ion_client *client,
+ unsigned long arg)
+{
+ bool val = 0;
+ int ret = 0;
+
+ if (copy_from_user(&val, (void __user *)arg, sizeof(bool)))
+ return -EFAULT;
+
+ ret = psci_set_memory_secure(val);
+ if (ret)
+ pr_err("%s fail to set memory secured (%d)\n", __func__, ret);
+
+ return ret;
+}
+
#ifdef CONFIG_COMPAT
struct compat_ion_phys_data {
compat_int_t handle;
switch (cmd) {
case ION_IOC_GET_PHYS:
return rockchip_ion_get_phys(client, arg);
+ case ION_IOC_SET_SECURED:
+ return rockchip_ion_set_secured(client, arg);
default:
return -ENOTTY;
}
*/
#define ION_IOC_GET_PHYS _IOWR(ION_IOC_ROCKCHIP_MAGIC, 0, \
struct ion_phys_data)
-
+/**
+ * Set memory region secured.
+ */
+#define ION_IOC_SET_SECURED _IOWR(ION_IOC_ROCKCHIP_MAGIC, 1, bool)
#endif