1fd9871f7SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later 2ce5b2accSJean-François Moine /* 3ce5b2accSJean-François Moine * DivIO nw80x subdriver 4ce5b2accSJean-François Moine * 5ce5b2accSJean-François Moine * Copyright (C) 2011 Jean-François Moine (http://moinejf.free.fr) 6ce5b2accSJean-François Moine * Copyright (C) 2003 Sylvain Munaut <tnt@246tNt.com> 7ce5b2accSJean-François Moine * Kjell Claesson <keyson@users.sourceforge.net> 8ce5b2accSJean-François Moine */ 9ce5b2accSJean-François Moine 10133a9fe9SJoe Perches #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 11133a9fe9SJoe Perches 12ce5b2accSJean-François Moine #define MODULE_NAME "nw80x" 13ce5b2accSJean-François Moine 14ce5b2accSJean-François Moine #include "gspca.h" 15ce5b2accSJean-François Moine 16ce5b2accSJean-François Moine MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>"); 17ce5b2accSJean-François Moine MODULE_DESCRIPTION("NW80x USB Camera Driver"); 18ce5b2accSJean-François Moine MODULE_LICENSE("GPL"); 19ce5b2accSJean-François Moine 20ce5b2accSJean-François Moine static int webcam; 21ce5b2accSJean-François Moine 22ce5b2accSJean-François Moine /* specific webcam descriptor */ 23ce5b2accSJean-François Moine struct sd { 24ce5b2accSJean-François Moine struct gspca_dev gspca_dev; /* !! must be the first item */ 25ce5b2accSJean-François Moine 26ce5b2accSJean-François Moine u32 ae_res; 27ce5b2accSJean-François Moine s8 ag_cnt; 28ce5b2accSJean-François Moine #define AG_CNT_START 13 29f12b44ffSJean-François Moine u8 exp_too_low_cnt; 30f12b44ffSJean-François Moine u8 exp_too_high_cnt; 31ce5b2accSJean-François Moine 32ce5b2accSJean-François Moine u8 bridge; 33ce5b2accSJean-François Moine u8 webcam; 34ce5b2accSJean-François Moine }; 35ce5b2accSJean-François Moine 36ce5b2accSJean-François Moine enum bridges { 37c3ee142bSJean-François Moine BRIDGE_NW800, /* and et31x110 */ 38ce5b2accSJean-François Moine BRIDGE_NW801, 39ce5b2accSJean-François Moine BRIDGE_NW802, 40ce5b2accSJean-François Moine }; 41ce5b2accSJean-François Moine enum webcams { 42ce5b2accSJean-François Moine Generic800, 43ce5b2accSJean-François Moine SpaceCam, /* Trust 120 SpaceCam */ 44ce5b2accSJean-François Moine SpaceCam2, /* other Trust 120 SpaceCam */ 45ce5b2accSJean-François Moine Cvideopro, /* Conceptronic Video Pro */ 46ce5b2accSJean-François Moine Dlink350c, 47ce5b2accSJean-François Moine DS3303u, 48ce5b2accSJean-François Moine Kr651us, 49ce5b2accSJean-François Moine Kritter, 50ce5b2accSJean-François Moine Mustek300, 51ce5b2accSJean-François Moine Proscope, 52ce5b2accSJean-François Moine Twinkle, 53ce5b2accSJean-François Moine DvcV6, 54ce5b2accSJean-François Moine P35u, 55ce5b2accSJean-François Moine Generic802, 56ce5b2accSJean-François Moine NWEBCAMS /* number of webcams */ 57ce5b2accSJean-François Moine }; 58ce5b2accSJean-François Moine 59ee32ffbfSJean-François Moine static const u8 webcam_chip[NWEBCAMS] = { 60ee32ffbfSJean-François Moine [Generic800] = BRIDGE_NW800, /* 06a5:0000 61ee32ffbfSJean-François Moine * Typhoon Webcam 100 USB */ 62ce5b2accSJean-François Moine 63ee32ffbfSJean-François Moine [SpaceCam] = BRIDGE_NW800, /* 06a5:d800 64ee32ffbfSJean-François Moine * Trust SpaceCam120 or SpaceCam100 PORTABLE */ 65ee32ffbfSJean-François Moine 66ee32ffbfSJean-François Moine [SpaceCam2] = BRIDGE_NW800, /* 06a5:d800 - pas106 67ee32ffbfSJean-François Moine * other Trust SpaceCam120 or SpaceCam100 PORTABLE */ 68ee32ffbfSJean-François Moine 69ee32ffbfSJean-François Moine [Cvideopro] = BRIDGE_NW802, /* 06a5:d001 70ee32ffbfSJean-François Moine * Conceptronic Video Pro 'CVIDEOPRO USB Webcam CCD' */ 71ee32ffbfSJean-François Moine 72ee32ffbfSJean-François Moine [Dlink350c] = BRIDGE_NW802, /* 06a5:d001 73ee32ffbfSJean-François Moine * D-Link NetQam Pro 250plus */ 74ee32ffbfSJean-François Moine 75ee32ffbfSJean-François Moine [DS3303u] = BRIDGE_NW801, /* 06a5:d001 76ee32ffbfSJean-François Moine * Plustek Opticam 500U or ProLink DS3303u */ 77ee32ffbfSJean-François Moine 78ee32ffbfSJean-François Moine [Kr651us] = BRIDGE_NW802, /* 06a5:d001 79ee32ffbfSJean-François Moine * Panasonic GP-KR651US */ 80ee32ffbfSJean-François Moine 81ee32ffbfSJean-François Moine [Kritter] = BRIDGE_NW802, /* 06a5:d001 82ee32ffbfSJean-François Moine * iRez Kritter cam */ 83ee32ffbfSJean-François Moine 84ee32ffbfSJean-François Moine [Mustek300] = BRIDGE_NW802, /* 055f:d001 85ee32ffbfSJean-François Moine * Mustek Wcam 300 mini */ 86ee32ffbfSJean-François Moine 87ee32ffbfSJean-François Moine [Proscope] = BRIDGE_NW802, /* 06a5:d001 88ee32ffbfSJean-François Moine * Scalar USB Microscope (ProScope) */ 89ee32ffbfSJean-François Moine 90ee32ffbfSJean-François Moine [Twinkle] = BRIDGE_NW800, /* 06a5:d800 - hv7121b? (seems pas106) 91ee32ffbfSJean-François Moine * Divio Chicony TwinkleCam 92ee32ffbfSJean-François Moine * DSB-C110 */ 93ee32ffbfSJean-François Moine 94ee32ffbfSJean-François Moine [DvcV6] = BRIDGE_NW802, /* 0502:d001 95ee32ffbfSJean-François Moine * DVC V6 */ 96ee32ffbfSJean-François Moine 97ee32ffbfSJean-François Moine [P35u] = BRIDGE_NW801, /* 052b:d001, 06a5:d001 and 06be:d001 98ee32ffbfSJean-François Moine * EZCam Pro p35u */ 99ee32ffbfSJean-François Moine 100ee32ffbfSJean-François Moine [Generic802] = BRIDGE_NW802, 101ee32ffbfSJean-François Moine }; 102ee32ffbfSJean-François Moine /* 103ee32ffbfSJean-François Moine * other webcams: 104ee32ffbfSJean-François Moine * - nw801 046d:d001 105ee32ffbfSJean-François Moine * Logitech QuickCam Pro (dark focus ring) 106ee32ffbfSJean-François Moine * - nw801 0728:d001 107ee32ffbfSJean-François Moine * AVerMedia Camguard 108ee32ffbfSJean-François Moine * - nw??? 06a5:d001 109ee32ffbfSJean-François Moine * D-Link NetQam Pro 250plus 110ee32ffbfSJean-François Moine * - nw800 065a:d800 111ee32ffbfSJean-François Moine * Showcam NGS webcam 112ee32ffbfSJean-François Moine * - nw??? ????:???? 113ee32ffbfSJean-François Moine * Sceptre svc300 114ce5b2accSJean-François Moine */ 115ce5b2accSJean-François Moine 116ee32ffbfSJean-François Moine /* 117ee32ffbfSJean-François Moine * registers 118ee32ffbfSJean-François Moine * nw800/et31x110 nw801 nw802 119ee32ffbfSJean-François Moine * 0000..009e 0000..00a1 0000..009e 120ee32ffbfSJean-François Moine * 0200..0211 id id 121ee32ffbfSJean-François Moine * 0300..0302 id id 122ee32ffbfSJean-François Moine * 0400..0406 (inex) 0400..0406 123ee32ffbfSJean-François Moine * 0500..0505 0500..0506 (inex) 124ee32ffbfSJean-François Moine * 0600..061a 0600..0601 0600..0601 125ee32ffbfSJean-François Moine * 0800..0814 id id 126ee32ffbfSJean-François Moine * 1000..109c 1000..10a1 1000..109a 127ee32ffbfSJean-François Moine */ 128ee32ffbfSJean-François Moine 129ee32ffbfSJean-François Moine /* resolutions 130ee32ffbfSJean-François Moine * nw800: 320x240, 352x288 131ee32ffbfSJean-François Moine * nw801/802: 320x240, 640x480 132ee32ffbfSJean-François Moine */ 133c3ee142bSJean-François Moine static const struct v4l2_pix_format cif_mode[] = { 13415250714SJean-François Moine {320, 240, V4L2_PIX_FMT_JPGL, V4L2_FIELD_NONE, 13515250714SJean-François Moine .bytesperline = 320, 13615250714SJean-François Moine .sizeimage = 320 * 240 * 4 / 8, 13715250714SJean-François Moine .colorspace = V4L2_COLORSPACE_JPEG}, 138ce5b2accSJean-François Moine {352, 288, V4L2_PIX_FMT_JPGL, V4L2_FIELD_NONE, 139ce5b2accSJean-François Moine .bytesperline = 352, 140ce5b2accSJean-François Moine .sizeimage = 352 * 288 * 4 / 8, 141ce5b2accSJean-François Moine .colorspace = V4L2_COLORSPACE_JPEG} 142ce5b2accSJean-François Moine }; 143ce5b2accSJean-François Moine static const struct v4l2_pix_format vga_mode[] = { 144ce5b2accSJean-François Moine {320, 240, V4L2_PIX_FMT_JPGL, V4L2_FIELD_NONE, 145ce5b2accSJean-François Moine .bytesperline = 320, 146ce5b2accSJean-François Moine .sizeimage = 320 * 240 * 4 / 8, 147ce5b2accSJean-François Moine .colorspace = V4L2_COLORSPACE_JPEG}, 148ce5b2accSJean-François Moine {640, 480, V4L2_PIX_FMT_JPGL, V4L2_FIELD_NONE, 149ce5b2accSJean-François Moine .bytesperline = 640, 150ce5b2accSJean-François Moine .sizeimage = 640 * 480 * 3 / 8, 151ce5b2accSJean-François Moine .colorspace = V4L2_COLORSPACE_JPEG}, 152ce5b2accSJean-François Moine }; 153ce5b2accSJean-François Moine 154ce5b2accSJean-François Moine /* 155ce5b2accSJean-François Moine * The sequences below contain: 156ce5b2accSJean-François Moine * - 1st and 2nd bytes: either 157ce5b2accSJean-François Moine * - register number (BE) 158ce5b2accSJean-François Moine * - I2C0 + i2c address 159ce5b2accSJean-François Moine * - 3rd byte: data length (=0 for end of sequence) 160ce5b2accSJean-François Moine * - n bytes: data 161ce5b2accSJean-François Moine */ 162ce5b2accSJean-François Moine #define I2C0 0xff 163c3ee142bSJean-François Moine 164ce5b2accSJean-François Moine static const u8 nw800_init[] = { 165bad03ff5SJean-François Moine 0x04, 0x05, 0x01, 0x61, 166bad03ff5SJean-François Moine 0x04, 0x04, 0x01, 0x01, 167ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x04, 168bad03ff5SJean-François Moine 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 169bad03ff5SJean-François Moine 0x05, 0x05, 0x01, 0x00, 170bad03ff5SJean-François Moine 0, 0, 0 171bad03ff5SJean-François Moine }; 172bad03ff5SJean-François Moine static const u8 nw800_start[] = { 173ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0xc0, 174ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f, 175ce5b2accSJean-François Moine 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19, 176ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 177ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24, 178ce5b2accSJean-François Moine 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 179ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, 180ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 181ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 182ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 183ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 184ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 185ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 186ce5b2accSJean-François Moine 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, 187ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 188ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 189ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 190ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00, 191ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08, 192ce5b2accSJean-François Moine 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, 193ce5b2accSJean-François Moine 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00, 194ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 195ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 196ce5b2accSJean-François Moine 0x40, 0x20, 197ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 198ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0, 199ce5b2accSJean-François Moine 0x05, 0x00, 0x06, 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20, 200ce5b2accSJean-François Moine 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 201ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 202ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 203ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 204ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 205ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 206ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 207ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00, 208ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 209ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 210ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 211ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 212ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 213ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 214ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 215ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 216ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 217ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 218ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 219ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 220ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 221ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 222ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 223ce5b2accSJean-François Moine 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 224ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62, 225ce5b2accSJean-François Moine 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, 226ce5b2accSJean-François Moine 0x01, 0x60, 0x01, 0x00, 0x00, 227ce5b2accSJean-François Moine 228ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0xff, 229ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0xc4, 230ce5b2accSJean-François Moine 231ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0xc0, 232ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f, 233ce5b2accSJean-François Moine 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19, 234ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 235ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24, 236ce5b2accSJean-François Moine 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 237ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, 238ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 239ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 240ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 241ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 242ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 243ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 244ce5b2accSJean-François Moine 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, 245ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 246ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 247ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 248ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00, 249ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08, 250ce5b2accSJean-François Moine 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, 251ce5b2accSJean-François Moine 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00, 252ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 253ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 254ce5b2accSJean-François Moine 0x40, 0x20, 255ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 256ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0, 257ce5b2accSJean-François Moine 0x05, 0x00, 0x06, 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20, 258ce5b2accSJean-François Moine 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 259ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 260ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 261ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 262ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 263ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 264ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 265ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00, 266ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 267ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 268ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 269ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 270ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 271ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 272ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 273ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 274ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 275ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 276ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 277ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 278ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 279ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 280ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 281ce5b2accSJean-François Moine 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 282ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62, 283ce5b2accSJean-François Moine 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, 284ce5b2accSJean-François Moine 0x01, 0x60, 0x01, 0x00, 0x00, 285ce5b2accSJean-François Moine 286ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00, 287ce5b2accSJean-François Moine 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65, 288ce5b2accSJean-François Moine 0x40, 289ce5b2accSJean-François Moine 0x00, 0x80, 0x01, 0xa0, 290ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x00, 291ce5b2accSJean-François Moine 0x00, 0x91, 0x02, 0x6c, 0x01, 292ce5b2accSJean-François Moine 0x00, 0x03, 0x02, 0xc8, 0x01, 293ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x00, 294ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0x83, 295ce5b2accSJean-François Moine 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 296ce5b2accSJean-François Moine 0x20, 0x01, 0x60, 0x01, 297ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01, 298ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x69, 0x00, 299ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01, 300ce5b2accSJean-François Moine 0x05, 0x02, 0x01, 0x02, 301ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x04, 0xd9, 302ce5b2accSJean-François Moine 0x05, 0x05, 0x01, 0x20, 303ce5b2accSJean-François Moine 0x05, 0x05, 0x01, 0x21, 304ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x08, 305ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83, 306ce5b2accSJean-François Moine 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0, 307ce5b2accSJean-François Moine 0xea, 308ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 309ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x13, 0x13, 310ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x14, 311ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83, 312ce5b2accSJean-François Moine 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0, 313ce5b2accSJean-François Moine 0xea, 314ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x14, 315ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x20, 316ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x34, 317ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0xc3, 318ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 319ce5b2accSJean-François Moine 0x05, 0x02, 0x01, 0x02, 320ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x00, 0x48, 321ce5b2accSJean-François Moine 0x05, 0x05, 0x01, 0x20, 322ce5b2accSJean-François Moine 0x05, 0x05, 0x01, 0x21, 323ce5b2accSJean-François Moine 0, 0, 0 324ce5b2accSJean-François Moine }; 325ce5b2accSJean-François Moine 326c3ee142bSJean-François Moine /* 06a5:d001 - nw801 - Panasonic 327c3ee142bSJean-François Moine * P35u */ 328c3ee142bSJean-François Moine static const u8 nw801_start_1[] = { 329ce5b2accSJean-François Moine 0x05, 0x06, 0x01, 0x04, 330ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x0e, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e, 331ce5b2accSJean-François Moine 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, 332ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 333ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4, 334ce5b2accSJean-François Moine 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 335ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, 336ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 337ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 338ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 339ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 340ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 341ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 342ce5b2accSJean-François Moine 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, 343ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 344ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 345ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 346ce5b2accSJean-François Moine 0x00, 0x80, 0x22, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00, 347ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x69, 0xa8, 0x1f, 0x00, 348ce5b2accSJean-François Moine 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00, 349ce5b2accSJean-François Moine 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00, 350ce5b2accSJean-François Moine 0x36, 0x00, 351ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 352ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 353ce5b2accSJean-François Moine 0x40, 0x20, 354ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 355ce5b2accSJean-François Moine 0x05, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 356ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x09, 0x99, 357ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 358ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 359ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 360ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0x22, 0x02, 0x80, 0x00, 0x1e, 0x00, 0x00, 0x00, 361ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x0a, 0x15, 0x08, 0x08, 0x0a, 362ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 363ce5b2accSJean-François Moine 0x00, 0x01, 0x35, 0xfd, 0x07, 0x3d, 0x00, 0x00, 364ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x14, 0x02, 365ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 366ce5b2accSJean-François Moine 0x40, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x06, 367ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7, 368ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80, 369ce5b2accSJean-François Moine 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 0xa4, 370ce5b2accSJean-François Moine 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 0xcf, 371ce5b2accSJean-François Moine 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64, 372ce5b2accSJean-François Moine 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2, 373ce5b2accSJean-François Moine 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 374ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 375ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 376ce5b2accSJean-François Moine 0x10, 0x80, 0x22, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 377ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 0x00, 378ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x82, 0x02, 379ce5b2accSJean-François Moine 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01, 380ce5b2accSJean-François Moine 0xf0, 0x00, 381ce5b2accSJean-François Moine 0, 0, 0, 382ce5b2accSJean-François Moine }; 383c3ee142bSJean-François Moine static const u8 nw801_start_qvga[] = { 384ce5b2accSJean-François Moine 0x02, 0x00, 0x10, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, 385ce5b2accSJean-François Moine 0x00, 0x78, 0x18, 0x0b, 0x06, 0xa2, 0x86, 0x78, 386ce5b2accSJean-François Moine 0x02, 0x0f, 0x01, 0x6b, 387ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x15, 388ce5b2accSJean-François Moine 0x00, 0x00, 0x01, 0x1e, 389ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0x2f, 390ce5b2accSJean-François Moine 0x10, 0x8c, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 391ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00, 392ce5b2accSJean-François Moine /* AE window */ 393ce5b2accSJean-François Moine 0, 0, 0, 394ce5b2accSJean-François Moine }; 395c3ee142bSJean-François Moine static const u8 nw801_start_vga[] = { 396ce5b2accSJean-François Moine 0x02, 0x00, 0x10, 0x78, 0xa0, 0x97, 0x78, 0xa0, 0x00, 0x00, 0x00, 397ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xf0, 398ce5b2accSJean-François Moine 0x02, 0x0f, 0x01, 0xd5, 399ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x15, 400ce5b2accSJean-François Moine 0x00, 0x00, 0x01, 0x0e, 401ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0x22, 402ce5b2accSJean-François Moine 0x10, 0x8c, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01, 403ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x51, 0x00, 0x30, 0x02, 0x3d, 0x00, 0xa4, 0x01, 404ce5b2accSJean-François Moine 0, 0, 0, 405ce5b2accSJean-François Moine }; 406c3ee142bSJean-François Moine static const u8 nw801_start_2[] = { 407ce5b2accSJean-François Moine 0x10, 0x04, 0x01, 0x1a, 408ce5b2accSJean-François Moine 0x10, 0x19, 0x01, 0x09, /* clock */ 409ce5b2accSJean-François Moine 0x10, 0x24, 0x06, 0xc0, 0x00, 0x3f, 0x02, 0x00, 0x01, 410ce5b2accSJean-François Moine /* .. gain .. */ 411ce5b2accSJean-François Moine 0x00, 0x03, 0x02, 0x92, 0x03, 412ce5b2accSJean-François Moine 0x00, 0x1d, 0x04, 0xf2, 0x00, 0x24, 0x07, 413ce5b2accSJean-François Moine 0x00, 0x7b, 0x01, 0xcf, 414ce5b2accSJean-François Moine 0x10, 0x94, 0x01, 0x07, 415ce5b2accSJean-François Moine 0x05, 0x05, 0x01, 0x01, 416ce5b2accSJean-François Moine 0x05, 0x04, 0x01, 0x01, 417ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x08, 418ce5b2accSJean-François Moine 0x10, 0x48, 0x11, 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8, 419ce5b2accSJean-François Moine 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0, 420ce5b2accSJean-François Moine 0xf0, 421ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 422ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x0c, 0x0c, 423ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x08, 424ce5b2accSJean-François Moine 0x10, 0x48, 0x11, 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8, 425ce5b2accSJean-François Moine 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0, 426ce5b2accSJean-François Moine 0xf0, 427ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x0b, 428ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x0b, 429ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x1f, 430ce5b2accSJean-François Moine 0x05, 0x06, 0x01, 0x03, 431ce5b2accSJean-François Moine 0, 0, 0 432ce5b2accSJean-François Moine }; 433ce5b2accSJean-François Moine 434ce5b2accSJean-François Moine /* nw802 (sharp IR3Y38M?) */ 435c3ee142bSJean-François Moine static const u8 nw802_start[] = { 436ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x04, 437ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x4d, 438ce5b2accSJean-François Moine 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, 439ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 440ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4, 441ce5b2accSJean-François Moine 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 442ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, 443ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 444ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 445ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 446ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 447ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 448ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 449ce5b2accSJean-François Moine 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, 450ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 451ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 452ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 453ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00, 454ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, 455ce5b2accSJean-François Moine 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94, 456ce5b2accSJean-François Moine 0x00, 0x10, 0x06, 0x08, 0x00, 0x18, 0x00, 457ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 458ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 459ce5b2accSJean-François Moine 0x40, 0x20, 460ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 461ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 462ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x09, 0x99, 463ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 464ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 465ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 466ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x1d, 0x00, 0x00, 0x00, 467ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 468ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 469ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0xff, 0x01, 0xc0, 0x00, 0x14, 470ce5b2accSJean-François Moine 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 471ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 472ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 473ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 474ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 475ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 476ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 477ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 478ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 479ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 480ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 481ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 482ce5b2accSJean-François Moine 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 483ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x05, 0x82, 484ce5b2accSJean-François Moine 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 485ce5b2accSJean-François Moine 0x01, 0xf0, 0x00, 486ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, 487ce5b2accSJean-François Moine 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78, 488ce5b2accSJean-François Moine 0x40, 489ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x00, 490ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0xad, 491ce5b2accSJean-François Moine 0x00, 0x00, 0x01, 0x08, 492ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 493ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x00, 0x00, 494ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00, 495ce5b2accSJean-François Moine 0x10, 0x1d, 0x08, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 496ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x27, 497ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x0e, 0x35, 0x4f, 0x62, 0x71, 0x7f, 0x8b, 498ce5b2accSJean-François Moine 0x96, 0xa0, 0xa9, 0xb2, 0xbb, 0xc3, 0xca, 0xd2, 499ce5b2accSJean-François Moine 0xd8, 500ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 501ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x14, 0x14, 502ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x0c, 503ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64, 0x74, 504ce5b2accSJean-François Moine 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2, 0xf1, 505ce5b2accSJean-François Moine 0xff, 506ce5b2accSJean-François Moine /* 0x00, 0x0e, 0x35, 0x4f, 0x62, 0x71, 0x7f, 0x8b, 507ce5b2accSJean-François Moine * 0x96, 0xa0, 0xa9, 0xb2, 0xbb, 0xc3, 0xca, 0xd2, 508ce5b2accSJean-François Moine * 0xd8, */ 509ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x10, 510ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x11, 511ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x1c, 512ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x03, 513ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 514ce5b2accSJean-François Moine 0, 0, 0 515ce5b2accSJean-François Moine }; 516ce5b2accSJean-François Moine /* et31x110 - Trust 120 SpaceCam */ 517ce5b2accSJean-François Moine static const u8 spacecam_init[] = { 518ce5b2accSJean-François Moine 0x04, 0x05, 0x01, 0x01, 519ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x01, 520ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x04, 521ce5b2accSJean-François Moine 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 522ce5b2accSJean-François Moine 0x05, 0x05, 0x01, 0x00, 523bad03ff5SJean-François Moine 0, 0, 0 524bad03ff5SJean-François Moine }; 525bad03ff5SJean-François Moine static const u8 spacecam_start[] = { 526ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x44, 527ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f, 528ce5b2accSJean-François Moine 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19, 529ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 530ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24, 531ce5b2accSJean-François Moine 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 532ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, 533ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 534ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 535ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 536ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 537ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 538ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 539ce5b2accSJean-François Moine 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, 540ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 541ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 542ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 543ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00, 544ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08, 545ce5b2accSJean-François Moine 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, 546ce5b2accSJean-François Moine 0x00, 0x4b, 0x00, 0x7c, 0x00, 0x80, 0x00, 547ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 548ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 549ce5b2accSJean-François Moine 0x40, 0x20, 550ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 551ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 552ce5b2accSJean-François Moine 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 553ce5b2accSJean-François Moine 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 554ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 555ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 556ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 557ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 558ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 559ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 560ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00, 561ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 562ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 563ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 564ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 565ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 566ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 567ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 568ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 569ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 570ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 571ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 572ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 573ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 574ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 575ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 576ce5b2accSJean-François Moine 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 577ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62, 578ce5b2accSJean-François Moine 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, 579ce5b2accSJean-François Moine 0x01, 0x60, 0x01, 0x00, 0x00, 580ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0xc0, 581ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01, 582ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00, 583ce5b2accSJean-François Moine 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65, 584ce5b2accSJean-François Moine 0x40, 585ce5b2accSJean-François Moine 0x00, 0x80, 0x01, 0xa0, 586ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x00, 587ce5b2accSJean-François Moine 0x00, 0x91, 0x02, 0x32, 0x01, 588ce5b2accSJean-François Moine 0x00, 0x03, 0x02, 0x08, 0x02, 589ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0x83, 590ce5b2accSJean-François Moine 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 591ce5b2accSJean-François Moine 0x20, 0x01, 0x60, 0x01, 592ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01, 593ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x08, 594ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x64, 0x99, 0xc0, 0xe2, 0xf9, 0xf9, 0xf9, 595ce5b2accSJean-François Moine 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 596ce5b2accSJean-François Moine 0xf9, 597ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 598ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x13, 0x13, 599ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x06, 600ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x64, 0x99, 0xc0, 0xe2, 0xf9, 0xf9, 0xf9, 601ce5b2accSJean-François Moine 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 602ce5b2accSJean-François Moine 0xf9, 603ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x08, 604ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x10, 605ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x1f, 606ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0xc3, 607ce5b2accSJean-François Moine 0x04, 0x05, 0x01, 0x40, 608ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x40, 609ce5b2accSJean-François Moine 0, 0, 0 610ce5b2accSJean-François Moine }; 611c3ee142bSJean-François Moine /* et31x110 - pas106 - other Trust SpaceCam120 */ 612c3ee142bSJean-François Moine static const u8 spacecam2_start[] = { 613ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x44, 614ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x00, 615ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f, 616ce5b2accSJean-François Moine 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19, 617ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 618ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc, 619ce5b2accSJean-François Moine 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 620ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, 621ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 622ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 623ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 624ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 625ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 626ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 627ce5b2accSJean-François Moine 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, 628ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 629ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 630ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 631ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00, 632ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03, 633ce5b2accSJean-François Moine 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, 634ce5b2accSJean-François Moine 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00, 635ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 636ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 637ce5b2accSJean-François Moine 0x40, 0x20, 638ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 639ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00, 640ce5b2accSJean-François Moine 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 641ce5b2accSJean-François Moine 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 642ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 643ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 644ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 645ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 646ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 647ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 648ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00, 649ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 650ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 651ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 652ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 653ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 654ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 655ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 656ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 657ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 658ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 659ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 660ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 661ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 662ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 663ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 664ce5b2accSJean-François Moine 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 665ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62, 666ce5b2accSJean-François Moine 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, 667ce5b2accSJean-François Moine 0x01, 0x60, 0x01, 0x00, 0x00, 668ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01, 669ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x40, 670ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 671ce5b2accSJean-François Moine I2C0, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x05, 672ce5b2accSJean-François Moine 0x00, 0x00, 0x05, 0x05, 673ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x11, 0x06, 674ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x14, 0x00, 675c3ee142bSJean-François Moine I2C0, 0x40, 0x02, 0x13, 0x01, /* i2c end */ 676ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00, 677ce5b2accSJean-François Moine 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65, 678ce5b2accSJean-François Moine 0x40, 679c3ee142bSJean-François Moine I2C0, 0x40, 0x02, 0x02, 0x0c, /* pixel clock */ 680ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x0f, 0x00, 681c3ee142bSJean-François Moine I2C0, 0x40, 0x02, 0x13, 0x01, /* i2c end */ 682ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0x01, 683ce5b2accSJean-François Moine 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 684ce5b2accSJean-François Moine 0x20, 0x01, 0x60, 0x01, 685c3ee142bSJean-François Moine I2C0, 0x40, 0x02, 0x05, 0x0f, /* exposure */ 686c3ee142bSJean-François Moine I2C0, 0x40, 0x02, 0x13, 0x01, /* i2c end */ 687ce5b2accSJean-François Moine I2C0, 0x40, 0x07, 0x09, 0x0b, 0x0f, 0x05, 0x05, 0x0f, 0x00, 688c3ee142bSJean-François Moine /* gains */ 689ce5b2accSJean-François Moine I2C0, 0x40, 0x03, 0x12, 0x04, 0x01, 690ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01, 691ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x08, 692ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7, 693ce5b2accSJean-François Moine 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7, 694ce5b2accSJean-François Moine 0xf9, 695ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 696ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x13, 0x13, 697ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x06, 698ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7, 699ce5b2accSJean-François Moine 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7, 700ce5b2accSJean-François Moine 0xf9, 701ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x11, 702ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x10, 703ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x14, 704ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x03, 705ce5b2accSJean-François Moine 0x04, 0x05, 0x01, 0x61, 706ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 707ce5b2accSJean-François Moine 0, 0, 0 708ce5b2accSJean-François Moine }; 709ce5b2accSJean-François Moine 710ce5b2accSJean-François Moine /* nw802 - Conceptronic Video Pro */ 711c3ee142bSJean-François Moine static const u8 cvideopro_start[] = { 712ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x04, 713ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c, 714ce5b2accSJean-François Moine 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, 715ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 716ce5b2accSJean-François Moine 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4, 717ce5b2accSJean-François Moine 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01, 718ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 719ce5b2accSJean-François Moine 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6, 720ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 721ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2, 722ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 723ce5b2accSJean-François Moine 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0, 724ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 725ce5b2accSJean-François Moine 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54, 726ce5b2accSJean-François Moine 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 727ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 728ce5b2accSJean-François Moine 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30, 729ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f, 730ce5b2accSJean-François Moine 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, 731ce5b2accSJean-François Moine 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94, 732ce5b2accSJean-François Moine 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00, 733ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 734ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 735ce5b2accSJean-François Moine 0x40, 0x20, 736ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 737ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00, 738ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x09, 0x99, 739ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 740ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 741ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 742ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, 743ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 744ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 745ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c, 746ce5b2accSJean-François Moine 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 747ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 748ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 749ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 750ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 751ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 752ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 753ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 754ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 755ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 756ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 757ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 758ce5b2accSJean-François Moine 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 759ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82, 760ce5b2accSJean-François Moine 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 761ce5b2accSJean-François Moine 0x01, 0xf0, 0x00, 762ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00, 763ce5b2accSJean-François Moine 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0, 764ce5b2accSJean-François Moine 0x40, 765ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x03, 766ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0xac, 767ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 768ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x3b, 0x01, 769ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00, 770ce5b2accSJean-François Moine 0x10, 0x1f, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00, 771ce5b2accSJean-François Moine 0x10, 0x1d, 0x02, 0x40, 0x06, 772ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x08, 773ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0, 774ce5b2accSJean-François Moine 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc, 775ce5b2accSJean-François Moine 0xdc, 776ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 777ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x12, 0x12, 778ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x0c, 779ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0, 780ce5b2accSJean-François Moine 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc, 781ce5b2accSJean-François Moine 0xdc, 782ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x09, 783ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x10, 784ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x2f, 785ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x03, 786ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 787ce5b2accSJean-François Moine 0, 0, 0 788ce5b2accSJean-François Moine }; 789ce5b2accSJean-François Moine 790ce5b2accSJean-François Moine /* nw802 - D-link dru-350c cam */ 791c3ee142bSJean-François Moine static const u8 dlink_start[] = { 792ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x04, 793ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d, 794ce5b2accSJean-François Moine 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, 795ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 796ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4, 797ce5b2accSJean-François Moine 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 798ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, 799ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 800ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 801ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 802ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 803ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 804ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 805ce5b2accSJean-François Moine 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, 806ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 807ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 808ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 809ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00, 810ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, 811ce5b2accSJean-François Moine 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94, 812ce5b2accSJean-François Moine 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00, 813ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 814ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 815ce5b2accSJean-François Moine 0x40, 0x20, 816ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 817ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 818ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x09, 0x99, 819ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 820ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 821ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 822ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, 823ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 824ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 825ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14, 826ce5b2accSJean-François Moine 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 827ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 828ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 829ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 830ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 831ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 832ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 833ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 834ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 835ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 836ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 837ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 838ce5b2accSJean-François Moine 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 839ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x82, 840ce5b2accSJean-François Moine 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 841ce5b2accSJean-François Moine 0x01, 0xf0, 0x00, 842ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, 843ce5b2accSJean-François Moine 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78, 844ce5b2accSJean-François Moine 0x40, 845ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x00, 846ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0xad, 847ce5b2accSJean-François Moine 0x00, 0x00, 0x01, 0x08, 848ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 849ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x00, 0x00, 850ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00, 851ce5b2accSJean-François Moine 0x10, 0x1d, 0x08, 0x40, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00, 852ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x20, 853ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f, 854ce5b2accSJean-François Moine 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf, 855ce5b2accSJean-François Moine 0xea, 856ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 857ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x11, 0x11, 858ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x10, 859ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f, 860ce5b2accSJean-François Moine 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf, 861ce5b2accSJean-François Moine 0xea, 862ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x19, 863ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x10, 864ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x1e, 865ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x03, 866ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 867ce5b2accSJean-François Moine 0, 0, 0 868ce5b2accSJean-François Moine }; 869ce5b2accSJean-François Moine 870c3ee142bSJean-François Moine /* 06a5:d001 - nw801 - Sony 871c3ee142bSJean-François Moine * Plustek Opticam 500U or ProLink DS3303u (Hitachi HD49322BF) */ 872c3ee142bSJean-François Moine /*fixme: 320x240 only*/ 873c3ee142bSJean-François Moine static const u8 ds3303_start[] = { 874ce5b2accSJean-François Moine 0x05, 0x06, 0x01, 0x04, 875ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x16, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e, 876ce5b2accSJean-François Moine 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, 877ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 878ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4, 879ce5b2accSJean-François Moine 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 880ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, 881ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 882ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 883ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 884ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 885ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 886ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 887ce5b2accSJean-François Moine 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, 888ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 889ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 890ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 891ce5b2accSJean-François Moine 0x00, 0x80, 0x22, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00, 892ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xa9, 0xa8, 0x1f, 0x00, 893ce5b2accSJean-François Moine 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00, 894ce5b2accSJean-François Moine 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00, 895ce5b2accSJean-François Moine 0x36, 0x00, 896ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x03, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 897ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0x50, 898ce5b2accSJean-François Moine 0x40, 0x20, 899ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 900ce5b2accSJean-François Moine 0x05, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00, 901ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x09, 0x99, 902ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 903ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 904ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 905ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0x2f, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, 906ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a, 907ce5b2accSJean-François Moine 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4, 908ce5b2accSJean-François Moine 0x00, 0x01, 0x15, 0xfd, 0x07, 0x3d, 0x00, 0x00, 909ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04, 0x01, 0x20, 910ce5b2accSJean-François Moine 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 911ce5b2accSJean-François Moine 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x03, 912ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7, 913ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80, 914ce5b2accSJean-François Moine 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f, 0x88, 915ce5b2accSJean-François Moine 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4, 0xcb, 916ce5b2accSJean-François Moine 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64, 917ce5b2accSJean-François Moine 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2, 918ce5b2accSJean-François Moine 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 919ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 920ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 921ce5b2accSJean-François Moine 0x10, 0x80, 0x22, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 922ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f, 0x01, 923ce5b2accSJean-François Moine 0x00, 0x00, 0xef, 0x00, 0x02, 0x0a, 0x82, 0x02, 924ce5b2accSJean-François Moine 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01, 925ce5b2accSJean-François Moine 0xf0, 0x00, 926ce5b2accSJean-François Moine 927ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, 928ce5b2accSJean-François Moine 0x00, 0x78, 0x3f, 0x3f, 0x00, 0xf2, 0x8f, 0x81, 929ce5b2accSJean-François Moine 0x40, 930ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x15, 931ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0x2f, 932ce5b2accSJean-François Moine 0x10, 0x8c, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 933ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x00, 0x00, 934ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00, 935ce5b2accSJean-François Moine 0x10, 0x26, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00, 936ce5b2accSJean-François Moine 0x10, 0x24, 0x02, 0x40, 0x06, 937ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x08, 938ce5b2accSJean-François Moine 0x10, 0x48, 0x11, 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6, 939ce5b2accSJean-François Moine 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 940ce5b2accSJean-François Moine 0xf9, 941ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 942ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x16, 0x16, 943ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x0c, 944ce5b2accSJean-François Moine 0x10, 0x48, 0x11, 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6, 945ce5b2accSJean-François Moine 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 946ce5b2accSJean-François Moine 0xf9, 947ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x26, 948ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x10, 949ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x1c, 950ce5b2accSJean-François Moine 0x05, 0x06, 0x01, 0x03, 951ce5b2accSJean-François Moine 0x05, 0x04, 0x01, 0x00, 952ce5b2accSJean-François Moine 0, 0, 0 953ce5b2accSJean-François Moine }; 954ce5b2accSJean-François Moine 955c3ee142bSJean-François Moine /* 06a5:d001 - nw802 - Panasonic 956c3ee142bSJean-François Moine * GP-KR651US (Philips TDA8786) */ 957c3ee142bSJean-François Moine static const u8 kr651_start_1[] = { 958ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x04, 959ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x44, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x48, 960ce5b2accSJean-François Moine 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, 961ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 962ce5b2accSJean-François Moine 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4, 963ce5b2accSJean-François Moine 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01, 964ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 965ce5b2accSJean-François Moine 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6, 966ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 967ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2, 968ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 969ce5b2accSJean-François Moine 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0, 970ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 971ce5b2accSJean-François Moine 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54, 972ce5b2accSJean-François Moine 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 973ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 974ce5b2accSJean-François Moine 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30, 975ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f, 976ce5b2accSJean-François Moine 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, 977ce5b2accSJean-François Moine 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94, 978ce5b2accSJean-François Moine 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00, 979ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 980ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 981ce5b2accSJean-François Moine 0x40, 0x20, 982ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x02, 0x00, 0x00, 983ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 984ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x09, 0x99, 985ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 986ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 987ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 988ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, 989ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 990ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 991ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c, 992ce5b2accSJean-François Moine 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 993ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 994ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 995ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 996ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 997ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 998ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 999ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 1000ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 1001ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 1002ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 1003ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 1004ce5b2accSJean-François Moine 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 1005ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82, 1006ce5b2accSJean-François Moine 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 1007ce5b2accSJean-François Moine 0x01, 0xf0, 0x00, 1008ce5b2accSJean-François Moine 0, 0, 0 1009ce5b2accSJean-François Moine }; 1010c3ee142bSJean-François Moine static const u8 kr651_start_qvga[] = { 1011ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, 1012ce5b2accSJean-François Moine 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78, 1013ce5b2accSJean-François Moine 0x40, 1014ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x03, 1015ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0xac, 1016ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 1017ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x00, 0x00, 1018ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00, 1019ce5b2accSJean-François Moine 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00, 1020ce5b2accSJean-François Moine 0x10, 0x1d, 0x02, 0x28, 0x01, 1021ce5b2accSJean-François Moine 0, 0, 0 1022ce5b2accSJean-François Moine }; 1023c3ee142bSJean-François Moine static const u8 kr651_start_vga[] = { 1024ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x78, 0xa0, 0x8c, 0x78, 0xa0, 0x00, 0x00, 0x00, 1025ce5b2accSJean-François Moine 0x00, 0xf0, 0x30, 0x03, 0x01, 0x82, 0x82, 0x98, 1026ce5b2accSJean-François Moine 0x80, 1027ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x03, 1028ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0xa0, 1029ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01, 1030ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x00, 0x00, 1031ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x51, 0x00, 0x30, 0x02, 0x3d, 0x00, 0xa4, 0x01, 1032ce5b2accSJean-François Moine 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00, 1033ce5b2accSJean-François Moine 0x10, 0x1d, 0x02, 0x68, 0x00, 1034ce5b2accSJean-François Moine }; 1035c3ee142bSJean-François Moine static const u8 kr651_start_2[] = { 1036ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x08, 1037ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0xa8, 1038ce5b2accSJean-François Moine 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 1039ce5b2accSJean-François Moine 0xdc, 1040ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 1041ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x0c, 0x0c, 1042ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x0c, 1043ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0xa8, 1044ce5b2accSJean-François Moine 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 1045ce5b2accSJean-François Moine 0xdc, 1046ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x10, 1047ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x10, 1048ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x2d, 1049ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x03, 1050ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 1051ce5b2accSJean-François Moine 0, 0, 0 1052ce5b2accSJean-François Moine }; 1053ce5b2accSJean-François Moine 1054ce5b2accSJean-François Moine /* nw802 - iRez Kritter cam */ 1055c3ee142bSJean-François Moine static const u8 kritter_start[] = { 1056ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x06, 1057ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x44, 0x96, 0x98, 0x94, 0x03, 0x18, 0x00, 0x48, 1058ce5b2accSJean-François Moine 0x0f, 0x1e, 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19, 1059ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 1060ce5b2accSJean-François Moine 0x00, 0x0b, 0x00, 0x1b, 0x00, 0x0a, 0x01, 0x28, 1061ce5b2accSJean-François Moine 0x07, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01, 1062ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 1063ce5b2accSJean-François Moine 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6, 1064ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 1065ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2, 1066ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 1067ce5b2accSJean-François Moine 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0, 1068ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 1069ce5b2accSJean-François Moine 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54, 1070ce5b2accSJean-François Moine 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 1071ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 1072ce5b2accSJean-François Moine 0x00, 0x5d, 0x00, 0x0e, 0x00, 0x7e, 0x00, 0x30, 1073ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f, 1074ce5b2accSJean-François Moine 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, 1075ce5b2accSJean-François Moine 0x00, 0x0b, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94, 1076ce5b2accSJean-François Moine 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00, 1077ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 1078ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 1079ce5b2accSJean-François Moine 0x40, 0x20, 1080ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x02, 0x00, 0x00, 1081ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00, 1082ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x09, 0x99, 1083ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1084ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1085ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 1086ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, 1087ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 1088ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1089ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c, 1090ce5b2accSJean-François Moine 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 1091ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 1092ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 1093ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 1094ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 1095ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 1096ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 1097ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 1098ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 1099ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 1100ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 1101ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 1102ce5b2accSJean-François Moine 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 1103ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x82, 1104ce5b2accSJean-François Moine 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 1105ce5b2accSJean-François Moine 0x01, 0xf0, 0x00, 1106ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00, 1107ce5b2accSJean-François Moine 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0, 1108ce5b2accSJean-François Moine 0x40, 1109ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x03, 1110ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0xaf, 1111ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 1112ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x3b, 0x01, 1113ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00, 1114ce5b2accSJean-François Moine 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00, 1115ce5b2accSJean-François Moine 0x10, 0x1d, 0x02, 0x00, 0x00, 1116ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x08, 1117ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86, 1118ce5b2accSJean-François Moine 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4, 1119ce5b2accSJean-François Moine 0xcb, 1120ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 1121ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x0d, 0x0d, 1122ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x02, 1123ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86, 1124ce5b2accSJean-François Moine 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4, 1125ce5b2accSJean-François Moine 0xcb, 1126ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x17, 1127ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x10, 1128ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x1e, 1129ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x03, 1130ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 1131ce5b2accSJean-François Moine 0, 0, 0 1132ce5b2accSJean-François Moine }; 1133ce5b2accSJean-François Moine 1134ce5b2accSJean-François Moine /* nw802 - Mustek Wcam 300 mini */ 1135c3ee142bSJean-François Moine static const u8 mustek_start[] = { 1136ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x04, 1137ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d, 1138ce5b2accSJean-François Moine 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, 1139ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 1140ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4, 1141ce5b2accSJean-François Moine 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 1142ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, 1143ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 1144ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 1145ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 1146ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 1147ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 1148ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 1149ce5b2accSJean-François Moine 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, 1150ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 1151ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 1152ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 1153ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00, 1154ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, 1155ce5b2accSJean-François Moine 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94, 1156ce5b2accSJean-François Moine 0x00, 0x10, 0x06, 0xfc, 0x05, 0x0c, 0x06, 1157ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 1158ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 1159ce5b2accSJean-François Moine 0x40, 0x20, 1160ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 1161ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 1162ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x09, 0x99, 1163ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1164ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1165ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 1166ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x13, 0x00, 0x00, 0x00, 1167ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 1168ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1169ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14, 1170ce5b2accSJean-François Moine 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 1171ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 1172ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 1173ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 1174ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 1175ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 1176ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 1177ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 1178ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 1179ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 1180ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 1181ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 1182ce5b2accSJean-François Moine 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 1183ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x82, 1184ce5b2accSJean-François Moine 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 1185ce5b2accSJean-François Moine 0x01, 0xf0, 0x00, 1186ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, 1187ce5b2accSJean-François Moine 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78, 1188ce5b2accSJean-François Moine 0x40, 1189ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x00, 1190ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0xad, 1191ce5b2accSJean-François Moine 0x00, 0x00, 0x01, 0x08, 1192ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 1193ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x00, 0x00, 1194ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 1195ce5b2accSJean-François Moine 0x10, 0x1d, 0x08, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 1196ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x0f, 1197ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e, 1198ce5b2accSJean-François Moine 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9, 1199ce5b2accSJean-François Moine 0xff, 1200ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x11, 0x11, 1201ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x0c, 1202ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e, 1203ce5b2accSJean-François Moine 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9, 1204ce5b2accSJean-François Moine 0xff, 1205ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x1c, 1206ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x1a, 1207ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x34, 1208ce5b2accSJean-François Moine 0x04, 0x05, 0x01, 0x61, 1209ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x40, 1210ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x03, 1211ce5b2accSJean-François Moine 0, 0, 0 1212ce5b2accSJean-François Moine }; 1213ce5b2accSJean-François Moine 1214ce5b2accSJean-François Moine /* nw802 - Scope USB Microscope M2 (ProScope) (Hitachi HD49322BF) */ 1215bad03ff5SJean-François Moine static const u8 proscope_init[] = { 1216ce5b2accSJean-François Moine 0x04, 0x05, 0x01, 0x21, 1217ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x01, 1218bad03ff5SJean-François Moine 0, 0, 0 1219bad03ff5SJean-François Moine }; 1220bad03ff5SJean-François Moine static const u8 proscope_start_1[] = { 1221ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x04, 1222ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x10, 0x01, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x04, 1223ce5b2accSJean-François Moine 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, 1224ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 1225ce5b2accSJean-François Moine 0x00, 0x08, 0x00, 0x17, 0x00, 0xce, 0x00, 0xf4, 1226ce5b2accSJean-François Moine 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 1227ce5b2accSJean-François Moine 0x00, 0xce, 0x00, 0xf8, 0x03, 0x3e, 0x00, 0x86, 1228ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 1229ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 1230ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0xb6, 1231ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 1232ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 1233ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 1234ce5b2accSJean-François Moine 0x00, 0xf6, 0x03, 0x34, 0x04, 0xf6, 0x03, 0x34, 1235ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 1236ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xe8, 1237ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 1238ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x1f, 0x0f, 0x08, 0x20, 0xa8, 0x00, 1239ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, 1240ce5b2accSJean-François Moine 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19, 0x00, 0x94, 1241ce5b2accSJean-François Moine 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00, 1242ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 1243ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 1244ce5b2accSJean-François Moine 0x40, 0x20, 1245ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 1246ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 1247ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x09, 0x99, 1248ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1249ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1250ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 1251ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0xad, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, 1252ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a, 1253ce5b2accSJean-François Moine 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4, 1254ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0x8c, 0x04, 0x01, 1255ce5b2accSJean-François Moine 0x20, 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 1256ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 1257ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 1258ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 1259ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f, 1260ce5b2accSJean-François Moine 0x88, 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4, 1261ce5b2accSJean-François Moine 0xcb, 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 1262ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 1263ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 1264ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 1265ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 1266ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 1267ce5b2accSJean-François Moine 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f, 1268ce5b2accSJean-François Moine 0x01, 0x00, 0x00, 0xef, 0x00, 0x09, 0x05, 0x82, 1269ce5b2accSJean-François Moine 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 1270ce5b2accSJean-François Moine 0x01, 0xf0, 0x00, 1271ce5b2accSJean-François Moine 0, 0, 0 1272ce5b2accSJean-François Moine }; 1273c3ee142bSJean-François Moine static const u8 proscope_start_qvga[] = { 1274ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00, 1275ce5b2accSJean-François Moine 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78, 1276ce5b2accSJean-François Moine 0x40, 1277ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x06, 1278ce5b2accSJean-François Moine 0x00, 0x03, 0x02, 0xf9, 0x02, 1279ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 1280ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x00, 0x00, 1281ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 1282ce5b2accSJean-François Moine 0x10, 0x1d, 0x08, 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00, 1283ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x10, 1284ce5b2accSJean-François Moine 0, 0, 0 1285ce5b2accSJean-François Moine }; 1286c3ee142bSJean-François Moine static const u8 proscope_start_vga[] = { 1287ce5b2accSJean-François Moine 0x00, 0x03, 0x02, 0xf9, 0x02, 1288ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01, 1289ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x78, 0xa0, 0x8c, 0x78, 0xa0, 0x00, 0x00, 0x00, 1290ce5b2accSJean-François Moine 0x00, 0xf0, 0x16, 0x00, 0x00, 0x82, 0x84, 0x00, 1291ce5b2accSJean-François Moine 0x80, 1292ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x06, 1293ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0xa1, 1294ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x00, 0x00, 1295ce5b2accSJean-François Moine 0x10, 0x1d, 0x08, 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00, 1296ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01, 1297ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x10, 1298ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae, 1299ce5b2accSJean-François Moine 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2, 1300ce5b2accSJean-François Moine 0xf9, 1301ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 1302ce5b2accSJean-François Moine 0, 0, 0 1303ce5b2accSJean-François Moine }; 1304c3ee142bSJean-François Moine static const u8 proscope_start_2[] = { 1305ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x0c, 0x0c, 1306ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x0c, 1307ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae, 1308ce5b2accSJean-François Moine 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2, 1309ce5b2accSJean-François Moine 0xf9, 1310ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x0b, 1311ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x10, 1312ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x1b, 1313ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x03, 1314ce5b2accSJean-François Moine 0x04, 0x05, 0x01, 0x21, 1315ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 1316ce5b2accSJean-François Moine 0, 0, 0 1317ce5b2accSJean-François Moine }; 1318ce5b2accSJean-François Moine 1319c3ee142bSJean-François Moine /* nw800 - hv7121b? (seems pas106) - Divio Chicony TwinkleCam */ 1320c3ee142bSJean-François Moine static const u8 twinkle_start[] = { 1321ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x44, 1322ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x00, 1323ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f, 1324ce5b2accSJean-François Moine 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19, 1325ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 1326ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc, 1327ce5b2accSJean-François Moine 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86, 1328ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01, 1329ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e, 1330ce5b2accSJean-François Moine 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01, 1331ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 1332ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 1333ce5b2accSJean-François Moine 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78, 1334ce5b2accSJean-François Moine 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01, 1335ce5b2accSJean-François Moine 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46, 1336ce5b2accSJean-François Moine 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 1337ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 1338ce5b2accSJean-François Moine 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e, 1339ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00, 1340ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03, 1341ce5b2accSJean-François Moine 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04, 1342ce5b2accSJean-François Moine 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00, 1343ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 1344ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 1345ce5b2accSJean-François Moine 0x40, 0x20, 1346ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 1347ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00, 1348ce5b2accSJean-François Moine 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 1349ce5b2accSJean-François Moine 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1350ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1351ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1352ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 1353ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1354ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1355ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 1356ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00, 1357ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x08, 1358ce5b2accSJean-François Moine 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1359ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 1360ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 1361ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 1362ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x06, 1363ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x00, 0x80, 1364ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 1365ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 1366ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 1367ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 1368ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 1369ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 1370ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 1371ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 1372ce5b2accSJean-François Moine 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 1373ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62, 1374ce5b2accSJean-François Moine 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20, 1375ce5b2accSJean-François Moine 0x01, 0x60, 0x01, 0x00, 0x00, 1376ce5b2accSJean-François Moine 1377ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01, 1378ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x10, 1379ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 1380ce5b2accSJean-François Moine 0x04, 0x05, 0x01, 0x61, 1381ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x01, 1382ce5b2accSJean-François Moine I2C0, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00, 1383ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x0a, 1384ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x11, 0x06, 1385ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x14, 0x00, 1386c3ee142bSJean-François Moine I2C0, 0x40, 0x02, 0x13, 0x01, /* i2c end */ 1387ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x07, 0x01, 1388ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00, 1389ce5b2accSJean-François Moine 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65, 1390ce5b2accSJean-François Moine 0x40, 1391ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x02, 0x0c, 1392ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x13, 0x01, 1393ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0x01, 1394ce5b2accSJean-François Moine 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 1395ce5b2accSJean-François Moine 0x20, 0x01, 0x60, 0x01, 1396ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x05, 0x0f, 1397ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x13, 0x01, 1398ce5b2accSJean-François Moine I2C0, 0x40, 0x08, 0x08, 0x04, 0x0b, 0x01, 0x01, 0x02, 0x00, 0x17, 1399ce5b2accSJean-François Moine I2C0, 0x40, 0x03, 0x12, 0x00, 0x01, 1400ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01, 1401ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x12, 0x00, 1402ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x0e, 0x00, 1403ce5b2accSJean-François Moine I2C0, 0x40, 0x02, 0x11, 0x06, 1404ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7, 1405ce5b2accSJean-François Moine 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7, 1406ce5b2accSJean-François Moine 0xf9, 1407ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 1408ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x0c, 0x0c, 1409ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x06, 1410ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7, 1411ce5b2accSJean-François Moine 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7, 1412ce5b2accSJean-François Moine 0xf9, 1413ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x19, 1414ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x10, 1415ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x0d, 1416ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x03, 1417ce5b2accSJean-François Moine 0x04, 0x05, 0x01, 0x61, 1418ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x41, 1419ce5b2accSJean-François Moine 0, 0, 0 1420ce5b2accSJean-François Moine }; 1421ce5b2accSJean-François Moine 1422ce5b2accSJean-François Moine /* nw802 dvc-v6 */ 1423c3ee142bSJean-François Moine static const u8 dvcv6_start[] = { 1424ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x06, 1425ce5b2accSJean-François Moine 0x00, 0x00, 0x40, 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c, 1426ce5b2accSJean-François Moine 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19, 1427ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19, 1428ce5b2accSJean-François Moine 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4, 1429ce5b2accSJean-François Moine 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01, 1430ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 1431ce5b2accSJean-François Moine 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6, 1432ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 1433ce5b2accSJean-François Moine 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2, 1434ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 1435ce5b2accSJean-François Moine 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0, 1436ce5b2accSJean-François Moine 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 1437ce5b2accSJean-François Moine 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54, 1438ce5b2accSJean-François Moine 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee, 1439ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 1440ce5b2accSJean-François Moine 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30, 1441ce5b2accSJean-François Moine 0x00, 0x80, 0x1f, 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f, 1442ce5b2accSJean-François Moine 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11, 1443ce5b2accSJean-François Moine 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94, 1444ce5b2accSJean-François Moine 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00, 1445ce5b2accSJean-François Moine 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00, 1446ce5b2accSJean-François Moine 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0, 1447ce5b2accSJean-François Moine 0x40, 0x20, 1448ce5b2accSJean-François Moine 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 1449ce5b2accSJean-François Moine 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00, 1450ce5b2accSJean-François Moine 0x06, 0x00, 0x02, 0x09, 0x99, 1451ce5b2accSJean-François Moine 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1452ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1453ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 1454ce5b2accSJean-François Moine 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, 1455ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a, 1456ce5b2accSJean-François Moine 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1457ce5b2accSJean-François Moine 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c, 1458ce5b2accSJean-François Moine 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 1459ce5b2accSJean-François Moine 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 1460ce5b2accSJean-François Moine 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 1461ce5b2accSJean-François Moine 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 1462ce5b2accSJean-François Moine 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 1463ce5b2accSJean-François Moine 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 1464ce5b2accSJean-François Moine 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 1465ce5b2accSJean-François Moine 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 1466ce5b2accSJean-François Moine 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 1467ce5b2accSJean-François Moine 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 1468ce5b2accSJean-François Moine 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 1469ce5b2accSJean-François Moine 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 1470ce5b2accSJean-François Moine 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 1471ce5b2accSJean-François Moine 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82, 1472ce5b2accSJean-François Moine 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 1473ce5b2accSJean-François Moine 0x01, 0xf0, 0x00, 1474ce5b2accSJean-François Moine 0x00, 0x03, 0x02, 0x94, 0x03, 1475ce5b2accSJean-François Moine 0x00, 0x1d, 0x04, 0x0a, 0x01, 0x28, 0x07, 1476ce5b2accSJean-François Moine 0x00, 0x7b, 0x02, 0xe0, 0x00, 1477ce5b2accSJean-François Moine 0x10, 0x8d, 0x01, 0x00, 1478ce5b2accSJean-François Moine 0x00, 0x09, 0x04, 0x1e, 0x00, 0x0c, 0x02, 1479ce5b2accSJean-François Moine 0x00, 0x91, 0x02, 0x0b, 0x02, 1480ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0xaf, 1481ce5b2accSJean-François Moine 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8f, 0x3c, 0x50, 0x00, 0x00, 0x00, 1482ce5b2accSJean-François Moine 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0, 1483ce5b2accSJean-François Moine 0x40, 1484ce5b2accSJean-François Moine 0x10, 0x1a, 0x01, 0x02, 1485ce5b2accSJean-François Moine 0x10, 0x00, 0x01, 0xaf, 1486ce5b2accSJean-François Moine 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00, 1487ce5b2accSJean-François Moine 0x10, 0x1b, 0x02, 0x07, 0x01, 1488ce5b2accSJean-François Moine 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00, 1489ce5b2accSJean-François Moine 0x10, 0x1f, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00, 1490ce5b2accSJean-François Moine 0x10, 0x1d, 0x02, 0x40, 0x06, 1491ce5b2accSJean-François Moine 0x10, 0x0e, 0x01, 0x08, 1492ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x0f, 0x54, 0x6f, 0x82, 0x91, 0x9f, 0xaa, 1493ce5b2accSJean-François Moine 0xb4, 0xbd, 0xc5, 0xcd, 0xd5, 0xdb, 0xdc, 0xdc, 1494ce5b2accSJean-François Moine 0xdc, 1495ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x00, 1496ce5b2accSJean-François Moine 0x10, 0x0f, 0x02, 0x12, 0x12, 1497ce5b2accSJean-François Moine 0x10, 0x03, 0x01, 0x11, 1498ce5b2accSJean-François Moine 0x10, 0x41, 0x11, 0x00, 0x0f, 0x54, 0x6f, 0x82, 0x91, 0x9f, 0xaa, 1499ce5b2accSJean-François Moine 0xb4, 0xbd, 0xc5, 0xcd, 0xd5, 0xdb, 0xdc, 0xdc, 1500ce5b2accSJean-François Moine 0xdc, 1501ce5b2accSJean-François Moine 0x10, 0x0b, 0x01, 0x16, 1502ce5b2accSJean-François Moine 0x10, 0x0d, 0x01, 0x10, 1503ce5b2accSJean-François Moine 0x10, 0x0c, 0x01, 0x1a, 1504ce5b2accSJean-François Moine 0x04, 0x06, 0x01, 0x03, 1505ce5b2accSJean-François Moine 0x04, 0x04, 0x01, 0x00, 1506ce5b2accSJean-François Moine }; 1507ce5b2accSJean-François Moine 1508c3ee142bSJean-François Moine static const u8 *webcam_start[] = { 1509bad03ff5SJean-François Moine [Generic800] = nw800_start, 1510bad03ff5SJean-François Moine [SpaceCam] = spacecam_start, 1511c3ee142bSJean-François Moine [SpaceCam2] = spacecam2_start, 1512c3ee142bSJean-François Moine [Cvideopro] = cvideopro_start, 1513c3ee142bSJean-François Moine [Dlink350c] = dlink_start, 1514c3ee142bSJean-François Moine [DS3303u] = ds3303_start, 1515c3ee142bSJean-François Moine [Kr651us] = kr651_start_1, 1516c3ee142bSJean-François Moine [Kritter] = kritter_start, 1517c3ee142bSJean-François Moine [Mustek300] = mustek_start, 1518bad03ff5SJean-François Moine [Proscope] = proscope_start_1, 1519c3ee142bSJean-François Moine [Twinkle] = twinkle_start, 1520c3ee142bSJean-François Moine [DvcV6] = dvcv6_start, 1521c3ee142bSJean-François Moine [P35u] = nw801_start_1, 1522c3ee142bSJean-François Moine [Generic802] = nw802_start, 1523ce5b2accSJean-François Moine }; 1524ce5b2accSJean-François Moine 1525ce5b2accSJean-François Moine /* -- write a register -- */ 1526ce5b2accSJean-François Moine static void reg_w(struct gspca_dev *gspca_dev, 1527ce5b2accSJean-François Moine u16 index, 1528ce5b2accSJean-François Moine const u8 *data, 1529ce5b2accSJean-François Moine int len) 1530ce5b2accSJean-François Moine { 1531ce5b2accSJean-François Moine struct usb_device *dev = gspca_dev->dev; 1532ce5b2accSJean-François Moine int ret; 1533ce5b2accSJean-François Moine 1534ce5b2accSJean-François Moine if (gspca_dev->usb_err < 0) 1535ce5b2accSJean-François Moine return; 1536ce5b2accSJean-François Moine if (len == 1) 153737d5efb0SJoe Perches gspca_dbg(gspca_dev, D_USBO, "SET 00 0000 %04x %02x\n", 153837d5efb0SJoe Perches index, *data); 1539ce5b2accSJean-François Moine else 154037d5efb0SJoe Perches gspca_dbg(gspca_dev, D_USBO, "SET 00 0000 %04x %02x %02x ...\n", 1541ce5b2accSJean-François Moine index, *data, data[1]); 1542ce5b2accSJean-François Moine memcpy(gspca_dev->usb_buf, data, len); 1543ce5b2accSJean-François Moine ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), 1544ce5b2accSJean-François Moine 0x00, 1545ce5b2accSJean-François Moine USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 1546ce5b2accSJean-François Moine 0x00, /* value */ 1547ce5b2accSJean-François Moine index, 1548ce5b2accSJean-François Moine gspca_dev->usb_buf, 1549ce5b2accSJean-François Moine len, 1550ce5b2accSJean-François Moine 500); 1551ce5b2accSJean-François Moine if (ret < 0) { 1552133a9fe9SJoe Perches pr_err("reg_w err %d\n", ret); 1553ce5b2accSJean-François Moine gspca_dev->usb_err = ret; 1554ce5b2accSJean-François Moine } 1555ce5b2accSJean-François Moine } 1556ce5b2accSJean-François Moine 1557ce5b2accSJean-François Moine /* -- read registers in usb_buf -- */ 1558ce5b2accSJean-François Moine static void reg_r(struct gspca_dev *gspca_dev, 1559ce5b2accSJean-François Moine u16 index, 1560ce5b2accSJean-François Moine int len) 1561ce5b2accSJean-François Moine { 1562ce5b2accSJean-François Moine struct usb_device *dev = gspca_dev->dev; 1563ce5b2accSJean-François Moine int ret; 1564ce5b2accSJean-François Moine 1565ce5b2accSJean-François Moine if (gspca_dev->usb_err < 0) 1566ce5b2accSJean-François Moine return; 1567ce5b2accSJean-François Moine ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), 1568ce5b2accSJean-François Moine 0x00, 1569ce5b2accSJean-François Moine USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 1570ce5b2accSJean-François Moine 0x00, index, 1571ce5b2accSJean-François Moine gspca_dev->usb_buf, len, 500); 1572ce5b2accSJean-François Moine if (ret < 0) { 1573133a9fe9SJoe Perches pr_err("reg_r err %d\n", ret); 1574ce5b2accSJean-François Moine gspca_dev->usb_err = ret; 15754843a543SHans Verkuil /* 15764843a543SHans Verkuil * Make sure the buffer is zeroed to avoid uninitialized 15774843a543SHans Verkuil * values. 15784843a543SHans Verkuil */ 15794843a543SHans Verkuil memset(gspca_dev->usb_buf, 0, USB_BUF_SZ); 1580ce5b2accSJean-François Moine return; 1581ce5b2accSJean-François Moine } 1582ce5b2accSJean-François Moine if (len == 1) 158337d5efb0SJoe Perches gspca_dbg(gspca_dev, D_USBI, "GET 00 0000 %04x %02x\n", 1584ce5b2accSJean-François Moine index, gspca_dev->usb_buf[0]); 1585ce5b2accSJean-François Moine else 158637d5efb0SJoe Perches gspca_dbg(gspca_dev, D_USBI, "GET 00 0000 %04x %02x %02x ..\n", 1587ce5b2accSJean-François Moine index, gspca_dev->usb_buf[0], 1588ce5b2accSJean-François Moine gspca_dev->usb_buf[1]); 1589ce5b2accSJean-François Moine } 1590ce5b2accSJean-François Moine 1591ce5b2accSJean-François Moine static void i2c_w(struct gspca_dev *gspca_dev, 1592ce5b2accSJean-François Moine u8 i2c_addr, 1593ce5b2accSJean-François Moine const u8 *data, 1594ce5b2accSJean-François Moine int len) 1595ce5b2accSJean-François Moine { 1596ce5b2accSJean-François Moine u8 val[2]; 1597ce5b2accSJean-François Moine int i; 1598ce5b2accSJean-François Moine 1599ce5b2accSJean-François Moine reg_w(gspca_dev, 0x0600, data + 1, len - 1); 1600ce5b2accSJean-François Moine reg_w(gspca_dev, 0x0600, data, len); 1601ce5b2accSJean-François Moine val[0] = len; 1602ce5b2accSJean-François Moine val[1] = i2c_addr; 1603ce5b2accSJean-François Moine reg_w(gspca_dev, 0x0502, val, 2); 1604ce5b2accSJean-François Moine val[0] = 0x01; 1605ce5b2accSJean-François Moine reg_w(gspca_dev, 0x0501, val, 1); 1606ce5b2accSJean-François Moine for (i = 5; --i >= 0; ) { 1607ce5b2accSJean-François Moine msleep(4); 1608ce5b2accSJean-François Moine reg_r(gspca_dev, 0x0505, 1); 1609ce5b2accSJean-François Moine if (gspca_dev->usb_err < 0) 1610ce5b2accSJean-François Moine return; 1611ce5b2accSJean-François Moine if (gspca_dev->usb_buf[0] == 0) 1612ce5b2accSJean-François Moine return; 1613ce5b2accSJean-François Moine } 1614ce5b2accSJean-François Moine gspca_dev->usb_err = -ETIME; 1615ce5b2accSJean-François Moine } 1616ce5b2accSJean-François Moine 1617ce5b2accSJean-François Moine static void reg_w_buf(struct gspca_dev *gspca_dev, 1618ce5b2accSJean-François Moine const u8 *cmd) 1619ce5b2accSJean-François Moine { 1620ce5b2accSJean-François Moine u16 reg; 1621ce5b2accSJean-François Moine int len; 1622ce5b2accSJean-François Moine 1623ce5b2accSJean-François Moine for (;;) { 1624ce5b2accSJean-François Moine reg = *cmd++ << 8; 1625ce5b2accSJean-François Moine reg += *cmd++; 1626ce5b2accSJean-François Moine len = *cmd++; 1627ce5b2accSJean-François Moine if (len == 0) 1628ce5b2accSJean-François Moine break; 1629ce5b2accSJean-François Moine if (cmd[-3] != I2C0) 1630ce5b2accSJean-François Moine reg_w(gspca_dev, reg, cmd, len); 1631ce5b2accSJean-François Moine else 1632c3ee142bSJean-François Moine i2c_w(gspca_dev, reg, cmd, len); 1633ce5b2accSJean-François Moine cmd += len; 1634ce5b2accSJean-François Moine } 1635ce5b2accSJean-François Moine } 1636ce5b2accSJean-François Moine 1637f12b44ffSJean-François Moine static int swap_bits(int v) 1638ce5b2accSJean-François Moine { 1639ce5b2accSJean-François Moine int r, i; 1640ce5b2accSJean-François Moine 1641ce5b2accSJean-François Moine r = 0; 1642f12b44ffSJean-François Moine for (i = 0; i < 8; i++) { 1643ce5b2accSJean-François Moine r <<= 1; 1644ce5b2accSJean-François Moine if (v & 1) 1645ce5b2accSJean-François Moine r++; 1646ce5b2accSJean-François Moine v >>= 1; 1647ce5b2accSJean-François Moine } 1648ce5b2accSJean-François Moine return r; 1649ce5b2accSJean-François Moine } 1650ce5b2accSJean-François Moine 1651a17dd1ebSHans Verkuil static void setgain(struct gspca_dev *gspca_dev, u8 val) 1652ce5b2accSJean-François Moine { 1653ce5b2accSJean-François Moine struct sd *sd = (struct sd *) gspca_dev; 1654a17dd1ebSHans Verkuil u8 v[2]; 1655ce5b2accSJean-François Moine 1656ce5b2accSJean-François Moine switch (sd->webcam) { 1657ce5b2accSJean-François Moine case P35u: 1658ce5b2accSJean-François Moine reg_w(gspca_dev, 0x1026, &val, 1); 1659ce5b2accSJean-François Moine break; 1660ce5b2accSJean-François Moine case Kr651us: 1661f12b44ffSJean-François Moine /* 0 - 253 */ 1662f12b44ffSJean-François Moine val = swap_bits(val); 1663ce5b2accSJean-François Moine v[0] = val << 3; 1664ce5b2accSJean-François Moine v[1] = val >> 5; 1665ce5b2accSJean-François Moine reg_w(gspca_dev, 0x101d, v, 2); /* SIF reg0/1 (AGC) */ 1666ce5b2accSJean-François Moine break; 1667ce5b2accSJean-François Moine } 1668ce5b2accSJean-François Moine } 1669ce5b2accSJean-François Moine 1670a17dd1ebSHans Verkuil static void setexposure(struct gspca_dev *gspca_dev, s32 val) 1671ce5b2accSJean-François Moine { 1672ce5b2accSJean-François Moine struct sd *sd = (struct sd *) gspca_dev; 1673ce5b2accSJean-François Moine u8 v[2]; 1674ce5b2accSJean-François Moine 1675ce5b2accSJean-François Moine switch (sd->webcam) { 1676ce5b2accSJean-François Moine case P35u: 1677f12b44ffSJean-François Moine v[0] = ((9 - val) << 3) | 0x01; 1678ce5b2accSJean-François Moine reg_w(gspca_dev, 0x1019, v, 1); 1679ce5b2accSJean-François Moine break; 16808e3c08bbSJean-François Moine case Cvideopro: 16818e3c08bbSJean-François Moine case DvcV6: 16828e3c08bbSJean-François Moine case Kritter: 1683ce5b2accSJean-François Moine case Kr651us: 1684f12b44ffSJean-François Moine v[0] = val; 1685f12b44ffSJean-François Moine v[1] = val >> 8; 1686ce5b2accSJean-François Moine reg_w(gspca_dev, 0x101b, v, 2); 1687ce5b2accSJean-François Moine break; 1688ce5b2accSJean-François Moine } 1689ce5b2accSJean-François Moine } 1690ce5b2accSJean-François Moine 1691a17dd1ebSHans Verkuil static void setautogain(struct gspca_dev *gspca_dev, s32 val) 1692ce5b2accSJean-François Moine { 1693ce5b2accSJean-François Moine struct sd *sd = (struct sd *) gspca_dev; 1694ce5b2accSJean-François Moine int w, h; 1695ce5b2accSJean-François Moine 1696a17dd1ebSHans Verkuil if (!val) { 1697ce5b2accSJean-François Moine sd->ag_cnt = -1; 1698ce5b2accSJean-François Moine return; 1699ce5b2accSJean-François Moine } 1700ce5b2accSJean-François Moine sd->ag_cnt = AG_CNT_START; 1701ce5b2accSJean-François Moine 1702ce5b2accSJean-François Moine reg_r(gspca_dev, 0x1004, 1); 1703ce5b2accSJean-François Moine if (gspca_dev->usb_buf[0] & 0x04) { /* if AE_FULL_FRM */ 17041966bc2aSOndrej Zary sd->ae_res = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; 1705ce5b2accSJean-François Moine } else { /* get the AE window size */ 1706ce5b2accSJean-François Moine reg_r(gspca_dev, 0x1011, 8); 1707ce5b2accSJean-François Moine w = (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0] 1708ce5b2accSJean-François Moine - (gspca_dev->usb_buf[3] << 8) - gspca_dev->usb_buf[2]; 1709ce5b2accSJean-François Moine h = (gspca_dev->usb_buf[5] << 8) + gspca_dev->usb_buf[4] 1710ce5b2accSJean-François Moine - (gspca_dev->usb_buf[7] << 8) - gspca_dev->usb_buf[6]; 1711ce5b2accSJean-François Moine sd->ae_res = h * w; 1712ce5b2accSJean-François Moine if (sd->ae_res == 0) 17131966bc2aSOndrej Zary sd->ae_res = gspca_dev->pixfmt.width * 17141966bc2aSOndrej Zary gspca_dev->pixfmt.height; 1715ce5b2accSJean-François Moine } 1716ce5b2accSJean-François Moine } 1717ce5b2accSJean-François Moine 1718ce5b2accSJean-François Moine static int nw802_test_reg(struct gspca_dev *gspca_dev, 1719ce5b2accSJean-François Moine u16 index, 1720ce5b2accSJean-François Moine u8 value) 1721ce5b2accSJean-François Moine { 1722ce5b2accSJean-François Moine /* write the value */ 1723ce5b2accSJean-François Moine reg_w(gspca_dev, index, &value, 1); 1724ce5b2accSJean-François Moine 1725ce5b2accSJean-François Moine /* read it */ 1726ce5b2accSJean-François Moine reg_r(gspca_dev, index, 1); 1727ce5b2accSJean-François Moine 1728ce5b2accSJean-François Moine return gspca_dev->usb_buf[0] == value; 1729ce5b2accSJean-François Moine } 1730ce5b2accSJean-François Moine 1731bad03ff5SJean-François Moine /* this function is called at probe time */ 1732bad03ff5SJean-François Moine static int sd_config(struct gspca_dev *gspca_dev, 1733bad03ff5SJean-François Moine const struct usb_device_id *id) 1734ce5b2accSJean-François Moine { 1735ce5b2accSJean-François Moine struct sd *sd = (struct sd *) gspca_dev; 1736ce5b2accSJean-François Moine 1737bad03ff5SJean-François Moine if ((unsigned) webcam >= NWEBCAMS) 1738bad03ff5SJean-François Moine webcam = 0; 1739bad03ff5SJean-François Moine sd->webcam = webcam; 1740eb3fb7c9SHans de Goede gspca_dev->cam.needs_full_bandwidth = 1; 1741bad03ff5SJean-François Moine sd->ag_cnt = -1; 1742bad03ff5SJean-François Moine 1743ce5b2accSJean-François Moine /* 1744ce5b2accSJean-François Moine * Autodetect sequence inspired from some log. 1745ce5b2accSJean-François Moine * We try to detect what registers exist or not. 1746ce5b2accSJean-François Moine * If 0x0500 does not exist => NW802 1747ce5b2accSJean-François Moine * If it does, test 0x109b. If it doesn't exist, 1748ce5b2accSJean-François Moine * then it's a NW801. Else, a NW800 1749088fc390SJean-François Moine * If a et31x110 (nw800 and 06a5:d800) 1750088fc390SJean-François Moine * get the sensor ID 1751ce5b2accSJean-François Moine */ 1752ce5b2accSJean-François Moine if (!nw802_test_reg(gspca_dev, 0x0500, 0x55)) { 1753ce5b2accSJean-François Moine sd->bridge = BRIDGE_NW802; 1754ce5b2accSJean-François Moine if (sd->webcam == Generic800) 1755ce5b2accSJean-François Moine sd->webcam = Generic802; 1756ce5b2accSJean-François Moine } else if (!nw802_test_reg(gspca_dev, 0x109b, 0xaa)) { 1757ce5b2accSJean-François Moine sd->bridge = BRIDGE_NW801; 1758ce5b2accSJean-François Moine if (sd->webcam == Generic800) 1759ce5b2accSJean-François Moine sd->webcam = P35u; 1760088fc390SJean-François Moine } else if (id->idVendor == 0x06a5 && id->idProduct == 0xd800) { 1761088fc390SJean-François Moine reg_r(gspca_dev, 0x0403, 1); /* GPIO */ 176237d5efb0SJoe Perches gspca_dbg(gspca_dev, D_PROBE, "et31x110 sensor type %02x\n", 1763088fc390SJean-François Moine gspca_dev->usb_buf[0]); 1764088fc390SJean-François Moine switch (gspca_dev->usb_buf[0] >> 1) { 1765088fc390SJean-François Moine case 0x00: /* ?? */ 1766088fc390SJean-François Moine if (sd->webcam == Generic800) 1767088fc390SJean-François Moine sd->webcam = SpaceCam; 1768088fc390SJean-François Moine break; 1769088fc390SJean-François Moine case 0x01: /* Hynix? */ 1770088fc390SJean-François Moine if (sd->webcam == Generic800) 1771088fc390SJean-François Moine sd->webcam = Twinkle; 1772088fc390SJean-François Moine break; 1773088fc390SJean-François Moine case 0x0a: /* Pixart */ 1774088fc390SJean-François Moine if (sd->webcam == Generic800) 1775088fc390SJean-François Moine sd->webcam = SpaceCam2; 1776088fc390SJean-François Moine break; 1777088fc390SJean-François Moine } 1778ce5b2accSJean-François Moine } 1779ee32ffbfSJean-François Moine if (webcam_chip[sd->webcam] != sd->bridge) { 1780133a9fe9SJoe Perches pr_err("Bad webcam type %d for NW80%d\n", 1781133a9fe9SJoe Perches sd->webcam, sd->bridge); 1782ee32ffbfSJean-François Moine gspca_dev->usb_err = -ENODEV; 1783ee32ffbfSJean-François Moine return gspca_dev->usb_err; 1784ee32ffbfSJean-François Moine } 178537d5efb0SJoe Perches gspca_dbg(gspca_dev, D_PROBE, "Bridge nw80%d - type: %d\n", 178637d5efb0SJoe Perches sd->bridge, sd->webcam); 1787ce5b2accSJean-François Moine 1788ce5b2accSJean-François Moine if (sd->bridge == BRIDGE_NW800) { 178915250714SJean-François Moine switch (sd->webcam) { 179015250714SJean-François Moine case DS3303u: 179115250714SJean-François Moine gspca_dev->cam.cam_mode = cif_mode; /* qvga */ 179215250714SJean-François Moine break; 179315250714SJean-François Moine default: 179415250714SJean-François Moine gspca_dev->cam.cam_mode = &cif_mode[1]; /* cif */ 179515250714SJean-François Moine break; 179615250714SJean-François Moine } 179715250714SJean-François Moine gspca_dev->cam.nmodes = 1; 1798ce5b2accSJean-François Moine } else { 1799ce5b2accSJean-François Moine gspca_dev->cam.cam_mode = vga_mode; 1800ce5b2accSJean-François Moine switch (sd->webcam) { 1801ce5b2accSJean-François Moine case Kr651us: 1802ce5b2accSJean-François Moine case Proscope: 1803ce5b2accSJean-François Moine case P35u: 1804ce5b2accSJean-François Moine gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); 1805ce5b2accSJean-François Moine break; 1806ce5b2accSJean-François Moine default: 1807ce5b2accSJean-François Moine gspca_dev->cam.nmodes = 1; /* qvga only */ 1808ce5b2accSJean-François Moine break; 1809ce5b2accSJean-François Moine } 1810ce5b2accSJean-François Moine } 1811f12b44ffSJean-François Moine 1812bad03ff5SJean-François Moine return gspca_dev->usb_err; 1813bad03ff5SJean-François Moine } 1814ce5b2accSJean-François Moine 1815bad03ff5SJean-François Moine /* this function is called at probe and resume time */ 1816bad03ff5SJean-François Moine static int sd_init(struct gspca_dev *gspca_dev) 1817bad03ff5SJean-François Moine { 1818bad03ff5SJean-François Moine struct sd *sd = (struct sd *) gspca_dev; 1819bad03ff5SJean-François Moine 1820bad03ff5SJean-François Moine switch (sd->bridge) { 1821bad03ff5SJean-François Moine case BRIDGE_NW800: 1822bad03ff5SJean-François Moine switch (sd->webcam) { 1823bad03ff5SJean-François Moine case SpaceCam: 1824bad03ff5SJean-François Moine reg_w_buf(gspca_dev, spacecam_init); 1825bad03ff5SJean-François Moine break; 1826bad03ff5SJean-François Moine default: 1827bad03ff5SJean-François Moine reg_w_buf(gspca_dev, nw800_init); 1828bad03ff5SJean-François Moine break; 1829bad03ff5SJean-François Moine } 1830bad03ff5SJean-François Moine break; 1831bad03ff5SJean-François Moine default: 1832bad03ff5SJean-François Moine switch (sd->webcam) { 1833bad03ff5SJean-François Moine case Mustek300: 1834bad03ff5SJean-François Moine case P35u: 1835bad03ff5SJean-François Moine case Proscope: 1836bad03ff5SJean-François Moine reg_w_buf(gspca_dev, proscope_init); 1837bad03ff5SJean-François Moine break; 1838bad03ff5SJean-François Moine } 1839bad03ff5SJean-François Moine break; 1840bad03ff5SJean-François Moine } 1841ce5b2accSJean-François Moine return gspca_dev->usb_err; 1842ce5b2accSJean-François Moine } 1843ce5b2accSJean-François Moine 1844ce5b2accSJean-François Moine /* -- start the camera -- */ 1845ce5b2accSJean-François Moine static int sd_start(struct gspca_dev *gspca_dev) 1846ce5b2accSJean-François Moine { 1847ce5b2accSJean-François Moine struct sd *sd = (struct sd *) gspca_dev; 1848ce5b2accSJean-François Moine const u8 *cmd; 1849ce5b2accSJean-François Moine 1850c3ee142bSJean-François Moine cmd = webcam_start[sd->webcam]; 1851ce5b2accSJean-François Moine reg_w_buf(gspca_dev, cmd); 1852ce5b2accSJean-François Moine switch (sd->webcam) { 1853ce5b2accSJean-François Moine case P35u: 18541966bc2aSOndrej Zary if (gspca_dev->pixfmt.width == 320) 1855c3ee142bSJean-François Moine reg_w_buf(gspca_dev, nw801_start_qvga); 1856ce5b2accSJean-François Moine else 1857c3ee142bSJean-François Moine reg_w_buf(gspca_dev, nw801_start_vga); 1858c3ee142bSJean-François Moine reg_w_buf(gspca_dev, nw801_start_2); 1859ce5b2accSJean-François Moine break; 1860ce5b2accSJean-François Moine case Kr651us: 18611966bc2aSOndrej Zary if (gspca_dev->pixfmt.width == 320) 1862c3ee142bSJean-François Moine reg_w_buf(gspca_dev, kr651_start_qvga); 1863ce5b2accSJean-François Moine else 1864c3ee142bSJean-François Moine reg_w_buf(gspca_dev, kr651_start_vga); 1865c3ee142bSJean-François Moine reg_w_buf(gspca_dev, kr651_start_2); 1866ce5b2accSJean-François Moine break; 1867ce5b2accSJean-François Moine case Proscope: 18681966bc2aSOndrej Zary if (gspca_dev->pixfmt.width == 320) 1869c3ee142bSJean-François Moine reg_w_buf(gspca_dev, proscope_start_qvga); 1870ce5b2accSJean-François Moine else 1871c3ee142bSJean-François Moine reg_w_buf(gspca_dev, proscope_start_vga); 1872c3ee142bSJean-François Moine reg_w_buf(gspca_dev, proscope_start_2); 1873ce5b2accSJean-François Moine break; 1874ce5b2accSJean-François Moine } 1875ce5b2accSJean-François Moine 1876f12b44ffSJean-François Moine sd->exp_too_high_cnt = 0; 1877f12b44ffSJean-François Moine sd->exp_too_low_cnt = 0; 1878ce5b2accSJean-François Moine return gspca_dev->usb_err; 1879ce5b2accSJean-François Moine } 1880ce5b2accSJean-François Moine 1881ce5b2accSJean-François Moine static void sd_stopN(struct gspca_dev *gspca_dev) 1882ce5b2accSJean-François Moine { 1883ce5b2accSJean-François Moine struct sd *sd = (struct sd *) gspca_dev; 1884ce5b2accSJean-François Moine u8 value; 1885ce5b2accSJean-François Moine 1886ce5b2accSJean-François Moine /* 'go' off */ 1887ce5b2accSJean-François Moine if (sd->bridge != BRIDGE_NW801) { 1888ce5b2accSJean-François Moine value = 0x02; 1889ce5b2accSJean-François Moine reg_w(gspca_dev, 0x0406, &value, 1); 1890ce5b2accSJean-François Moine } 1891ce5b2accSJean-François Moine 1892ce5b2accSJean-François Moine /* LED off */ 1893ce5b2accSJean-François Moine switch (sd->webcam) { 1894ce5b2accSJean-François Moine case Cvideopro: 1895ce5b2accSJean-François Moine case Kr651us: 1896ce5b2accSJean-François Moine case DvcV6: 1897ce5b2accSJean-François Moine case Kritter: 1898ce5b2accSJean-François Moine value = 0xff; 1899ce5b2accSJean-François Moine break; 1900ce5b2accSJean-François Moine case Dlink350c: 1901ce5b2accSJean-François Moine value = 0x21; 1902ce5b2accSJean-François Moine break; 1903ce5b2accSJean-François Moine case SpaceCam: 1904ce5b2accSJean-François Moine case SpaceCam2: 1905ce5b2accSJean-François Moine case Proscope: 1906ce5b2accSJean-François Moine case Twinkle: 1907ce5b2accSJean-François Moine value = 0x01; 1908ce5b2accSJean-François Moine break; 1909ce5b2accSJean-François Moine default: 1910ce5b2accSJean-François Moine return; 1911ce5b2accSJean-François Moine } 1912ce5b2accSJean-François Moine reg_w(gspca_dev, 0x0404, &value, 1); 1913ce5b2accSJean-François Moine } 1914ce5b2accSJean-François Moine 1915ce5b2accSJean-François Moine static void sd_pkt_scan(struct gspca_dev *gspca_dev, 1916ce5b2accSJean-François Moine u8 *data, /* isoc packet */ 1917ce5b2accSJean-François Moine int len) /* iso packet length */ 1918ce5b2accSJean-François Moine { 1919ce5b2accSJean-François Moine /* 1920ce5b2accSJean-François Moine * frame header = '00 00 hh ww ss xx ff ff' 1921ce5b2accSJean-François Moine * with: 1922ce5b2accSJean-François Moine * - 'hh': height / 4 1923ce5b2accSJean-François Moine * - 'ww': width / 4 1924ce5b2accSJean-François Moine * - 'ss': frame sequence number c0..dd 1925ce5b2accSJean-François Moine */ 1926ce5b2accSJean-François Moine if (data[0] == 0x00 && data[1] == 0x00 1927ce5b2accSJean-François Moine && data[6] == 0xff && data[7] == 0xff) { 1928ce5b2accSJean-François Moine gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); 1929ce5b2accSJean-François Moine gspca_frame_add(gspca_dev, FIRST_PACKET, data + 8, len - 8); 1930ce5b2accSJean-François Moine } else { 1931ce5b2accSJean-François Moine gspca_frame_add(gspca_dev, INTER_PACKET, data, len); 1932ce5b2accSJean-François Moine } 1933ce5b2accSJean-François Moine } 1934ce5b2accSJean-François Moine 1935ce5b2accSJean-François Moine static void do_autogain(struct gspca_dev *gspca_dev) 1936ce5b2accSJean-François Moine { 1937ce5b2accSJean-François Moine struct sd *sd = (struct sd *) gspca_dev; 1938ce5b2accSJean-François Moine int luma; 1939ce5b2accSJean-François Moine 1940ce5b2accSJean-François Moine if (sd->ag_cnt < 0) 1941ce5b2accSJean-François Moine return; 1942ce5b2accSJean-François Moine if (--sd->ag_cnt >= 0) 1943ce5b2accSJean-François Moine return; 1944ce5b2accSJean-François Moine sd->ag_cnt = AG_CNT_START; 1945ce5b2accSJean-François Moine 1946ce5b2accSJean-François Moine /* get the average luma */ 1947ce5b2accSJean-François Moine reg_r(gspca_dev, sd->bridge == BRIDGE_NW801 ? 0x080d : 0x080c, 4); 1948ce5b2accSJean-François Moine luma = (gspca_dev->usb_buf[3] << 24) + (gspca_dev->usb_buf[2] << 16) 1949ce5b2accSJean-François Moine + (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0]; 1950ce5b2accSJean-François Moine luma /= sd->ae_res; 1951ce5b2accSJean-François Moine 1952f12b44ffSJean-François Moine switch (sd->webcam) { 1953f12b44ffSJean-François Moine case P35u: 1954a17dd1ebSHans Verkuil gspca_coarse_grained_expo_autogain(gspca_dev, luma, 100, 5); 1955f12b44ffSJean-François Moine break; 1956f12b44ffSJean-François Moine default: 1957a17dd1ebSHans Verkuil gspca_expo_autogain(gspca_dev, luma, 100, 5, 230, 0); 1958f12b44ffSJean-François Moine break; 1959ce5b2accSJean-François Moine } 1960ce5b2accSJean-François Moine } 1961ce5b2accSJean-François Moine 1962a17dd1ebSHans Verkuil 1963a17dd1ebSHans Verkuil static int sd_s_ctrl(struct v4l2_ctrl *ctrl) 1964ce5b2accSJean-François Moine { 1965a17dd1ebSHans Verkuil struct gspca_dev *gspca_dev = 1966a17dd1ebSHans Verkuil container_of(ctrl->handler, struct gspca_dev, ctrl_handler); 1967a17dd1ebSHans Verkuil 1968a17dd1ebSHans Verkuil gspca_dev->usb_err = 0; 1969a17dd1ebSHans Verkuil 1970a17dd1ebSHans Verkuil if (!gspca_dev->streaming) 1971a17dd1ebSHans Verkuil return 0; 1972a17dd1ebSHans Verkuil 1973a17dd1ebSHans Verkuil switch (ctrl->id) { 1974a17dd1ebSHans Verkuil /* autogain/gain/exposure control cluster */ 1975a17dd1ebSHans Verkuil case V4L2_CID_AUTOGAIN: 1976a17dd1ebSHans Verkuil if (ctrl->is_new) 1977a17dd1ebSHans Verkuil setautogain(gspca_dev, ctrl->val); 1978a17dd1ebSHans Verkuil if (!ctrl->val) { 1979a17dd1ebSHans Verkuil if (gspca_dev->gain->is_new) 1980a17dd1ebSHans Verkuil setgain(gspca_dev, gspca_dev->gain->val); 1981a17dd1ebSHans Verkuil if (gspca_dev->exposure->is_new) 1982a17dd1ebSHans Verkuil setexposure(gspca_dev, 1983a17dd1ebSHans Verkuil gspca_dev->exposure->val); 1984a17dd1ebSHans Verkuil } 1985a17dd1ebSHans Verkuil break; 1986a17dd1ebSHans Verkuil /* Some webcams only have exposure, so handle that separately from the 1987a17dd1ebSHans Verkuil autogain/gain/exposure cluster in the previous case. */ 1988a17dd1ebSHans Verkuil case V4L2_CID_EXPOSURE: 1989a17dd1ebSHans Verkuil setexposure(gspca_dev, gspca_dev->exposure->val); 1990a17dd1ebSHans Verkuil break; 1991a17dd1ebSHans Verkuil } 1992a17dd1ebSHans Verkuil return gspca_dev->usb_err; 1993a17dd1ebSHans Verkuil } 1994a17dd1ebSHans Verkuil 1995a17dd1ebSHans Verkuil static const struct v4l2_ctrl_ops sd_ctrl_ops = { 1996a17dd1ebSHans Verkuil .s_ctrl = sd_s_ctrl, 1997ce5b2accSJean-François Moine }; 1998ce5b2accSJean-François Moine 1999a17dd1ebSHans Verkuil static int sd_init_controls(struct gspca_dev *gspca_dev) 2000a17dd1ebSHans Verkuil { 2001a17dd1ebSHans Verkuil struct sd *sd = (struct sd *)gspca_dev; 2002a17dd1ebSHans Verkuil struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; 2003a17dd1ebSHans Verkuil 2004a17dd1ebSHans Verkuil gspca_dev->vdev.ctrl_handler = hdl; 2005a17dd1ebSHans Verkuil v4l2_ctrl_handler_init(hdl, 3); 2006a17dd1ebSHans Verkuil switch (sd->webcam) { 2007a17dd1ebSHans Verkuil case P35u: 2008a17dd1ebSHans Verkuil gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 2009a17dd1ebSHans Verkuil V4L2_CID_AUTOGAIN, 0, 1, 1, 1); 2010a17dd1ebSHans Verkuil /* For P35u choose coarse expo auto gain function gain minimum, 2011a17dd1ebSHans Verkuil * to avoid a large settings jump the first auto adjustment */ 2012a17dd1ebSHans Verkuil gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 2013a17dd1ebSHans Verkuil V4L2_CID_GAIN, 0, 127, 1, 127 / 5 * 2); 2014a17dd1ebSHans Verkuil gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 2015a17dd1ebSHans Verkuil V4L2_CID_EXPOSURE, 0, 9, 1, 9); 2016a17dd1ebSHans Verkuil break; 2017a17dd1ebSHans Verkuil case Kr651us: 2018a17dd1ebSHans Verkuil gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 2019a17dd1ebSHans Verkuil V4L2_CID_AUTOGAIN, 0, 1, 1, 1); 2020a17dd1ebSHans Verkuil gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 2021a17dd1ebSHans Verkuil V4L2_CID_GAIN, 0, 253, 1, 128); 2022*1771e9fbSGustavo A. R. Silva fallthrough; 2023a17dd1ebSHans Verkuil case Cvideopro: 2024a17dd1ebSHans Verkuil case DvcV6: 2025a17dd1ebSHans Verkuil case Kritter: 2026a17dd1ebSHans Verkuil gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 2027a17dd1ebSHans Verkuil V4L2_CID_EXPOSURE, 0, 315, 1, 150); 2028a17dd1ebSHans Verkuil break; 2029a17dd1ebSHans Verkuil default: 2030a17dd1ebSHans Verkuil break; 2031a17dd1ebSHans Verkuil } 2032a17dd1ebSHans Verkuil 2033a17dd1ebSHans Verkuil if (hdl->error) { 2034a17dd1ebSHans Verkuil pr_err("Could not initialize controls\n"); 2035a17dd1ebSHans Verkuil return hdl->error; 2036a17dd1ebSHans Verkuil } 2037a17dd1ebSHans Verkuil if (gspca_dev->autogain) 2038a17dd1ebSHans Verkuil v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); 2039a17dd1ebSHans Verkuil return 0; 2040a17dd1ebSHans Verkuil } 2041a17dd1ebSHans Verkuil 2042ce5b2accSJean-François Moine /* sub-driver description */ 2043ce5b2accSJean-François Moine static const struct sd_desc sd_desc = { 2044ce5b2accSJean-François Moine .name = MODULE_NAME, 2045ce5b2accSJean-François Moine .config = sd_config, 2046ce5b2accSJean-François Moine .init = sd_init, 2047a17dd1ebSHans Verkuil .init_controls = sd_init_controls, 2048ce5b2accSJean-François Moine .start = sd_start, 2049ce5b2accSJean-François Moine .stopN = sd_stopN, 2050ce5b2accSJean-François Moine .pkt_scan = sd_pkt_scan, 2051ce5b2accSJean-François Moine .dq_callback = do_autogain, 2052ce5b2accSJean-François Moine }; 2053ce5b2accSJean-François Moine 2054ce5b2accSJean-François Moine /* -- module initialisation -- */ 2055ce5b2accSJean-François Moine static const struct usb_device_id device_table[] = { 2056ce5b2accSJean-François Moine {USB_DEVICE(0x046d, 0xd001)}, 2057ce5b2accSJean-François Moine {USB_DEVICE(0x0502, 0xd001)}, 2058ce5b2accSJean-François Moine {USB_DEVICE(0x052b, 0xd001)}, 2059ce5b2accSJean-François Moine {USB_DEVICE(0x055f, 0xd001)}, 2060ce5b2accSJean-François Moine {USB_DEVICE(0x06a5, 0x0000)}, 2061ce5b2accSJean-François Moine {USB_DEVICE(0x06a5, 0xd001)}, 2062ce5b2accSJean-François Moine {USB_DEVICE(0x06a5, 0xd800)}, 2063ce5b2accSJean-François Moine {USB_DEVICE(0x06be, 0xd001)}, 2064ce5b2accSJean-François Moine {USB_DEVICE(0x0728, 0xd001)}, 2065ce5b2accSJean-François Moine {} 2066ce5b2accSJean-François Moine }; 2067ce5b2accSJean-François Moine MODULE_DEVICE_TABLE(usb, device_table); 2068ce5b2accSJean-François Moine 2069ce5b2accSJean-François Moine /* -- device connect -- */ 2070ce5b2accSJean-François Moine static int sd_probe(struct usb_interface *intf, 2071ce5b2accSJean-François Moine const struct usb_device_id *id) 2072ce5b2accSJean-François Moine { 2073ce5b2accSJean-François Moine return gspca_dev_probe(intf, id, &sd_desc, sizeof(struct sd), 2074ce5b2accSJean-François Moine THIS_MODULE); 2075ce5b2accSJean-François Moine } 2076ce5b2accSJean-François Moine 2077ce5b2accSJean-François Moine static struct usb_driver sd_driver = { 2078ce5b2accSJean-François Moine .name = MODULE_NAME, 2079ce5b2accSJean-François Moine .id_table = device_table, 2080ce5b2accSJean-François Moine .probe = sd_probe, 2081ce5b2accSJean-François Moine .disconnect = gspca_disconnect, 2082ce5b2accSJean-François Moine #ifdef CONFIG_PM 2083ce5b2accSJean-François Moine .suspend = gspca_suspend, 2084ce5b2accSJean-François Moine .resume = gspca_resume, 20858bb58964SHans de Goede .reset_resume = gspca_resume, 2086ce5b2accSJean-François Moine #endif 2087ce5b2accSJean-François Moine }; 2088ce5b2accSJean-François Moine 2089ecb3b2b3SGreg Kroah-Hartman module_usb_driver(sd_driver); 2090ce5b2accSJean-François Moine 2091ce5b2accSJean-François Moine module_param(webcam, int, 0644); 2092ce5b2accSJean-François Moine MODULE_PARM_DESC(webcam, 2093ce5b2accSJean-François Moine "Webcam type\n" 2094ce5b2accSJean-François Moine "0: generic\n" 2095ce5b2accSJean-François Moine "1: Trust 120 SpaceCam\n" 2096ce5b2accSJean-François Moine "2: other Trust 120 SpaceCam\n" 2097ce5b2accSJean-François Moine "3: Conceptronic Video Pro\n" 2098ce5b2accSJean-François Moine "4: D-link dru-350c\n" 2099ce5b2accSJean-François Moine "5: Plustek Opticam 500U\n" 2100ce5b2accSJean-François Moine "6: Panasonic GP-KR651US\n" 2101ce5b2accSJean-François Moine "7: iRez Kritter\n" 2102ce5b2accSJean-François Moine "8: Mustek Wcam 300 mini\n" 2103ce5b2accSJean-François Moine "9: Scalar USB Microscope M2 (Proscope)\n" 2104ce5b2accSJean-François Moine "10: Divio Chicony TwinkleCam\n" 210594751d4bSJean-François Moine "11: DVC-V6\n"); 2106