From 4dc6bf9a1789e43f6590e78b3d716e0ffbfd6434 Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Sat, 27 Sep 2008 00:18:33 +0300 Subject: [PATCH] Fix build for 2.6.27 kernel Signed-off-by: Vasily Khoruzhick --- microdia-queue.c | 1 + microdia-sysfs.c | 37 +++++++++++++++++++++++++++++++++++-- microdia-v4l.c | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 2 deletions(-) diff --git a/microdia-queue.c b/microdia-queue.c index ad56fc7..2bd0fdc 100644 --- a/microdia-queue.c +++ b/microdia-queue.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "microdia.h" diff --git a/microdia-sysfs.c b/microdia-sysfs.c index 6328a24..f052b3f 100644 --- a/microdia-sysfs.c +++ b/microdia-sysfs.c @@ -40,6 +40,7 @@ #include "microdia.h" #include "sn9c20x.h" + /** * @brief show_release * @@ -847,7 +848,7 @@ int microdia_create_sysfs_files(struct video_device *vdev) ret = video_device_create_file(vdev, &class_device_attr_vflip); ret = video_device_create_file(vdev, &class_device_attr_auto_exposure); ret = video_device_create_file(vdev, &class_device_attr_auto_whitebalance); -#else +#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27) ret = video_device_create_file(vdev, &dev_attr_release); ret = video_device_create_file(vdev, &dev_attr_videostatus); ret = video_device_create_file(vdev, &dev_attr_informations); @@ -863,6 +864,22 @@ int microdia_create_sysfs_files(struct video_device *vdev) ret = video_device_create_file(vdev, &dev_attr_vflip); ret = video_device_create_file(vdev, &dev_attr_auto_exposure); ret = video_device_create_file(vdev, &dev_attr_auto_whitebalance); +#else + ret = device_create_file(&vdev->dev, &dev_attr_release); + ret = device_create_file(&vdev->dev, &dev_attr_videostatus); + ret = device_create_file(&vdev->dev, &dev_attr_informations); + ret = device_create_file(&vdev->dev, &dev_attr_fps); + ret = device_create_file(&vdev->dev, &dev_attr_brightness); + ret = device_create_file(&vdev->dev, &dev_attr_rgb_gain); + ret = device_create_file(&vdev->dev, &dev_attr_exposure); + ret = device_create_file(&vdev->dev, &dev_attr_contrast); + ret = device_create_file(&vdev->dev, &dev_attr_whitebalance); + ret = device_create_file(&vdev->dev, &dev_attr_sharpness); + /*ret = video_device_create_file(vdev, &dev_attr_colour);*/ + ret = device_create_file(&vdev->dev, &dev_attr_hflip); + ret = device_create_file(&vdev->dev, &dev_attr_vflip); + ret = device_create_file(&vdev->dev, &dev_attr_auto_exposure); + ret = device_create_file(&vdev->dev, &dev_attr_auto_whitebalance); #endif return ret; } @@ -895,7 +912,7 @@ void microdia_remove_sysfs_files(struct video_device *vdev) video_device_remove_file(vdev, &class_device_attr_vflip); video_device_remove_file(vdev, &class_device_attr_auto_exposure); video_device_remove_file(vdev, &class_device_attr_auto_whitebalance); -#else +#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27) video_device_remove_file(vdev, &dev_attr_release); video_device_remove_file(vdev, &dev_attr_videostatus); video_device_remove_file(vdev, &dev_attr_informations); @@ -911,6 +928,22 @@ void microdia_remove_sysfs_files(struct video_device *vdev) video_device_remove_file(vdev, &dev_attr_vflip); video_device_remove_file(vdev, &dev_attr_auto_exposure); video_device_remove_file(vdev, &dev_attr_auto_whitebalance); +#else + device_remove_file(&vdev->dev, &dev_attr_release); + device_remove_file(&vdev->dev, &dev_attr_videostatus); + device_remove_file(&vdev->dev, &dev_attr_informations); + device_remove_file(&vdev->dev, &dev_attr_fps); + device_remove_file(&vdev->dev, &dev_attr_brightness); + device_remove_file(&vdev->dev, &dev_attr_rgb_gain); + device_remove_file(&vdev->dev, &dev_attr_exposure); + device_remove_file(&vdev->dev, &dev_attr_contrast); + device_remove_file(&vdev->dev, &dev_attr_whitebalance); + device_remove_file(&vdev->dev, &dev_attr_sharpness); + /*video_device_remove_file(vdev, &dev_attr_colour);*/ + device_remove_file(&vdev->dev, &dev_attr_hflip); + device_remove_file(&vdev->dev, &dev_attr_vflip); + device_remove_file(&vdev->dev, &dev_attr_auto_exposure); + device_remove_file(&vdev->dev, &dev_attr_auto_whitebalance); #endif } diff --git a/microdia-v4l.c b/microdia-v4l.c index 5c1b519..f281713 100644 --- a/microdia-v4l.c +++ b/microdia-v4l.c @@ -34,8 +34,10 @@ #include #include #include +#include #include + #include "microdia.h" #include "sn9c20x.h" @@ -44,6 +46,9 @@ #define V4L2_CID_SHARPNESS (V4L2_CID_PRIVATE_BASE + 0) #define V4L2_CID_AUTOEXPOSURE (V4L2_CID_PRIVATE_BASE + 1) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) +#include +#endif static struct file_operations v4l_microdia_fops; @@ -1143,6 +1148,30 @@ static int v4l_microdia_ioctl(struct inode *inode, struct file *fp, } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) +static const struct v4l2_ioctl_ops microdia_v4l2_ioctl_ops = { + .vidioc_querycap = microdia_vidioc_querycap, + .vidioc_enum_fmt_vid_cap = microdia_vidioc_enum_fmt_cap, + .vidioc_try_fmt_vid_cap = microdia_vidioc_try_fmt_cap, + .vidioc_s_fmt_vid_cap = microdia_vidioc_s_fmt_cap, + .vidioc_g_fmt_vid_cap = microdia_vidioc_g_fmt_cap, + .vidioc_enum_input = microdia_vidioc_enum_input, + .vidioc_g_input = microdia_vidioc_g_input, + .vidioc_s_input = microdia_vidioc_s_input, + .vidioc_streamon = microdia_vidioc_streamon, + .vidioc_streamoff = microdia_vidioc_streamoff, + .vidioc_queryctrl = microdia_vidioc_queryctrl, + .vidioc_g_ctrl = microdia_vidioc_g_ctrl, + .vidioc_s_ctrl = microdia_vidioc_s_ctrl, + .vidioc_g_parm = microdia_vidioc_g_param, + .vidioc_s_parm = microdia_vidioc_s_param, + .vidioc_reqbufs = microdia_vidioc_reqbufs, + .vidioc_qbuf = microdia_vidioc_qbuf, + .vidioc_dqbuf = microdia_vidioc_dqbuf, + .vidioc_querybuf = microdia_vidioc_querybuf, +}; +#endif + /** * @param dev Device structure * @@ -1158,9 +1187,13 @@ int v4l_microdia_register_video_device(struct usb_microdia *dev) strcpy(dev->vdev->name, DRIVER_DESC); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27) dev->vdev->dev = &dev->interface->dev; dev->vdev->owner = THIS_MODULE; dev->vdev->type = VID_TYPE_CAPTURE; +#else + dev->vdev->dev = dev->interface->dev; +#endif dev->vdev->current_norm = 0; dev->vdev->tvnorms = 0; #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24) @@ -1173,6 +1206,7 @@ int v4l_microdia_register_video_device(struct usb_microdia *dev) if (log_level & MICRODIA_DEBUG) dev->vdev->debug = V4L2_DEBUG_IOCTL_ARG; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27) dev->vdev->vidioc_querycap = microdia_vidioc_querycap; dev->vdev->vidioc_enum_fmt_cap = microdia_vidioc_enum_fmt_cap; dev->vdev->vidioc_try_fmt_cap = microdia_vidioc_try_fmt_cap; @@ -1192,6 +1226,9 @@ int v4l_microdia_register_video_device(struct usb_microdia *dev) dev->vdev->vidioc_qbuf = microdia_vidioc_qbuf; dev->vdev->vidioc_dqbuf = microdia_vidioc_dqbuf; dev->vdev->vidioc_querybuf = microdia_vidioc_querybuf; +#else + dev->vdev->ioctl_ops = µdia_v4l2_ioctl_ops; +#endif video_set_drvdata(dev->vdev, dev); -- 2.11.4.GIT