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