From 9958df5cad404ee9ba3e5c6c48d6ae0393c8f302 Mon Sep 17 00:00:00 2001 From: markus reichelt Date: Wed, 20 Jul 2011 11:12:30 -0300 Subject: [PATCH] system/ov51x-jpeg: Added (kernel module for ov51x webcams) Signed-off-by: Niels Horn --- system/ov51x-jpeg/README | 5 + system/ov51x-jpeg/README.SLACKWARE | 12 + system/ov51x-jpeg/doinst.sh | 2 + system/ov51x-jpeg/ov51x-jpeg.SlackBuild | 73 ++++++ system/ov51x-jpeg/ov51x-jpeg.diff | 298 ++++++++++++++++++++++++ system/ov51x-jpeg/ov51x-jpeg.info | 10 + system/ov51x-jpeg/slack-desc | 19 ++ 7 files changed, 419 insertions(+) create mode 100644 system/ov51x-jpeg/README create mode 100644 system/ov51x-jpeg/README.SLACKWARE create mode 100644 system/ov51x-jpeg/doinst.sh create mode 100644 system/ov51x-jpeg/ov51x-jpeg.SlackBuild create mode 100644 system/ov51x-jpeg/ov51x-jpeg.diff create mode 100644 system/ov51x-jpeg/ov51x-jpeg.info create mode 100644 system/ov51x-jpeg/slack-desc diff --git a/system/ov51x-jpeg/README b/system/ov51x-jpeg/README new file mode 100644 index 0000000000..20dec54cf8 --- /dev/null +++ b/system/ov51x-jpeg/README @@ -0,0 +1,5 @@ +A GPL-licensed kernel module with support for ov51x webcams, +including Sony eyeToy + +Because this installs a kernel module, you will need to +rebuild the package if you change kernels. diff --git a/system/ov51x-jpeg/README.SLACKWARE b/system/ov51x-jpeg/README.SLACKWARE new file mode 100644 index 0000000000..b01d2481df --- /dev/null +++ b/system/ov51x-jpeg/README.SLACKWARE @@ -0,0 +1,12 @@ +README.SLACKWARE for ov51x-jpeg + +You might want to adapt some files in /etc/modprobe.d/ accordingly: + +blacklist.conf: +# blacklisting these modules will allow the ov51x-jpeg module to load +blacklist gspca_ov519 +blacklist ov511 + +ov51x-jpeg.conf: +# I'm happy with these options, YMMV +options ov51x-jpeg led=0 force_palette=15 autobright=1 autoexp=1 diff --git a/system/ov51x-jpeg/doinst.sh b/system/ov51x-jpeg/doinst.sh new file mode 100644 index 0000000000..f786c22372 --- /dev/null +++ b/system/ov51x-jpeg/doinst.sh @@ -0,0 +1,2 @@ +chroot . /sbin/depmod -a @KERNEL@ + diff --git a/system/ov51x-jpeg/ov51x-jpeg.SlackBuild b/system/ov51x-jpeg/ov51x-jpeg.SlackBuild new file mode 100644 index 0000000000..2eb5704e69 --- /dev/null +++ b/system/ov51x-jpeg/ov51x-jpeg.SlackBuild @@ -0,0 +1,73 @@ +#!/bin/sh + +# Slackware build script for ov51x-jpeg + +# Copyright 2011 Markus Reichelt, Aachen, DE +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# markus reichelt, slackbuilds@mareichelt.de, 0xCCEEF115 +# 2011 Jun 25 - initial release + +PRGNAM=ov51x-jpeg +VERSION=1.5.9 +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +ARCH=$(uname -m) +KERNEL=${KERNEL:-"$(uname -r)"} + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tar.gz +cd $PRGNAM-$VERSION +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +patch -p1 < $CWD/ov51x-jpeg.diff + +make KDIR=/lib/modules/${KERNEL}/build + +mkdir -p $PKG/lib/modules/${KERNEL}/extra +install -m 0644 ov51x-jpeg.ko $PKG/lib/modules/${KERNEL}/extra + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a ChangeLog $PKG/usr/doc/$PRGNAM-$VERSION +cp -a $CWD/README.SLACKWARE $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +sed "s%@KERNEL@%$KERNEL%" $CWD/doinst.sh > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/system/ov51x-jpeg/ov51x-jpeg.diff b/system/ov51x-jpeg/ov51x-jpeg.diff new file mode 100644 index 0000000000..cf45dff487 --- /dev/null +++ b/system/ov51x-jpeg/ov51x-jpeg.diff @@ -0,0 +1,298 @@ +diff -Naur ov51x-jpeg-1.5.9.orig/ov511-decomp.c ov51x-jpeg-1.5.9/ov511-decomp.c +--- ov51x-jpeg-1.5.9.orig/ov511-decomp.c 2008-09-28 12:58:09.000000000 +0200 ++++ ov51x-jpeg-1.5.9/ov511-decomp.c 2011-06-25 14:40:22.180000231 +0200 +@@ -22,7 +22,7 @@ + * Free Software Foundation; version 2 of the License. + */ + +-#include ++#include + #include + + #include "ov51x-jpeg.h" +@@ -508,6 +508,5 @@ + struct ov51x_decomp_ops ov511_decomp_ops = { + .decomp_400 = Decompress400, + .decomp_420 = Decompress420, +- .owner = THIS_MODULE, + }; + +diff -Naur ov51x-jpeg-1.5.9.orig/ov518-decomp.c ov51x-jpeg-1.5.9/ov518-decomp.c +--- ov51x-jpeg-1.5.9.orig/ov518-decomp.c 2008-09-28 12:58:09.000000000 +0200 ++++ ov51x-jpeg-1.5.9/ov518-decomp.c 2011-06-25 14:40:22.180000231 +0200 +@@ -25,7 +25,7 @@ + * Free Software Foundation; version 2 of the License. + */ + +-#include ++#include + #include + + #include "ov51x-jpeg.h" +@@ -1488,6 +1488,5 @@ + struct ov51x_decomp_ops ov518_decomp_ops = { + .decomp_400 = Decompress400, + .decomp_420 = Decompress420, +- .owner = THIS_MODULE, + }; + +diff -Naur ov51x-jpeg-1.5.9.orig/ov519-decomp.c ov51x-jpeg-1.5.9/ov519-decomp.c +--- ov51x-jpeg-1.5.9.orig/ov519-decomp.c 2008-09-28 12:58:09.000000000 +0200 ++++ ov51x-jpeg-1.5.9/ov519-decomp.c 2011-06-25 14:40:22.180000231 +0200 +@@ -24,7 +24,7 @@ + * See: http://zc0302.sourceforge.net/zc0302.php + */ + +-#include ++#include + #include + + #include "ov51x-jpeg.h" +@@ -1534,7 +1534,6 @@ + struct ov51x_decomp_ops ov519_decomp_ops = { + .decomp_400 = Decompress400, + .decomp_420 = Decompress420, +- .owner = THIS_MODULE, + }; + + +diff -Naur ov51x-jpeg-1.5.9.orig/ov51x-jpeg-core.c ov51x-jpeg-1.5.9/ov51x-jpeg-core.c +--- ov51x-jpeg-1.5.9.orig/ov51x-jpeg-core.c 2008-09-28 12:58:09.000000000 +0200 ++++ ov51x-jpeg-1.5.9/ov51x-jpeg-core.c 2011-06-25 14:40:48.720000244 +0200 +@@ -12,6 +12,9 @@ + * To support OV7670 sensors as found in Creative Live! Vista IM webcam + * With reference to One Laptop Per Child sourced kernel patches in 2.6.20 kernel + * contributed to kernel by Jonathan Corbet. ++* ++* Modified to work with 2.6.29 kernels by Onur Küçük ++* + */ + + +@@ -84,7 +87,7 @@ + * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +-#include ++#include + + #define OV51x_JPEG_VERSION "1.5.9" + +@@ -534,13 +537,13 @@ + static int sensor_get_picture(struct usb_ov511 *, struct video_picture *); + static int sensor_get_exposure(struct usb_ov511 *, unsigned char *); + static int ov51x_check_snapshot(struct usb_ov511 *); +-static int ov51x_control_ioctl(struct inode *, struct file *, unsigned int, ++static long ov51x_control_ioctl(struct inode *, struct file *, unsigned int, + unsigned long); + + static struct file_operations ov511_control_fops = { +- .ioctl = ov51x_control_ioctl, ++ .unlocked_ioctl = ov51x_control_ioctl, + #ifdef CONFIG_COMPAT +- .compat_ioctl = v4l_compat_ioctl32, ++ .compat_ioctl = v4l2_compat_ioctl32, + #endif + }; + +@@ -678,7 +681,6 @@ + ov->proc_devdir = create_proc_entry(dirname, S_IFDIR, ov51x_jpeg_proc_entry); + if (!ov->proc_devdir) + return; +- ov->proc_devdir->owner = THIS_MODULE; + + /* Create "info" entry (human readable device information) */ + PDEBUG(4, "creating /proc/ov51x-jpeg/ov51x/%s/info", dirname); +@@ -686,7 +688,6 @@ + ov->proc_devdir, ov511_read_proc_info, ov); + if (!ov->proc_info) + return; +- ov->proc_info->owner = THIS_MODULE; + + /* Don't create it if old snapshot mode on (would cause race cond.) */ + if (!snapshot) { +@@ -697,7 +698,6 @@ + ov511_read_proc_button, ov); + if (!ov->proc_button) + return; +- ov->proc_button->owner = THIS_MODULE; + } + + /* Create "control" entry (ioctl() interface) */ +@@ -709,7 +709,6 @@ + unlock_kernel(); + return; + } +- ov->proc_control->owner = THIS_MODULE; + ov->proc_control->data = ov; + ov->proc_control->proc_fops = &ov511_control_fops; + unlock_kernel(); +@@ -762,9 +761,7 @@ + */ + + ov51x_jpeg_proc_entry = create_proc_entry("ov51x-jpeg", S_IFDIR, &proc_root); +- if (ov51x_jpeg_proc_entry) +- ov51x_jpeg_proc_entry->owner = THIS_MODULE; +- else ++ if (!ov51x_jpeg_proc_entry) + err("Unable to create /proc/ov51x-jpeg"); + + } +@@ -5733,7 +5730,7 @@ + { + #else + static int +-ov51x_v4l1_open(struct inode *inode, struct file *file) ++ov51x_v4l1_open(struct file *file) + { + struct video_device *vdev = video_devdata(file); + #endif +@@ -5804,7 +5801,7 @@ + { + #else + static int +-ov51x_v4l1_close(struct inode *inode, struct file *file) ++ov51x_v4l1_close(struct file *file) + { + struct video_device *vdev = file->private_data; + #endif +@@ -5850,13 +5847,14 @@ + } + + /* Do not call this function directly! */ +-static int + #ifdef OV511_OLD_V4L ++static long + ov51x_v4l1_ioctl_internal(struct usb_ov511 *ov, unsigned int cmd, + void *arg) + { + #else +-ov51x_v4l1_ioctl_internal(struct inode *inode, struct file *file, ++static long ++ov51x_v4l1_ioctl_internal(struct file *file, + unsigned int cmd, void *arg) + { + struct video_device *vdev = file->private_data; +@@ -6355,7 +6353,7 @@ + return err; + } + +-static int ++static long + ov51x_v4l1_ioctl(struct video_device *vdev, unsigned int cmd, void *arg) + { + struct usb_ov511 *ov = vdev->priv; +@@ -6372,8 +6370,8 @@ + + #else /* If new V4L API */ + +-static int +-ov51x_v4l1_ioctl(struct inode *inode, struct file *file, ++static long ++ov51x_v4l1_ioctl(struct file *file, + unsigned int cmd, unsigned long arg) + { + struct video_device *vdev = file->private_data; +@@ -6383,7 +6381,7 @@ + if (down_interruptible(&ov->lock)) + return -EINTR; + +- rc = video_usercopy(inode, file, cmd, arg, ov51x_v4l1_ioctl_internal); ++ rc = video_usercopy(file, cmd, arg, ov51x_v4l1_ioctl_internal); + + up(&ov->lock); + return rc; +@@ -6609,7 +6607,6 @@ + + #ifdef OV511_OLD_V4L + static struct video_device vdev_template = { +- .owner = THIS_MODULE, + .name = "OV511 USB Camera", + .type = VID_TYPE_CAPTURE, + #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24) +@@ -6624,22 +6621,19 @@ + + #else /* New V4L API */ + +-static struct file_operations ov511_fops = { +- .owner = THIS_MODULE, ++static struct v4l2_file_operations ov511_fops = { + .open = ov51x_v4l1_open, + .release = ov51x_v4l1_close, + .read = ov51x_v4l1_read, + .mmap = ov51x_v4l1_mmap, + .ioctl = ov51x_v4l1_ioctl, +-#ifdef CONFIG_COMPAT +- .compat_ioctl = v4l_compat_ioctl32, +-#endif +- .llseek = no_llseek, ++/*#ifdef CONFIG_COMPAT ++ .compat_ioctl = v4l2_compat_ioctl32, ++#endif*/ + }; + + static struct video_device vdev_template = { + #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27) +- .owner = THIS_MODULE, + #endif + .name = "OV51x USB Camera", + #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27) +@@ -6654,7 +6648,7 @@ + }; + #endif /* OV511_OLD_V4L */ + +-static int ++static long + ov51x_control_ioctl(struct inode *inode, struct file *file, unsigned int cmd, + unsigned long ularg) + { +@@ -8304,11 +8298,11 @@ + + init_waitqueue_head(&ov->wq); + +- init_MUTEX(&ov->lock); /* to 1 == available */ +- init_MUTEX(&ov->buf_lock); +- init_MUTEX(&ov->param_lock); +- init_MUTEX(&ov->i2c_lock); +- init_MUTEX(&ov->cbuf_lock); ++ sema_init(&ov->lock,1); /* to 1 == available */ ++ sema_init(&ov->buf_lock,1); ++ sema_init(&ov->param_lock,1); ++ sema_init(&ov->i2c_lock,1); ++ sema_init(&ov->cbuf_lock,1); + + ov->buf_state = BUF_NOT_ALLOCATED; + +@@ -8374,7 +8368,7 @@ + + memcpy(ov->vdev, &vdev_template, sizeof(*ov->vdev)); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) +- ov->vdev->dev = dev->dev; ++ ov->vdev->parent = &dev->dev; + #else + ov->vdev->dev = &dev->dev; + #endif +diff -Naur ov51x-jpeg-1.5.9.orig/ov51x-jpeg.h ov51x-jpeg-1.5.9/ov51x-jpeg.h +--- ov51x-jpeg-1.5.9.orig/ov51x-jpeg.h 2008-09-28 12:58:09.000000000 +0200 ++++ ov51x-jpeg-1.5.9/ov51x-jpeg.h 2011-06-25 14:40:15.801000231 +0200 +@@ -63,6 +63,12 @@ + #include + #endif + ++/* Add missing info and warn macros by hand for new kernels */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) ++#define info(args...) printk(KERN_INFO KBUILD_MODNAME args) ++#define warn(args...) printk(KERN_WARNING KBUILD_MODNAME args) ++#endif ++ + /* --------------------------------- */ + /* DEFINES FOR OV511 AND OTHER CHIPS */ + /* --------------------------------- */ +@@ -582,7 +588,6 @@ + int, int, int); + int (*decomp_422)(unsigned char *, unsigned char *, unsigned char *, + int, int, int); +- struct module *owner; + }; + + extern struct ov51x_decomp_ops ov511_decomp_ops; diff --git a/system/ov51x-jpeg/ov51x-jpeg.info b/system/ov51x-jpeg/ov51x-jpeg.info new file mode 100644 index 0000000000..0b115ddd27 --- /dev/null +++ b/system/ov51x-jpeg/ov51x-jpeg.info @@ -0,0 +1,10 @@ +PRGNAM="ov51x-jpeg" +VERSION="1.5.9" +HOMEPAGE="http://www.rastageeks.org/ov51x-jpeg/index.php/Main_Page" +DOWNLOAD="http://www.rastageeks.org/downloads/ov51x-jpeg/ov51x-jpeg-1.5.9.tar.gz" +MD5SUM="95041de8e908f1548df3d4e1f6ed2a94" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +MAINTAINER="markus reichelt" +EMAIL="slackbuilds@mareichelt.de" +APPROVED="Niels Horn" diff --git a/system/ov51x-jpeg/slack-desc b/system/ov51x-jpeg/slack-desc new file mode 100644 index 0000000000..d214da1f07 --- /dev/null +++ b/system/ov51x-jpeg/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +ov51x-jpeg: ov51x-jpeg (a kernel module with support for ov51x webcams) +ov51x-jpeg: +ov51x-jpeg: +ov51x-jpeg: +ov51x-jpeg: +ov51x-jpeg: +ov51x-jpeg: +ov51x-jpeg: +ov51x-jpeg: Homepage: http://www.rastageeks.org/ov51x-jpeg/ +ov51x-jpeg: +ov51x-jpeg: