示例#1
0
static int mxc_elcdif_fb_ioctl(struct fb_info *info, unsigned int cmd,
			unsigned long arg)
{
	int ret = -EINVAL;

	switch (cmd) {
	case MXCFB_WAIT_FOR_VSYNC:
		{
			struct mxc_elcdif_fb_data *data =
				(struct mxc_elcdif_fb_data *)info->par;
			long long timestamp;
			ret = mxc_elcdif_fb_wait_for_vsync(info);
			timestamp = ktime_to_ns(data->vsync_nf_timestamp);
			if ((ret == 0) && copy_to_user((void *)arg,
					&timestamp, sizeof(timestamp))) {
				ret = -EFAULT;
				break;
			}
		}

		break;
	case MXCFB_GET_FB_BLANK:
		{
			struct mxc_elcdif_fb_data *data =
				(struct mxc_elcdif_fb_data *)info->par;

			if (put_user(data->cur_blank, (__u32 __user *)arg))
				return -EFAULT;
			break;
		}
	default:
		break;
	}
	return ret;
}
示例#2
0
static int mxc_elcdif_fb_ioctl(struct fb_info *info, unsigned int cmd,
			unsigned long arg)
{
	int ret = -EINVAL;

	switch (cmd) {
	case MXCFB_WAIT_FOR_VSYNC:
		ret = mxc_elcdif_fb_wait_for_vsync(info);
		break;
	case MXCFB_GET_FB_BLANK:
		{
			struct mxc_elcdif_fb_data *data =
				(struct mxc_elcdif_fb_data *)info->par;

			if (put_user(data->cur_blank, (__u32 __user *)arg))
				return -EFAULT;
			break;
		}
	default:
		break;
	}
	return ret;
}