فهرست منبع

add support for NW8xx based USB video devices (closes: #2319)

SVN-Revision: 8914
Nicolas Thill 18 سال پیش
والد
کامیت
90eeef5833
2فایلهای تغییر یافته به همراه3026 افزوده شده و 0 حذف شده
  1. 46 0
      package/nw802-2.4/Makefile
  2. 2980 0
      package/nw802-2.4/patches/001-linux_2_6_cvs.patch

+ 46 - 0
package/nw802-2.4/Makefile

@@ -0,0 +1,46 @@
+# 
+# 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:=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
+
+# XXX: remove @!TARGET_* later when we have USB support properly detected on all targets
+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 @!TARGET_atheros @!TARGET_uml
+  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))

+ 2980 - 0
package/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 <linux/kernel.h>
+-#include <linux/slab.h>
+ #include <linux/module.h>
++#include <linux/init.h>
+ #include <linux/usb.h>
++#include <linux/miscdevice.h>
+ 
+ #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 ; i<nas ; i++ )
+ 	{
+-		const struct usb_interface_descriptor *interface;
++		const struct usb_host_interface *interface;
+ 		const struct usb_endpoint_descriptor *endpoint;
+ 		
+-		interface = &dev->actconfig->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, &reg_val, 1 ); 
++	nw802_vendor_read( nw8xx_uvd, reg_addr, &reg_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", &reg_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 } },