From: Felix Fietkau Date: Sat, 9 Aug 2008 20:36:05 +0000 (+0000) Subject: move some webcam/sound related stuff from trunk to packages X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=78d82b6bde79899591e97f8825c86abc407711ec;p=openwrt%2Fsvn-archive%2Fpackages.git move some webcam/sound related stuff from trunk to packages SVN-Revision: 12260 --- diff --git a/multimedia/gspcav1/Makefile b/multimedia/gspcav1/Makefile new file mode 100644 index 000000000..0a1bad507 --- /dev/null +++ b/multimedia/gspcav1/Makefile @@ -0,0 +1,39 @@ +# +# Copyright (C) 2006 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id$ + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=gspcav1 +PKG_VERSION:=20071224 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://mxhaard.free.fr/spca50x/Download +PKG_MD5SUM:=14853ba1f4edc1e685039fca56e5ebf + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/video-gspca + SUBMENU:=Video Support + TITLE:=SPCA5xx based USB webcam support + URL:=http://mxhaard.free.fr/ + DEPENDS:=@LINUX_2_6 @USB_SUPPORT +kmod-usb-core kmod-video-core + FILES:=$(PKG_BUILD_DIR)/gspca.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,90,gspca) +endef + +define Build/Compile + $(MAKE) -C $(LINUX_DIR) \ + ARCH="$(LINUX_KARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + modules +endef + +$(eval $(call KernelPackage,video-gspca)) diff --git a/multimedia/linux-uvc/Makefile b/multimedia/linux-uvc/Makefile new file mode 100644 index 000000000..d146520da --- /dev/null +++ b/multimedia/linux-uvc/Makefile @@ -0,0 +1,43 @@ +# +# Copyright (C) 2007 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id$ + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=linux-uvc +PKG_REV:=215 +PKG_VERSION:=r$(PKG_REV) +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=http://svn.berlios.de/svnroot/repos/linux-uvc/linux-uvc/trunk/ +PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) +PKG_SOURCE_VERSION:=$(PKG_REV) +PKG_SOURCE_PROTO:=svn + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/video-uvc + SUBMENU:=Video Support + TITLE:=USB Video Class (UVC) support + URL:=http://linux-uvc.berlios.de/ + DEPENDS:=@LINUX_2_6 @USB_SUPPORT +kmod-usb-core kmod-video-core + FILES:=$(PKG_BUILD_DIR)/uvcvideo.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,90,uvcvideo) +endef + +define Build/Compile + echo "#define DRIVER_VERSION \"SVN $(PKG_VERSION)\"" > "$(PKG_BUILD_DIR)/version.h" + $(MAKE) -C $(LINUX_DIR) \ + ARCH="$(LINUX_KARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + modules +endef + +$(eval $(call KernelPackage,video-uvc)) diff --git a/multimedia/nw802-2.4/Makefile b/multimedia/nw802-2.4/Makefile new file mode 100644 index 000000000..ff39ad772 --- /dev/null +++ b/multimedia/nw802-2.4/Makefile @@ -0,0 +1,45 @@ +# +# Copyright (C) 2006-2008 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id$ + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=nw802-2.4 +PKG_VERSION:=0.0.99 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=@SF/nw802 +PKG_MD5SUM:=bf3512efaa48cfa972b16318011c1963 + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/video-nw8xx + SUBMENU:=Video Support + TITLE:=NW8xx based USB webcam support + URL:=http://nw802.sourceforge.net/ + DEPENDS:=@LINUX_2_6 @USB_SUPPORT +kmod-usb-video kmod-video-core + FILES:=$(PKG_BUILD_DIR)/nw8xx.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,70,nw8xx) +endef + +define KernelPackage/video-nw8xx/description + Kernel support for NW8xx based USB cameras. +endef + +define Build/Compile + ln -sf $(LINUX_DIR)/drivers/media/video/usbvideo/usbvideo.h \ + $(PKG_BUILD_DIR)/ + $(MAKE) -C $(LINUX_DIR) \ + ARCH="$(LINUX_KARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + modules +endef + +$(eval $(call KernelPackage,video-nw8xx)) diff --git a/multimedia/nw802-2.4/patches/001-linux_2_6_cvs.patch b/multimedia/nw802-2.4/patches/001-linux_2_6_cvs.patch new file mode 100644 index 000000000..694d62e8b --- /dev/null +++ b/multimedia/nw802-2.4/patches/001-linux_2_6_cvs.patch @@ -0,0 +1,2980 @@ +diff -Naur nw802-2.4-0.0.99/cvideopro.init nw802-2.4/cvideopro.init +--- nw802-2.4-0.0.99/cvideopro.init 1970-01-01 01:00:00.000000000 +0100 ++++ nw802-2.4/cvideopro.init 2003-10-21 18:29:27.000000000 +0200 +@@ -0,0 +1,107 @@ ++ { 0x0406, 0x0000, 0x0001, ++ { 0x04 } }, ++ { 0x0000, 0x0000, 0x0040, ++ { 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c, ++ 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4, ++ 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01 } }, ++ { 0x0040, 0x0000, 0x0040, ++ { 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54, ++ 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, ++ 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30 } }, ++ { 0x0080, 0x0000, 0x001f, ++ { 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f, ++ 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, ++ 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94, ++ 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00 } }, ++ { 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++ { 0x0300, 0x0000, 0x0003, ++ { 0x03, 0x00, 0x00 } }, ++ { 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x09, 0x99 } }, ++ { 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x1000, 0x0000, 0x0040, ++ { 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, ++ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c, ++ 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, ++ { 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, ++ 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, ++ 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++ { 0x1080, 0x0000, 0x001b, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82, ++ 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, ++ 0x01, 0xf0, 0x00 } }, ++ { 0x0200, 0x0000, 0x0011, ++ { 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0, ++ 0x40 } }, ++ { 0x101a, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x1000, 0x0000, 0x0001, ++ { 0xac } }, ++ { 0x1085, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00 } }, ++ { 0x101b, 0x0000, 0x0002, ++ { 0x3b, 0x01 } }, ++ { 0x1011, 0x0000, 0x0008, ++ { 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00 } }, ++ { 0x101f, 0x0000, 0x0006, ++ { 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00 } }, ++ { 0x101d, 0x0000, 0x0002, ++ { 0x40, 0x06 } }, ++ { 0x100e, 0x0000, 0x0001, ++ { 0x08 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0, ++ 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc, ++ 0xdc } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x100f, 0x0000, 0x0002, ++ { 0x12, 0x12 } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x0c } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0, ++ 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc, ++ 0xdc } }, ++ { 0x100b, 0x0000, 0x0001, ++ { 0x09 } }, ++ { 0x100d, 0x0000, 0x0001, ++ { 0x10 } }, // Exposure ++ { 0x100c, 0x0000, 0x0001, ++ { 0x2f } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x00 } } ++ +diff -Naur nw802-2.4-0.0.99/d-link-350c.init nw802-2.4/d-link-350c.init +--- nw802-2.4-0.0.99/d-link-350c.init 1970-01-01 01:00:00.000000000 +0100 ++++ nw802-2.4/d-link-350c.init 2003-09-23 20:15:30.000000000 +0200 +@@ -0,0 +1,107 @@ ++ { 0x0406, 0x0000, 0x0001, ++ { 0x04 } }, ++ { 0x0000, 0x0000, 0x0040, ++ { 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d, ++ 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4, ++ 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, ++ 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, ++ { 0x0040, 0x0000, 0x0040, ++ { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, ++ 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, ++ 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, ++ { 0x0080, 0x0000, 0x001f, ++ { 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, ++ 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94, ++ 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00 } }, ++ { 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++ { 0x0300, 0x0000, 0x0003, ++ { 0x03, 0x00, 0x00 } }, ++ { 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x09, 0x99 } }, ++ { 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x1000, 0x0000, 0x0040, ++ { 0xa1, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, ++ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14, ++ 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, ++ { 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, ++ 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, ++ 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++ { 0x1080, 0x0000, 0x001b, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x82, ++ 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, ++ 0x01, 0xf0, 0x00 } }, ++ { 0x0200, 0x0000, 0x0011, ++ { 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78, ++ 0x40 } }, ++ { 0x101a, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x1000, 0x0000, 0x0001, ++ { 0xad } }, ++ { 0x0000, 0x0000, 0x0001, ++ { 0x08 } }, ++ { 0x1085, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00 } }, ++ { 0x101b, 0x0000, 0x0002, ++ { 0x00, 0x00 } }, ++ { 0x1011, 0x0000, 0x0008, ++ { 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00 } }, ++ { 0x101d, 0x0000, 0x0008, ++ { 0x40, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00 } }, ++ { 0x100e, 0x0000, 0x0001, ++ { 0x20 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f, ++ 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf, ++ 0xea } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x100f, 0x0000, 0x0002, ++ { 0x11, 0x11 } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x10 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f, ++ 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf, ++ 0xea } }, ++ { 0x100b, 0x0000, 0x0001, ++ { 0x19 } }, ++ { 0x100d, 0x0000, 0x0001, ++ { 0x10 } }, ++ { 0x100c, 0x0000, 0x0001, ++ { 0x1e } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x00 } } ++ +diff -Naur nw802-2.4-0.0.99/DS3303u.init nw802-2.4/DS3303u.init +--- nw802-2.4-0.0.99/DS3303u.init 1970-01-01 01:00:00.000000000 +0100 ++++ nw802-2.4/DS3303u.init 2003-11-13 22:48:31.000000000 +0100 +@@ -0,0 +1,108 @@ ++ { 0x0506, 0x0000, 0x0001, ++ { 0x04 } }, ++ { 0x0000, 0x0000, 0x0040, ++ { 0x16, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e, ++ 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4, ++ 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, ++ 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, ++ { 0x0040, 0x0000, 0x0040, ++ { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, ++ 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, ++ 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, ++ { 0x0080, 0x0000, 0x0022, ++ { 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xa9, 0xa8, 0x1f, 0x00, ++ 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00, ++ 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00, ++ 0x36, 0x00 } }, ++ { 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0x50, ++ 0x40, 0x20 } }, ++ { 0x0300, 0x0000, 0x0003, ++ { 0x03, 0x00, 0x00 } }, ++ { 0x0500, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x09, 0x99 } }, ++ { 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x1000, 0x0000, 0x0040, ++ { 0x2f, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a, ++ 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4, ++ 0x00, 0x01, 0x15, 0xfd, 0x07, 0x3d, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04, 0x01, 0x20, ++ 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, ++ 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x03, ++ 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7 } }, ++ { 0x1040, 0x0000, 0x0040, ++ { 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80, ++ 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f, 0x88, ++ 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4, 0xcb, ++ 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64, ++ 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2, ++ 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43 } }, ++ { 0x1080, 0x0000, 0x0022, ++ { 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f, 0x01, ++ 0x00, 0x00, 0xef, 0x00, 0x02, 0x0a, 0x82, 0x02, ++ 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01, ++ 0xf0, 0x00 } }, ++ { 0x0200, 0x0000, 0x0011, ++ { 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x3f, 0x3f, 0x00, 0xf2, 0x8f, 0x81, ++ 0x40 } }, ++ { 0x101a, 0x0000, 0x0001, ++ { 0x15 } }, ++ { 0x1000, 0x0000, 0x0001, ++ { 0x2f } }, ++ { 0x108c, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00 } }, ++ { 0x101b, 0x0000, 0x0002, ++ { 0x00, 0x00 } }, ++ { 0x1011, 0x0000, 0x0008, ++ { 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00 } }, ++ { 0x1026, 0x0000, 0x0006, ++ { 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00 } }, ++ { 0x1024, 0x0000, 0x0002, ++ { 0x40, 0x06 } }, ++ { 0x100e, 0x0000, 0x0001, ++ { 0x08 } }, ++ { 0x1048, 0x0000, 0x0011, ++ { 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6, ++ 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, ++ 0xf9 } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x100f, 0x0000, 0x0002, ++ { 0x16, 0x16 } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x0c } }, ++ { 0x1048, 0x0000, 0x0011, ++ { 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6, ++ 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, ++ 0xf9 } }, ++ { 0x100b, 0x0000, 0x0001, ++ { 0x26 } }, ++ { 0x100d, 0x0000, 0x0001, ++ { 0x10 } }, ++ { 0x100c, 0x0000, 0x0001, ++ { 0x1c } }, ++ { 0x0506, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x0504, 0x0000, 0x0001, ++ { 0x00 } }, +diff -Naur nw802-2.4-0.0.99/kr651us.init nw802-2.4/kr651us.init +--- nw802-2.4-0.0.99/kr651us.init 1970-01-01 01:00:00.000000000 +0100 ++++ nw802-2.4/kr651us.init 2007-01-03 21:13:23.000000000 +0100 +@@ -0,0 +1,106 @@ ++ { 0x0406, 0x0000, 0x0001, ++ { 0x04 } }, ++ { 0x0000, 0x0000, 0x0040, ++ { 0x44, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x48, ++ 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4, ++ 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01 } }, ++ { 0x0040, 0x0000, 0x0040, ++ { 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54, ++ 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, ++ 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30 } }, ++ { 0x0080, 0x0000, 0x001f, ++ { 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f, ++ 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, ++ 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94, ++ 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00 } }, ++ { 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++ { 0x0300, 0x0000, 0x0003, ++ { 0x02, 0x00, 0x00 } }, ++ { 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x09, 0x99 } }, ++ { 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x1000, 0x0000, 0x0040, ++ { 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, ++ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c, ++ 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, ++ { 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, ++ 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, ++ 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++ { 0x1080, 0x0000, 0x001b, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82, ++ 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, ++ 0x01, 0xf0, 0x00 } }, ++ { 0x0200, 0x0000, 0x0011, ++ { 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78, ++ 0x40 } }, ++ { 0x101a, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x1000, 0x0000, 0x0001, ++ { 0xac } }, ++ { 0x1085, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00 } }, ++ { 0x101b, 0x0000, 0x0002, ++ { 0x00, 0x00 } }, ++ { 0x1011, 0x0000, 0x0008, ++ { 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00 } }, ++ { 0x101d, 0x0000, 0x0006, ++ { 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00 } }, ++ { 0x101d, 0x0000, 0x0002, ++ { 0x28, 0x01 } }, ++ { 0x100e, 0x0000, 0x0001, ++ { 0x08 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0x8a, ++ 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, ++ 0xdc } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x100f, 0x0000, 0x0002, ++ { 0x0c, 0x0c } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x0c } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0x8a, ++ 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, ++ 0xdc } }, ++ { 0x100b, 0x0000, 0x0001, ++ { 0x10 } }, ++ { 0x100d, 0x0000, 0x0001, ++ { 0x10 } }, ++ { 0x100c, 0x0000, 0x0001, ++ { 0x2b } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x00 } } +diff -Naur nw802-2.4-0.0.99/kritter.init nw802-2.4/kritter.init +--- nw802-2.4-0.0.99/kritter.init 1970-01-01 01:00:00.000000000 +0100 ++++ nw802-2.4/kritter.init 2004-03-06 20:28:40.000000000 +0100 +@@ -0,0 +1,107 @@ ++ { 0x0406, 0x0000, 0x0001, ++ { 0x06 } }, ++ { 0x0000, 0x0000, 0x0040, ++ { 0x44, 0x96, 0x98, 0x94, 0x03, 0x18, 0x00, 0x48, ++ 0x0f, 0x1e, 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x0b, 0x00, 0x1b, 0x00, 0x0a, 0x01, 0x28, ++ 0x07, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01 } }, ++ { 0x0040, 0x0000, 0x0040, ++ { 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0, ++ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54, ++ 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, ++ 0x00, 0x5d, 0x00, 0x0e, 0x00, 0x7e, 0x00, 0x30 } }, ++ { 0x0080, 0x0000, 0x001f, ++ { 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f, ++ 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, ++ 0x00, 0x0b, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94, ++ 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00 } }, ++ { 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++ { 0x0300, 0x0000, 0x0003, ++ { 0x02, 0x00, 0x00 } }, ++ { 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x09, 0x99 } }, ++ { 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x1000, 0x0000, 0x0040, ++ { 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, ++ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c, ++ 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, ++ { 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, ++ 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, ++ 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++ { 0x1080, 0x0000, 0x001b, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x82, ++ 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, ++ 0x01, 0xf0, 0x00 } }, ++ { 0x0200, 0x0000, 0x0011, ++ { 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0, ++ 0x40 } }, ++ { 0x101a, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x1000, 0x0000, 0x0001, ++ { 0xaf } }, ++ { 0x1085, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00 } }, ++ { 0x101b, 0x0000, 0x0002, ++ { 0x3b, 0x01 } }, ++ { 0x1011, 0x0000, 0x0008, ++ { 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00 } }, ++ { 0x101d, 0x0000, 0x0006, ++ { 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00 } }, ++ { 0x101d, 0x0000, 0x0002, ++ { 0x00, 0x00 } }, ++ { 0x100e, 0x0000, 0x0001, ++ { 0x08 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86, ++ 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4, ++ 0xcb } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x100f, 0x0000, 0x0002, ++ { 0x0d, 0x0d } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x02 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86, ++ 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4, ++ 0xcb } }, ++ { 0x100b, 0x0000, 0x0001, ++ { 0x17 } }, ++ { 0x100d, 0x0000, 0x0001, ++ { 0x10 } }, ++ { 0x100c, 0x0000, 0x0001, ++ { 0x1e } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x00 } } ++ +diff -Naur nw802-2.4-0.0.99/LICENSE nw802-2.4/LICENSE +--- nw802-2.4-0.0.99/LICENSE 2003-08-20 23:34:39.000000000 +0200 ++++ nw802-2.4/LICENSE 2004-07-06 09:43:53.000000000 +0200 +@@ -55,7 +55,7 @@ + + The precise terms and conditions for copying, distribution and + modification follow. +- ++ + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +@@ -110,7 +110,7 @@ + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) +- ++ + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, + and can be reasonably considered independent and separate works in +@@ -168,7 +168,7 @@ + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. +- ++ + 4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is +@@ -225,7 +225,7 @@ + + This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License. +- ++ + 8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License +@@ -278,7 +278,7 @@ + POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS +- ++ + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +diff -Naur nw802-2.4-0.0.99/Makefile nw802-2.4/Makefile +--- nw802-2.4-0.0.99/Makefile 2003-08-20 23:34:39.000000000 +0200 ++++ nw802-2.4/Makefile 2007-09-05 23:43:35.000000000 +0200 +@@ -1,29 +1,4 @@ +-# GCC stuff +-GCCLIB=`dirname \`gcc -print-libgcc-file-name\`` +-INCLUDES=-nostdinc -I /usr/src/linux/include -I ${GCCLIB}/include/ -include /usr/src/linux/include/linux/modversions.h +-#CFLAGS=-O2 -D__KERNEL__ -DMODULE -Wall -DMODVERSIONS -nostdinc -ggdb +-CFLAGS=-O3 -D__KERNEL__ -DMODULE -Wall -DMODVERSIONS -funroll-loops -frerun-cse-after-loop -funroll-all-loops -fomit-frame-pointer +-#CFLAGS=-O3 -D__KERNEL__ -DMODULE -Wall -DMODVERSIONS -nostdinc -march=pentium4 -msse -msse2 -m3dnow -mmmx -mfpmath=sse -funroll-loops -frerun-cse-after-loop -funroll-all-loops -fomit-frame-pointer +-CC=gcc ++KERNEL_SOURCE ?= /lib/modules/`uname -r`/build + +-OBJ=nw802.o usbvideo.o nw8xx_regedit +- +-# Build rules +- +-all: $(OBJ) +- +-usbvideo.o: usbvideo.c usbvideo.h +- $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $< +- +-nw8xx_jpgl.o: nw8xx_jpgl.c nw8xx_jpgl.h +- $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $< +- +-nw802.o: nw802.c usbvideo.o nw8xx_jpgl.o nw802.init nw801.init nw800.init +- $(CC) $(CFLAGS) $(INCLUDES) -c -o nw802_core.o $< +- $(LD) -r -o $@ nw802_core.o nw8xx_jpgl.o +- +-nw8xx_regedit: nw8xx_regedit.c +- $(CC) $(CFLAGS) `pkg-config gtk+-2.0 --cflags --libs` -o $@ $< +- +-clean: +- rm -f *.so *.o *~ *.swp $(OBJ) ++obj-m := nw8xx.o ++nw8xx-objs := nw8xx_jpgl.o nw802.o +diff -Naur nw802-2.4-0.0.99/mustek_300_mini.init nw802-2.4/mustek_300_mini.init +--- nw802-2.4-0.0.99/mustek_300_mini.init 1970-01-01 01:00:00.000000000 +0100 ++++ nw802-2.4/mustek_300_mini.init 2004-11-08 23:16:42.000000000 +0100 +@@ -0,0 +1,106 @@ ++{ 0x0406, 0x0000, 0x0001, ++ { 0x04 } }, ++{ 0x0000, 0x0000, 0x0040, ++ { 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d, ++ 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4, ++ 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, ++ 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, ++{ 0x0040, 0x0000, 0x0040, ++ { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, ++ 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, ++ 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, ++{ 0x0080, 0x0000, 0x001f, ++ { 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, ++ 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94, ++ 0x00, 0x10, 0x06, 0xfc, 0x05, 0x0c, 0x06 } }, ++{ 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++{ 0x0300, 0x0000, 0x0003, ++ { 0x03, 0x00, 0x00 } }, ++{ 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00 } }, ++{ 0x0600, 0x0000, 0x0002, ++ { 0x09, 0x99 } }, ++{ 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++{ 0x1000, 0x0000, 0x0040, ++ { 0xa1, 0x02, 0x80, 0x00, 0x13, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, ++ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14, ++ 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, ++{ 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, ++ 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, ++ 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++{ 0x1080, 0x0000, 0x001b, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x82, ++ 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, ++ 0x01, 0xf0, 0x00 } }, ++{ 0x0200, 0x0000, 0x0011, ++ { 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78, ++ 0x40 } }, ++{ 0x101a, 0x0000, 0x0001, ++ { 0x00 } }, ++{ 0x1000, 0x0000, 0x0001, ++ { 0xad } }, ++{ 0x0000, 0x0000, 0x0001, ++ { 0x08 } }, ++{ 0x1085, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00 } }, ++{ 0x101b, 0x0000, 0x0002, ++ { 0x00, 0x00 } }, ++{ 0x1011, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00 } }, ++{ 0x101d, 0x0000, 0x0008, ++ { 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20 } }, ++{ 0x100e, 0x0000, 0x0001, ++ { 0x0f } }, ++{ 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e, ++ 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9, ++ 0xff } }, ++{ 0x100f, 0x0000, 0x0002, ++ { 0x11, 0x11 } }, ++{ 0x1003, 0x0000, 0x0001, ++ { 0x0c } }, ++{ 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e, ++ 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9, ++ 0xff } }, ++{ 0x100b, 0x0000, 0x0001, ++ { 0x1c } }, ++{ 0x100d, 0x0000, 0x0001, ++ { 0x1a } }, ++{ 0x100c, 0x0000, 0x0001, ++ { 0x34 } }, ++{ 0x0405, 0x0000, 0x0001, ++ { 0x61 } }, ++{ 0x0404, 0x0000, 0x0001, ++ { 0x40 } }, ++{ 0x0406, 0x0000, 0x0001, ++ { 0x03 } } +diff -Naur nw802-2.4-0.0.99/nw800.init nw802-2.4/nw800.init +--- nw802-2.4-0.0.99/nw800.init 2003-08-20 23:34:39.000000000 +0200 ++++ nw802-2.4/nw800.init 2004-10-30 11:48:13.000000000 +0200 +@@ -1,219 +1,219 @@ +- { 0x0500, 0x0000, 0x0001, +- { 0x55 } }, +- { 0x109b, 0x0000, 0x0001, +- { 0xaa } }, +- { 0x0502, 0x0000, 0x0001, +- { 0x02 } }, +- { 0x0600, 0x0000, 0x0002, +- { 0x04, 0xd9 } }, +- { 0x0505, 0x0000, 0x0001, +- { 0x00 } }, +- { 0x0505, 0x0000, 0x0001, +- { 0x01 } }, +- { 0x0406, 0x0000, 0x0001, +- { 0x04 } }, +- { 0x0406, 0x0000, 0x0001, +- { 0xc0 } }, +- { 0x0000, 0x0000, 0x0040, +- { 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f, +- 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19, +- 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, +- 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24, +- 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, +- 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, +- 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, +- 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, +- { 0x0040, 0x0000, 0x0040, +- { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, +- 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, +- 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, +- 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, +- 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, +- 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, +- 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, +- { 0x0080, 0x0000, 0x001f, +- { 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08, +- 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, +- 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00 } }, +- { 0x0200, 0x0000, 0x0012, +- { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, +- 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, +- 0x40, 0x20 } }, +- { 0x0300, 0x0000, 0x0003, +- { 0x03, 0x00, 0x00 } }, +- { 0x0400, 0x0000, 0x0007, +- { 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0 } }, +- { 0x0500, 0x0000, 0x0006, +- { 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20 } }, +- { 0x0600, 0x0000, 0x001b, +- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00 } }, +- { 0x0800, 0x0000, 0x0015, +- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00 } }, +- { 0x1000, 0x0000, 0x0040, +- { 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, +- 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, +- 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, +- 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, +- 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, +- { 0x1040, 0x0000, 0x0040, +- { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, +- 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, +- 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, +- 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, +- 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, +- 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, +- 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, +- 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, +- { 0x1080, 0x0000, 0x001d, +- { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62, +- 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, +- 0x01, 0x60, 0x01, 0x00, 0x00 } }, +- { 0x0404, 0x0000, 0x0001, +- { 0xff } }, +- { 0x0406, 0x0000, 0x0001, +- { 0xc4 } }, +- { 0x0406, 0x0000, 0x0001, +- { 0xc0 } }, +- { 0x0000, 0x0000, 0x0040, +- { 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f, +- 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19, +- 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, +- 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24, +- 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, +- 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, +- 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, +- 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, +- { 0x0040, 0x0000, 0x0040, +- { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, +- 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, +- 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, +- 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, +- 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, +- 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, +- 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, +- { 0x0080, 0x0000, 0x001f, +- { 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08, +- 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, +- 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00 } }, +- { 0x0200, 0x0000, 0x0012, +- { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, +- 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, +- 0x40, 0x20 } }, +- { 0x0300, 0x0000, 0x0003, +- { 0x03, 0x00, 0x00 } }, +- { 0x0400, 0x0000, 0x0007, +- { 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0 } }, +- { 0x0500, 0x0000, 0x0006, +- { 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20 } }, +- { 0x0600, 0x0000, 0x001b, +- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00 } }, +- { 0x0800, 0x0000, 0x0015, +- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00 } }, +- { 0x1000, 0x0000, 0x0040, +- { 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, +- 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, +- 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, +- 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, +- 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, +- { 0x1040, 0x0000, 0x0040, +- { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, +- 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, +- 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, +- 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, +- 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, +- 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, +- 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, +- 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, +- { 0x1080, 0x0000, 0x001d, +- { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62, +- 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, +- 0x01, 0x60, 0x01, 0x00, 0x00 } }, +- { 0x0200, 0x0000, 0x0011, +- { 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00, +- 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65, +- 0x40 } }, +- { 0x0080, 0x0000, 0x0001, +- { 0xa0 } }, +- { 0x101a, 0x0000, 0x0001, +- { 0x00 } }, +- { 0x0091, 0x0000, 0x0002, +- { 0x6c, 0x01 } }, +- { 0x0003, 0x0000, 0x0002, +- { 0xc8, 0x01 } }, +- { 0x101a, 0x0000, 0x0001, +- { 0x00 } }, +- { 0x1000, 0x0000, 0x0001, +- { 0x83 } }, +- { 0x108f, 0x0000, 0x000c, +- { 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, +- 0x20, 0x01, 0x60, 0x01 } }, +- { 0x1085, 0x0000, 0x0008, +- { 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01 } }, +- { 0x101b, 0x0000, 0x0002, +- { 0x69, 0x00 } }, +- { 0x1011, 0x0000, 0x0008, +- { 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01 } }, +- { 0x0502, 0x0000, 0x0001, +- { 0x02 } }, +- { 0x0600, 0x0000, 0x0002, +- { 0x04, 0xd9 } }, +- { 0x0505, 0x0000, 0x0001, +- { 0x20 } }, +- { 0x0505, 0x0000, 0x0001, +- { 0x21 } }, +- { 0x100e, 0x0000, 0x0001, +- { 0x08 } }, +- { 0x1041, 0x0000, 0x0011, +- { 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83, +- 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0, +- 0xea } }, +- { 0x1003, 0x0000, 0x0001, +- { 0x00 } }, +- { 0x100f, 0x0000, 0x0002, +- { 0x13, 0x13 } }, +- { 0x1003, 0x0000, 0x0001, +- { 0x14 } }, +- { 0x1041, 0x0000, 0x0011, +- { 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83, +- 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0, +- 0xea } }, +- { 0x100b, 0x0000, 0x0001, +- { 0x14 } }, +- { 0x100d, 0x0000, 0x0001, +- { 0x20 } }, +- { 0x100c, 0x0000, 0x0001, +- { 0x34 } }, +- { 0x0406, 0x0000, 0x0001, +- { 0xc3 } }, +- { 0x0404, 0x0000, 0x0001, +- { 0x00 } }, +- { 0x0502, 0x0000, 0x0001, +- { 0x02 } }, +- { 0x0600, 0x0000, 0x0002, +- { 0x00, 0x48 } }, +- { 0x0505, 0x0000, 0x0001, +- { 0x20 } }, +- { 0x0505, 0x0000, 0x0001, +- { 0x21 } } ++ { 0x0500, 0x0000, 0x0001, ++ { 0x55 } }, ++ { 0x109b, 0x0000, 0x0001, ++ { 0xaa } }, ++ { 0x0502, 0x0000, 0x0001, ++ { 0x02 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x04, 0xd9 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x04 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0xc0 } }, ++ { 0x0000, 0x0000, 0x0040, ++ { 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f, ++ 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24, ++ 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, ++ 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, ++ { 0x0040, 0x0000, 0x0040, ++ { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, ++ 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, ++ 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, ++ { 0x0080, 0x0000, 0x001f, ++ { 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08, ++ 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, ++ 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00 } }, ++ { 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++ { 0x0300, 0x0000, 0x0003, ++ { 0x03, 0x00, 0x00 } }, ++ { 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0 } }, ++ { 0x0500, 0x0000, 0x0006, ++ { 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20 } }, ++ { 0x0600, 0x0000, 0x001b, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00 } }, ++ { 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x1000, 0x0000, 0x0040, ++ { 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, ++ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, ++ { 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, ++ 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, ++ 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++ { 0x1080, 0x0000, 0x001d, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62, ++ 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, ++ 0x01, 0x60, 0x01, 0x00, 0x00 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0xff } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0xc4 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0xc0 } }, ++ { 0x0000, 0x0000, 0x0040, ++ { 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f, ++ 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24, ++ 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, ++ 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, ++ { 0x0040, 0x0000, 0x0040, ++ { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, ++ 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, ++ 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, ++ { 0x0080, 0x0000, 0x001f, ++ { 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08, ++ 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, ++ 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00 } }, ++ { 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++ { 0x0300, 0x0000, 0x0003, ++ { 0x03, 0x00, 0x00 } }, ++ { 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0 } }, ++ { 0x0500, 0x0000, 0x0006, ++ { 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20 } }, ++ { 0x0600, 0x0000, 0x001b, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00 } }, ++ { 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x1000, 0x0000, 0x0040, ++ { 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, ++ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, ++ { 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, ++ 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, ++ 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++ { 0x1080, 0x0000, 0x001d, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62, ++ 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, ++ 0x01, 0x60, 0x01, 0x00, 0x00 } }, ++ { 0x0200, 0x0000, 0x0011, ++ { 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00, ++ 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65, ++ 0x40 } }, ++ { 0x0080, 0x0000, 0x0001, ++ { 0xa0 } }, ++ { 0x101a, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0091, 0x0000, 0x0002, ++ { 0x6c, 0x01 } }, ++ { 0x0003, 0x0000, 0x0002, ++ { 0xc8, 0x01 } }, ++ { 0x101a, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x1000, 0x0000, 0x0001, ++ { 0x83 } }, ++ { 0x108f, 0x0000, 0x000c, ++ { 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, ++ 0x20, 0x01, 0x60, 0x01 } }, ++ { 0x1085, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01 } }, ++ { 0x101b, 0x0000, 0x0002, ++ { 0x69, 0x00 } }, ++ { 0x1011, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01 } }, ++ { 0x0502, 0x0000, 0x0001, ++ { 0x02 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x04, 0xd9 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x20 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x21 } }, ++ { 0x100e, 0x0000, 0x0001, ++ { 0x08 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83, ++ 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0, ++ 0xea } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x100f, 0x0000, 0x0002, ++ { 0x13, 0x13 } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x14 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83, ++ 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0, ++ 0xea } }, ++ { 0x100b, 0x0000, 0x0001, ++ { 0x14 } }, ++ { 0x100d, 0x0000, 0x0001, ++ { 0x20 } }, ++ { 0x100c, 0x0000, 0x0001, ++ { 0x34 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0xc3 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0502, 0x0000, 0x0001, ++ { 0x02 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x00, 0x48 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x20 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x21 } } +diff -Naur nw802-2.4-0.0.99/nw801.init nw802-2.4/nw801.init +--- nw802-2.4-0.0.99/nw801.init 2003-08-20 23:34:39.000000000 +0200 ++++ nw802-2.4/nw801.init 2003-08-25 22:22:26.000000000 +0200 +@@ -66,7 +66,7 @@ + { 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x78, 0x18, 0x0b, 0x06, 0xa2, 0x86, 0x78 } }, + { 0x020f, 0x0000, 0x0001, +- { 0x78 } }, ++ { 0x6b } }, + { 0x101a, 0x0000, 0x0001, + { 0x15 } }, + { 0x0000, 0x0000, 0x0001, +@@ -82,29 +82,15 @@ + { 0x1019, 0x0000, 0x0001, + { 0x09 } }, + { 0x1024, 0x0000, 0x0006, +- { 0xc0, 0x00, 0x3f, 0x02, 0x00, 0x01 } }, +- { 0x0003, 0x0000, 0x0002, +- { 0x92, 0x03 } }, +- { 0x001d, 0x0000, 0x0004, +- { 0xf2, 0x00, 0x24, 0x07 } }, +- { 0x007b, 0x0000, 0x0001, +- { 0xcf } }, +- { 0x1094, 0x0000, 0x0001, +- { 0x07 } }, ++ { 0xc0, 0x00, 0x24, 0x02, 0x00, 0x01 } }, + { 0x0505, 0x0000, 0x0001, + { 0x01 } }, + { 0x0504, 0x0000, 0x0001, + { 0x01 } }, + { 0x100e, 0x0000, 0x0001, +- { 0x08 } }, +- { 0x1048, 0x0000, 0x0011, +- { 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8, +- 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0, +- 0xf0 } }, +- { 0x1003, 0x0000, 0x0001, +- { 0x00 } }, ++ { 0x18 } }, + { 0x100f, 0x0000, 0x0002, +- { 0x0c, 0x0c } }, ++ { 0x12, 0x12 } }, + { 0x1003, 0x0000, 0x0001, + { 0x08 } }, + { 0x1048, 0x0000, 0x0011, +@@ -112,11 +98,10 @@ + 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0, + 0xf0 } }, + { 0x100b, 0x0000, 0x0001, +- { 0x0a } }, ++ { 0x12 } }, + { 0x100d, 0x0000, 0x0001, +- { 0x0b } }, ++ { 0x10 } }, + { 0x100c, 0x0000, 0x0001, +- { 0x1c } }, ++ { 0x15 } }, + { 0x0506, 0x0000, 0x0001, + { 0x03 } }, +- +diff -Naur nw802-2.4-0.0.99/nw802.c nw802-2.4/nw802.c +--- nw802-2.4-0.0.99/nw802.c 2003-08-21 23:13:37.000000000 +0200 ++++ nw802-2.4/nw802.c 2007-09-05 23:29:52.000000000 +0200 +@@ -23,11 +23,12 @@ + // + // [ sources bestview with tabstop=4 ] + // +- ++ + #include +-#include + #include ++#include + #include ++#include + + #include "usbvideo.h" + #include "nw8xx_jpgl.h" +@@ -77,21 +78,14 @@ + typedef struct // This structure lives in struct uvd->user field. + { + unsigned char veio_buf[MAX_VEIO_LEN]; // Buffer for vendor usb I/O +- int type; // Type of the cam +-} nw802_t; +- +-typedef struct // Represent a supported device +-{ +- unsigned short int idVendor; +- unsigned short int idProduct; + enum + { +- NW800 = 0, +- NW801 = 1, +- NW802 = 2 +- } model; +- char *name; +-} supportedDevice_t; ++ BRIDGE_UNKNOW = 0x00, ++ BRIDGE_NW800, ++ BRIDGE_NW801, ++ BRIDGE_NW802 ++ } bridge_type; // Model of the bridge ++} nw802_t; + + typedef struct + { +@@ -112,6 +106,17 @@ + SIZE_END + }; + ++ ++/* support for a /dev/nw8xx entry */ ++/* presently only used to get/set registers */ ++ ++struct uvd *nw8xx_uvd=NULL; ++ ++static unsigned int reg_addr; ++static unsigned char reg_val; ++ ++#define NW8XX_IS_OPEN 0x01 ++static unsigned long nw8xx_status = 0; + // ============================================================================ + // Supported camera lists + // ============================================================================ +@@ -119,7 +124,7 @@ + // TODO Data must be repeated twice ... Once in one of our structure, the other + // in a kernel standard structure ... I should find a way to 'unify' this ! + +-static __devinitdata struct usb_device_id nw802_usb_ids[] = ++static struct usb_device_id nw802_usb_ids[] = + { + { USB_DEVICE( 0x046d, 0xd001 ) }, // Logitech Quickam Pro USB + // (dark focus ring) +@@ -138,16 +143,6 @@ + + MODULE_DEVICE_TABLE( usb, nw802_usb_ids ); + +-static supportedDevice_t nw802_supported_devs [] = +- { +- { 0x046d, 0xd001, NW801, "Logitech Quickam Pro USB (dark focus ring)" }, +- { 0x052b, 0xd001, NW802, "Ezonics EZCam Pro USB" }, +- { 0x055f, 0xd001, NW802, "Mustek WCam 300 / PCLine PCL-W300" }, +- { 0x06a5, 0xd001, NW802, "Generic DivIO NW802" }, +- { 0x06a5, 0x0000, NW800, "Generic DivIO NW800" }, +- {} // End entry ( a null name indicate the end ) +- }; +- + + // ============================================================================ + // Global vars +@@ -159,7 +154,7 @@ + static int debug_uv = 0; // The debugging level of USB video + #endif + +-static int size = SIZE_END; ++static int size = SIZE_320x240; + + + // Internal vars +@@ -174,13 +169,13 @@ + // ============================================================================ + + #ifdef ENABLE_DEBUG +-MODULE_PARM(debug, "i"); ++module_param(debug, int, 0); + MODULE_PARM_DESC(debug, "Debug level: 0-5 (default=0)"); +-MODULE_PARM(debug_uv, "i"); ++module_param(debug_uv, int, 0); + MODULE_PARM_DESC(debug_uv, "Debug level of USB Video: 0-2 (default=0)"); + #endif + +-MODULE_PARM(size, "i"); ++module_param(size, int, 0); + MODULE_PARM_DESC(size, "Video size: 0=160x120 1=176x144 2=320x240 3=352x288 4=640x480 (default=2)" ); + + +@@ -188,7 +183,7 @@ + // Module options related funcs + // ============================================================================ + +-static void nw802_validate_params( int cam_type ) ++static void nw802_validate_params( int bridge_type ) + { + #ifdef ENABLE_DEBUG + RESTRICT_TO_RANGE( debug, 0, 5 ); +@@ -197,7 +192,7 @@ + + + if ( size == SIZE_END ) +- size = nw802_supported_devs[cam_type].model == NW800 ? ++ size = bridge_type == BRIDGE_NW800 ? + SIZE_352x288 : SIZE_320x240; + else + RESTRICT_TO_RANGE( size, 0, SIZE_END - 1 ); +@@ -276,6 +271,43 @@ + return rv; + } + ++static int nw802_test_reg( struct uvd *uvd, int regaddr, unsigned char pattern ) ++{ ++ // Vars ++ initURB_t urb; ++ ++ // Prepare to send the byte ++ urb.len = 1; ++ urb.value = 0; ++ urb.data[0] = pattern; ++ urb.index = regaddr; ++ ++ // Send it ++ nw802_vendor_send( uvd, &urb); ++ ++ // Reread the value ++ nw802_vendor_read( uvd, regaddr, &urb.data[0], 1 ); ++ ++ // Is it ok ++ return urb.data[0] == pattern; ++} ++ ++static int nw802_autodetect_bridge( struct uvd *uvd ) ++{ ++ // Autodetect sequence inspired from some log. ++ // We try to detect what registers exists or not. ++ // If 0x0500 does not exist => NW802 ++ // If it does, test 0x109B. If it doesn't exists, ++ // then it's a NW801. Else, a NW800 ++ ++ if ( !nw802_test_reg(uvd, 0x0500, 0x55) ) ++ return BRIDGE_NW802; ++ ++ if ( !nw802_test_reg(uvd, 0x109B, 0xAA) ) ++ return BRIDGE_NW801; ++ ++ return BRIDGE_NW800; ++} + + static int nw802_init_camera( struct uvd *uvd ) + { +@@ -291,7 +323,7 @@ + + }; + +- #define NW801_INIT_LEN 38 ++ #define NW801_INIT_LEN 32 + static const + initURB_t nw801_init[NW801_INIT_LEN] = { + +@@ -311,26 +343,29 @@ + usb_set_interface( uvd->dev, 0x00, uvd->ifaceAltActive ); + + // Send all the packets +- switch ( nw802_supported_devs[NW802_T(uvd)->type].model ) { ++ switch ( NW802_T(uvd)->bridge_type ) { + +- case NW800: ++ case BRIDGE_NW800: + for ( i=0 ; i < NW800_INIT_LEN ; i++ ) + if ( nw802_vendor_send( uvd, &nw800_init[i] ) < 0 ) + return -1; + break; + +- case NW801: ++ case BRIDGE_NW801: + for ( i=0 ; i < NW801_INIT_LEN ; i++ ) + if ( nw802_vendor_send( uvd, &nw801_init[i] ) < 0 ) + return -1; + break; + +- case NW802: ++ case BRIDGE_NW802: + for ( i=0 ; i < NW802_INIT_LEN ; i++ ) + if ( nw802_vendor_send( uvd, &nw802_init[i] ) < 0 ) + return -1; + break; + ++ default: ++ ERR( "How the hell I'm I supposed to init that bridge ?" ); ++ + } + + return 0; +@@ -355,7 +390,7 @@ + + // Video capabilities & channel setting + memset( &uvd->vcap, 0, sizeof(uvd->vcap) ); +- strcpy( uvd->vcap.name, nw802_supported_devs[NW802_T(uvd)->type].name ); ++ strcpy( uvd->vcap.name, "DivIO NW8xx camera" ); + + uvd->vcap.type = VID_TYPE_CAPTURE; + uvd->vcap.channels = 1; +@@ -375,7 +410,6 @@ + uvd->vchan.type = VIDEO_TYPE_CAMERA; + } + +- + // Call backs + + static void nw802_processIsocData(struct uvd *uvd, struct usbvideo_frame *frame) +@@ -384,7 +418,6 @@ + + DEBUG( 5, "nw802_processIsocData" ); + +- + // Try to find first header + rv = jpgl_findHeader( &uvd->dp, canvasX, canvasY, 0 ); + +@@ -402,22 +435,24 @@ + // a frame waiting for decoding + DEBUG( 4, "Frame ready for decoding" ); + +- if ( !jpgl_processFrame(&uvd->dp, frame->data) ) ++ if ( !jpgl_processFrame(&uvd->dp, frame->data, canvasX, canvasY) ) + { + // Frame processing was sucessful + frame->frameState = FrameState_Done; + uvd->curframe = -1; + uvd->stats.frame_num++; + +- // Overlay stats ++/* + #ifdef ENABLE_DEBUG + if ( debug_uv > 0 ) + usbvideo_OverlayStats(uvd, frame); + #endif ++*/ + } + else + DEBUG(3, "Invalid frame detected !"); + } ++ frame->flags |= USBVIDEO_FRAME_FLAG_SOFTWARE_CONTRAST; + } + + static int nw802_setupOnOpen(struct uvd *uvd) +@@ -445,74 +480,63 @@ + // I don't know how to stop it ... + } + +-static void *nw802_probe( struct usb_device *dev, +- unsigned int ifnum, ++static int nw802_probe( struct usb_interface *intf, + const struct usb_device_id *devid ) + { + struct uvd *uvd = NULL; +- int nas, i, type; ++ struct usb_device *dev = interface_to_usbdev(intf); ++ int nas, i; ++ __u8 ifnum = intf->altsetting->desc.bInterfaceNumber; + int actSetting = -1; + int inactSetting = -1; + int maxPS = 0; + unsigned char video_ep = 0; + +- DEBUG( 1, "nw802_probe(...)" ); +- + // We don't want multiple configuration camera + if ( dev->descriptor.bNumConfigurations != 1 ) +- return NULL; ++ return -ENODEV; ++ DEBUG( 1, "nw802_probe(...)" ); + +- // Check Vendor & Product ID +- for ( i=0 ; nw802_supported_devs[i].name ; i++ ) +- if ( ( dev->descriptor.idVendor == nw802_supported_devs[i].idVendor ) && +- ( dev->descriptor.idProduct == nw802_supported_devs[i].idProduct ) ) +- break; +- +- if ( ! nw802_supported_devs[i].name ) +- return NULL; +- +- // Ok it's a supported cam ( at least seems to ) +- type = i; +- INFO( "Compatible DivIO NW80x based webcam found ! [%s]", nw802_supported_devs[type].name ); ++ INFO( "Potentially NW8xx supported cam found ( supported vendor/product IDs )" ); + + // Let's find endpoint, altsettings, ... and validate all this ! +- nas = dev->actconfig->interface[ifnum].num_altsetting; ++ nas = dev->actconfig->interface[ifnum]->num_altsetting; + DEBUG( 2, "Number of alternate settings : %d", nas ); + + for ( i=0 ; iactconfig->interface[ifnum].altsetting[i]; +- if ( interface->bNumEndpoints != 3 ) ++ interface = &dev->actconfig->interface[ifnum]->altsetting[i]; ++ if ( interface->desc.bNumEndpoints != 3 ) + { + ERR( "Interface %u Alt %i has %i endpoints!", +- ifnum, i, interface->bNumEndpoints ); +- return NULL; ++ ifnum, i, interface->desc.bNumEndpoints ); ++ return -ENODEV; + } + +- endpoint = &interface->endpoint[1]; ++ endpoint = &interface->endpoint[1].desc; + + if ( video_ep == 0 ) + video_ep = endpoint->bEndpointAddress; + else if ( video_ep != endpoint->bEndpointAddress ) + { + ERR( "Alternate settings have different endpoint addresses!"); +- return NULL; ++ return -ENODEV; + } + + if ( ( endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK ) != + USB_ENDPOINT_XFER_ISOC ) + { + ERR( "Interface %u Alt %i has non-ISO endpoint 0!", ifnum, i ); +- return NULL; ++ return -ENODEV; + } + + if ( ( endpoint->bEndpointAddress & USB_ENDPOINT_DIR_MASK ) == USB_DIR_OUT ) + { + ERR( "Interface %u Alt %i has ISO OUT endpoint 0!", ifnum, i ); +- return NULL; ++ return -ENODEV; + } + + if ( endpoint->wMaxPacketSize == 0 ) +@@ -522,7 +546,7 @@ + else + { + ERR( "More thant one inactive alt. setting!" ); +- return NULL; ++ return -ENODEV; + } + } + else +@@ -546,14 +570,10 @@ + if ( ( maxPS == 0 ) || ( actSetting < 0 ) || ( inactSetting < 0 ) ) + { + ERR( "No suitable endpoints! Failed to recognize camera!" ); +- return NULL; ++ return -ENODEV; + } +- +- // Check the module options +- nw802_validate_params( type ); +- ++ + // All is Ok, let's register a video device +- MOD_INC_USE_COUNT; // Code below may sleep, use this as a lock + + uvd = usbvideo_AllocateDevice(nw802_cams); + if ( uvd ) +@@ -575,13 +595,34 @@ + uvd->iso_packet_len = maxPS; + uvd->paletteBits = 1L << VIDEO_PALETTE_RGB24; + uvd->defaultPalette = VIDEO_PALETTE_RGB24; ++ ++ // Autodetect the bridge type ++ NW802_T(uvd)->bridge_type = nw802_autodetect_bridge(uvd); ++ switch (NW802_T(uvd)->bridge_type) { ++ case BRIDGE_NW800: ++ INFO( "Detected bridge type : DivIO NW800" ); ++ break; ++ case BRIDGE_NW801: ++ INFO( "Detected bridge type : DivIO NW801" ); ++ break; ++ case BRIDGE_NW802: ++ INFO( "Detected bridge type : DivIO NW802" ); ++ break; ++ default: ++ INFO( "Detected bridge type : Martian ..." ); ++ break; ++ } ++ ++ // Check the module options ++ nw802_validate_params( NW802_T(uvd)->bridge_type ); ++ ++ // Store the size + uvd->canvas = nw802_size_to_videosize( size ); + uvd->videosize = uvd->canvas; + + // Init the nw802 specific part of uvd & global var + canvasX = VIDEOSIZE_X( uvd->canvas ); + canvasY = VIDEOSIZE_Y( uvd->canvas ); +- NW802_T(uvd)->type = type; + + // Configure video & register video device + nw802_configure_video( uvd ); +@@ -595,82 +636,113 @@ + else + ERR( "Failed to allocate usbvideo device!" ); + +- MOD_DEC_USE_COUNT; // Release the 'lock' +- +- return uvd; ++ usb_set_intfdata (intf, uvd); ++ nw8xx_uvd=uvd; ++ return 0; + } + +-static unsigned int reg_addr; +-static unsigned char reg_val; ++static int nw8xx_open(struct inode *inode, struct file *file) ++{ ++ if(nw8xx_status & NW8XX_IS_OPEN) ++ goto out_busy; ++ ++ nw8xx_status |= NW8XX_IS_OPEN; ++ return 0; + +-static int nw8xx_procfs_read(char *page,char **start,off_t off,int count,int *eof,void *data) { +- char *out = page; +- int len; ++out_busy: ++ return -EBUSY; ++} ++ ++static int nw8xx_release(struct inode *inode, struct file *file) ++{ ++ nw8xx_status &= ~NW8XX_IS_OPEN; ++ return 0; ++} ++ ++#define OUTDEVLEN 20 ++static ssize_t nw8xx_read(struct file *file, char *buf, size_t count, loff_t *ppos) ++{ ++ char out[OUTDEVLEN]; ++ int len; + + /* Read the register */ +- nw802_vendor_read( data, reg_addr, ®_val, 1 ); ++ nw802_vendor_read( nw8xx_uvd, reg_addr, ®_val, 1 ); + +- /* Stay under PAGE_SIZE or else */ +- out += sprintf(out, "Register %04X = %02X\n", reg_addr, reg_val ); +- len = out - page; +- len -= off; +- if (len < count) { +- *eof = 1; +- if (len <= 0) +- return 0; +- } else +- len = count; +- *start = page + off; +- return len; +-} ++ len = sprintf(out, "Register %04X = %02X\n", reg_addr&0xffff, reg_val&0xff ); ++ out[OUTDEVLEN-1]=0; + +-static int nw8xx_procfs_write(struct file *file,const char *buffer,unsigned long count,void *data) { ++ if (copy_to_user(buf, out, OUTDEVLEN)) ++ *ppos+=OUTDEVLEN; ++ return OUTDEVLEN; ++} + +- char mybuf[16]; ++static ssize_t nw8xx_write(struct file *file, const char *buf, size_t count, loff_t *ppos) ++{ ++ char mybuf[255]; + initURB_t urb; ++ unsigned int ui,ud; + +- // Copy in a string +- if ( count > 15 ) +- return -EINVAL; +- +- memcpy( mybuf, buffer, count ); +- +- // Scan it +- if ( mybuf[4] == '=' ) { +- // Write request +- sscanf(mybuf,"%04x=%02x", &urb.index, &urb.data[0]); +- urb.len = 1; +- urb.value = 0; +- nw802_vendor_send( data, &urb); +- } else { +- // Change monitored reg ++ if (count<6) { /* set a new register to monitor */ ++ if (copy_from_user(mybuf, buf, count)) { ++ return -EFAULT; ++ } + sscanf(mybuf,"%04x", ®_addr); +- } +- ++ *ppos +=count; ++ return(count); ++ } ++ if ((count>5)&&(count<9)) { /* Write request */ ++ if (copy_from_user(mybuf, buf, count)) ++ return -EFAULT; ++ if (2==sscanf(mybuf,"%04x=%02x", &ui, &ud)) { ++ urb.index=ui; ++ urb.data[0]=ud; ++ urb.len = 1; ++ urb.value = 0; ++ nw802_vendor_send( nw8xx_uvd, &urb); ++ } ++ *ppos +=count; ++ return(count); ++ } + return count; + } +- + ++static struct file_operations nw8xx_fops = { ++ .owner = THIS_MODULE, ++ .open = nw8xx_open, ++ .read = nw8xx_read, ++ .write = nw8xx_write, ++ .release = nw8xx_release, ++ ++}; ++ ++static struct miscdevice nw8xx_device = { ++ MISC_DYNAMIC_MINOR, ++ "nw8xx", ++ &nw8xx_fops ++}; + + // ============================================================================ + // Kernel Module init & exit + // ============================================================================ + +-static int __init nw802_init() ++static int __init nw802_init(void) + { + int rv; +- +- // Setup callbacks + struct usbvideo_cb cbTbl; ++ ++ rv = misc_register(&nw8xx_device); ++ if(rv < 0) { ++ return rv; ++ } ++ + memset( &cbTbl, 0, sizeof(cbTbl) ); + ++ // Setup callbacks + cbTbl.probe = nw802_probe; + cbTbl.setupOnOpen = nw802_setupOnOpen; + cbTbl.videoStart = nw802_videoStart; + cbTbl.videoStop = nw802_videoStop; + cbTbl.processData = nw802_processIsocData; +- cbTbl.procfs_read = nw8xx_procfs_read; +- cbTbl.procfs_write = nw8xx_procfs_write; + + // Register usbvideo driver + rv = usbvideo_register( &nw802_cams, +@@ -693,8 +765,9 @@ + return rv; + } + +-static void __exit nw802_exit() ++static void __exit nw802_exit(void) + { ++ misc_deregister(&nw8xx_device); + usbvideo_Deregister( &nw802_cams ); + INFO( "Module unloaded" ); + } +diff -Naur nw802-2.4-0.0.99/nw8xx_jpgl.c nw802-2.4/nw8xx_jpgl.c +--- nw802-2.4-0.0.99/nw8xx_jpgl.c 2003-08-20 23:34:39.000000000 +0200 ++++ nw802-2.4/nw8xx_jpgl.c 2004-07-06 09:43:54.000000000 +0200 +@@ -96,9 +96,10 @@ + // + + // Variable Lenght Coding related tables, used for AC coefficient decoding +-static char vlcTbl_len[1<<10]; // Meaningful bit count +-static char vlcTbl_run[1<<10]; // Run +-static char vlcTbl_amp[1<<10]; // Amplitude ( without the sign ) ++// TODO Check that 7 bits is enough ! ++static signed char vlcTbl_len[1<<10]; // Meaningful bit count ++static signed char vlcTbl_run[1<<10]; // Run ++static signed char vlcTbl_amp[1<<10]; // Amplitude ( without the sign ) + + // YUV->RGB conversion table + static int yuvTbl_y[256]; +@@ -125,7 +126,7 @@ + #endif + + // Code to initialize those tables +-static void vlcTbl_init() ++static void vlcTbl_init(void) + { + // Bases tables used to compute the bigger one + // To understands theses, look at the VLC doc in the +@@ -173,7 +174,7 @@ + } + } + +-static void yuvTbl_init() ++static void yuvTbl_init(void) + { + // These tables are just pre-multiplied and pre-offseted + // YUV by the book +@@ -194,7 +195,7 @@ + } + + #ifndef SAFE_CLAMP +-static void clampTbl_init() ++static void clampTbl_init(void) + { + // Instead of doing if(...) to test for overrange, we use + // a clamping table +@@ -430,7 +431,7 @@ + // jpgl_findHeader ). A complete frame MUST BE available ! + // Return 0 if the frame is valid. + // Another code is an error code +-int jpgl_processFrame( struct RingQueue *rq, unsigned char *fb ) ++int jpgl_processFrame( struct RingQueue *rq, unsigned char *fb, unsigned int good_img_width, unsigned int good_img_height ) + { + // Vars + struct rqBitReader br; +@@ -461,8 +462,13 @@ + img_height = RING_QUEUE_PEEK(rq,2); + RING_QUEUE_DEQUEUE_BYTES(rq,8); + +- printk("Frame decoding: fb=%08X W=%d H=%d\n", fb, img_width, img_height); +- ++ // Safety **** HACK/QUICKFIX ALERT **** ++ if ( (img_width != good_img_width) || (img_height != (good_img_height>>2)) ) { ++ img_width = good_img_width; ++ img_height = good_img_height >> 2; ++ printk(KERN_NOTICE "Incoherency corrected. SHOULD NOT HAPPEN !!!! But it does ..."); ++ } ++ + // Prepare a bit-by-bit reader + rqBR_init(&br, rq); + +@@ -583,7 +589,7 @@ + *(fb++) = *(Yline++); + *(fb++)= ( Uline[0] + 3*Uline[1] ) >> 2; + *(fb++) = ( Vline[0] + 3*Vline[1] ) >> 2; +- #else ++ #else + // First pixel + yc = yuvTbl_y[*(Yline++)]; + uc = Uline[0]; +@@ -635,7 +641,7 @@ + #ifdef _JPGL_TEST_ + fb++; + #endif +- #endif ++ #endif + + // Adjust pointers + Uline++; +@@ -696,7 +702,7 @@ + } + + // Init the decoder. Should only be called once +-void jpgl_initDecoder() ++void jpgl_initDecoder(void) + { + vlcTbl_init(); + yuvTbl_init(); +diff -Naur nw802-2.4-0.0.99/nw8xx_jpgl.h nw802-2.4/nw8xx_jpgl.h +--- nw802-2.4-0.0.99/nw8xx_jpgl.h 2003-08-20 23:34:39.000000000 +0200 ++++ nw802-2.4/nw8xx_jpgl.h 2004-07-06 09:43:54.000000000 +0200 +@@ -47,7 +47,7 @@ + // jpgl_findHeader ). A complete frame MUST BE available ! + // Return 0 if the frame is valid. + // Another code is an error code +-int jpgl_processFrame( struct RingQueue *rq, unsigned char *fb ); ++int jpgl_processFrame( struct RingQueue *rq, unsigned char *fb, unsigned int good_img_width, unsigned int good_img_height ); + + + // Find a valid header and return the offset to skip to correctly align +@@ -58,7 +58,7 @@ + + + // Init the decoder. Should only be called once +-void jpgl_initDecoder(); ++void jpgl_initDecoder(void); + + + #endif // __NW8XX_JPGL_H__ +diff -Naur nw802-2.4-0.0.99/nw8xx_regedit.c nw802-2.4/nw8xx_regedit.c +--- nw802-2.4-0.0.99/nw8xx_regedit.c 2003-08-20 23:34:39.000000000 +0200 ++++ nw802-2.4/nw8xx_regedit.c 2004-07-06 09:43:54.000000000 +0200 +@@ -25,8 +25,8 @@ + #define U_GAIN_REG 0x100F + #define V_GAIN_REG 0x1010 + +-#define SHUT1_REG 0x100C +-#define SHUT2_REG 0x100D ++#define SHUT1_REG 0x101B ++#define SHUT2_REG 0x101C + #endif + + #ifdef NW801_MODEL +@@ -42,8 +42,13 @@ + #define U_GAIN_REG 0x100F + #define V_GAIN_REG 0x1010 + +-#define SHUT1_REG 0x100C +-#define SHUT2_REG 0x100D ++#define SHUT1_REG 0x101B //? ++#define SHUT2_REG 0x101C //? ++ ++#define CLK_REG 0x1019 ++#define CLK_REG_MASK 0x08 ++ ++#define BP_REG 0x1026 + #endif + + +@@ -56,14 +61,14 @@ + int raddr, value; + int procfd = -1; + +- procfd=open(procpath, O_RDWR); +- ++ procfd=open(procpath, O_RDWR); ++ + if ( procfd < 0 ) { + perror("open"); + g_error("Can't open the driver proc interface\n"); + return 0; + } +- ++ + snprintf(buffer, 19, "%04x", addr); + write( procfd, buffer, 4 ); + read( procfd, buffer, 18 ); +@@ -79,8 +84,8 @@ + char buffer[8]; + int procfd = -1; + +- procfd=open(procpath, O_RDWR); +- ++ procfd=open(procpath, O_RDWR); ++ + if ( procfd < 0 ) { + perror("open"); + g_error("Can't open the driver proc interface\n"); +@@ -107,6 +112,25 @@ + writeReg(addr, (unsigned char)(value)); + } + ++#ifdef NW801_MODEL ++ ++static void IndoorToggled( GtkWidget *widget, gpointer data ) { ++ unsigned char value; ++ int addr; ++ ++ addr = CLK_REG ; ++ value = readReg( CLK_REG ); ++ ++ if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ) ++ value |= CLK_REG_MASK; ++ else ++ value &= ~CLK_REG_MASK; ++ ++ writeReg(addr, (unsigned char)(value)); ++} ++ ++#endif ++ + static void SliderChanged( GtkWidget *widget, gpointer data ) { + gdouble value; + int addr; +@@ -143,27 +167,27 @@ + void create_gui() { + + // Vars +- ++ + // Temps + int i, j; + GtkWidget *dummy; +- ++ + // Main layout + GtkWidget *window; + GtkWidget *vbox1, *vbox2; + GtkWidget *hbox1, *hbox2; +- ++ + GtkWidget *RGBControls_frame; + GtkWidget *YUVControls_frame; + GtkWidget *ShutControls_frame; + GtkWidget *MiscControls_frame; + GtkWidget *LUTTables_frame; +- ++ + // LUT Frame + GtkWidget *lutf_vbox, *lutf_nbook; +- +- +- ++ ++ ++ + // Create a window + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + +@@ -182,7 +206,7 @@ + gtk_container_add (GTK_CONTAINER (window), vbox1); + + +- // On the top, put ++ // On the top, put + // - RGB Gain/ofs + // - YUV Gain/ofs + // - Shutter control +@@ -194,7 +218,7 @@ + RGBControls_frame = gtk_frame_new("RGB Gain/Ofs"); + gtk_widget_show(RGBControls_frame); + gtk_box_pack_start(GTK_BOX(hbox1), RGBControls_frame, TRUE, TRUE, 0); +- ++ + YUVControls_frame = gtk_frame_new("YUV Gain/Ofs"); + gtk_widget_show(YUVControls_frame); + gtk_box_pack_start(GTK_BOX(hbox1), YUVControls_frame, TRUE, TRUE, 0); +@@ -239,11 +263,11 @@ + gtk_widget_show(hbox2); + gtk_container_add(GTK_CONTAINER(RGBControls_frame), hbox2); + +- createslider(R_GAIN_REG,63,hbox2); +- createslider(G_GAIN_REG,63,hbox2); +- createslider(B_GAIN_REG,63,hbox2); ++ createslider(R_GAIN_REG,63,hbox2); ++ createslider(G_GAIN_REG,63,hbox2); ++ createslider(B_GAIN_REG,63,hbox2); ++ + +- + + // YUV Offset & Gain + // ----------------- +@@ -251,10 +275,10 @@ + gtk_widget_show(hbox2); + gtk_container_add(GTK_CONTAINER(YUVControls_frame), hbox2); + +- createslider(Y_GAIN_REG,63,hbox2); +- createslider(U_GAIN_REG,63,hbox2); +- createslider(V_GAIN_REG,63,hbox2); +- ++ createslider(Y_GAIN_REG,63,hbox2); ++ createslider(U_GAIN_REG,63,hbox2); ++ createslider(V_GAIN_REG,63,hbox2); ++ + + // Shutter control + // --------------- +@@ -262,12 +286,27 @@ + gtk_widget_show(hbox2); + gtk_container_add(GTK_CONTAINER(ShutControls_frame), hbox2); + +- createslider(SHUT1_REG,255,hbox2); +- createslider(SHUT2_REG,255,hbox2); ++ createslider(SHUT1_REG,255,hbox2); ++ createslider(SHUT2_REG,255,hbox2); + + // Misc + // ---- ++#ifdef NW801_MODEL ++ ++ hbox2 = gtk_hbox_new(TRUE,0); ++ gtk_widget_show(hbox2); ++ gtk_container_add(GTK_CONTAINER(MiscControls_frame), hbox2); + ++ createslider(BP_REG,159,hbox2); ++ ++ dummy = gtk_check_button_new_with_label("Outdoor"); ++ gtk_widget_show(dummy); ++ gtk_box_pack_start(GTK_BOX(hbox2), dummy, FALSE, FALSE, 0); ++ g_signal_connect(G_OBJECT(dummy), "toggled", ++ G_CALLBACK (IndoorToggled), NULL); ++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dummy), readReg(CLK_REG) & CLK_REG_MASK); ++ ++#endif + // LUT Tables + // ---------- + lutf_vbox = gtk_vbox_new(FALSE,1); +diff -Naur nw802-2.4-0.0.99/proscope.init nw802-2.4/proscope.init +--- nw802-2.4-0.0.99/proscope.init 1970-01-01 01:00:00.000000000 +0100 ++++ nw802-2.4/proscope.init 2003-10-03 15:44:18.000000000 +0200 +@@ -0,0 +1,105 @@ ++ { 0x0405, 0x0000, 0x0001, ++ { 0x21 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x04 } }, ++ { 0x0000, 0x0000, 0x0040, ++ { 0x10, 0x01, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x04, ++ 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x08, 0x00, 0x17, 0x00, 0xce, 0x00, 0xf4, ++ 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, ++ 0x00, 0xce, 0x00, 0xf8, 0x03, 0x3e, 0x00, 0x86, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, ++ { 0x0040, 0x0000, 0x0040, ++ { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0xb6, ++ 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xf6, 0x03, 0x34, 0x04, 0xf6, 0x03, 0x34, ++ 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xe8, ++ 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, ++ { 0x0080, 0x0000, 0x001f, ++ { 0xb4, 0x6f, 0x1f, 0x0f, 0x08, 0x20, 0xa8, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, ++ 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19, 0x00, 0x94, ++ 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00 } }, ++ { 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++ { 0x0300, 0x0000, 0x0003, ++ { 0x03, 0x00, 0x00 } }, ++ { 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x09, 0x99 } }, ++ { 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x1000, 0x0000, 0x0040, ++ { 0xad, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a, ++ 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4, ++ 0x00, 0x49, 0x13, 0x00, 0x00, 0x8c, 0x04, 0x01, ++ 0x20, 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, ++ { 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f, ++ 0x88, 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4, ++ 0xcb, 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++ { 0x1080, 0x0000, 0x001b, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f, ++ 0x01, 0x00, 0x00, 0xef, 0x00, 0x09, 0x05, 0x82, ++ 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, ++ 0x01, 0xf0, 0x00 } }, ++ { 0x0200, 0x0000, 0x0011, ++ { 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78, ++ 0x40 } }, ++ { 0x101a, 0x0000, 0x0001, ++ { 0x06 } }, ++ { 0x0003, 0x0000, 0x0001, ++ { 0xf9, 0x02 } }, ++ { 0x1085, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00 } }, ++ { 0x101b, 0x0000, 0x0002, ++ { 0x00, 0x00 } }, ++ { 0x1011, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00 } }, ++ { 0x101d, 0x0000, 0x0008, ++ { 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00 } }, ++ { 0x100e, 0x0000, 0x0001, ++ { 0x10 } }, ++ { 0x100f, 0x0000, 0x0002, ++ { 0x0c, 0x0c } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x0c } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae, ++ 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2, ++ 0xf9 } }, ++ { 0x100b, 0x0000, 0x0001, ++ { 0x0b } }, ++ { 0x100d, 0x0000, 0x0001, ++ { 0x10 } }, // Exposure ++ { 0x100c, 0x0000, 0x0001, ++ { 0x1b } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x0405, 0x0000, 0x0001, ++ { 0x21 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x00 } } ++ +diff -Naur nw802-2.4-0.0.99/README nw802-2.4/README +--- nw802-2.4-0.0.99/README 2003-08-20 23:34:39.000000000 +0200 ++++ nw802-2.4/README 2007-01-03 21:13:24.000000000 +0100 +@@ -20,6 +20,98 @@ + # insmod nw802.o + * Launch xawtv ( or any V4L compatible app. Since the driver currently ignores quite a lot of V4L request like videosize, format, ... the app may give warning or refuses to work at all ... xawtv works, newer version of gnomemeeting don't ... ) + ++The original init files do not support all cam's, so if you don't get any picture, see if you have one of this cams. ++ ++If you have a Plustek Opticam 500U ( or ProLink DS3303u WebCam). ++---------------------------------------- ++Rename the nw801.init to something else ( nw801.init.old for example). ++Then rename the DS3303u.init to nw801.init. ++Open the nw802.c in a editor. Go to line 314. ++ ++It looks like this: ++#define NW801_INIT_LEN 32 ++ ++Change it to this: ++#define NW801_INIT_LEN 31 ++ ++Save the nw802.c. ++Compile as described above under 'How to use it ?'. ++ ++ ++If you have a Panasonic GP-KR651US. ++---------------------------------------- ++Rename the nw802.init to something else ( nw802.init.old for example). ++Then rename the kr651us.init to nw802.init. ++Compile as described above under 'How to use it ?'. ++ ++If you have a iRez Kritter cam. ++---------------------------------------- ++Rename the nw802.init to something else ( nw802.init.old for example). ++Then rename the kritter.init to nw802.init. ++Compile as described above under 'How to use it ?'. ++ ++ ++If you have a D-link dru-350c cam. ++---------------------------------------- ++Rename the nw802.init to something else ( nw802.init.old for example). ++Then rename the d-link-350c.init to nw802.init. ++Compile as described above under 'How to use it ?'. ++ ++ ++If you have a The Scope USB Microscope M2 (ProScope). ++---------------------------------------- ++Rename the nw802.init to something else ( nw802.init.old for example). ++Then rename the proscope.init to nw802.init. ++Compile as described above under 'How to use it ?'. ++ ++ ++If you have a Conceptronic Video Pro 'CVIDEOPRO USB Webcam CCD'. ++---------------------------------------- ++Rename the nw802.init to something else ( nw802.init.old for example). ++Then rename the cvideopro.init to nw802.init. ++Compile as described above under 'How to use it ?'. ++ ++ ++If you have a Trust SpaceCam120 or SpaceCam100 PORTABLE. ++---------------------------------------- ++Rename the nw800.init to something else ( nw800.init.old for example). ++Then rename the SpaceCam.init to nw800.init. ++Open the nw802.c in a editor. ++Go to line 127. It looks like this: ++{ USB_DEVICE( 0x06a5, 0x0000 ) }, // Generic NW800 ++ ++Change it to this: ++{ USB_DEVICE( 0x06a5, 0xd800 ) }, // Generic NW800 ++ ++Go to line 322. It looks like this: ++#define NW800_INIT_LEN 65 ++ ++Change it to this: ++#define NW800_INIT_LEN 82 ++ ++Save the nw802.c. ++Compile as described above under 'How to use it ?'. ++ ++If your led goes out and no picture. Try the trust_space.init ++and repeat the above. But set NW800_INIT_LEN 36 . ++ ++ ++If you have a TwinkleCam. ++---------------------------------------- ++Rename the nw800.init to something else ( nw800.init.old for example). ++Then rename the Twinkle.init to nw800.init. ++Open the nw802.c in a editor. Go to line 322. ++ ++It looks like this: ++#define NW800_INIT_LEN 65 ++ ++Change it to this: ++#define NW800_INIT_LEN 95 ++ ++Save the nw802.c. ++Compile as described above under 'How to use it ?'. ++ ++ + + Something is wrong ... + ---------------------- +@@ -45,13 +137,13 @@ + - Better cam support with automatic chip/cds/ccd detection + - Image control + Auto white balance + Auto exposure + - ... +- ++ + + FAQ : + ---- + + * I don't have a 2.4.x kernel ! +- ++ + If you use a 2.0 or 2.2 ... Upgrade ! If you use 2.6 ... Well this current version, it's not supported. I don't intent to add it ( so don't send patches, some people already did it and it's being included in the new driver ). + + * When will the new driver be ready ? +diff -Naur nw802-2.4-0.0.99/SpaceCam.init nw802-2.4/SpaceCam.init +--- nw802-2.4-0.0.99/SpaceCam.init 1970-01-01 01:00:00.000000000 +0100 ++++ nw802-2.4/SpaceCam.init 2003-10-28 00:25:17.000000000 +0100 +@@ -0,0 +1,214 @@ ++ { 0x0405, 0x0000, 0x0001, ++ { 0x61 } }, ++ { 0x404, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x04 } }, ++ { 0x0404, 0x0000, 0x0003, ++ { 0x00, 0x00, 0x00 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x44 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0000, 0x0000, 0x0040, ++ { 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f, ++ 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc, ++ 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, ++ 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, ++ { 0x0040, 0x0000, 0x0040, ++ { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, ++ 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, ++ 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, ++ { 0x0080, 0x0000, 0x001f, ++ { 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03, ++ 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, ++ 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00 } }, ++ { 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++ { 0x0300, 0x0000, 0x0003, ++ { 0x03, 0x00, 0x00 } }, ++ { 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00 } }, ++ { 0x0500, 0x0000, 0x0006, ++ { 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x0600, 0x0000, 0x001b, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00 } }, ++ { 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x1000, 0x0000, 0x0040, ++ { 0x80, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, ++ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, ++ { 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, ++ 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, ++ 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++ { 0x1080, 0x0000, 0x001d, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62, ++ 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, ++ 0x01, 0x60, 0x01, 0x00, 0x00 } }, ++ { 0x1085, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x40 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0600, 0x0000, 0x000b, ++ { 0xc0, 0x12, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, ++ 0x00, 0x05, 0x05 } }, ++ { 0x0600, 0x0000, 0x000c, ++ { 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x05, ++ 0x00, 0x00, 0x05, 0x05 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x0c, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x06 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x11, 0x06 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x14, 0x00 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x13, 0x01 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0200, 0x0000, 0x0011, ++ { 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00, ++ 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65, ++ 0x40 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x0c } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x02, 0x0c } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x0f, 0x00 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x13, 0x01 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x1000, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x108f, 0x0000, 0x000c, ++ { 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, ++ 0x20, 0x01, 0x60, 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x0f } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x05, 0x0f } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x13, 0x01 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0006, ++ { 0x0b, 0x0f, 0x05, 0x05, 0x0f, 0x00 } }, ++ { 0x0600, 0x0000, 0x0007, ++ { 0x09, 0x0b, 0x0f, 0x05, 0x05, 0x0f, 0x00 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x07, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x04, 0x01 } }, ++ { 0x0600, 0x0000, 0x0003, ++ { 0x12, 0x04, 0x01 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x03, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x1011, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01 } }, ++ { 0x100e, 0x0000, 0x0001, ++ { 0x08 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7, ++ 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7, ++ 0xf9 } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x100f, 0x0000, 0x0002, ++ { 0x13, 0x13 } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x06 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7, ++ 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7, ++ 0xf9 } }, ++ { 0x100b, 0x0000, 0x0001, ++ { 0x11 } }, ++ { 0x100d, 0x0000, 0x0001, ++ { 0x10 } }, ++ { 0x100c, 0x0000, 0x0001, ++ { 0x14 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x0405, 0x0000, 0x0001, ++ { 0x61 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x00 } }, +diff -Naur nw802-2.4-0.0.99/trust_space.init nw802-2.4/trust_space.init +--- nw802-2.4-0.0.99/trust_space.init 1970-01-01 01:00:00.000000000 +0100 ++++ nw802-2.4/trust_space.init 2004-12-22 17:56:17.000000000 +0100 +@@ -0,0 +1,121 @@ ++// Trust Spacecam 120 ..item nr 13177. 8 713439 131772 ++{ 0x0405, 0x0000, 0x0001, ++ { 0x01 } }, ++{ 0x0404, 0x0000, 0x0001, ++ { 0x01 } }, ++{ 0x0406, 0x0000, 0x0001, ++ { 0x04 } }, ++{ 0x0600, 0x0000, 0x0002, ++ { 0x04, 0xd9 } }, ++{ 0x0404, 0x0000, 0x0003, ++ { 0x00, 0x00, 0x00 } }, ++{ 0x0505, 0x0000, 0x0001, ++ { 0x00 } }, ++{ 0x0406, 0x0000, 0x0001, ++ { 0x44 } }, ++{ 0x0000, 0x0000, 0x0040, ++ { 0x10, 0x43, 0x00, 0xc6, 0x01, 0x10, 0x00, 0x4f, ++ 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24, ++ 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, ++ 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, ++{ 0x0040, 0x0000, 0x0040, ++ { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, ++ 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, ++ 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, ++{ 0x0080, 0x0000, 0x001f, ++ { 0xb0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08, ++ 0x00, 0x9c, 0x03, 0x01, 0x00, 0x16, 0x00, 0x04, ++ 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00 } }, ++{ 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++{ 0x0300, 0x0000, 0x0003, ++ { 0x03, 0x00, 0x00 } }, ++{ 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++{ 0x0500, 0x0000, 0x0006, ++ { 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++{ 0x0600, 0x0000, 0x001b, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00 } }, ++{ 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++{ 0x1000, 0x0000, 0x0040, ++ { 0x83, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, ++ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x49, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80 } }, ++{ 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, ++ 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, ++ 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++{ 0x1080, 0x0000, 0x001d, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62, ++ 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, ++ 0x01, 0x60, 0x01, 0x00, 0x00 } }, ++{ 0x0406, 0x0000, 0x0001, ++ { 0xc0 } }, ++{ 0x1085, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00 } }, ++{ 0x0200, 0x0000, 0x0011, ++ { 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00, ++ 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65, ++ 0x40 } }, ++{ 0x108f, 0x0000, 0x000c, ++ { 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, ++ 0x20, 0x01, 0x60, 0x01 } }, ++{ 0x1011, 0x0000, 0x0008, ++ { 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x3f, 0x01 } }, ++{ 0x100e, 0x0000, 0x0001, ++ { 0x08 } }, ++{ 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x40, 0x62, 0x7b, 0x91, 0xa3, 0xb3, 0xc2, ++ 0xd0, 0xdd, 0xe9, 0xf5, 0xf9, 0xf9, 0xf9, 0xf9, ++ 0xf9 } }, ++{ 0x1003, 0x0000, 0x0001, ++ { 0x00 } }, ++{ 0x100f, 0x0000, 0x0002, ++ { 0x0c, 0x0c } }, ++{ 0x1003, 0x0000, 0x0001, ++ { 0x06 } }, ++{ 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x40, 0x62, 0x7b, 0x91, 0xa3, 0xb3, 0xc2, ++ 0xd0, 0xdd, 0xe9, 0xf5, 0xf9, 0xf9, 0xf9, 0xf9, ++ 0xf9 } }, ++{ 0x100b, 0x0000, 0x0001, ++ { 0x0e } }, ++{ 0x100d, 0x0000, 0x0001, ++ { 0x16 } }, ++{ 0x100c, 0x0000, 0x0001, ++ { 0x10 } }, ++{ 0x0406, 0x0000, 0x0001, ++ { 0xc3 } }, ++{ 0x0405, 0x0000, 0x0001, ++ { 0x41 } }, ++{ 0x0404, 0x0000, 0x0001, // INIT_LENGT 36 ++ { 0x40 } }, +diff -Naur nw802-2.4-0.0.99/Twinkle.init nw802-2.4/Twinkle.init +--- nw802-2.4-0.0.99/Twinkle.init 1970-01-01 01:00:00.000000000 +0100 ++++ nw802-2.4/Twinkle.init 2003-11-15 22:21:15.000000000 +0100 +@@ -0,0 +1,240 @@ ++ { 0x0405, 0x0000, 0x0001, ++ { 0x61 } }, ++ { 0x404, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x04 } }, ++ { 0x0404, 0x0000, 0x0003, ++ { 0x00, 0x00, 0x00 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x44 } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0000, 0x0000, 0x0040, ++ { 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f, ++ 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, ++ 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc, ++ 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, ++ 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, ++ 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01 } }, ++ { 0x0040, 0x0000, 0x0040, ++ { 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, ++ 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, ++ 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, ++ 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, ++ 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e } }, ++ { 0x0080, 0x0000, 0x001f, ++ { 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03, ++ 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, ++ 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00 } }, ++ { 0x0200, 0x0000, 0x0012, ++ { 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, ++ 0x40, 0x20 } }, ++ { 0x0300, 0x0000, 0x0003, ++ { 0x03, 0x00, 0x00 } }, ++ { 0x0400, 0x0000, 0x0007, ++ { 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00 } }, ++ { 0x0500, 0x0000, 0x0006, ++ { 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x0600, 0x0000, 0x001b, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00 } }, ++ { 0x0800, 0x0000, 0x0015, ++ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00 } }, ++ { 0x1000, 0x0000, 0x0040, ++ { 0x80, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x08, ++ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, ++ 0x03, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x06, ++ 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x00, 0x80 } }, ++ { 0x1040, 0x0000, 0x0040, ++ { 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, ++ 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, ++ 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, ++ 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, ++ 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, ++ 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, ++ 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, ++ 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3 } }, ++ { 0x1080, 0x0000, 0x001d, ++ { 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62, ++ 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, ++ 0x01, 0x60, 0x01, 0x00, 0x00 } }, ++ { 0x1085, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x10 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0405, 0x0000, 0x0001, ++ { 0x61 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x000b, ++ { 0xc0, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0a } }, ++ { 0x0600, 0x0000, 0x000c, ++ { 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x0a } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x0c, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x06 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x11, 0x06 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x14, 0x00 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x13, 0x01 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x07, 0x01 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0200, 0x0000, 0x0011, ++ { 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00, ++ 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65, ++ 0x40 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x0c } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x02, 0x0c } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x13, 0x01 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x1000, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x108f, 0x0000, 0x000c, ++ { 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, ++ 0x20, 0x01, 0x60, 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x0f } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x05, 0x0f } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x13, 0x01 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0006, ++ { 0x04, 0x0b, 0x01, 0x01, 0x02, 0x17 } }, ++ { 0x0600, 0x0000, 0x0007, ++ { 0x08, 0x04, 0x0b, 0x01, 0x01, 0x02, 0x17 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x08, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x00, 0x01 } }, ++ { 0x0600, 0x0000, 0x0003, ++ { 0x12, 0x00, 0x01 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x03, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x1011, 0x0000, 0x0008, ++ { 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x12, 0x00 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x0e, 0x00 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x0600, 0x0000, 0x0001, ++ { 0x06 } }, ++ { 0x0600, 0x0000, 0x0002, ++ { 0x11, 0x06 } }, ++ { 0x0502, 0x0000, 0x0002, ++ { 0x02, 0x40 } }, ++ { 0x0505, 0x0000, 0x0001, ++ { 0x01 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7, ++ 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7, ++ 0xf9 } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x00 } }, ++ { 0x100f, 0x0000, 0x0002, ++ { 0x0c, 0x0c } }, ++ { 0x1003, 0x0000, 0x0001, ++ { 0x06 } }, ++ { 0x1041, 0x0000, 0x0011, ++ { 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7, ++ 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7, ++ 0xf9 } }, ++ { 0x100b, 0x0000, 0x0001, ++ { 0x19 } }, ++ { 0x100d, 0x0000, 0x0001, ++ { 0x10 } }, ++ { 0x100c, 0x0000, 0x0001, ++ { 0x0d } }, ++ { 0x0406, 0x0000, 0x0001, ++ { 0x03 } }, ++ { 0x0405, 0x0000, 0x0001, ++ { 0x61 } }, ++ { 0x0404, 0x0000, 0x0001, ++ { 0x41 } }, diff --git a/multimedia/nw802-2.4/patches/100-compile_fix.patch b/multimedia/nw802-2.4/patches/100-compile_fix.patch new file mode 100644 index 000000000..1f3d20c3e --- /dev/null +++ b/multimedia/nw802-2.4/patches/100-compile_fix.patch @@ -0,0 +1,134 @@ +--- a/nw8xx_jpgl.c ++++ b/nw8xx_jpgl.c +@@ -111,18 +111,18 @@ + // Clamping table + #define SAFE_CLAMP + #ifdef SAFE_CLAMP +-inline unsigned char clamp(int x) { ++inline unsigned char nw8xx_clamp(int x) { + if ( x > 255 ) + return 255; + if ( x < 0 ) + return 0; + return x; + } +-#define clamp_adjust(x) clamp(x+128) ++#define nw8xx_clamp_adjust(x) nw8xx_clamp(x+128) + #else +-#define clamp(x) clampTbl[(x)+512] +-#define clamp_adjust(x) clampTbl[(x)+640] +-static char clampTbl[1280]; ++#define nw8xx_clamp(x) nw8xx_clampTbl[(x)+512] ++#define nw8xx_clamp_adjust(x) nw8xx_clampTbl[(x)+640] ++static char nw8xx_clampTbl[1280]; + #endif + + // Code to initialize those tables +@@ -195,19 +195,19 @@ + } + + #ifndef SAFE_CLAMP +-static void clampTbl_init(void) ++static void nw8xx_clampTbl_init(void) + { + // Instead of doing if(...) to test for overrange, we use +- // a clamping table ++ // a nw8xx_clamping table + + int i; + + for (i=0 ; i < 512 ; i++) +- clampTbl[i] = 0; ++ nw8xx_clampTbl[i] = 0; + for (i=512 ; i < 768 ; i++ ) +- clampTbl[i] = i - 512; ++ nw8xx_clampTbl[i] = i - 512; + for (i=768 ; i < 1280 ; i++ ) +- clampTbl[i] = 255; ++ nw8xx_clampTbl[i] = 255; + + } + #endif +@@ -521,16 +521,16 @@ + for ( x=0 ; x<4 ; x++ ) + { + // Y block +- Yline[ 0] = clamp_adjust(block_y[block_idx ]); +- Yline[ 4] = clamp_adjust(block_y[block_idx+16]); +- Yline[ 8] = clamp_adjust(block_y[block_idx+32]); +- Yline[12] = clamp_adjust(block_y[block_idx+48]); ++ Yline[ 0] = nw8xx_clamp_adjust(block_y[block_idx ]); ++ Yline[ 4] = nw8xx_clamp_adjust(block_y[block_idx+16]); ++ Yline[ 8] = nw8xx_clamp_adjust(block_y[block_idx+32]); ++ Yline[12] = nw8xx_clamp_adjust(block_y[block_idx+48]); + + // U block +- *Uline = clamp_adjust(block_u[block_idx]); ++ *Uline = nw8xx_clamp_adjust(block_u[block_idx]); + + // V block +- *Vline = clamp_adjust(block_v[block_idx]); ++ *Vline = nw8xx_clamp_adjust(block_v[block_idx]); + + // Ajust pointers & index + block_idx++; +@@ -596,9 +596,9 @@ + vc = Vline[0]; + + // B G R +- *(fb++) = clamp(( yc + yuvTbl_v2[vc] ) >> 16); +- *(fb++) = clamp(( yc - yuvTbl_u2[uc] - yuvTbl_v1[vc] ) >> 16); +- *(fb++) = clamp(( yc + yuvTbl_u1[uc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc + yuvTbl_v2[vc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc - yuvTbl_u2[uc] - yuvTbl_v1[vc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc + yuvTbl_u1[uc] ) >> 16); + #ifdef _JPGL_TEST_ + fb++; + #endif +@@ -609,9 +609,9 @@ + vc = ( 3*Vline[0] + Vline[1] ) >> 2; + + // B G R +- *(fb++) = clamp(( yc + yuvTbl_v2[vc] ) >> 16); +- *(fb++) = clamp(( yc - yuvTbl_u2[uc] - yuvTbl_v1[vc] ) >> 16); +- *(fb++) = clamp(( yc + yuvTbl_u1[uc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc + yuvTbl_v2[vc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc - yuvTbl_u2[uc] - yuvTbl_v1[vc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc + yuvTbl_u1[uc] ) >> 16); + #ifdef _JPGL_TEST_ + fb++; + #endif +@@ -622,9 +622,9 @@ + vc = ( Vline[0] + Vline[1] ) >> 1; + + // B G R +- *(fb++) = clamp(( yc + yuvTbl_v2[vc] ) >> 16); +- *(fb++) = clamp(( yc - yuvTbl_u2[uc] - yuvTbl_v1[vc] ) >> 16); +- *(fb++) = clamp(( yc + yuvTbl_u1[uc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc + yuvTbl_v2[vc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc - yuvTbl_u2[uc] - yuvTbl_v1[vc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc + yuvTbl_u1[uc] ) >> 16); + #ifdef _JPGL_TEST_ + fb++; + #endif +@@ -635,9 +635,9 @@ + vc = ( Vline[0] + 3*Vline[1] ) >> 2; + + // B G R +- *(fb++) = clamp(( yc + yuvTbl_v2[vc] ) >> 16); +- *(fb++) = clamp(( yc - yuvTbl_u2[uc] - yuvTbl_v1[vc] ) >> 16); +- *(fb++) = clamp(( yc + yuvTbl_u1[uc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc + yuvTbl_v2[vc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc - yuvTbl_u2[uc] - yuvTbl_v1[vc] ) >> 16); ++ *(fb++) = nw8xx_clamp(( yc + yuvTbl_u1[uc] ) >> 16); + #ifdef _JPGL_TEST_ + fb++; + #endif +@@ -707,6 +707,6 @@ + vlcTbl_init(); + yuvTbl_init(); + #ifndef SAFE_CLAMP +- clampTbl_init(); ++ nw8xx_clampTbl_init(); + #endif + } diff --git a/multimedia/ov51x-jpeg/Makefile b/multimedia/ov51x-jpeg/Makefile new file mode 100644 index 000000000..7bd06d9d6 --- /dev/null +++ b/multimedia/ov51x-jpeg/Makefile @@ -0,0 +1,76 @@ +# +# Copyright (C) 2007-2008 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id$ + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=ov51x-jpeg +PKG_VERSION:=1.5.7 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://www.rastageeks.org/downloads/ov51x-jpeg/ \ + http://www.rastageeks.org/downloads/ov51x-jpeg/old-releases/ +PKG_MD5SUM:=7de1f426a48bdb55218913e2d713f813 + +include $(INCLUDE_DIR)/package.mk + +define Package/ov51x-jpeg/Default + URL:=http://www.rastageeks.org/ov51x-jpeg/ +endef + +define Package/ov51x-jpeg-utils +$(call Package/ov51x-jpeg/Default) + SECTION:=utils + CATEGORY:=Utilities + TITLE:=OV51x based USB webcam utilities + DEPENDS:=+kmod-video-ov51x-jpeg +endef + +define Package/ov51x-jpeg-utils/description + Utility programs for the video-ov51x kernel module +endef + +define KernelPackage/video-ov51x-jpeg +$(call Package/ov51x-jpeg/Default) + SUBMENU:=Video Support + TITLE:=OV51x based USB webcam support (JPEG) + DEPENDS:=@LINUX_2_6 @USB_SUPPORT +kmod-usb-core kmod-video-core + FILES:=$(PKG_BUILD_DIR)/ov51x-jpeg.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,70,ov51x-jpeg) +endef + +define KernelPackage/video-ov51x-jpeg/description + Kernel module for OV51x based USB cameras, with in-driver JPEG support. +endef + +ifneq ($(CONFIG_PACKAGE_kmod-video-ov51x-jpeg),) + define Build/Compile/kmod + $(MAKE) -C $(LINUX_DIR) \ + ARCH="$(LINUX_KARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + modules + endef +endif + +define Build/Compile + $(call Build/Compile/kmod) + $(MAKE) -C $(PKG_BUILD_DIR)/test \ + CFLAGS="$(TARGET_CFLAGS)" \ + CC="$(TARGET_CC)" \ + getjpeg +endef + +define Package/ov51x-jpeg-utils/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/test/getjpeg $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,ov51x-jpeg-utils)) +$(eval $(call KernelPackage,video-ov51x-jpeg)) diff --git a/multimedia/ov51x-jpeg/patches/100-compile_fix.patch b/multimedia/ov51x-jpeg/patches/100-compile_fix.patch new file mode 100644 index 000000000..56bdf906e --- /dev/null +++ b/multimedia/ov51x-jpeg/patches/100-compile_fix.patch @@ -0,0 +1,20 @@ +--- a/ov51x-jpeg-core.c ++++ b/ov51x-jpeg-core.c +@@ -753,7 +753,7 @@ + * -claudio + */ + +- ov51x_jpeg_proc_entry = create_proc_entry("ov51x-jpeg", S_IFDIR, &proc_root); ++ ov51x_jpeg_proc_entry = create_proc_entry("ov51x-jpeg", S_IFDIR, NULL); + if (ov51x_jpeg_proc_entry) + ov51x_jpeg_proc_entry->owner = THIS_MODULE; + else +@@ -771,7 +771,7 @@ + + /* Destroy proc entry */ + PDEBUG(4, "destroying /proc/ov51x-jpeg"); +- remove_proc_entry("ov51x-jpeg", &proc_root); ++ remove_proc_entry("ov51x-jpeg", NULL); + ov51x_jpeg_proc_entry = NULL; + + } diff --git a/multimedia/spca5xx-le/Makefile b/multimedia/spca5xx-le/Makefile new file mode 100644 index 000000000..1e53821f3 --- /dev/null +++ b/multimedia/spca5xx-le/Makefile @@ -0,0 +1,41 @@ +# +# Copyright (C) 2006 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id: Makefile 7137 2007-05-08 18:40:02Z nbd $ + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=spca5xx-le +PKG_VERSION:=1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME).tar.bz2 +PKG_SOURCE_URL:=http://www.acmesystems.it/download/owrt/ +PKG_MD5SUM:= + +PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/video-spca5xx-le + SUBMENU:=Video Support + TITLE:=SPCA5xx based USB webcam support (Light Edition) + URL:=http://mxhaard.free.fr/ + DEPENDS:=@LINUX_2_6_23||LINUX_2_6_24||LINUX_2_6_25 @USB_SUPPORT +kmod-usb-core kmod-video-core + FILES:=$(PKG_BUILD_DIR)/spca5xx.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,90,spca5xx) +endef + +define Build/Compile + $(MAKE) -C $(LINUX_DIR) \ + ARCH="$(LINUX_KARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + modules +endef + +$(eval $(call KernelPackage,video-spca5xx-le)) diff --git a/multimedia/spca5xx-le/patches/100-compile_pud_shift.patch b/multimedia/spca5xx-le/patches/100-compile_pud_shift.patch new file mode 100644 index 000000000..91913a799 --- /dev/null +++ b/multimedia/spca5xx-le/patches/100-compile_pud_shift.patch @@ -0,0 +1,21 @@ +diff -Naur spca5xx-le/spca_core.c spca5xx-le-new/spca_core.c +--- spca5xx-le/spca_core.c 2007-06-03 21:30:29.000000000 +0100 ++++ spca5xx-le-new/spca_core.c 2008-01-06 12:48:08.000000000 +0000 +@@ -535,7 +535,7 @@ + + if (!pgd_none (*pgd)) + { +-#if PUD_SHIFT ++#ifdef PUD_SHIFT + pud_t *pud = pud_offset (pgd, adr); + if (!pud_none (*pud)) + { +@@ -552,7 +552,7 @@ + ret = (unsigned long) page_address (pte_page (pte)); + ret |= (adr & (PAGE_SIZE - 1)); + } +-#if PUD_SHIFT ++#ifdef PUD_SHIFT + } + #endif + } diff --git a/multimedia/spca5xx-le/patches/101-linux_2_6.patch b/multimedia/spca5xx-le/patches/101-linux_2_6.patch new file mode 100644 index 000000000..be0679f67 --- /dev/null +++ b/multimedia/spca5xx-le/patches/101-linux_2_6.patch @@ -0,0 +1,13 @@ +diff -ruN spca5xx-le-orig/spca_core.c spca5xx-le/spca_core.c +--- spca5xx-le-orig/spca_core.c 2008-04-12 18:09:57.000000000 +0200 ++++ spca5xx-le/spca_core.c 2008-04-12 18:16:45.000000000 +0200 +@@ -2799,7 +2799,9 @@ + .owner = THIS_MODULE, + .name = "SPCA5XX USB Camera", + .type = VID_TYPE_CAPTURE, ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) + .hardware = VID_HARDWARE_SPCA5XX, ++#endif + .fops = &spca5xx_fops, + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + .release = video_device_release, diff --git a/multimedia/spca5xx-view/Makefile b/multimedia/spca5xx-view/Makefile new file mode 100644 index 000000000..e73d709f5 --- /dev/null +++ b/multimedia/spca5xx-view/Makefile @@ -0,0 +1,51 @@ +# +# Copyright (C) 2006 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id: Makefile 7006 2007-04-19 12:06:39Z kaloz $ + +include $(TOPDIR)/rules.mk + +PKG_NAME:=spca5xx-view +PKG_VERSION:=1 +PKG_RELEASE:=1 + +PKG_SOURCE:=spca5xx-view.tar.bz2 +PKG_SOURCE_URL:=http://www.acmesystems.it/download/owrt +PKG_MD5SUM:= + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/spca5xx-view + SECTION:=utils + CATEGORY:=Utilities + TITLE:=spca5xx streaming applicaton + DEPENDS:=+kmod-video-spca5xx-le +libpthread + URL:=http://www.acmesystems.it/ +endef + +define Package/spca5xx-view/description + This package contains a streaming daemon for spca5xx based webcams +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR)/servfox/ CFLAGS="$(TARTGET_CFLAGS)" CC="$(TARGET_CC)" all + $(MAKE) -C $(PKG_BUILD_DIR)/servfox/ PREFIX="$(PKG_INSTALL_DIR)" install +endef + +define Package/spca5xx-view/install + $(INSTALL_DIR) $(1)/ + $(CP) $(PKG_INSTALL_DIR)/* $(1) + $(INSTALL_DIR) $(1)/www/ + $(CP) $(PKG_BUILD_DIR)/html-files/* $(1)/www/ + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_DATA) ./files/servfox.config $(1)/etc/config/servfox + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/servfox.init $(1)/etc/init.d/servfox +endef + +$(eval $(call BuildPackage,spca5xx-view)) diff --git a/multimedia/spca5xx-view/files/servfox.config b/multimedia/spca5xx-view/files/servfox.config new file mode 100644 index 000000000..3138bba88 --- /dev/null +++ b/multimedia/spca5xx-view/files/servfox.config @@ -0,0 +1,4 @@ +config servfox + option Device '/dev/video0' + option Port '7070' + option Resolution '640x480' diff --git a/multimedia/spca5xx-view/files/servfox.init b/multimedia/spca5xx-view/files/servfox.init new file mode 100644 index 000000000..072e595b3 --- /dev/null +++ b/multimedia/spca5xx-view/files/servfox.init @@ -0,0 +1,31 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2006 OpenWrt.org +START=90 + +config_cb() { + local cfg="$CONFIG_SECTION" + local res + local dev + local port + local cfgt + config_get cfgt "$cfg" TYPE + + case "$cfgt" in + servfox) + config_get res $cfg Resolution + config_get dev $cfg Device + config_get port $cfg Port + + SERVFOX_ARGS="${dev:+-d $dev} ${res:+-s $res} ${port:+-w $port}" + ;; + esac +} + +start() { + config_load servfox + /bin/servfox $SERVFOX_ARGS & +} + +stop() { + killall servfox +} diff --git a/sound/alsa/Makefile b/sound/alsa/Makefile new file mode 100644 index 000000000..8dc7b871a --- /dev/null +++ b/sound/alsa/Makefile @@ -0,0 +1,68 @@ +# +# Copyright (C) 2006 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id$ + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=alsa-driver +PKG_VERSION:=1.0.14rc1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=ftp://ftp.alsa-project.org/pub/driver/ +PKG_MD5SUM:=4cff99be4b225e96663fbd61cabe3182 + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/alsa + SUBMENU:=Other modules + DEPENDS:=@USB_SUPPORT @LINUX_2_4 + TITLE:=Advanced Linux Sound Architecture + FILES:=$(PKG_BUILD_DIR)/modules/*.$(LINUX_KMOD_SUFFIX) + AUTOLOAD=$(call AutoLoad,70,$(shell cat ./files/alsa.modules)) +endef + +ifeq ($(KERNEL),2.4) + ifeq ($(LINUX_KARCH),i386) + KERNEL_C_OPTS:= -Os -mpreferred-stack-boundary=2 -march=i486 -fno-unit-at-a-time + endif + ifeq ($(LINUX_KARCH),mips) + KERNEL_C_OPTS:= -Os -G 0 -mlong-calls -mno-abicalls -fno-pic -finline-limit=100000 -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap + endif +endif +ifeq ($(LINUX_KARCH),i386) + KERNEL_C_INCS:= -I$(LINUX_DIR)/include/asm-i386/mach-generic -I$(LINUX_DIR)/include/asm-i386/mach-default +endif +ifeq ($(LINUX_KARCH),mips) + KERNEL_C_INCS:= -I$(LINUX_DIR)/include/asm-mips/mach-generic +endif + +CONFIGURE_VARS:= \ + CFLAGS="$(KERNEL_C_INCS)" + +CONFIGURE_ARGS:= \ + --with-build="$(LINUX_DIR)" \ + --with-kernel="$(LINUX_DIR)" \ + --with-cross="$(KERNEL_CROSS)" \ + --with-redhat=no \ + --with-suse=no \ + --with-oss=yes \ + --with-isapnp=no \ + --with-sequencer=no \ + --with-cards=usb-audio + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) \ + ARCH="$(LINUX_KARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + c_opts="$(KERNEL_C_OPTS)" \ + CP="$(CP)" \ + all +endef + +$(eval $(call KernelPackage,alsa)) diff --git a/sound/alsa/files/alsa.modules b/sound/alsa/files/alsa.modules new file mode 100644 index 000000000..6b16c8c58 --- /dev/null +++ b/sound/alsa/files/alsa.modules @@ -0,0 +1,10 @@ +snd-page-alloc +snd +snd-timer +snd-pcm +snd-rawmidi +snd-usb-lib +snd-hwdep +snd-usb-audio +snd-mixer-oss +snd-pcm-oss diff --git a/sound/alsa/patches/100-compile_fix.patch b/sound/alsa/patches/100-compile_fix.patch new file mode 100644 index 000000000..edc15fea8 --- /dev/null +++ b/sound/alsa/patches/100-compile_fix.patch @@ -0,0 +1,19 @@ +Index: alsa-driver-1.0.14rc1/include/adriver.h +=================================================================== +--- alsa-driver-1.0.14rc1.orig/include/adriver.h 2007-06-04 13:22:44.887031416 +0200 ++++ alsa-driver-1.0.14rc1/include/adriver.h 2007-06-04 13:22:44.956020928 +0200 +@@ -514,7 +514,7 @@ + #endif /* < 2.6.0 */ + + /* workarounds for USB API */ +-#if defined(SND_NEED_USB_WRAPPER) && (defined(CONFIG_USB) || defined(CONFIG_USB_MODULE)) ++#if 1 + + #include + +@@ -1360,4 +1360,5 @@ + #endif + #endif + ++#undef info /* used in several structs */ + #endif /* __SOUND_LOCAL_DRIVER_H */ diff --git a/sound/alsa/patches/110-cp_command.patch b/sound/alsa/patches/110-cp_command.patch new file mode 100644 index 000000000..f9719b574 --- /dev/null +++ b/sound/alsa/patches/110-cp_command.patch @@ -0,0 +1,13 @@ +Index: alsa-driver-1.0.14rc1/Makefile +=================================================================== +--- alsa-driver-1.0.14rc1.orig/Makefile 2007-06-04 13:22:44.865034760 +0200 ++++ alsa-driver-1.0.14rc1/Makefile 2007-06-04 13:22:45.149991440 +0200 +@@ -115,7 +115,7 @@ + if [ ! -d include/sound -a ! -L include/sound ]; then \ + ln -sf ../alsa-kernel/include include/sound ; \ + fi +- cp -puvf include/version.h include/sound/version.h ++ $(CP) include/version.h include/sound/version.h + + utils/mod-deps: utils/mod-deps.c + gcc utils/mod-deps.c -o utils/mod-deps diff --git a/sound/alsa/patches/120-sndfops.patch b/sound/alsa/patches/120-sndfops.patch new file mode 100644 index 000000000..bc43eb5db --- /dev/null +++ b/sound/alsa/patches/120-sndfops.patch @@ -0,0 +1,13 @@ +Index: alsa-driver-1.0.14rc1/alsa-kernel/core/sound.c +=================================================================== +--- alsa-driver-1.0.14rc1.orig/alsa-kernel/core/sound.c 2007-07-11 12:15:11.408530571 +0200 ++++ alsa-driver-1.0.14rc1/alsa-kernel/core/sound.c 2007-07-11 12:15:26.421386105 +0200 +@@ -171,7 +171,7 @@ + return err; + } + +-static struct file_operations snd_fops = ++struct file_operations snd_fops = + { + .owner = THIS_MODULE, + .open = snd_open