From 9eee6e39534a466bd833616afc78905b0c55c76d Mon Sep 17 00:00:00 2001 From: nico Date: Thu, 8 Dec 2005 22:09:33 +0000 Subject: [PATCH] add kernel driver for SPCA5XX based USB cameras git-svn-id: svn://svn.openwrt.org/openwrt/trunk@2602 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- openwrt/target/linux/package/Config.in | 1 + openwrt/target/linux/package/Makefile | 1 + openwrt/target/linux/package/spca5xx/Config.in | 9 ++ openwrt/target/linux/package/spca5xx/Makefile | 41 +++++ .../package/spca5xx/ipkg/kmod-spca5xx.control | 4 + .../package/spca5xx/patches/01-kmod-build.patch | 171 +++++++++++++++++++++ 6 files changed, 227 insertions(+) create mode 100644 openwrt/target/linux/package/spca5xx/Config.in create mode 100644 openwrt/target/linux/package/spca5xx/Makefile create mode 100644 openwrt/target/linux/package/spca5xx/ipkg/kmod-spca5xx.control create mode 100644 openwrt/target/linux/package/spca5xx/patches/01-kmod-build.patch diff --git a/openwrt/target/linux/package/Config.in b/openwrt/target/linux/package/Config.in index f05e9a014c..b58301db94 100644 --- a/openwrt/target/linux/package/Config.in +++ b/openwrt/target/linux/package/Config.in @@ -6,4 +6,5 @@ source "target/linux/package/madwifi/Config.in" source "target/linux/package/mini_fo/Config.in" source "target/linux/package/openswan/Config.in" source "target/linux/package/shfs/Config.in" +source "target/linux/package/spca5xx/Config.in" source "target/linux/package/wlcompat/Config.in" diff --git a/openwrt/target/linux/package/Makefile b/openwrt/target/linux/package/Makefile index db63d4f577..2963a0b95c 100644 --- a/openwrt/target/linux/package/Makefile +++ b/openwrt/target/linux/package/Makefile @@ -10,6 +10,7 @@ package-$(BR2_PACKAGE_KMOD_MADWIFI) += madwifi package-$(BR2_PACKAGE_KMOD_MINI_FO) += mini_fo package-$(BR2_PACKAGE_KMOD_OPENSWAN) += openswan package-$(BR2_PACKAGE_KMOD_SHFS) += shfs +package-$(BR2_PACKAGE_KMOD_SPCA5XX) += spca5xx package-y += base-files ifeq ($(BOARD)-$(KERNEL),brcm-2.4) diff --git a/openwrt/target/linux/package/spca5xx/Config.in b/openwrt/target/linux/package/spca5xx/Config.in new file mode 100644 index 0000000000..6d504823f1 --- /dev/null +++ b/openwrt/target/linux/package/spca5xx/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KMOD_SPCA5XX + prompt "kmod-spca5xx...................... Kernel driver for SPCA5XX based USB cameras" + tristate + default m if CONFIG_DEVEL + help + Kernel driver for SPCA5XX based USB cameras + + http://mxhaard.free.fr/ + diff --git a/openwrt/target/linux/package/spca5xx/Makefile b/openwrt/target/linux/package/spca5xx/Makefile new file mode 100644 index 0000000000..a2b43e997d --- /dev/null +++ b/openwrt/target/linux/package/spca5xx/Makefile @@ -0,0 +1,41 @@ +# $Id: Makefile,v 1.2 2005/06/11 15:36:31 nbd Exp $ + +include $(TOPDIR)/rules.mk +include ../../rules.mk + +PKG_NAME:=spca5xx +PKG_VERSION:=20051105 +PKG_RELEASE:=1 +PKG_MD5SUM:=7d2e84c3d3880728fefd5644713ba0ca + +PKG_SOURCE_URL:=http://mxhaard.free.fr/spca50x/Download/ +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_CAT:=zcat + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) +PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install + +ifeq ($(KERNEL_DIR),) +KERNEL_DIR:=$(LINUX_DIR) +endif + +include $(TOPDIR)/package/rules.mk + +$(eval $(call PKG_template,KMOD_SPCA5XX,kmod-spca5xx,$(LINUX_VERSION)+$(PKG_VERSION)-$(BOARD)-$(PKG_RELEASE),$(ARCH),kernel ($(LINUX_VERSION)-$(BOARD)-$(KERNEL_RELEASE)))) + +$(PKG_BUILD_DIR)/.configured: + touch $@ + +$(PKG_BUILD_DIR)/.built: + $(MAKE) -C $(KERNEL_DIR) \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + modules + touch $@ + +$(IPKG_KMOD_SPCA5XX): + install -m0755 -d $(IDIR_KMOD_SPCA5XX)/lib/modules/$(LINUX_VERSION) + cp -fpR $(PKG_BUILD_DIR)/spca5xx.$(LINUX_KMOD_SUFFIX) \ + $(IDIR_KMOD_SPCA5XX)/lib/modules/$(LINUX_VERSION)/ + $(RSTRIP_KMOD) $(IDIR_KMOD_SPCA5XX) + $(IPKG_BUILD) $(IDIR_KMOD_SPCA5XX) $(PACKAGE_DIR) + diff --git a/openwrt/target/linux/package/spca5xx/ipkg/kmod-spca5xx.control b/openwrt/target/linux/package/spca5xx/ipkg/kmod-spca5xx.control new file mode 100644 index 0000000000..e8880c41de --- /dev/null +++ b/openwrt/target/linux/package/spca5xx/ipkg/kmod-spca5xx.control @@ -0,0 +1,4 @@ +Package: kmod-spca5xx +Priority: optional +Section: sys +Description: Kernel driver for SPCA5XX based USB cameras diff --git a/openwrt/target/linux/package/spca5xx/patches/01-kmod-build.patch b/openwrt/target/linux/package/spca5xx/patches/01-kmod-build.patch new file mode 100644 index 0000000000..5aeca16d66 --- /dev/null +++ b/openwrt/target/linux/package/spca5xx/patches/01-kmod-build.patch @@ -0,0 +1,171 @@ +diff -ruN spca5xx-20051105-old/Makefile spca5xx-20051105-new/Makefile +--- spca5xx-20051105-old/Makefile 2005-11-05 19:18:26.000000000 +0100 ++++ spca5xx-20051105-new/Makefile 2005-12-08 21:50:20.000000000 +0100 +@@ -68,157 +68,18 @@ + + else # kernel version test + +-############################################################################# +-# For Linux 2.4 users. +-# Change the following lines according to your system configuration. +-# It is important to configure your particular source tree ("make dep") before +-# compiling this module! +-############################################################################# +-### +-# This makefile will build the spca50x driver module external to the kernel +-# source tree. It makes it easier to swap kernels. +- +- +-KERNEL_VERSION = `uname -r` +- +-### +-# Location of the header files (most importantly the config files) +-# for the kernel you want to build the module against. +-# This should be correct for the currently installed kernel on your machine. +-KINCLUDE = /lib/modules/$(KERNEL_VERSION)/build/include +-KERNEL_ACFILE = $(KINCLUDE)/linux/autoconf.h +-KERNEL_MODVERSIONSFILE = $(KINCLUDE)/linux/modversions.h +-MODULE_INSTALLDIR = /lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/ +- +-# Detect module versioning support +-ifneq ($(strip $(shell grep 'define CONFIG_MODVERSIONS 1' $(KERNEL_ACFILE))),) +- DEFINES += -DMODVERSIONS -include $(KERNEL_MODVERSIONSFILE) +-endif +- +-# Detect SMP support +-ifneq ($(strip $(shell grep 'define CONFIG_SMP 1' $(KERNEL_ACFILE))),) +- DEFINES += -D__SMP__ -DSMP +-endif +- +-# Setup the tools +-CC = gcc +-LD = ld +- +-# Setup compiler warnings +-WARNINGS = -Wall -Wpointer-arith +-WARNINGS += -Wcast-align -Wwrite-strings -Wstrict-prototypes +-WARNINGS += -Wuninitialized -Wreturn-type -Wunused -Wparentheses +- +-# Setup compiler flags +-CFLAGS = -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe +-CFLAGS += -mpreferred-stack-boundary=2 +-CFLAGS += -I$(KINCLUDE) -Idrivers/usb +- +-# Setup link flags +-LDFLAGS = --strip-debug -r +- +-# Setup the list of files to be included in a distribution +-DIST_FILES = CHANGELOG \ +- README \ +- Makefile \ +- drivers/usb/Config.in \ +- drivers/usb/spcadecoder.c \ +- drivers/usb/spcadecoder.h \ +- drivers/usb/jpeg_header.h \ +- drivers/usb/jpeg_qtables.h \ +- drivers/usb/spcagamma.h \ +- drivers/usb/spcaCompat.h \ +- drivers/usb/spcausb.h \ +- drivers/usb/spca500_init.h \ +- drivers/usb/spca501_init.h \ +- drivers/usb/sp5xxfw2.dat \ +- drivers/usb/sp5xxfw2.h \ +- drivers/usb/spca505_init.h \ +- drivers/usb/spca506.h \ +- drivers/usb/spca508_init.h \ +- drivers/usb/spca561.h \ +- drivers/usb/sonix.h \ +- drivers/usb/cs2102.h \ +- drivers/usb/hv7131b.h \ +- drivers/usb/icm105a.h \ +- drivers/usb/hv7131c.h \ +- drivers/usb/hdcs2020.h \ +- drivers/usb/pb0330.h \ +- drivers/usb/tas5130c.h \ +- drivers/usb/zc3xx.h\ +- drivers/usb/tv8532.h\ +- drivers/usb/cxlib.h\ +- drivers/usb/sn9cxxx.h\ +- drivers/usb/cx11646.h\ +- drivers/usb/pac207.h\ +- drivers/usb/spca5xx.c \ +- drivers/usb/spca5xx.h +- +-OBJS = drivers/usb/spcadecoder.o \ +- drivers/usb/spca5xx.o +- +-BINARY = spca5xx.o +- +-### +-# Targets follow here +- +-binary: $(OBJS) +- @echo Linking $(BINARY) +- @$(LD) $(LDFLAGS) -o $(BINARY) $(OBJS) +- +-install: binary +- @echo Installing.. Your root password may be required. +- su -c "make install-root" +- +-install-root: +- @echo Installing.. +- @mkdir -p /lib/modules/`uname -r`/kernel/drivers/usb +- @rm -f /lib/modules/`uname -r`/kernel/drivers/usb/spca50x.o +- @rm -f /lib/modules/`uname -r`/kernel/drivers/usb/et61x.o +- @cp spca5xx.o /lib/modules/`uname -r`/kernel/drivers/usb/spca5xx.o +- @/sbin/depmod +- +-dist: clean binary +- @echo Making distributable archives +- @rm -f spca5xx-src-$(VERSION).tar.gz +- @tar zcf spca5xx-src-$(VERSION).tar.gz $(DIST_FILES) +- @rm -f spca5xx-module-$(VERSION).tar.gz +- @cp $(BINARY) spca5xx-$(VERSION).o +- @tar zcf spca5xx-module-$(VERSION).tar.gz spca5xx-$(VERSION).o README +- @rm spca5xx-$(VERSION).o +- +-.c.o: Makefile $*.c +- @echo Compiling $*.c +- @$(CC) $(CFLAGS) $(WARNINGS) $(DEFINES) -c $*.c -o $*.o +- +-### +-# Dependencies follow here +- +-drivers/usb/spca5xx.o: drivers/usb/spca5xx.h \ +- drivers/usb/spcaCompat.h \ +- drivers/usb/spcausb.h \ +- drivers/usb/sonix.h \ +- drivers/usb/spca500_init.h \ +- drivers/usb/spca501_init.h \ +- drivers/usb/sp5xxfw2.h \ +- drivers/usb/spca505_init.h \ +- drivers/usb/spca506.h \ +- drivers/usb/spca508_init.h \ +- drivers/usb/spca561.h \ +- drivers/usb/zc3xx.h\ +- drivers/usb/tv8532.h\ +- drivers/usb/cx11646.h\ +- drivers/usb/mr97311.h\ +- drivers/usb/sn9cxxx.h\ +- drivers/usb/pac207.h\ +- +- +-drivers/usb/spcadecoder.o: drivers/usb/spcadecoder.h \ +- drivers/usb/spcagamma.h \ +- drivers/usb/jpeg_header.h ++EXTRA_CFLAGS += $(DEFINES) + +-endif # End kernel version test ++spca5xx-objs := drivers/usb/spca5xx.o drivers/usb/spcadecoder.o ++ ++obj-m += spca5xx.o ++obj-y := $(spca5xx-objs) ++ ++O_TARGET := $(obj-m) + ++-include $(TOPDIR)/Rules.make ++ ++endif # End kernel version test + + ############################################################################## + # OTHER TARGETS -- 2.11.0