Example #1
0
int mmpfb_compat_ioctl(struct fb_info *info, unsigned int cmd,
		unsigned long arg)
{
	int ret = -ENOIOCTLCMD;

	switch (cmd) {
	case FB_IOCTL_QUERY_GLOBAL_INFO:
	case FB_IOCTL_FLIP_USR_BUF:
	case FB_IOCTL_GAMMA_SET:
	case FB_IOCTL_ENABLE_DMA:
	case FB_IOCTL_VSMOOTH_EN:
	case FB_IOCTL_SET_COLORKEYnALPHA:
	case FB_IOCTL_GET_COLORKEYnALPHA:
	case FB_IOCTL_FLIP_VSYNC:
	case FB_IOCTL_ENABLE_COMMIT_DMA:
	case FB_IOCTL_SET_DFC_RATE:
	case FB_IOCTL_GET_DFC_RATE:
		arg = (unsigned long)compat_ptr(arg);
	case FB_IOCTL_FLIP_COMMIT:
	case FB_IOCTL_WAIT_VSYNC:
		ret = mmpfb_ioctl(info, cmd, arg);
		break;
	default:
		dev_info(info->dev, "unknown ioctl 0x%x\n", cmd);
		break;
	}

	return ret;
}
int mmpfb_compat_ioctl(struct fb_info *info, unsigned int cmd,
		unsigned long arg)
{
	int ret = -ENOIOCTLCMD;

	switch (cmd) {
	case FB_IOCTL_QUERY_GLOBAL_INFO:
	case FB_IOCTL_FLIP_USR_BUF:
	case FB_IOCTL_GAMMA_SET:
	case FB_IOCTL_ENABLE_DMA:
	case FB_IOCTL_VSMOOTH_EN:
	case FB_IOCTL_SET_COLORKEYnALPHA:
	case FB_IOCTL_GET_COLORKEYnALPHA:
		arg = (unsigned long)compat_ptr(arg);
	case FB_IOCTL_FLIP_COMMIT:
	case FB_IOCTL_WAIT_VSYNC:
		ret = mmpfb_ioctl(info, cmd, arg);
		break;
	/*
	 * FIXME: FB_IOCTL_FLIP_VSYNC compat ioctl not support, it
	 * would be added in following patch.
	 */
	default:
		dev_info(info->dev, "unknown ioctl 0x%x\n", cmd);
		break;
	}

	return ret;
}