// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Z-star vc0321 library
*
* Copyright (C) 2009-2010 Jean-François Moine <http://moinejf.free.fr >
* Copyright (C) 2006 Koninski Artur takeshi87@o2.pl
* Copyright (C) 2006 Michel Xhaard
*/
#define pr_fmt(fmt) KBUILD_MODNAME
": " fmt
#define MODULE_NAME
"vc032x"
#include "gspca.h"
MODULE_AUTHOR(
"Jean-François Moine <http://moinejf.free.fr >");
MODULE_DESCRIPTION(
"GSPCA/VC032X USB Camera Driver" );
MODULE_LICENSE(
"GPL" );
/* specific webcam descriptor */
struct sd {
struct gspca_dev gspca_dev;
/* !! must be the first item */
struct {
/* hvflip cluster */
struct v4l2_ctrl *hflip;
struct v4l2_ctrl *vflip;
};
u8 image_offset;
u8 bridge;
u8 sensor;
u8 flags;
#define FL_SAMSUNG
0 x01
/* SamsungQ1 (2 sensors) */
#define FL_HFLIP
0 x02
/* mirrored by default */
#define FL_VFLIP
0 x04
/* vertical flipped by default */
};
enum bridges {
BRIDGE_VC0321,
BRIDGE_VC0323,
};
enum sensors {
SENSOR_HV7131R,
SENSOR_MI0360,
SENSOR_MI1310_SOC,
SENSOR_MI1320,
SENSOR_MI1320_SOC,
SENSOR_OV7660,
SENSOR_OV7670,
SENSOR_PO1200,
SENSOR_PO3130NC,
SENSOR_POxxxx,
NSENSORS
};
static const struct v4l2_pix_format vc0321_mode[] = {
{
320 ,
240 , V4L2_PIX_FMT_YVYU, V4L2_FIELD_NONE,
.bytesperline =
320 *
2 ,
.sizeimage =
320 *
240 *
2 ,
.colorspace = V4L2_COLORSPACE_SRGB,
.priv =
1 },
{
640 ,
480 , V4L2_PIX_FMT_YVYU, V4L2_FIELD_NONE,
.bytesperline =
640 *
2 ,
.sizeimage =
640 *
480 *
2 ,
.colorspace = V4L2_COLORSPACE_SRGB,
.priv =
0 },
};
static const struct v4l2_pix_format vc0323_mode[] = {
{
320 ,
240 , V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
.bytesperline =
320 ,
.sizeimage =
320 *
240 *
3 /
8 +
590 ,
.colorspace = V4L2_COLORSPACE_JPEG,
.priv =
1 },
{
640 ,
480 , V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
.bytesperline =
640 ,
.sizeimage =
640 *
480 *
3 /
8 +
590 ,
.colorspace = V4L2_COLORSPACE_JPEG,
.priv =
0 },
{
1280 ,
960 , V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
/* mi1310_soc only */
.bytesperline =
1280 ,
.sizeimage =
1280 *
960 *
3 /
8 +
590 ,
.colorspace = V4L2_COLORSPACE_JPEG,
.priv =
2 },
};
static const struct v4l2_pix_format bi_mode[] = {
{
320 ,
240 , V4L2_PIX_FMT_YUYV, V4L2_FIELD_NONE,
.bytesperline =
320 *
2 ,
.sizeimage =
320 *
240 *
2 ,
.colorspace = V4L2_COLORSPACE_SRGB,
.priv =
2 },
{
640 ,
480 , V4L2_PIX_FMT_YUYV, V4L2_FIELD_NONE,
.bytesperline =
640 *
2 ,
.sizeimage =
640 *
480 *
2 ,
.colorspace = V4L2_COLORSPACE_SRGB,
.priv =
1 },
{
1280 ,
1024 , V4L2_PIX_FMT_YUYV, V4L2_FIELD_NONE,
.bytesperline =
1280 *
2 ,
.sizeimage =
1280 *
1024 *
2 ,
.colorspace = V4L2_COLORSPACE_SRGB,
.priv =
0 },
};
static const struct v4l2_pix_format svga_mode[] = {
{
800 ,
600 , V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
.bytesperline =
800 ,
.sizeimage =
800 *
600 *
1 /
4 +
590 ,
.colorspace = V4L2_COLORSPACE_JPEG,
.priv =
0 },
};
/* OV7660/7670 registers */
#define OV7660_REG_MVFP
0 x1e
#define OV7660_MVFP_MIRROR
0 x20
#define OV7660_MVFP_VFLIP
0 x10
static const u8 mi0360_matrix[
9 ] = {
0 x50,
0 xf8,
0 xf8,
0 xf5,
0 x50,
0 xfb,
0 xff,
0 xf1,
0 x50
};
static const u8 mi0360_initVGA_JPG[][
4 ] = {
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 xb3,
0 x00,
0 x24,
0 xcc},
{
0 xb3,
0 x00,
0 x25,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x03,
0 xcc},
{
0 xb3,
0 x03,
0 x0a,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x01,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc},
{
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x35,
0 xdd,
0 xcc},
/* i2c add: 5d */
{
0 xb3,
0 x34,
0 x02,
0 xcc},
{
0 xb3,
0 x00,
0 x25,
0 xcc},
{
0 xbc,
0 x00,
0 x71,
0 xcc},
{
0 xb8,
0 x00,
0 x13,
0 xcc},
{
0 xb8,
0 x27,
0 x20,
0 xcc},
{
0 xb8,
0 x2c,
0 x50,
0 xcc},
{
0 xb8,
0 x2d,
0 xf8,
0 xcc},
{
0 xb8,
0 x2e,
0 xf8,
0 xcc},
{
0 xb8,
0 x2f,
0 xf8,
0 xcc},
{
0 xb8,
0 x30,
0 x50,
0 xcc},
{
0 xb8,
0 x31,
0 xf8,
0 xcc},
{
0 xb8,
0 x32,
0 xf8,
0 xcc},
{
0 xb8,
0 x33,
0 xf8,
0 xcc},
{
0 xb8,
0 x34,
0 x50,
0 xcc},
{
0 xb8,
0 x35,
0 x00,
0 xcc},
{
0 xb8,
0 x36,
0 x00,
0 xcc},
{
0 xb8,
0 x37,
0 x00,
0 xcc},
{
0 xb8,
0 x01,
0 x79,
0 xcc},
{
0 xb8,
0 x08,
0 xe0,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 xb8,
0 x01,
0 x79,
0 xcc},
{
0 xb8,
0 x14,
0 x18,
0 xcc},
{
0 xb8,
0 xb2,
0 x0a,
0 xcc},
{
0 xb8,
0 xb4,
0 x0a,
0 xcc},
{
0 xb8,
0 xb5,
0 x0a,
0 xcc},
{
0 xb8,
0 xfe,
0 x00,
0 xcc},
{
0 xb8,
0 xff,
0 x28,
0 xcc},
{
0 xb9,
0 x00,
0 x28,
0 xcc},
{
0 xb9,
0 x01,
0 x28,
0 xcc},
{
0 xb9,
0 x02,
0 x28,
0 xcc},
{
0 xb9,
0 x03,
0 x00,
0 xcc},
{
0 xb9,
0 x04,
0 x00,
0 xcc},
{
0 xb9,
0 x05,
0 x3c,
0 xcc},
{
0 xb9,
0 x06,
0 x3c,
0 xcc},
{
0 xb9,
0 x07,
0 x3c,
0 xcc},
{
0 xb9,
0 x08,
0 x3c,
0 xcc},
{
0 xb8,
0 x8e,
0 x00,
0 xcc},
{
0 xb8,
0 x8f,
0 xff,
0 xcc},
{
0 xb8,
0 x81,
0 x09,
0 xcc},
{
0 x31,
0 x00,
0 x00,
0 xbb},
{
0 x09,
0 x01,
0 xc7,
0 xbb},
{
0 x34,
0 x01,
0 x00,
0 xbb},
{
0 x2b,
0 x00,
0 x28,
0 xbb},
{
0 x2c,
0 x00,
0 x30,
0 xbb},
{
0 x2d,
0 x00,
0 x30,
0 xbb},
{
0 x2e,
0 x00,
0 x28,
0 xbb},
{
0 x62,
0 x04,
0 x11,
0 xbb},
{
0 x03,
0 x01,
0 xe0,
0 xbb},
{
0 x2c,
0 x00,
0 x2c,
0 xbb},
{
0 x20,
0 xd0,
0 x00,
0 xbb},
{
0 x01,
0 x00,
0 x08,
0 xbb},
{
0 x06,
0 x00,
0 x10,
0 xbb},
{
0 x05,
0 x00,
0 x20,
0 xbb},
{
0 x20,
0 x00,
0 x00,
0 xbb},
{
0 xb6,
0 x00,
0 x00,
0 xcc},
{
0 xb6,
0 x03,
0 x02,
0 xcc},
{
0 xb6,
0 x02,
0 x80,
0 xcc},
{
0 xb6,
0 x05,
0 x01,
0 xcc},
{
0 xb6,
0 x04,
0 xe0,
0 xcc},
{
0 xb6,
0 x12,
0 x78,
0 xcc},
{
0 xb6,
0 x18,
0 x02,
0 xcc},
{
0 xb6,
0 x17,
0 x58,
0 xcc},
{
0 xb6,
0 x16,
0 x00,
0 xcc},
{
0 xb6,
0 x22,
0 x12,
0 xcc},
{
0 xb6,
0 x23,
0 x0b,
0 xcc},
{
0 xb3,
0 x02,
0 x02,
0 xcc},
{
0 xbf,
0 xc0,
0 x39,
0 xcc},
{
0 xbf,
0 xc1,
0 x04,
0 xcc},
{
0 xbf,
0 xcc,
0 x10,
0 xcc},
{
0 xb9,
0 x12,
0 x00,
0 xcc},
{
0 xb9,
0 x13,
0 x0a,
0 xcc},
{
0 xb9,
0 x14,
0 x0a,
0 xcc},
{
0 xb9,
0 x15,
0 x0a,
0 xcc},
{
0 xb9,
0 x16,
0 x0a,
0 xcc},
{
0 xb9,
0 x18,
0 x00,
0 xcc},
{
0 xb9,
0 x19,
0 x0f,
0 xcc},
{
0 xb9,
0 x1a,
0 x0f,
0 xcc},
{
0 xb9,
0 x1b,
0 x0f,
0 xcc},
{
0 xb9,
0 x1c,
0 x0f,
0 xcc},
{
0 xb8,
0 x8e,
0 x00,
0 xcc},
{
0 xb8,
0 x8f,
0 xff,
0 xcc},
{
0 xb6,
0 x12,
0 xf8,
0 xcc},
{
0 xb8,
0 x0c,
0 x20,
0 xcc},
{
0 xb8,
0 x0d,
0 x70,
0 xcc},
{
0 xb6,
0 x13,
0 x13,
0 xcc},
{
0 x35,
0 x00,
0 x60,
0 xbb},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{}
};
static const u8 mi0360_initQVGA_JPG[][
4 ] = {
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 xb3,
0 x00,
0 x24,
0 xcc},
{
0 xb3,
0 x00,
0 x25,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x03,
0 xcc},
{
0 xb3,
0 x03,
0 x0a,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x01,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc},
{
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x35,
0 xdd,
0 xcc},
{
0 xb3,
0 x34,
0 x02,
0 xcc},
{
0 xb3,
0 x00,
0 x25,
0 xcc},
{
0 xbc,
0 x00,
0 xd1,
0 xcc},
{
0 xb8,
0 x00,
0 x13,
0 xcc},
{
0 xb8,
0 x27,
0 x20,
0 xcc},
{
0 xb8,
0 x2c,
0 x50,
0 xcc},
{
0 xb8,
0 x2d,
0 xf8,
0 xcc},
{
0 xb8,
0 x2e,
0 xf8,
0 xcc},
{
0 xb8,
0 x2f,
0 xf8,
0 xcc},
{
0 xb8,
0 x30,
0 x50,
0 xcc},
{
0 xb8,
0 x31,
0 xf8,
0 xcc},
{
0 xb8,
0 x32,
0 xf8,
0 xcc},
{
0 xb8,
0 x33,
0 xf8,
0 xcc},
{
0 xb8,
0 x34,
0 x50,
0 xcc},
{
0 xb8,
0 x35,
0 x00,
0 xcc},
{
0 xb8,
0 x36,
0 x00,
0 xcc},
{
0 xb8,
0 x37,
0 x00,
0 xcc},
{
0 xb8,
0 x01,
0 x79,
0 xcc},
{
0 xb8,
0 x08,
0 xe0,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 xb8,
0 x01,
0 x79,
0 xcc},
{
0 xb8,
0 x14,
0 x18,
0 xcc},
{
0 xb8,
0 xb2,
0 x0a,
0 xcc},
{
0 xb8,
0 xb4,
0 x0a,
0 xcc},
{
0 xb8,
0 xb5,
0 x0a,
0 xcc},
{
0 xb8,
0 xfe,
0 x00,
0 xcc},
{
0 xb8,
0 xff,
0 x28,
0 xcc},
{
0 xb9,
0 x00,
0 x28,
0 xcc},
{
0 xb9,
0 x01,
0 x28,
0 xcc},
{
0 xb9,
0 x02,
0 x28,
0 xcc},
{
0 xb9,
0 x03,
0 x00,
0 xcc},
{
0 xb9,
0 x04,
0 x00,
0 xcc},
{
0 xb9,
0 x05,
0 x3c,
0 xcc},
{
0 xb9,
0 x06,
0 x3c,
0 xcc},
{
0 xb9,
0 x07,
0 x3c,
0 xcc},
{
0 xb9,
0 x08,
0 x3c,
0 xcc},
{
0 xb8,
0 x8e,
0 x00,
0 xcc},
{
0 xb8,
0 x8f,
0 xff,
0 xcc},
{
0 xb8,
0 x81,
0 x09,
0 xcc},
{
0 x31,
0 x00,
0 x00,
0 xbb},
{
0 x09,
0 x01,
0 xc7,
0 xbb},
{
0 x34,
0 x01,
0 x00,
0 xbb},
{
0 x2b,
0 x00,
0 x28,
0 xbb},
{
0 x2c,
0 x00,
0 x30,
0 xbb},
{
0 x2d,
0 x00,
0 x30,
0 xbb},
{
0 x2e,
0 x00,
0 x28,
0 xbb},
{
0 x62,
0 x04,
0 x11,
0 xbb},
{
0 x03,
0 x01,
0 xe0,
0 xbb},
{
0 x2c,
0 x00,
0 x2c,
0 xbb},
{
0 x20,
0 xd0,
0 x00,
0 xbb},
{
0 x01,
0 x00,
0 x08,
0 xbb},
{
0 x06,
0 x00,
0 x10,
0 xbb},
{
0 x05,
0 x00,
0 x20,
0 xbb},
{
0 x20,
0 x00,
0 x00,
0 xbb},
{
0 xb6,
0 x00,
0 x00,
0 xcc},
{
0 xb6,
0 x03,
0 x01,
0 xcc},
{
0 xb6,
0 x02,
0 x40,
0 xcc},
{
0 xb6,
0 x05,
0 x00,
0 xcc},
{
0 xb6,
0 x04,
0 xf0,
0 xcc},
{
0 xb6,
0 x12,
0 x78,
0 xcc},
{
0 xb6,
0 x18,
0 x00,
0 xcc},
{
0 xb6,
0 x17,
0 x96,
0 xcc},
{
0 xb6,
0 x16,
0 x00,
0 xcc},
{
0 xb6,
0 x22,
0 x12,
0 xcc},
{
0 xb6,
0 x23,
0 x0b,
0 xcc},
{
0 xb3,
0 x02,
0 x02,
0 xcc},
{
0 xbf,
0 xc0,
0 x39,
0 xcc},
{
0 xbf,
0 xc1,
0 x04,
0 xcc},
{
0 xbf,
0 xcc,
0 x10,
0 xcc},
{
0 xb9,
0 x12,
0 x00,
0 xcc},
{
0 xb9,
0 x13,
0 x0a,
0 xcc},
{
0 xb9,
0 x14,
0 x0a,
0 xcc},
{
0 xb9,
0 x15,
0 x0a,
0 xcc},
{
0 xb9,
0 x16,
0 x0a,
0 xcc},
{
0 xb9,
0 x18,
0 x00,
0 xcc},
{
0 xb9,
0 x19,
0 x0f,
0 xcc},
{
0 xb9,
0 x1a,
0 x0f,
0 xcc},
{
0 xb9,
0 x1b,
0 x0f,
0 xcc},
{
0 xb9,
0 x1c,
0 x0f,
0 xcc},
{
0 xb8,
0 x8e,
0 x00,
0 xcc},
{
0 xb8,
0 x8f,
0 xff,
0 xcc},
{
0 xb6,
0 x12,
0 xf8,
0 xcc},
{
0 xb6,
0 x13,
0 x13,
0 xcc},
{
0 xbc,
0 x02,
0 x18,
0 xcc},
{
0 xbc,
0 x03,
0 x50,
0 xcc},
{
0 xbc,
0 x04,
0 x18,
0 xcc},
{
0 xbc,
0 x05,
0 x00,
0 xcc},
{
0 xbc,
0 x06,
0 x00,
0 xcc},
{
0 xbc,
0 x08,
0 x30,
0 xcc},
{
0 xbc,
0 x09,
0 x40,
0 xcc},
{
0 xbc,
0 x0a,
0 x10,
0 xcc},
{
0 xb8,
0 x0c,
0 x20,
0 xcc},
{
0 xb8,
0 x0d,
0 x70,
0 xcc},
{
0 xbc,
0 x0b,
0 x00,
0 xcc},
{
0 xbc,
0 x0c,
0 x00,
0 xcc},
{
0 x35,
0 x00,
0 xef,
0 xbb},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{}
};
static const u8 mi1310_socinitVGA_JPG[][
4 ] = {
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 xb3,
0 x00,
0 x64,
0 xcc},
{
0 xb3,
0 x00,
0 x65,
0 xcc},
{
0 xb3,
0 x05,
0 x00,
0 xcc},
{
0 xb3,
0 x06,
0 x00,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x34,
0 x02,
0 xcc},
{
0 xb3,
0 x35,
0 xdd,
0 xcc},
/* i2c add: 5d */
{
0 xb3,
0 x02,
0 x00,
0 xcc},
{
0 xb3,
0 x03,
0 x0a,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x03,
0 xcc},
{
0 xb3,
0 x23,
0 xc0,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x04,
0 xcc},
{
0 xb3,
0 x17,
0 xff,
0 xcc},
{
0 xb3,
0 x00,
0 x65,
0 xcc},
{
0 xb8,
0 x00,
0 x00,
0 xcc},
{
0 xbc,
0 x00,
0 xd0,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 xc8,
0 x9f,
0 x0b,
0 xbb},
{
0 x5b,
0 x00,
0 x01,
0 xbb},
{
0 x2f,
0 xde,
0 x20,
0 xbb},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x20,
0 x03,
0 x02,
0 xbb},
/* h/v flip */
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x05,
0 x00,
0 x07,
0 xbb},
{
0 x34,
0 x00,
0 x00,
0 xbb},
{
0 x35,
0 xff,
0 x00,
0 xbb},
{
0 xdc,
0 x07,
0 x02,
0 xbb},
{
0 xdd,
0 x3c,
0 x18,
0 xbb},
{
0 xde,
0 x92,
0 x6d,
0 xbb},
{
0 xdf,
0 xcd,
0 xb1,
0 xbb},
{
0 xe0,
0 xff,
0 xe7,
0 xbb},
{
0 x06,
0 xf0,
0 x0d,
0 xbb},
{
0 x06,
0 x70,
0 x0e,
0 xbb},
{
0 x4c,
0 x00,
0 x01,
0 xbb},
{
0 x4d,
0 x00,
0 x01,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x2e,
0 x0c,
0 x55,
0 xbb},
{
0 x21,
0 xb6,
0 x6e,
0 xbb},
{
0 x36,
0 x30,
0 x10,
0 xbb},
{
0 x37,
0 x00,
0 xc1,
0 xbb},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x07,
0 x00,
0 x84,
0 xbb},
{
0 x08,
0 x02,
0 x4a,
0 xbb},
{
0 x05,
0 x01,
0 x10,
0 xbb},
{
0 x06,
0 x00,
0 x39,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x58,
0 x02,
0 x67,
0 xbb},
{
0 x57,
0 x02,
0 x00,
0 xbb},
{
0 x5a,
0 x02,
0 x67,
0 xbb},
{
0 x59,
0 x02,
0 x00,
0 xbb},
{
0 x5c,
0 x12,
0 x0d,
0 xbb},
{
0 x5d,
0 x16,
0 x11,
0 xbb},
{
0 x39,
0 x06,
0 x18,
0 xbb},
{
0 x3a,
0 x06,
0 x18,
0 xbb},
{
0 x3b,
0 x06,
0 x18,
0 xbb},
{
0 x3c,
0 x06,
0 x18,
0 xbb},
{
0 x64,
0 x7b,
0 x5b,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x36,
0 x30,
0 x10,
0 xbb},
{
0 x37,
0 x00,
0 xc0,
0 xbb},
{
0 xbc,
0 x0e,
0 x00,
0 xcc},
{
0 xbc,
0 x0f,
0 x05,
0 xcc},
{
0 xbc,
0 x10,
0 xc0,
0 xcc},
{
0 xbc,
0 x11,
0 x03,
0 xcc},
{
0 xb6,
0 x00,
0 x00,
0 xcc},
{
0 xb6,
0 x03,
0 x02,
0 xcc},
{
0 xb6,
0 x02,
0 x80,
0 xcc},
{
0 xb6,
0 x05,
0 x01,
0 xcc},
{
0 xb6,
0 x04,
0 xe0,
0 xcc},
{
0 xb6,
0 x12,
0 xf8,
0 xcc},
{
0 xb6,
0 x13,
0 x25,
0 xcc},
{
0 xb6,
0 x18,
0 x02,
0 xcc},
{
0 xb6,
0 x17,
0 x58,
0 xcc},
{
0 xb6,
0 x16,
0 x00,
0 xcc},
{
0 xb6,
0 x22,
0 x12,
0 xcc},
{
0 xb6,
0 x23,
0 x0b,
0 xcc},
{
0 xbf,
0 xc0,
0 x39,
0 xcc},
{
0 xbf,
0 xc1,
0 x04,
0 xcc},
{
0 xbf,
0 xcc,
0 x00,
0 xcc},
{
0 xbc,
0 x02,
0 x18,
0 xcc},
{
0 xbc,
0 x03,
0 x50,
0 xcc},
{
0 xbc,
0 x04,
0 x18,
0 xcc},
{
0 xbc,
0 x05,
0 x00,
0 xcc},
{
0 xbc,
0 x06,
0 x00,
0 xcc},
{
0 xbc,
0 x08,
0 x30,
0 xcc},
{
0 xbc,
0 x09,
0 x40,
0 xcc},
{
0 xbc,
0 x0a,
0 x10,
0 xcc},
{
0 xbc,
0 x0b,
0 x00,
0 xcc},
{
0 xbc,
0 x0c,
0 x00,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x80,
0 x00,
0 x03,
0 xbb},
{
0 x81,
0 xc7,
0 x14,
0 xbb},
{
0 x82,
0 xeb,
0 xe8,
0 xbb},
{
0 x83,
0 xfe,
0 xf4,
0 xbb},
{
0 x84,
0 xcd,
0 x10,
0 xbb},
{
0 x85,
0 xf3,
0 xee,
0 xbb},
{
0 x86,
0 xff,
0 xf1,
0 xbb},
{
0 x87,
0 xcd,
0 x10,
0 xbb},
{
0 x88,
0 xf3,
0 xee,
0 xbb},
{
0 x89,
0 x01,
0 xf1,
0 xbb},
{
0 x8a,
0 xe5,
0 x17,
0 xbb},
{
0 x8b,
0 xe8,
0 xe2,
0 xbb},
{
0 x8c,
0 xf7,
0 xed,
0 xbb},
{
0 x8d,
0 x00,
0 xff,
0 xbb},
{
0 x8e,
0 xec,
0 x10,
0 xbb},
{
0 x8f,
0 xf0,
0 xed,
0 xbb},
{
0 x90,
0 xf9,
0 xf2,
0 xbb},
{
0 x91,
0 x00,
0 x00,
0 xbb},
{
0 x92,
0 xe9,
0 x0d,
0 xbb},
{
0 x93,
0 xf4,
0 xf2,
0 xbb},
{
0 x94,
0 xfb,
0 xf5,
0 xbb},
{
0 x95,
0 x00,
0 xff,
0 xbb},
{
0 xb6,
0 x0f,
0 x08,
0 xbb},
{
0 xb7,
0 x3d,
0 x16,
0 xbb},
{
0 xb8,
0 x0c,
0 x04,
0 xbb},
{
0 xb9,
0 x1c,
0 x07,
0 xbb},
{
0 xba,
0 x0a,
0 x03,
0 xbb},
{
0 xbb,
0 x1b,
0 x09,
0 xbb},
{
0 xbc,
0 x17,
0 x0d,
0 xbb},
{
0 xbd,
0 x23,
0 x1d,
0 xbb},
{
0 xbe,
0 x00,
0 x28,
0 xbb},
{
0 xbf,
0 x11,
0 x09,
0 xbb},
{
0 xc0,
0 x16,
0 x15,
0 xbb},
{
0 xc1,
0 x00,
0 x1b,
0 xbb},
{
0 xc2,
0 x0e,
0 x07,
0 xbb},
{
0 xc3,
0 x14,
0 x10,
0 xbb},
{
0 xc4,
0 x00,
0 x17,
0 xbb},
{
0 x06,
0 x74,
0 x8e,
0 xbb},
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x06,
0 xf4,
0 x8e,
0 xbb},
{
0 x00,
0 x00,
0 x50,
0 xdd},
{
0 x06,
0 x74,
0 x8e,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x24,
0 x50,
0 x20,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x34,
0 x0c,
0 x50,
0 xbb},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x03,
0 x03,
0 xc0,
0 xbb},
{},
};
static const u8 mi1310_socinitQVGA_JPG[][
4 ] = {
{
0 xb0,
0 x03,
0 x19,
0 xcc}, {
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 xb3,
0 x00,
0 x64,
0 xcc}, {
0 xb3,
0 x00,
0 x65,
0 xcc},
{
0 xb3,
0 x05,
0 x00,
0 xcc}, {
0 xb3,
0 x06,
0 x00,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc}, {
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x34,
0 x02,
0 xcc}, {
0 xb3,
0 x35,
0 xdd,
0 xcc},
{
0 xb3,
0 x02,
0 x00,
0 xcc}, {
0 xb3,
0 x03,
0 x0a,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc}, {
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc}, {
0 xb3,
0 x22,
0 x03,
0 xcc},
{
0 xb3,
0 x23,
0 xc0,
0 xcc}, {
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc}, {
0 xb3,
0 x16,
0 x04,
0 xcc},
{
0 xb3,
0 x17,
0 xff,
0 xcc}, {
0 xb3,
0 x00,
0 x65,
0 xcc},
{
0 xb8,
0 x00,
0 x00,
0 xcc}, {
0 xbc,
0 x00,
0 xf0,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc}, {
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 xc8,
0 x9f,
0 x0b,
0 xbb}, {
0 x5b,
0 x00,
0 x01,
0 xbb},
{
0 x2f,
0 xde,
0 x20,
0 xbb}, {
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x20,
0 x03,
0 x02,
0 xbb},
/* h/v flip */
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x05,
0 x00,
0 x07,
0 xbb}, {
0 x34,
0 x00,
0 x00,
0 xbb},
{
0 x35,
0 xff,
0 x00,
0 xbb}, {
0 xdc,
0 x07,
0 x02,
0 xbb},
{
0 xdd,
0 x3c,
0 x18,
0 xbb}, {
0 xde,
0 x92,
0 x6d,
0 xbb},
{
0 xdf,
0 xcd,
0 xb1,
0 xbb}, {
0 xe0,
0 xff,
0 xe7,
0 xbb},
{
0 x06,
0 xf0,
0 x0d,
0 xbb}, {
0 x06,
0 x70,
0 x0e,
0 xbb},
{
0 x4c,
0 x00,
0 x01,
0 xbb}, {
0 x4d,
0 x00,
0 x01,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb}, {
0 x2e,
0 x0c,
0 x55,
0 xbb},
{
0 x21,
0 xb6,
0 x6e,
0 xbb}, {
0 x36,
0 x30,
0 x10,
0 xbb},
{
0 x37,
0 x00,
0 xc1,
0 xbb}, {
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x07,
0 x00,
0 x84,
0 xbb}, {
0 x08,
0 x02,
0 x4a,
0 xbb},
{
0 x05,
0 x01,
0 x10,
0 xbb}, {
0 x06,
0 x00,
0 x39,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb}, {
0 x58,
0 x02,
0 x67,
0 xbb},
{
0 x57,
0 x02,
0 x00,
0 xbb}, {
0 x5a,
0 x02,
0 x67,
0 xbb},
{
0 x59,
0 x02,
0 x00,
0 xbb}, {
0 x5c,
0 x12,
0 x0d,
0 xbb},
{
0 x5d,
0 x16,
0 x11,
0 xbb}, {
0 x39,
0 x06,
0 x18,
0 xbb},
{
0 x3a,
0 x06,
0 x18,
0 xbb}, {
0 x3b,
0 x06,
0 x18,
0 xbb},
{
0 x3c,
0 x06,
0 x18,
0 xbb}, {
0 x64,
0 x7b,
0 x5b,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb}, {
0 x36,
0 x30,
0 x10,
0 xbb},
{
0 x37,
0 x00,
0 xc0,
0 xbb}, {
0 xbc,
0 x0e,
0 x00,
0 xcc},
{
0 xbc,
0 x0f,
0 x05,
0 xcc}, {
0 xbc,
0 x10,
0 xc0,
0 xcc},
{
0 xbc,
0 x11,
0 x03,
0 xcc}, {
0 xb6,
0 x00,
0 x00,
0 xcc},
{
0 xb6,
0 x03,
0 x01,
0 xcc}, {
0 xb6,
0 x02,
0 x40,
0 xcc},
{
0 xb6,
0 x05,
0 x00,
0 xcc}, {
0 xb6,
0 x04,
0 xf0,
0 xcc},
{
0 xb6,
0 x12,
0 xf8,
0 xcc}, {
0 xb6,
0 x13,
0 x25,
0 xcc},
{
0 xb6,
0 x18,
0 x00,
0 xcc}, {
0 xb6,
0 x17,
0 x96,
0 xcc},
{
0 xb6,
0 x16,
0 x00,
0 xcc}, {
0 xb6,
0 x22,
0 x12,
0 xcc},
{
0 xb6,
0 x23,
0 x0b,
0 xcc}, {
0 xbf,
0 xc0,
0 x39,
0 xcc},
{
0 xbf,
0 xc1,
0 x04,
0 xcc}, {
0 xbf,
0 xcc,
0 x00,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc}, {
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x80,
0 x00,
0 x03,
0 xbb}, {
0 x81,
0 xc7,
0 x14,
0 xbb},
{
0 x82,
0 xeb,
0 xe8,
0 xbb}, {
0 x83,
0 xfe,
0 xf4,
0 xbb},
{
0 x84,
0 xcd,
0 x10,
0 xbb}, {
0 x85,
0 xf3,
0 xee,
0 xbb},
{
0 x86,
0 xff,
0 xf1,
0 xbb}, {
0 x87,
0 xcd,
0 x10,
0 xbb},
{
0 x88,
0 xf3,
0 xee,
0 xbb}, {
0 x89,
0 x01,
0 xf1,
0 xbb},
{
0 x8a,
0 xe5,
0 x17,
0 xbb}, {
0 x8b,
0 xe8,
0 xe2,
0 xbb},
{
0 x8c,
0 xf7,
0 xed,
0 xbb}, {
0 x8d,
0 x00,
0 xff,
0 xbb},
{
0 x8e,
0 xec,
0 x10,
0 xbb}, {
0 x8f,
0 xf0,
0 xed,
0 xbb},
{
0 x90,
0 xf9,
0 xf2,
0 xbb}, {
0 x91,
0 x00,
0 x00,
0 xbb},
{
0 x92,
0 xe9,
0 x0d,
0 xbb}, {
0 x93,
0 xf4,
0 xf2,
0 xbb},
{
0 x94,
0 xfb,
0 xf5,
0 xbb}, {
0 x95,
0 x00,
0 xff,
0 xbb},
{
0 xb6,
0 x0f,
0 x08,
0 xbb}, {
0 xb7,
0 x3d,
0 x16,
0 xbb},
{
0 xb8,
0 x0c,
0 x04,
0 xbb}, {
0 xb9,
0 x1c,
0 x07,
0 xbb},
{
0 xba,
0 x0a,
0 x03,
0 xbb}, {
0 xbb,
0 x1b,
0 x09,
0 xbb},
{
0 xbc,
0 x17,
0 x0d,
0 xbb}, {
0 xbd,
0 x23,
0 x1d,
0 xbb},
{
0 xbe,
0 x00,
0 x28,
0 xbb}, {
0 xbf,
0 x11,
0 x09,
0 xbb},
{
0 xc0,
0 x16,
0 x15,
0 xbb}, {
0 xc1,
0 x00,
0 x1b,
0 xbb},
{
0 xc2,
0 x0e,
0 x07,
0 xbb}, {
0 xc3,
0 x14,
0 x10,
0 xbb},
{
0 xc4,
0 x00,
0 x17,
0 xbb}, {
0 x06,
0 x74,
0 x8e,
0 xbb},
{
0 xf0,
0 x00,
0 x01,
0 xbb}, {
0 x06,
0 xf4,
0 x8e,
0 xbb},
{
0 x00,
0 x00,
0 x50,
0 xdd}, {
0 x06,
0 x74,
0 x8e,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb}, {
0 x24,
0 x50,
0 x20,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb}, {
0 x34,
0 x0c,
0 x50,
0 xbb},
{
0 xb3,
0 x01,
0 x41,
0 xcc}, {
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x03,
0 x03,
0 xc0,
0 xbb},
{},
};
static const u8 mi1310_soc_InitSXGA_JPG[][
4 ] = {
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 xb3,
0 x00,
0 x64,
0 xcc},
{
0 xb3,
0 x00,
0 x65,
0 xcc},
{
0 xb3,
0 x05,
0 x00,
0 xcc},
{
0 xb3,
0 x06,
0 x00,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x34,
0 x02,
0 xcc},
{
0 xb3,
0 x35,
0 xdd,
0 xcc},
{
0 xb3,
0 x02,
0 x00,
0 xcc},
{
0 xb3,
0 x03,
0 x0a,
0 xcc},
{
0 xb3,
0 x04,
0 x0d,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x03,
0 xcc},
{
0 xb3,
0 x23,
0 xc0,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x04,
0 xcc},
{
0 xb3,
0 x17,
0 xff,
0 xcc},
{
0 xb3,
0 x00,
0 x65,
0 xcc},
{
0 xb8,
0 x00,
0 x00,
0 xcc},
{
0 xbc,
0 x00,
0 x70,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 xc8,
0 x9f,
0 x0b,
0 xbb},
{
0 x5b,
0 x00,
0 x01,
0 xbb},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x20,
0 x03,
0 x02,
0 xbb},
/* h/v flip */
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x05,
0 x00,
0 x07,
0 xbb},
{
0 x34,
0 x00,
0 x00,
0 xbb},
{
0 x35,
0 xff,
0 x00,
0 xbb},
{
0 xdc,
0 x07,
0 x02,
0 xbb},
{
0 xdd,
0 x3c,
0 x18,
0 xbb},
{
0 xde,
0 x92,
0 x6d,
0 xbb},
{
0 xdf,
0 xcd,
0 xb1,
0 xbb},
{
0 xe0,
0 xff,
0 xe7,
0 xbb},
{
0 x06,
0 xf0,
0 x0d,
0 xbb},
{
0 x06,
0 x70,
0 x0e,
0 xbb},
{
0 x4c,
0 x00,
0 x01,
0 xbb},
{
0 x4d,
0 x00,
0 x01,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x2e,
0 x0c,
0 x60,
0 xbb},
{
0 x21,
0 xb6,
0 x6e,
0 xbb},
{
0 x37,
0 x01,
0 x40,
0 xbb},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x07,
0 x00,
0 x84,
0 xbb},
{
0 x08,
0 x02,
0 x4a,
0 xbb},
{
0 x05,
0 x01,
0 x10,
0 xbb},
{
0 x06,
0 x00,
0 x39,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x58,
0 x02,
0 x67,
0 xbb},
{
0 x57,
0 x02,
0 x00,
0 xbb},
{
0 x5a,
0 x02,
0 x67,
0 xbb},
{
0 x59,
0 x02,
0 x00,
0 xbb},
{
0 x5c,
0 x12,
0 x0d,
0 xbb},
{
0 x5d,
0 x16,
0 x11,
0 xbb},
{
0 x39,
0 x06,
0 x18,
0 xbb},
{
0 x3a,
0 x06,
0 x18,
0 xbb},
{
0 x3b,
0 x06,
0 x18,
0 xbb},
{
0 x3c,
0 x06,
0 x18,
0 xbb},
{
0 x64,
0 x7b,
0 x5b,
0 xbb},
{
0 xb6,
0 x00,
0 x00,
0 xcc},
{
0 xb6,
0 x03,
0 x05,
0 xcc},
{
0 xb6,
0 x02,
0 x00,
0 xcc},
{
0 xb6,
0 x05,
0 x03,
0 xcc},
{
0 xb6,
0 x04,
0 xc0,
0 xcc},
{
0 xb6,
0 x12,
0 xf8,
0 xcc},
{
0 xb6,
0 x13,
0 x29,
0 xcc},
{
0 xb6,
0 x18,
0 x09,
0 xcc},
{
0 xb6,
0 x17,
0 x60,
0 xcc},
{
0 xb6,
0 x16,
0 x00,
0 xcc},
{
0 xb6,
0 x22,
0 x12,
0 xcc},
{
0 xb6,
0 x23,
0 x0b,
0 xcc},
{
0 xbf,
0 xc0,
0 x39,
0 xcc},
{
0 xbf,
0 xc1,
0 x04,
0 xcc},
{
0 xbf,
0 xcc,
0 x00,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 x00,
0 x00,
0 x80,
0 xdd},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 x22,
0 xa0,
0 x78,
0 xbb},
{
0 x23,
0 xa0,
0 x78,
0 xbb},
{
0 x24,
0 x7f,
0 x00,
0 xbb},
{
0 x28,
0 xea,
0 x02,
0 xbb},
{
0 x29,
0 x86,
0 x7a,
0 xbb},
{
0 x5e,
0 x52,
0 x4c,
0 xbb},
{
0 x5f,
0 x20,
0 x24,
0 xbb},
{
0 x60,
0 x00,
0 x02,
0 xbb},
{
0 x02,
0 x00,
0 xee,
0 xbb},
{
0 x03,
0 x39,
0 x23,
0 xbb},
{
0 x04,
0 x07,
0 x24,
0 xbb},
{
0 x09,
0 x00,
0 xc0,
0 xbb},
{
0 x0a,
0 x00,
0 x79,
0 xbb},
{
0 x0b,
0 x00,
0 x04,
0 xbb},
{
0 x0c,
0 x00,
0 x5c,
0 xbb},
{
0 x0d,
0 x00,
0 xd9,
0 xbb},
{
0 x0e,
0 x00,
0 x53,
0 xbb},
{
0 x0f,
0 x00,
0 x21,
0 xbb},
{
0 x10,
0 x00,
0 xa4,
0 xbb},
{
0 x11,
0 x00,
0 xe5,
0 xbb},
{
0 x15,
0 x00,
0 x00,
0 xbb},
{
0 x16,
0 x00,
0 x00,
0 xbb},
{
0 x17,
0 x00,
0 x00,
0 xbb},
{
0 x18,
0 x00,
0 x00,
0 xbb},
{
0 x19,
0 x00,
0 x00,
0 xbb},
{
0 x1a,
0 x00,
0 x00,
0 xbb},
{
0 x1b,
0 x00,
0 x00,
0 xbb},
{
0 x1c,
0 x00,
0 x00,
0 xbb},
{
0 x1d,
0 x00,
0 x00,
0 xbb},
{
0 x1e,
0 x00,
0 x00,
0 xbb},
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x00,
0 x00,
0 x20,
0 xdd},
{
0 x06,
0 xf0,
0 x8e,
0 xbb},
{
0 x00,
0 x00,
0 x80,
0 xdd},
{
0 x06,
0 x70,
0 x8e,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x00,
0 x00,
0 x20,
0 xdd},
{
0 x5e,
0 x6a,
0 x53,
0 xbb},
{
0 x5f,
0 x40,
0 x2c,
0 xbb},
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x00,
0 x00,
0 x20,
0 xdd},
{
0 x58,
0 x00,
0 x00,
0 xbb},
{
0 x53,
0 x09,
0 x03,
0 xbb},
{
0 x54,
0 x31,
0 x18,
0 xbb},
{
0 x55,
0 x8b,
0 x5f,
0 xbb},
{
0 x56,
0 xc0,
0 xa9,
0 xbb},
{
0 x57,
0 xe0,
0 xd2,
0 xbb},
{
0 xe1,
0 x00,
0 x00,
0 xbb},
{
0 xdc,
0 x09,
0 x03,
0 xbb},
{
0 xdd,
0 x31,
0 x18,
0 xbb},
{
0 xde,
0 x8b,
0 x5f,
0 xbb},
{
0 xdf,
0 xc0,
0 xa9,
0 xbb},
{
0 xe0,
0 xe0,
0 xd2,
0 xbb},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x06,
0 xf0,
0 x8e,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x2f,
0 xde,
0 x20,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x24,
0 x50,
0 x20,
0 xbb},
{
0 xbc,
0 x0e,
0 x00,
0 xcc},
{
0 xbc,
0 x0f,
0 x05,
0 xcc},
{
0 xbc,
0 x10,
0 xc0,
0 xcc},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x34,
0 x0c,
0 x50,
0 xbb},
{
0 xbc,
0 x11,
0 x03,
0 xcc},
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x80,
0 x00,
0 x03,
0 xbb},
{
0 x81,
0 xc7,
0 x14,
0 xbb},
{
0 x82,
0 xeb,
0 xe8,
0 xbb},
{
0 x83,
0 xfe,
0 xf4,
0 xbb},
{
0 x84,
0 xcd,
0 x10,
0 xbb},
{
0 x85,
0 xf3,
0 xee,
0 xbb},
{
0 x86,
0 xff,
0 xf1,
0 xbb},
{
0 x87,
0 xcd,
0 x10,
0 xbb},
{
0 x88,
0 xf3,
0 xee,
0 xbb},
{
0 x89,
0 x01,
0 xf1,
0 xbb},
{
0 x8a,
0 xe5,
0 x17,
0 xbb},
{
0 x8b,
0 xe8,
0 xe2,
0 xbb},
{
0 x8c,
0 xf7,
0 xed,
0 xbb},
{
0 x8d,
0 x00,
0 xff,
0 xbb},
{
0 x8e,
0 xec,
0 x10,
0 xbb},
{
0 x8f,
0 xf0,
0 xed,
0 xbb},
{
0 x90,
0 xf9,
0 xf2,
0 xbb},
{
0 x91,
0 x00,
0 x00,
0 xbb},
{
0 x92,
0 xe9,
0 x0d,
0 xbb},
{
0 x93,
0 xf4,
0 xf2,
0 xbb},
{
0 x94,
0 xfb,
0 xf5,
0 xbb},
{
0 x95,
0 x00,
0 xff,
0 xbb},
{
0 xb6,
0 x0f,
0 x08,
0 xbb},
{
0 xb7,
0 x3d,
0 x16,
0 xbb},
{
0 xb8,
0 x0c,
0 x04,
0 xbb},
{
0 xb9,
0 x1c,
0 x07,
0 xbb},
{
0 xba,
0 x0a,
0 x03,
0 xbb},
{
0 xbb,
0 x1b,
0 x09,
0 xbb},
{
0 xbc,
0 x17,
0 x0d,
0 xbb},
{
0 xbd,
0 x23,
0 x1d,
0 xbb},
{
0 xbe,
0 x00,
0 x28,
0 xbb},
{
0 xbf,
0 x11,
0 x09,
0 xbb},
{
0 xc0,
0 x16,
0 x15,
0 xbb},
{
0 xc1,
0 x00,
0 x1b,
0 xbb},
{
0 xc2,
0 x0e,
0 x07,
0 xbb},
{
0 xc3,
0 x14,
0 x10,
0 xbb},
{
0 xc4,
0 x00,
0 x17,
0 xbb},
{
0 x06,
0 x74,
0 x8e,
0 xbb},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x03,
0 x03,
0 xc0,
0 xbb},
{}
};
static const u8 mi1320_gamma[
17 ] = {
0 x00,
0 x13,
0 x38,
0 x59,
0 x79,
0 x92,
0 xa7,
0 xb9,
0 xc8,
0 xd4,
0 xdf,
0 xe7,
0 xee,
0 xf4,
0 xf9,
0 xfc,
0 xff
};
static const u8 mi1320_matrix[
9 ] = {
0 x54,
0 xda,
0 x06,
0 xf1,
0 x50,
0 xf4,
0 xf7,
0 xea,
0 x52
};
static const u8 mi1320_initVGA_data[][
4 ] = {
{
0 xb3,
0 x01,
0 x01,
0 xcc}, {
0 x00,
0 x00,
0 x33,
0 xdd},
{
0 xb0,
0 x03,
0 x19,
0 xcc}, {
0 x00,
0 x00,
0 x33,
0 xdd},
{
0 xb0,
0 x04,
0 x02,
0 xcc}, {
0 x00,
0 x00,
0 x33,
0 xdd},
{
0 xb3,
0 x00,
0 x64,
0 xcc}, {
0 xb3,
0 x00,
0 x65,
0 xcc},
{
0 xb0,
0 x16,
0 x03,
0 xcc}, {
0 xb3,
0 x05,
0 x00,
0 xcc},
{
0 xb3,
0 x06,
0 x00,
0 xcc}, {
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc}, {
0 xb3,
0 x34,
0 x02,
0 xcc},
{
0 xb3,
0 x35,
0 xc8,
0 xcc},
/* i2c add: 48 */
{
0 xb3,
0 x02,
0 x00,
0 xcc},
{
0 xb3,
0 x03,
0 x0a,
0 xcc}, {
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc}, {
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x03,
0 xcc}, {
0 xb3,
0 x23,
0 xc0,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc}, {
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x04,
0 xcc}, {
0 xb3,
0 x17,
0 xff,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc}, {
0 xbc,
0 x00,
0 xd0,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc}, {
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x0d,
0 x00,
0 x09,
0 xbb}, {
0 x00,
0 x01,
0 x00,
0 xdd},
{
0 x0d,
0 x00,
0 x08,
0 xbb}, {
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 xa1,
0 x05,
0 x00,
0 xbb}, {
0 xa4,
0 x03,
0 xc0,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb}, {
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xc8,
0 x9f,
0 x0b,
0 xbb}, {
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xf0,
0 x00,
0 x00,
0 xbb}, {
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 x20,
0 x01,
0 x00,
0 xbb}, {
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xf0,
0 x00,
0 x01,
0 xbb}, {
0 x9d,
0 x3c,
0 xa0,
0 xbb},
{
0 x47,
0 x30,
0 x30,
0 xbb}, {
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x0a,
0 x80,
0 x11,
0 xbb}, {
0 x35,
0 x00,
0 x22,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb}, {
0 x9d,
0 xc5,
0 x05,
0 xbb},
{
0 xdc,
0 x0f,
0 xfc,
0 xbb}, {
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x06,
0 x74,
0 x0e,
0 xbb}, {
0 x80,
0 x00,
0 x06,
0 xbb},
{
0 x81,
0 x04,
0 x00,
0 xbb}, {
0 x82,
0 x01,
0 x02,
0 xbb},
{
0 x83,
0 x03,
0 x02,
0 xbb}, {
0 x84,
0 x05,
0 x00,
0 xbb},
{
0 x85,
0 x01,
0 x00,
0 xbb}, {
0 x86,
0 x03,
0 x02,
0 xbb},
{
0 x87,
0 x05,
0 x00,
0 xbb}, {
0 x88,
0 x01,
0 x00,
0 xbb},
{
0 x89,
0 x02,
0 x02,
0 xbb}, {
0 x8a,
0 xfd,
0 x04,
0 xbb},
{
0 x8b,
0 xfc,
0 xfd,
0 xbb}, {
0 x8c,
0 xff,
0 xfd,
0 xbb},
{
0 x8d,
0 x00,
0 x00,
0 xbb}, {
0 x8e,
0 xfe,
0 x05,
0 xbb},
{
0 x8f,
0 xfc,
0 xfd,
0 xbb}, {
0 x90,
0 xfe,
0 xfd,
0 xbb},
{
0 x91,
0 x00,
0 x00,
0 xbb}, {
0 x92,
0 xfe,
0 x03,
0 xbb},
{
0 x93,
0 xfd,
0 xfe,
0 xbb}, {
0 x94,
0 xff,
0 xfd,
0 xbb},
{
0 x95,
0 x00,
0 x00,
0 xbb}, {
0 xb6,
0 x07,
0 x05,
0 xbb},
{
0 xb7,
0 x13,
0 x06,
0 xbb}, {
0 xb8,
0 x08,
0 x06,
0 xbb},
{
0 xb9,
0 x14,
0 x08,
0 xbb}, {
0 xba,
0 x06,
0 x05,
0 xbb},
{
0 xbb,
0 x13,
0 x06,
0 xbb}, {
0 xbc,
0 x03,
0 x01,
0 xbb},
{
0 xbd,
0 x03,
0 x04,
0 xbb}, {
0 xbe,
0 x00,
0 x02,
0 xbb},
{
0 xbf,
0 x03,
0 x01,
0 xbb}, {
0 xc0,
0 x02,
0 x04,
0 xbb},
{
0 xc1,
0 x00,
0 x04,
0 xbb}, {
0 xc2,
0 x02,
0 x01,
0 xbb},
{
0 xc3,
0 x01,
0 x03,
0 xbb}, {
0 xc4,
0 x00,
0 x04,
0 xbb},
{
0 xf0,
0 x00,
0 x00,
0 xbb}, {
0 x05,
0 x01,
0 x13,
0 xbb},
{
0 x06,
0 x00,
0 x11,
0 xbb}, {
0 x07,
0 x00,
0 x85,
0 xbb},
{
0 x08,
0 x00,
0 x27,
0 xbb},
{
0 x20,
0 x01,
0 x00,
0 xbb},
/* h/v flips - was 03 */
{
0 x21,
0 x80,
0 x00,
0 xbb}, {
0 x22,
0 x0d,
0 x0f,
0 xbb},
{
0 x24,
0 x80,
0 x00,
0 xbb}, {
0 x59,
0 x00,
0 xff,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb}, {
0 x39,
0 x03,
0 x0d,
0 xbb},
{
0 x3a,
0 x06,
0 x1b,
0 xbb}, {
0 x3b,
0 x00,
0 x95,
0 xbb},
{
0 x3c,
0 x04,
0 xdb,
0 xbb}, {
0 x57,
0 x02,
0 x00,
0 xbb},
{
0 x58,
0 x02,
0 x66,
0 xbb}, {
0 x59,
0 x00,
0 xff,
0 xbb},
{
0 x5a,
0 x01,
0 x33,
0 xbb}, {
0 x5c,
0 x12,
0 x0d,
0 xbb},
{
0 x5d,
0 x16,
0 x11,
0 xbb}, {
0 x64,
0 x5e,
0 x1c,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb}, {
0 x2f,
0 xd1,
0 x00,
0 xbb},
{
0 x5b,
0 x00,
0 x01,
0 xbb}, {
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x36,
0 x68,
0 x10,
0 xbb}, {
0 x00,
0 x00,
0 x30,
0 xdd},
{
0 x37,
0 x82,
0 x00,
0 xbb}, {
0 xbc,
0 x0e,
0 x00,
0 xcc},
{
0 xbc,
0 x0f,
0 x05,
0 xcc}, {
0 xbc,
0 x10,
0 xc0,
0 xcc},
{
0 xbc,
0 x11,
0 x03,
0 xcc}, {
0 xb6,
0 x00,
0 x00,
0 xcc},
{
0 xb6,
0 x03,
0 x05,
0 xcc}, {
0 xb6,
0 x02,
0 x00,
0 xcc},
{
0 xb6,
0 x05,
0 x04,
0 xcc}, {
0 xb6,
0 x04,
0 x00,
0 xcc},
{
0 xb6,
0 x12,
0 xf8,
0 xcc}, {
0 xb6,
0 x13,
0 x29,
0 xcc},
{
0 xb6,
0 x18,
0 x0a,
0 xcc}, {
0 xb6,
0 x17,
0 x00,
0 xcc},
{
0 xb6,
0 x16,
0 x00,
0 xcc}, {
0 xb6,
0 x22,
0 x12,
0 xcc},
{
0 xb6,
0 x23,
0 x0b,
0 xcc}, {
0 xbf,
0 xc0,
0 x26,
0 xcc},
{
0 xbf,
0 xc1,
0 x02,
0 xcc}, {
0 xbf,
0 xcc,
0 x04,
0 xcc},
{
0 xbc,
0 x02,
0 x18,
0 xcc}, {
0 xbc,
0 x03,
0 x50,
0 xcc},
{
0 xbc,
0 x04,
0 x18,
0 xcc}, {
0 xbc,
0 x05,
0 x00,
0 xcc},
{
0 xbc,
0 x06,
0 x00,
0 xcc}, {
0 xbc,
0 x08,
0 x30,
0 xcc},
{
0 xbc,
0 x09,
0 x40,
0 xcc}, {
0 xbc,
0 x0a,
0 x10,
0 xcc},
{
0 xbc,
0 x0b,
0 x00,
0 xcc}, {
0 xbc,
0 x0c,
0 x00,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc}, {
0 xb3,
0 x01,
0 x41,
0 xcc},
{}
};
static const u8 mi1320_initQVGA_data[][
4 ] = {
{
0 xb3,
0 x01,
0 x01,
0 xcc}, {
0 x00,
0 x00,
0 x33,
0 xdd},
{
0 xb0,
0 x03,
0 x19,
0 xcc}, {
0 x00,
0 x00,
0 x33,
0 xdd},
{
0 xb0,
0 x04,
0 x02,
0 xcc}, {
0 x00,
0 x00,
0 x33,
0 xdd},
{
0 xb3,
0 x00,
0 x64,
0 xcc}, {
0 xb3,
0 x00,
0 x65,
0 xcc},
{
0 xb0,
0 x16,
0 x03,
0 xcc}, {
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc}, {
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc}, {
0 xb3,
0 x34,
0 x02,
0 xcc},
{
0 xb3,
0 x35,
0 xc8,
0 xcc}, {
0 xb3,
0 x02,
0 x00,
0 xcc},
{
0 xb3,
0 x03,
0 x0a,
0 xcc}, {
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc}, {
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x01,
0 xcc}, {
0 xb3,
0 x23,
0 xe0,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc}, {
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc}, {
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x00,
0 x65,
0 xcc}, {
0 xb8,
0 x00,
0 x00,
0 xcc},
{
0 xbc,
0 x00,
0 xd0,
0 xcc}, {
0 xbc,
0 x01,
0 x01,
0 xcc},
{
0 xf0,
0 x00,
0 x00,
0 xbb}, {
0 x0d,
0 x00,
0 x09,
0 xbb},
{
0 x00,
0 x01,
0 x00,
0 xdd}, {
0 x0d,
0 x00,
0 x08,
0 xbb},
{
0 xf0,
0 x00,
0 x00,
0 xbb}, {
0 x02,
0 x00,
0 x64,
0 xbb},
{
0 x05,
0 x01,
0 x78,
0 xbb}, {
0 x06,
0 x00,
0 x11,
0 xbb},
{
0 x07,
0 x01,
0 x42,
0 xbb}, {
0 x08,
0 x00,
0 x11,
0 xbb},
{
0 x20,
0 x01,
0 x00,
0 xbb}, {
0 x21,
0 x80,
0 x00,
0 xbb},
{
0 x22,
0 x0d,
0 x0f,
0 xbb}, {
0 x24,
0 x80,
0 x00,
0 xbb},
{
0 x59,
0 x00,
0 xff,
0 xbb}, {
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x9d,
0 x3c,
0 xa0,
0 xbb}, {
0 x47,
0 x30,
0 x30,
0 xbb},
{
0 xf0,
0 x00,
0 x00,
0 xbb}, {
0 x0a,
0 x80,
0 x11,
0 xbb},
{
0 x35,
0 x00,
0 x22,
0 xbb}, {
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x9d,
0 xc5,
0 x05,
0 xbb}, {
0 xdc,
0 x0f,
0 xfc,
0 xbb},
{
0 xf0,
0 x00,
0 x01,
0 xbb}, {
0 x06,
0 x74,
0 x0e,
0 xbb},
{
0 x80,
0 x00,
0 x06,
0 xbb}, {
0 x81,
0 x04,
0 x00,
0 xbb},
{
0 x82,
0 x01,
0 x02,
0 xbb}, {
0 x83,
0 x03,
0 x02,
0 xbb},
{
0 x84,
0 x05,
0 x00,
0 xbb}, {
0 x85,
0 x01,
0 x00,
0 xbb},
{
0 x86,
0 x03,
0 x02,
0 xbb}, {
0 x87,
0 x05,
0 x00,
0 xbb},
{
0 x88,
0 x01,
0 x00,
0 xbb}, {
0 x89,
0 x02,
0 x02,
0 xbb},
{
0 x8a,
0 xfd,
0 x04,
0 xbb}, {
0 x8b,
0 xfc,
0 xfd,
0 xbb},
{
0 x8c,
0 xff,
0 xfd,
0 xbb}, {
0 x8d,
0 x00,
0 x00,
0 xbb},
{
0 x8e,
0 xfe,
0 x05,
0 xbb}, {
0 x8f,
0 xfc,
0 xfd,
0 xbb},
{
0 x90,
0 xfe,
0 xfd,
0 xbb}, {
0 x91,
0 x00,
0 x00,
0 xbb},
{
0 x92,
0 xfe,
0 x03,
0 xbb}, {
0 x93,
0 xfd,
0 xfe,
0 xbb},
{
0 x94,
0 xff,
0 xfd,
0 xbb}, {
0 x95,
0 x00,
0 x00,
0 xbb},
{
0 xb6,
0 x07,
0 x05,
0 xbb}, {
0 xb7,
0 x13,
0 x06,
0 xbb},
{
0 xb8,
0 x08,
0 x06,
0 xbb}, {
0 xb9,
0 x14,
0 x08,
0 xbb},
{
0 xba,
0 x06,
0 x05,
0 xbb}, {
0 xbb,
0 x13,
0 x06,
0 xbb},
{
0 xbc,
0 x03,
0 x01,
0 xbb}, {
0 xbd,
0 x03,
0 x04,
0 xbb},
{
0 xbe,
0 x00,
0 x02,
0 xbb}, {
0 xbf,
0 x03,
0 x01,
0 xbb},
{
0 xc0,
0 x02,
0 x04,
0 xbb}, {
0 xc1,
0 x00,
0 x04,
0 xbb},
{
0 xc2,
0 x02,
0 x01,
0 xbb}, {
0 xc3,
0 x01,
0 x03,
0 xbb},
{
0 xc4,
0 x00,
0 x04,
0 xbb}, {
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 xc8,
0 x00,
0 x00,
0 xbb}, {
0 x2e,
0 x00,
0 x00,
0 xbb},
{
0 x2e,
0 x0c,
0 x5b,
0 xbb}, {
0 x2f,
0 xd1,
0 x00,
0 xbb},
{
0 x39,
0 x03,
0 xca,
0 xbb}, {
0 x3a,
0 x06,
0 x80,
0 xbb},
{
0 x3b,
0 x01,
0 x52,
0 xbb}, {
0 x3c,
0 x05,
0 x40,
0 xbb},
{
0 x57,
0 x01,
0 x9c,
0 xbb}, {
0 x58,
0 x01,
0 xee,
0 xbb},
{
0 x59,
0 x00,
0 xf0,
0 xbb}, {
0 x5a,
0 x01,
0 x20,
0 xbb},
{
0 x5c,
0 x1d,
0 x17,
0 xbb}, {
0 x5d,
0 x22,
0 x1c,
0 xbb},
{
0 x64,
0 x1e,
0 x1c,
0 xbb}, {
0 x5b,
0 x00,
0 x01,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb}, {
0 x36,
0 x68,
0 x10,
0 xbb},
{
0 x00,
0 x00,
0 x30,
0 xdd}, {
0 x37,
0 x81,
0 x00,
0 xbb},
{
0 xbc,
0 x02,
0 x18,
0 xcc}, {
0 xbc,
0 x03,
0 x50,
0 xcc},
{
0 xbc,
0 x04,
0 x18,
0 xcc}, {
0 xbc,
0 x05,
0 x00,
0 xcc},
{
0 xbc,
0 x06,
0 x00,
0 xcc}, {
0 xbc,
0 x08,
0 x30,
0 xcc},
{
0 xbc,
0 x09,
0 x40,
0 xcc}, {
0 xbc,
0 x0a,
0 x10,
0 xcc},
{
0 xbc,
0 x0b,
0 x00,
0 xcc}, {
0 xbc,
0 x0c,
0 x00,
0 xcc},
{
0 xbf,
0 xc0,
0 x26,
0 xcc}, {
0 xbf,
0 xc1,
0 x02,
0 xcc},
{
0 xbf,
0 xcc,
0 x04,
0 xcc}, {
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{}
};
static const u8 mi1320_soc_InitVGA[][
4 ] = {
{
0 xb3,
0 x01,
0 x01,
0 xcc},
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 x00,
0 x00,
0 x30,
0 xdd},
{
0 xb3,
0 x00,
0 x64,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x34,
0 x02,
0 xcc},
{
0 xb3,
0 x35,
0 xc8,
0 xcc},
/* i2c add: 48 */
{
0 xb3,
0 x02,
0 x00,
0 xcc},
{
0 xb3,
0 x03,
0 x0a,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x01,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc},
{
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xb8,
0 x00,
0 x00,
0 xcc},
{
0 xbc,
0 x00,
0 x71,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xc8,
0 x00,
0 x00,
0 xbb},
{
0 x00,
0 x00,
0 x30,
0 xdd},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 x07,
0 x00,
0 xe0,
0 xbb},
{
0 x08,
0 x00,
0 x0b,
0 xbb},
{
0 x21,
0 x00,
0 x0c,
0 xbb},
{
0 x20,
0 x01,
0 x03,
0 xbb},
/* h/v flip */
{
0 xbf,
0 xc0,
0 x26,
0 xcc},
{
0 xbf,
0 xc1,
0 x02,
0 xcc},
{
0 xbf,
0 xcc,
0 x04,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x05,
0 x01,
0 x78,
0 xbb},
{
0 x06,
0 x00,
0 x11,
0 xbb},
{
0 x07,
0 x01,
0 x42,
0 xbb},
{
0 x08,
0 x00,
0 x11,
0 xbb},
{
0 x20,
0 x01,
0 x03,
0 xbb},
/* h/v flip */
{
0 x21,
0 x80,
0 x00,
0 xbb},
{
0 x22,
0 x0d,
0 x0f,
0 xbb},
{
0 x24,
0 x80,
0 x00,
0 xbb},
{
0 x59,
0 x00,
0 xff,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x39,
0 x03,
0 xca,
0 xbb},
{
0 x3a,
0 x06,
0 x80,
0 xbb},
{
0 x3b,
0 x01,
0 x52,
0 xbb},
{
0 x3c,
0 x05,
0 x40,
0 xbb},
{
0 x57,
0 x01,
0 x9c,
0 xbb},
{
0 x58,
0 x01,
0 xee,
0 xbb},
{
0 x59,
0 x00,
0 xf0,
0 xbb},
{
0 x5a,
0 x01,
0 x20,
0 xbb},
{
0 x5c,
0 x1d,
0 x17,
0 xbb},
{
0 x5d,
0 x22,
0 x1c,
0 xbb},
{
0 x64,
0 x1e,
0 x1c,
0 xbb},
{
0 x5b,
0 x00,
0 x00,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x22,
0 xa0,
0 x78,
0 xbb},
{
0 x23,
0 xa0,
0 x78,
0 xbb},
{
0 x24,
0 x7f,
0 x00,
0 xbb},
{
0 x28,
0 xea,
0 x02,
0 xbb},
{
0 x29,
0 x86,
0 x7a,
0 xbb},
{
0 x5e,
0 x52,
0 x4c,
0 xbb},
{
0 x5f,
0 x20,
0 x24,
0 xbb},
{
0 x60,
0 x00,
0 x02,
0 xbb},
{
0 x02,
0 x00,
0 xee,
0 xbb},
{
0 x03,
0 x39,
0 x23,
0 xbb},
{
0 x04,
0 x07,
0 x24,
0 xbb},
{
0 x09,
0 x00,
0 xc0,
0 xbb},
{
0 x0a,
0 x00,
0 x79,
0 xbb},
{
0 x0b,
0 x00,
0 x04,
0 xbb},
{
0 x0c,
0 x00,
0 x5c,
0 xbb},
{
0 x0d,
0 x00,
0 xd9,
0 xbb},
{
0 x0e,
0 x00,
0 x53,
0 xbb},
{
0 x0f,
0 x00,
0 x21,
0 xbb},
{
0 x10,
0 x00,
0 xa4,
0 xbb},
{
0 x11,
0 x00,
0 xe5,
0 xbb},
{
0 x15,
0 x00,
0 x00,
0 xbb},
{
0 x16,
0 x00,
0 x00,
0 xbb},
{
0 x17,
0 x00,
0 x00,
0 xbb},
{
0 x18,
0 x00,
0 x00,
0 xbb},
{
0 x19,
0 x00,
0 x00,
0 xbb},
{
0 x1a,
0 x00,
0 x00,
0 xbb},
{
0 x1b,
0 x00,
0 x00,
0 xbb},
{
0 x1c,
0 x00,
0 x00,
0 xbb},
{
0 x1d,
0 x00,
0 x00,
0 xbb},
{
0 x1e,
0 x00,
0 x00,
0 xbb},
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x06,
0 xe0,
0 x0e,
0 xbb},
{
0 x06,
0 x60,
0 x0e,
0 xbb},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{}
};
static const u8 mi1320_soc_InitQVGA[][
4 ] = {
{
0 xb3,
0 x01,
0 x01,
0 xcc},
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 x00,
0 x00,
0 x30,
0 xdd},
{
0 xb3,
0 x00,
0 x64,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x34,
0 x02,
0 xcc},
{
0 xb3,
0 x35,
0 xc8,
0 xcc},
{
0 xb3,
0 x02,
0 x00,
0 xcc},
{
0 xb3,
0 x03,
0 x0a,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x01,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc},
{
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xb8,
0 x00,
0 x00,
0 xcc},
{
0 xbc,
0 x00,
0 xd1,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xc8,
0 x00,
0 x00,
0 xbb},
{
0 x00,
0 x00,
0 x30,
0 xdd},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 x07,
0 x00,
0 xe0,
0 xbb},
{
0 x08,
0 x00,
0 x0b,
0 xbb},
{
0 x21,
0 x00,
0 x0c,
0 xbb},
{
0 x20,
0 x01,
0 x03,
0 xbb},
/* h/v flip */
{
0 xbf,
0 xc0,
0 x26,
0 xcc},
{
0 xbf,
0 xc1,
0 x02,
0 xcc},
{
0 xbf,
0 xcc,
0 x04,
0 xcc},
{
0 xbc,
0 x02,
0 x18,
0 xcc},
{
0 xbc,
0 x03,
0 x50,
0 xcc},
{
0 xbc,
0 x04,
0 x18,
0 xcc},
{
0 xbc,
0 x05,
0 x00,
0 xcc},
{
0 xbc,
0 x06,
0 x00,
0 xcc},
{
0 xbc,
0 x08,
0 x30,
0 xcc},
{
0 xbc,
0 x09,
0 x40,
0 xcc},
{
0 xbc,
0 x0a,
0 x10,
0 xcc},
{
0 xbc,
0 x0b,
0 x00,
0 xcc},
{
0 xbc,
0 x0c,
0 x00,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x05,
0 x01,
0 x78,
0 xbb},
{
0 x06,
0 x00,
0 x11,
0 xbb},
{
0 x07,
0 x01,
0 x42,
0 xbb},
{
0 x08,
0 x00,
0 x11,
0 xbb},
{
0 x20,
0 x01,
0 x03,
0 xbb},
/* h/v flip */
{
0 x21,
0 x80,
0 x00,
0 xbb},
{
0 x22,
0 x0d,
0 x0f,
0 xbb},
{
0 x24,
0 x80,
0 x00,
0 xbb},
{
0 x59,
0 x00,
0 xff,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x39,
0 x03,
0 xca,
0 xbb},
{
0 x3a,
0 x06,
0 x80,
0 xbb},
{
0 x3b,
0 x01,
0 x52,
0 xbb},
{
0 x3c,
0 x05,
0 x40,
0 xbb},
{
0 x57,
0 x01,
0 x9c,
0 xbb},
{
0 x58,
0 x01,
0 xee,
0 xbb},
{
0 x59,
0 x00,
0 xf0,
0 xbb},
{
0 x5a,
0 x01,
0 x20,
0 xbb},
{
0 x5c,
0 x1d,
0 x17,
0 xbb},
{
0 x5d,
0 x22,
0 x1c,
0 xbb},
{
0 x64,
0 x1e,
0 x1c,
0 xbb},
{
0 x5b,
0 x00,
0 x00,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x22,
0 xa0,
0 x78,
0 xbb},
{
0 x23,
0 xa0,
0 x78,
0 xbb},
{
0 x24,
0 x7f,
0 x00,
0 xbb},
{
0 x28,
0 xea,
0 x02,
0 xbb},
{
0 x29,
0 x86,
0 x7a,
0 xbb},
{
0 x5e,
0 x52,
0 x4c,
0 xbb},
{
0 x5f,
0 x20,
0 x24,
0 xbb},
{
0 x60,
0 x00,
0 x02,
0 xbb},
{
0 x02,
0 x00,
0 xee,
0 xbb},
{
0 x03,
0 x39,
0 x23,
0 xbb},
{
0 x04,
0 x07,
0 x24,
0 xbb},
{
0 x09,
0 x00,
0 xc0,
0 xbb},
{
0 x0a,
0 x00,
0 x79,
0 xbb},
{
0 x0b,
0 x00,
0 x04,
0 xbb},
{
0 x0c,
0 x00,
0 x5c,
0 xbb},
{
0 x0d,
0 x00,
0 xd9,
0 xbb},
{
0 x0e,
0 x00,
0 x53,
0 xbb},
{
0 x0f,
0 x00,
0 x21,
0 xbb},
{
0 x10,
0 x00,
0 xa4,
0 xbb},
{
0 x11,
0 x00,
0 xe5,
0 xbb},
{
0 x15,
0 x00,
0 x00,
0 xbb},
{
0 x16,
0 x00,
0 x00,
0 xbb},
{
0 x17,
0 x00,
0 x00,
0 xbb},
{
0 x18,
0 x00,
0 x00,
0 xbb},
{
0 x19,
0 x00,
0 x00,
0 xbb},
{
0 x1a,
0 x00,
0 x00,
0 xbb},
{
0 x1b,
0 x00,
0 x00,
0 xbb},
{
0 x1c,
0 x00,
0 x00,
0 xbb},
{
0 x1d,
0 x00,
0 x00,
0 xbb},
{
0 x1e,
0 x00,
0 x00,
0 xbb},
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x06,
0 xe0,
0 x0e,
0 xbb},
{
0 x06,
0 x60,
0 x0e,
0 xbb},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{}
};
static const u8 mi1320_soc_InitSXGA[][
4 ] = {
{
0 xb3,
0 x01,
0 x01,
0 xcc},
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 x00,
0 x00,
0 x30,
0 xdd},
{
0 xb3,
0 x00,
0 x64,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x34,
0 x02,
0 xcc},
{
0 xb3,
0 x35,
0 xc8,
0 xcc},
{
0 xb3,
0 x02,
0 x00,
0 xcc},
{
0 xb3,
0 x03,
0 x0a,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x04,
0 xcc},
{
0 xb3,
0 x23,
0 x00,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x04,
0 xcc},
{
0 xb3,
0 x17,
0 xff,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xbc,
0 x00,
0 x71,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x00,
0 x00,
0 x30,
0 xdd},
{
0 xc8,
0 x9f,
0 x0b,
0 xbb},
{
0 x00,
0 x00,
0 x20,
0 xdd},
{
0 x5b,
0 x00,
0 x01,
0 xbb},
{
0 x00,
0 x00,
0 x20,
0 xdd},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x00,
0 x00,
0 x30,
0 xdd},
{
0 x20,
0 x01,
0 x03,
0 xbb},
/* h/v flip */
{
0 x00,
0 x00,
0 x20,
0 xdd},
{
0 xbf,
0 xc0,
0 x26,
0 xcc},
{
0 xbf,
0 xc1,
0 x02,
0 xcc},
{
0 xbf,
0 xcc,
0 x04,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x05,
0 x01,
0 x78,
0 xbb},
{
0 x06,
0 x00,
0 x11,
0 xbb},
{
0 x07,
0 x01,
0 x42,
0 xbb},
{
0 x08,
0 x00,
0 x11,
0 xbb},
{
0 x20,
0 x01,
0 x03,
0 xbb},
/* h/v flip */
{
0 x21,
0 x80,
0 x00,
0 xbb},
{
0 x22,
0 x0d,
0 x0f,
0 xbb},
{
0 x24,
0 x80,
0 x00,
0 xbb},
{
0 x59,
0 x00,
0 xff,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x39,
0 x03,
0 xca,
0 xbb},
{
0 x3a,
0 x06,
0 x80,
0 xbb},
{
0 x3b,
0 x01,
0 x52,
0 xbb},
{
0 x3c,
0 x05,
0 x40,
0 xbb},
{
0 x57,
0 x01,
0 x9c,
0 xbb},
{
0 x58,
0 x01,
0 xee,
0 xbb},
{
0 x59,
0 x00,
0 xf0,
0 xbb},
{
0 x5a,
0 x01,
0 x20,
0 xbb},
{
0 x5c,
0 x1d,
0 x17,
0 xbb},
{
0 x5d,
0 x22,
0 x1c,
0 xbb},
{
0 x64,
0 x1e,
0 x1c,
0 xbb},
{
0 x5b,
0 x00,
0 x00,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x22,
0 xa0,
0 x78,
0 xbb},
{
0 x23,
0 xa0,
0 x78,
0 xbb},
{
0 x24,
0 x7f,
0 x00,
0 xbb},
{
0 x28,
0 xea,
0 x02,
0 xbb},
{
0 x29,
0 x86,
0 x7a,
0 xbb},
{
0 x5e,
0 x52,
0 x4c,
0 xbb},
{
0 x5f,
0 x20,
0 x24,
0 xbb},
{
0 x60,
0 x00,
0 x02,
0 xbb},
{
0 x02,
0 x00,
0 xee,
0 xbb},
{
0 x03,
0 x39,
0 x23,
0 xbb},
{
0 x04,
0 x07,
0 x24,
0 xbb},
{
0 x09,
0 x00,
0 xc0,
0 xbb},
{
0 x0a,
0 x00,
0 x79,
0 xbb},
{
0 x0b,
0 x00,
0 x04,
0 xbb},
{
0 x0c,
0 x00,
0 x5c,
0 xbb},
{
0 x0d,
0 x00,
0 xd9,
0 xbb},
{
0 x0e,
0 x00,
0 x53,
0 xbb},
{
0 x0f,
0 x00,
0 x21,
0 xbb},
{
0 x10,
0 x00,
0 xa4,
0 xbb},
{
0 x11,
0 x00,
0 xe5,
0 xbb},
{
0 x15,
0 x00,
0 x00,
0 xbb},
{
0 x16,
0 x00,
0 x00,
0 xbb},
{
0 x17,
0 x00,
0 x00,
0 xbb},
{
0 x18,
0 x00,
0 x00,
0 xbb},
{
0 x19,
0 x00,
0 x00,
0 xbb},
{
0 x1a,
0 x00,
0 x00,
0 xbb},
{
0 x1b,
0 x00,
0 x00,
0 xbb},
{
0 x1c,
0 x00,
0 x00,
0 xbb},
{
0 x1d,
0 x00,
0 x00,
0 xbb},
{
0 x1e,
0 x00,
0 x00,
0 xbb},
{
0 xf0,
0 x00,
0 x01,
0 xbb},
{
0 x06,
0 xe0,
0 x0e,
0 xbb},
{
0 x06,
0 x60,
0 x0e,
0 xbb},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xf0,
0 x00,
0 x00,
0 xbb},
{
0 x05,
0 x01,
0 x13,
0 xbb},
{
0 x06,
0 x00,
0 x11,
0 xbb},
{
0 x07,
0 x00,
0 x85,
0 xbb},
{
0 x08,
0 x00,
0 x27,
0 xbb},
{
0 x20,
0 x01,
0 x03,
0 xbb},
/* h/v flip */
{
0 x21,
0 x80,
0 x00,
0 xbb},
{
0 x22,
0 x0d,
0 x0f,
0 xbb},
{
0 x24,
0 x80,
0 x00,
0 xbb},
{
0 x59,
0 x00,
0 xff,
0 xbb},
{
0 xf0,
0 x00,
0 x02,
0 xbb},
{
0 x39,
0 x03,
0 x0d,
0 xbb},
{
0 x3a,
0 x06,
0 x1b,
0 xbb},
{
0 x3b,
0 x00,
0 x95,
0 xbb},
{
0 x3c,
0 x04,
0 xdb,
0 xbb},
{
0 x57,
0 x02,
0 x00,
0 xbb},
{
0 x58,
0 x02,
0 x66,
0 xbb},
{
0 x59,
0 x00,
0 xff,
0 xbb},
{
0 x5a,
0 x01,
0 x33,
0 xbb},
{
0 x5c,
0 x12,
0 x0d,
0 xbb},
{
0 x5d,
0 x16,
0 x11,
0 xbb},
{
0 x64,
0 x5e,
0 x1c,
0 xbb},
{}
};
static const u8 po3130_gamma[
17 ] = {
0 x00,
0 x13,
0 x38,
0 x59,
0 x79,
0 x92,
0 xa7,
0 xb9,
0 xc8,
0 xd4,
0 xdf,
0 xe7,
0 xee,
0 xf4,
0 xf9,
0 xfc,
0 xff
};
static const u8 po3130_matrix[
9 ] = {
0 x5f,
0 xec,
0 xf5,
0 xf1,
0 x5a,
0 xf5,
0 xf1,
0 xec,
0 x63
};
static const u8 po3130_initVGA_data[][
4 ] = {
{
0 xb0,
0 x4d,
0 x00,
0 xcc}, {
0 xb3,
0 x01,
0 x01,
0 xcc},
{
0 x00,
0 x00,
0 x50,
0 xdd}, {
0 xb0,
0 x03,
0 x01,
0 xcc},
{
0 xb3,
0 x00,
0 x04,
0 xcc}, {
0 xb3,
0 x00,
0 x24,
0 xcc},
{
0 xb3,
0 x00,
0 x25,
0 xcc}, {
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc}, {
0 xb3,
0 x05,
0 x00,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc}, {
0 xb3,
0 x03,
0 x1a,
0 xcc},
{
0 xb3,
0 x04,
0 x15,
0 xcc}, {
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc}, {
0 xb3,
0 x22,
0 x01,
0 xcc},
{
0 xb3,
0 x23,
0 xe8,
0 xcc}, {
0 xb8,
0 x08,
0 xe8,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc}, {
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc}, {
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x34,
0 x01,
0 xcc},
{
0 xb3,
0 x35,
0 xf6,
0 xcc},
/* i2c add: 76 */
{
0 xb3,
0 x00,
0 x27,
0 xcc}, {
0 xbc,
0 x00,
0 x71,
0 xcc},
{
0 xb8,
0 x00,
0 x21,
0 xcc}, {
0 xb8,
0 x27,
0 x20,
0 xcc},
{
0 xb8,
0 x01,
0 x79,
0 xcc}, {
0 xb8,
0 x81,
0 x09,
0 xcc},
{
0 xb8,
0 x2c,
0 x50,
0 xcc}, {
0 xb8,
0 x2d,
0 xf8,
0 xcc},
{
0 xb8,
0 x2e,
0 xf8,
0 xcc}, {
0 xb8,
0 x2f,
0 xf8,
0 xcc},
{
0 xb8,
0 x30,
0 x50,
0 xcc}, {
0 xb8,
0 x31,
0 xf8,
0 xcc},
{
0 xb8,
0 x32,
0 xf8,
0 xcc}, {
0 xb8,
0 x33,
0 xf8,
0 xcc},
{
0 xb8,
0 x34,
0 x50,
0 xcc}, {
0 xb8,
0 x35,
0 x00,
0 xcc},
{
0 xb8,
0 x36,
0 x00,
0 xcc}, {
0 xb8,
0 x37,
0 x00,
0 xcc},
{
0 x00,
0 x1e,
0 xc6,
0 xaa}, {
0 x00,
0 x20,
0 x44,
0 xaa},
{
0 x00,
0 xad,
0 x02,
0 xaa}, {
0 x00,
0 xae,
0 x2c,
0 xaa},
{
0 x00,
0 x12,
0 x08,
0 xaa}, {
0 x00,
0 x17,
0 x41,
0 xaa},
{
0 x00,
0 x19,
0 x41,
0 xaa}, {
0 x00,
0 x1e,
0 x06,
0 xaa},
{
0 x00,
0 x21,
0 x00,
0 xaa}, {
0 x00,
0 x36,
0 xc0,
0 xaa},
{
0 x00,
0 x37,
0 xc8,
0 xaa}, {
0 x00,
0 x3b,
0 x36,
0 xaa},
{
0 x00,
0 x4b,
0 xfe,
0 xaa}, {
0 x00,
0 x51,
0 x1c,
0 xaa},
{
0 x00,
0 x52,
0 x01,
0 xaa}, {
0 x00,
0 x55,
0 x0a,
0 xaa},
{
0 x00,
0 x59,
0 x02,
0 xaa}, {
0 x00,
0 x5a,
0 x04,
0 xaa},
{
0 x00,
0 x5c,
0 x10,
0 xaa}, {
0 x00,
0 x5d,
0 x10,
0 xaa},
{
0 x00,
0 x5e,
0 x10,
0 xaa}, {
0 x00,
0 x5f,
0 x10,
0 xaa},
{
0 x00,
0 x61,
0 x00,
0 xaa}, {
0 x00,
0 x62,
0 x18,
0 xaa},
{
0 x00,
0 x63,
0 x30,
0 xaa}, {
0 x00,
0 x70,
0 x68,
0 xaa},
{
0 x00,
0 x80,
0 x71,
0 xaa}, {
0 x00,
0 x81,
0 x08,
0 xaa},
{
0 x00,
0 x82,
0 x00,
0 xaa}, {
0 x00,
0 x83,
0 x55,
0 xaa},
{
0 x00,
0 x84,
0 x06,
0 xaa}, {
0 x00,
0 x85,
0 x06,
0 xaa},
{
0 x00,
0 x86,
0 x13,
0 xaa}, {
0 x00,
0 x87,
0 x18,
0 xaa},
{
0 x00,
0 xaa,
0 x3f,
0 xaa}, {
0 x00,
0 xab,
0 x44,
0 xaa},
{
0 x00,
0 xb0,
0 x68,
0 xaa}, {
0 x00,
0 xb5,
0 x10,
0 xaa},
{
0 x00,
0 xb8,
0 x20,
0 xaa}, {
0 x00,
0 xb9,
0 xa0,
0 xaa},
{
0 x00,
0 xbc,
0 x04,
0 xaa}, {
0 x00,
0 x8b,
0 x40,
0 xaa},
{
0 x00,
0 x8c,
0 x91,
0 xaa}, {
0 x00,
0 x8d,
0 x8f,
0 xaa},
{
0 x00,
0 x8e,
0 x91,
0 xaa}, {
0 x00,
0 x8f,
0 x43,
0 xaa},
{
0 x00,
0 x90,
0 x92,
0 xaa}, {
0 x00,
0 x91,
0 x89,
0 xaa},
{
0 x00,
0 x92,
0 x9d,
0 xaa}, {
0 x00,
0 x93,
0 x46,
0 xaa},
{
0 x00,
0 xd6,
0 x22,
0 xaa}, {
0 x00,
0 x73,
0 x00,
0 xaa},
{
0 x00,
0 x74,
0 x10,
0 xaa}, {
0 x00,
0 x75,
0 x20,
0 xaa},
{
0 x00,
0 x76,
0 x2b,
0 xaa}, {
0 x00,
0 x77,
0 x36,
0 xaa},
{
0 x00,
0 x78,
0 x49,
0 xaa}, {
0 x00,
0 x79,
0 x5a,
0 xaa},
{
0 x00,
0 x7a,
0 x7f,
0 xaa}, {
0 x00,
0 x7b,
0 x9b,
0 xaa},
{
0 x00,
0 x7c,
0 xba,
0 xaa}, {
0 x00,
0 x7d,
0 xd4,
0 xaa},
{
0 x00,
0 x7e,
0 xea,
0 xaa}, {
0 x00,
0 xd6,
0 x62,
0 xaa},
{
0 x00,
0 x73,
0 x00,
0 xaa}, {
0 x00,
0 x74,
0 x10,
0 xaa},
{
0 x00,
0 x75,
0 x20,
0 xaa}, {
0 x00,
0 x76,
0 x2b,
0 xaa},
{
0 x00,
0 x77,
0 x36,
0 xaa}, {
0 x00,
0 x78,
0 x49,
0 xaa},
{
0 x00,
0 x79,
0 x5a,
0 xaa}, {
0 x00,
0 x7a,
0 x7f,
0 xaa},
{
0 x00,
0 x7b,
0 x9b,
0 xaa}, {
0 x00,
0 x7c,
0 xba,
0 xaa},
{
0 x00,
0 x7d,
0 xd4,
0 xaa}, {
0 x00,
0 x7e,
0 xea,
0 xaa},
{
0 x00,
0 xd6,
0 xa2,
0 xaa}, {
0 x00,
0 x73,
0 x00,
0 xaa},
{
0 x00,
0 x74,
0 x10,
0 xaa}, {
0 x00,
0 x75,
0 x20,
0 xaa},
{
0 x00,
0 x76,
0 x2b,
0 xaa}, {
0 x00,
0 x77,
0 x36,
0 xaa},
{
0 x00,
0 x78,
0 x49,
0 xaa}, {
0 x00,
0 x79,
0 x5a,
0 xaa},
{
0 x00,
0 x7a,
0 x7f,
0 xaa}, {
0 x00,
0 x7b,
0 x9b,
0 xaa},
{
0 x00,
0 x7c,
0 xba,
0 xaa}, {
0 x00,
0 x7d,
0 xd4,
0 xaa},
{
0 x00,
0 x7e,
0 xea,
0 xaa},
{
0 x00,
0 x4c,
0 x07,
0 xaa},
{
0 x00,
0 x4b,
0 xe0,
0 xaa}, {
0 x00,
0 x4e,
0 x77,
0 xaa},
{
0 x00,
0 x59,
0 x02,
0 xaa}, {
0 x00,
0 x4d,
0 x0a,
0 xaa},
/* {0x00, 0xd1, 0x00, 0xaa}, {0x00, 0x20, 0xc4, 0xaa},
{0xb8, 0x8e, 0x00, 0xcc}, {0xb8, 0x8f, 0xff, 0xcc}, */
{
0 x00,
0 xd1,
0 x3c,
0 xaa}, {
0 x00,
0 x20,
0 xc4,
0 xaa},
{
0 xb8,
0 x8e,
0 x00,
0 xcc}, {
0 xb8,
0 x8f,
0 xff,
0 xcc},
{
0 xb8,
0 xfe,
0 x00,
0 xcc}, {
0 xb8,
0 xff,
0 x28,
0 xcc},
{
0 xb9,
0 x00,
0 x28,
0 xcc}, {
0 xb9,
0 x01,
0 x28,
0 xcc},
{
0 xb9,
0 x02,
0 x28,
0 xcc}, {
0 xb9,
0 x03,
0 x00,
0 xcc},
{
0 xb9,
0 x04,
0 x00,
0 xcc}, {
0 xb9,
0 x05,
0 x3c,
0 xcc},
{
0 xb9,
0 x06,
0 x3c,
0 xcc}, {
0 xb9,
0 x07,
0 x3c,
0 xcc},
{
0 xb9,
0 x08,
0 x3c,
0 xcc}, {
0 x00,
0 x05,
0 x00,
0 xaa},
{
0 xb3,
0 x5c,
0 x00,
0 xcc}, {
0 xb3,
0 x01,
0 x41,
0 xcc},
{}
};
static const u8 po3130_rundata[][
4 ] = {
{
0 x00,
0 x47,
0 x45,
0 xaa}, {
0 x00,
0 x48,
0 x9b,
0 xaa},
{
0 x00,
0 x49,
0 x3a,
0 xaa}, {
0 x00,
0 x4a,
0 x01,
0 xaa},
{
0 x00,
0 x44,
0 x40,
0 xaa},
/* {0x00, 0xd5, 0x7c, 0xaa}, */
{
0 x00,
0 xad,
0 x04,
0 xaa}, {
0 x00,
0 xae,
0 x00,
0 xaa},
{
0 x00,
0 xb0,
0 x78,
0 xaa}, {
0 x00,
0 x98,
0 x02,
0 xaa},
{
0 x00,
0 x94,
0 x25,
0 xaa}, {
0 x00,
0 x95,
0 x25,
0 xaa},
{
0 x00,
0 x59,
0 x68,
0 xaa}, {
0 x00,
0 x44,
0 x20,
0 xaa},
{
0 x00,
0 x17,
0 x50,
0 xaa}, {
0 x00,
0 x19,
0 x50,
0 xaa},
{
0 x00,
0 xd1,
0 x3c,
0 xaa}, {
0 x00,
0 xd1,
0 x3c,
0 xaa},
{
0 x00,
0 x1e,
0 x06,
0 xaa}, {
0 x00,
0 x1e,
0 x06,
0 xaa},
{}
};
static const u8 po3130_initQVGA_data[][
4 ] = {
{
0 xb0,
0 x4d,
0 x00,
0 xcc}, {
0 xb3,
0 x01,
0 x01,
0 xcc},
{
0 x00,
0 x00,
0 x50,
0 xdd}, {
0 xb0,
0 x03,
0 x09,
0 xcc},
{
0 xb3,
0 x00,
0 x04,
0 xcc}, {
0 xb3,
0 x00,
0 x24,
0 xcc},
{
0 xb3,
0 x00,
0 x25,
0 xcc}, {
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc}, {
0 xb3,
0 x05,
0 x00,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc}, {
0 xb3,
0 x03,
0 x1a,
0 xcc},
{
0 xb3,
0 x04,
0 x15,
0 xcc}, {
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc}, {
0 xb3,
0 x22,
0 x01,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc}, {
0 xb8,
0 x08,
0 xe0,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc}, {
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc}, {
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x34,
0 x01,
0 xcc}, {
0 xb3,
0 x35,
0 xf6,
0 xcc},
{
0 xb3,
0 x00,
0 x27,
0 xcc}, {
0 xbc,
0 x00,
0 xd1,
0 xcc},
{
0 xb8,
0 x00,
0 x21,
0 xcc}, {
0 xb8,
0 x27,
0 x20,
0 xcc},
{
0 xb8,
0 x01,
0 x79,
0 xcc}, {
0 xb8,
0 x81,
0 x09,
0 xcc},
{
0 xb8,
0 x2c,
0 x50,
0 xcc}, {
0 xb8,
0 x2d,
0 xf8,
0 xcc},
{
0 xb8,
0 x2e,
0 xf8,
0 xcc}, {
0 xb8,
0 x2f,
0 xf8,
0 xcc},
{
0 xb8,
0 x30,
0 x50,
0 xcc}, {
0 xb8,
0 x31,
0 xf8,
0 xcc},
{
0 xb8,
0 x32,
0 xf8,
0 xcc}, {
0 xb8,
0 x33,
0 xf8,
0 xcc},
{
0 xb8,
0 x34,
0 x50,
0 xcc}, {
0 xb8,
0 x35,
0 x00,
0 xcc},
{
0 xb8,
0 x36,
0 x00,
0 xcc}, {
0 xb8,
0 x37,
0 x00,
0 xcc},
{
0 x00,
0 x1e,
0 xc6,
0 xaa}, {
0 x00,
0 x20,
0 x44,
0 xaa},
{
0 x00,
0 xad,
0 x02,
0 xaa}, {
0 x00,
0 xae,
0 x2c,
0 xaa},
{
0 x00,
0 x12,
0 x08,
0 xaa}, {
0 x00,
0 x17,
0 x41,
0 xaa},
{
0 x00,
0 x19,
0 x41,
0 xaa}, {
0 x00,
0 x1e,
0 x06,
0 xaa},
{
0 x00,
0 x21,
0 x00,
0 xaa}, {
0 x00,
0 x36,
0 xc0,
0 xaa},
{
0 x00,
0 x37,
0 xc8,
0 xaa}, {
0 x00,
0 x3b,
0 x36,
0 xaa},
{
0 x00,
0 x4b,
0 xfe,
0 xaa}, {
0 x00,
0 x51,
0 x1c,
0 xaa},
{
0 x00,
0 x52,
0 x01,
0 xaa}, {
0 x00,
0 x55,
0 x0a,
0 xaa},
{
0 x00,
0 x59,
0 x6f,
0 xaa}, {
0 x00,
0 x5a,
0 x04,
0 xaa},
{
0 x00,
0 x5c,
0 x10,
0 xaa}, {
0 x00,
0 x5d,
0 x10,
0 xaa},
{
0 x00,
0 x5e,
0 x10,
0 xaa}, {
0 x00,
0 x5f,
0 x10,
0 xaa},
{
0 x00,
0 x61,
0 x00,
0 xaa}, {
0 x00,
0 x62,
0 x18,
0 xaa},
{
0 x00,
0 x63,
0 x30,
0 xaa}, {
0 x00,
0 x70,
0 x68,
0 xaa},
{
0 x00,
0 x80,
0 x71,
0 xaa}, {
0 x00,
0 x81,
0 x08,
0 xaa},
{
0 x00,
0 x82,
0 x00,
0 xaa}, {
0 x00,
0 x83,
0 x55,
0 xaa},
{
0 x00,
0 x84,
0 x06,
0 xaa}, {
0 x00,
0 x85,
0 x06,
0 xaa},
{
0 x00,
0 x86,
0 x13,
0 xaa}, {
0 x00,
0 x87,
0 x18,
0 xaa},
{
0 x00,
0 xaa,
0 x3f,
0 xaa}, {
0 x00,
0 xab,
0 x44,
0 xaa},
{
0 x00,
0 xb0,
0 x68,
0 xaa}, {
0 x00,
0 xb5,
0 x10,
0 xaa},
{
0 x00,
0 xb8,
0 x20,
0 xaa}, {
0 x00,
0 xb9,
0 xa0,
0 xaa},
{
0 x00,
0 xbc,
0 x04,
0 xaa}, {
0 x00,
0 x8b,
0 x40,
0 xaa},
{
0 x00,
0 x8c,
0 x91,
0 xaa}, {
0 x00,
0 x8d,
0 x8f,
0 xaa},
{
0 x00,
0 x8e,
0 x91,
0 xaa}, {
0 x00,
0 x8f,
0 x43,
0 xaa},
{
0 x00,
0 x90,
0 x92,
0 xaa}, {
0 x00,
0 x91,
0 x89,
0 xaa},
{
0 x00,
0 x92,
0 x9d,
0 xaa}, {
0 x00,
0 x93,
0 x46,
0 xaa},
{
0 x00,
0 xd6,
0 x22,
0 xaa}, {
0 x00,
0 x73,
0 x00,
0 xaa},
{
0 x00,
0 x74,
0 x10,
0 xaa}, {
0 x00,
0 x75,
0 x20,
0 xaa},
{
0 x00,
0 x76,
0 x2b,
0 xaa}, {
0 x00,
0 x77,
0 x36,
0 xaa},
{
0 x00,
0 x78,
0 x49,
0 xaa}, {
0 x00,
0 x79,
0 x5a,
0 xaa},
{
0 x00,
0 x7a,
0 x7f,
0 xaa}, {
0 x00,
0 x7b,
0 x9b,
0 xaa},
{
0 x00,
0 x7c,
0 xba,
0 xaa}, {
0 x00,
0 x7d,
0 xd4,
0 xaa},
{
0 x00,
0 x7e,
0 xea,
0 xaa}, {
0 x00,
0 xd6,
0 x62,
0 xaa},
{
0 x00,
0 x73,
0 x00,
0 xaa}, {
0 x00,
0 x74,
0 x10,
0 xaa},
{
0 x00,
0 x75,
0 x20,
0 xaa}, {
0 x00,
0 x76,
0 x2b,
0 xaa},
{
0 x00,
0 x77,
0 x36,
0 xaa}, {
0 x00,
0 x78,
0 x49,
0 xaa},
{
0 x00,
0 x79,
0 x5a,
0 xaa}, {
0 x00,
0 x7a,
0 x7f,
0 xaa},
{
0 x00,
0 x7b,
0 x9b,
0 xaa}, {
0 x00,
0 x7c,
0 xba,
0 xaa},
{
0 x00,
0 x7d,
0 xd4,
0 xaa}, {
0 x00,
0 x7e,
0 xea,
0 xaa},
{
0 x00,
0 xd6,
0 xa2,
0 xaa}, {
0 x00,
0 x73,
0 x00,
0 xaa},
{
0 x00,
0 x74,
0 x10,
0 xaa}, {
0 x00,
0 x75,
0 x20,
0 xaa},
{
0 x00,
0 x76,
0 x2b,
0 xaa}, {
0 x00,
0 x77,
0 x36,
0 xaa},
{
0 x00,
0 x78,
0 x49,
0 xaa}, {
0 x00,
0 x79,
0 x5a,
0 xaa},
{
0 x00,
0 x7a,
0 x7f,
0 xaa}, {
0 x00,
0 x7b,
0 x9b,
0 xaa},
{
0 x00,
0 x7c,
0 xba,
0 xaa}, {
0 x00,
0 x7d,
0 xd4,
0 xaa},
{
0 x00,
0 x7e,
0 xea,
0 xaa}, {
0 x00,
0 x4c,
0 x07,
0 xaa},
{
0 x00,
0 x4b,
0 xe0,
0 xaa}, {
0 x00,
0 x4e,
0 x77,
0 xaa},
{
0 x00,
0 x59,
0 x66,
0 xaa}, {
0 x00,
0 x4d,
0 x0a,
0 xaa},
{
0 x00,
0 xd1,
0 x00,
0 xaa}, {
0 x00,
0 x20,
0 xc4,
0 xaa},
{
0 xb8,
0 x8e,
0 x00,
0 xcc}, {
0 xb8,
0 x8f,
0 xff,
0 xcc},
{
0 xb8,
0 xfe,
0 x00,
0 xcc}, {
0 xb8,
0 xff,
0 x28,
0 xcc},
{
0 xb9,
0 x00,
0 x28,
0 xcc}, {
0 xb9,
0 x01,
0 x28,
0 xcc},
{
0 xb9,
0 x02,
0 x28,
0 xcc}, {
0 xb9,
0 x03,
0 x00,
0 xcc},
{
0 xb9,
0 x04,
0 x00,
0 xcc}, {
0 xb9,
0 x05,
0 x3c,
0 xcc},
{
0 xb9,
0 x06,
0 x3c,
0 xcc}, {
0 xb9,
0 x07,
0 x3c,
0 xcc},
{
0 xb9,
0 x08,
0 x3c,
0 xcc}, {
0 xbc,
0 x02,
0 x18,
0 xcc},
{
0 xbc,
0 x03,
0 x50,
0 xcc}, {
0 xbc,
0 x04,
0 x18,
0 xcc},
{
0 xbc,
0 x05,
0 x00,
0 xcc}, {
0 xbc,
0 x06,
0 x00,
0 xcc},
{
0 xbc,
0 x08,
0 x30,
0 xcc}, {
0 xbc,
0 x09,
0 x40,
0 xcc},
{
0 xbc,
0 x0a,
0 x10,
0 xcc}, {
0 xbc,
0 x0b,
0 x00,
0 xcc},
{
0 xbc,
0 x0c,
0 x00,
0 xcc}, {
0 x00,
0 x05,
0 x00,
0 xaa},
{
0 xb3,
0 x5c,
0 x00,
0 xcc}, {
0 xb3,
0 x01,
0 x41,
0 xcc},
{}
};
static const u8 hv7131r_gamma[
17 ] = {
0 x00,
0 x13,
0 x38,
0 x59,
0 x79,
0 x92,
0 xa7,
0 xb9,
0 xc8,
0 xd4,
0 xdf,
0 xe7,
0 xee,
0 xf4,
0 xf9,
0 xfc,
0 xff
};
static const u8 hv7131r_matrix[
9 ] = {
0 x5f,
0 xec,
0 xf5,
0 xf1,
0 x5a,
0 xf5,
0 xf1,
0 xec,
0 x63
};
static const u8 hv7131r_initVGA_data[][
4 ] = {
{
0 xb3,
0 x01,
0 x01,
0 xcc},
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 x00,
0 x00,
0 x20,
0 xdd},
{
0 xb3,
0 x00,
0 x24,
0 xcc},
{
0 xb3,
0 x00,
0 x25,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x03,
0 xcc},
{
0 xb3,
0 x01,
0 x45,
0 xcc},
{
0 xb3,
0 x03,
0 x0b,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x01,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x02,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc},
{
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x34,
0 x01,
0 xcc},
{
0 xb3,
0 x35,
0 x91,
0 xcc},
/* i2c add: 11 */
{
0 xb3,
0 x00,
0 x27,
0 xcc},
{
0 xbc,
0 x00,
0 x73,
0 xcc},
{
0 xb8,
0 x00,
0 x23,
0 xcc},
{
0 xb8,
0 x2c,
0 x50,
0 xcc},
{
0 xb8,
0 x2d,
0 xf8,
0 xcc},
{
0 xb8,
0 x2e,
0 xf8,
0 xcc},
{
0 xb8,
0 x2f,
0 xf8,
0 xcc},
{
0 xb8,
0 x30,
0 x50,
0 xcc},
{
0 xb8,
0 x31,
0 xf8,
0 xcc},
{
0 xb8,
0 x32,
0 xf8,
0 xcc},
{
0 xb8,
0 x33,
0 xf8,
0 xcc},
{
0 xb8,
0 x34,
0 x58,
0 xcc},
{
0 xb8,
0 x35,
0 x00,
0 xcc},
{
0 xb8,
0 x36,
0 x00,
0 xcc},
{
0 xb8,
0 x37,
0 x00,
0 xcc},
{
0 xb8,
0 x27,
0 x20,
0 xcc},
{
0 xb8,
0 x01,
0 x7d,
0 xcc},
{
0 xb8,
0 x81,
0 x09,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 xb8,
0 x8e,
0 x00,
0 xcc},
{
0 xb8,
0 x8f,
0 xff,
0 xcc},
{
0 x00,
0 x01,
0 x0c,
0 xaa},
{
0 x00,
0 x14,
0 x01,
0 xaa},
{
0 x00,
0 x15,
0 xe6,
0 xaa},
{
0 x00,
0 x16,
0 x02,
0 xaa},
{
0 x00,
0 x17,
0 x86,
0 xaa},
{
0 x00,
0 x23,
0 x00,
0 xaa},
{
0 x00,
0 x25,
0 x03,
0 xaa},
{
0 x00,
0 x26,
0 xa9,
0 xaa},
{
0 x00,
0 x27,
0 x80,
0 xaa},
{
0 x00,
0 x30,
0 x18,
0 xaa},
{
0 xb6,
0 x00,
0 x00,
0 xcc},
{
0 xb6,
0 x03,
0 x02,
0 xcc},
{
0 xb6,
0 x02,
0 x80,
0 xcc},
{
0 xb6,
0 x05,
0 x01,
0 xcc},
{
0 xb6,
0 x04,
0 xe0,
0 xcc},
{
0 xb6,
0 x12,
0 x78,
0 xcc},
{
0 xb6,
0 x18,
0 x02,
0 xcc},
{
0 xb6,
0 x17,
0 x58,
0 xcc},
{
0 xb6,
0 x16,
0 x00,
0 xcc},
{
0 xb6,
0 x22,
0 x12,
0 xcc},
{
0 xb6,
0 x23,
0 x0b,
0 xcc},
{
0 xb3,
0 x02,
0 x02,
0 xcc},
{
0 xbf,
0 xc0,
0 x39,
0 xcc},
{
0 xbf,
0 xc1,
0 x04,
0 xcc},
{
0 xbf,
0 xcc,
0 x10,
0 xcc},
{
0 xb6,
0 x12,
0 xf8,
0 xcc},
{
0 xb6,
0 x13,
0 x13,
0 xcc},
{
0 xb9,
0 x12,
0 x00,
0 xcc},
{
0 xb9,
0 x13,
0 x0a,
0 xcc},
{
0 xb9,
0 x14,
0 x0a,
0 xcc},
{
0 xb9,
0 x15,
0 x0a,
0 xcc},
{
0 xb9,
0 x16,
0 x0a,
0 xcc},
{
0 xb8,
0 x0c,
0 x20,
0 xcc},
{
0 xb8,
0 x0d,
0 x70,
0 xcc},
{
0 xb9,
0 x18,
0 x00,
0 xcc},
{
0 xb9,
0 x19,
0 x0f,
0 xcc},
{
0 xb9,
0 x1a,
0 x0f,
0 xcc},
{
0 xb9,
0 x1b,
0 x0f,
0 xcc},
{
0 xb9,
0 x1c,
0 x0f,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{}
};
static const u8 hv7131r_initQVGA_data[][
4 ] = {
{
0 xb3,
0 x01,
0 x01,
0 xcc},
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 x00,
0 x00,
0 x20,
0 xdd},
{
0 xb3,
0 x00,
0 x24,
0 xcc},
{
0 xb3,
0 x00,
0 x25,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x03,
0 xcc},
{
0 xb3,
0 x01,
0 x45,
0 xcc},
{
0 xb3,
0 x03,
0 x0b,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x01,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x02,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc},
{
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x34,
0 x01,
0 xcc},
{
0 xb3,
0 x35,
0 x91,
0 xcc},
{
0 xb3,
0 x00,
0 x27,
0 xcc},
{
0 xbc,
0 x00,
0 xd3,
0 xcc},
{
0 xb8,
0 x00,
0 x23,
0 xcc},
{
0 xb8,
0 x2c,
0 x50,
0 xcc},
{
0 xb8,
0 x2d,
0 xf8,
0 xcc},
{
0 xb8,
0 x2e,
0 xf8,
0 xcc},
{
0 xb8,
0 x2f,
0 xf8,
0 xcc},
{
0 xb8,
0 x30,
0 x50,
0 xcc},
{
0 xb8,
0 x31,
0 xf8,
0 xcc},
{
0 xb8,
0 x32,
0 xf8,
0 xcc},
{
0 xb8,
0 x33,
0 xf8,
0 xcc},
{
0 xb8,
0 x34,
0 x58,
0 xcc},
{
0 xb8,
0 x35,
0 x00,
0 xcc},
{
0 xb8,
0 x36,
0 x00,
0 xcc},
{
0 xb8,
0 x37,
0 x00,
0 xcc},
{
0 xb8,
0 x27,
0 x20,
0 xcc},
{
0 xb8,
0 x01,
0 x7d,
0 xcc},
{
0 xb8,
0 x81,
0 x09,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 xb8,
0 x8e,
0 x00,
0 xcc},
{
0 xb8,
0 x8f,
0 xff,
0 xcc},
{
0 x00,
0 x01,
0 x0c,
0 xaa},
{
0 x00,
0 x14,
0 x01,
0 xaa},
{
0 x00,
0 x15,
0 xe6,
0 xaa},
{
0 x00,
0 x16,
0 x02,
0 xaa},
{
0 x00,
0 x17,
0 x86,
0 xaa},
{
0 x00,
0 x23,
0 x00,
0 xaa},
{
0 x00,
0 x25,
0 x03,
0 xaa},
{
0 x00,
0 x26,
0 xa9,
0 xaa},
{
0 x00,
0 x27,
0 x80,
0 xaa},
{
0 x00,
0 x30,
0 x18,
0 xaa},
{
0 xb6,
0 x00,
0 x00,
0 xcc},
{
0 xb6,
0 x03,
0 x01,
0 xcc},
{
0 xb6,
0 x02,
0 x40,
0 xcc},
{
0 xb6,
0 x05,
0 x00,
0 xcc},
{
0 xb6,
0 x04,
0 xf0,
0 xcc},
{
0 xb6,
0 x12,
0 x78,
0 xcc},
{
0 xb6,
0 x18,
0 x00,
0 xcc},
{
0 xb6,
0 x17,
0 x96,
0 xcc},
{
0 xb6,
0 x16,
0 x00,
0 xcc},
{
0 xb6,
0 x22,
0 x12,
0 xcc},
{
0 xb6,
0 x23,
0 x0b,
0 xcc},
{
0 xb3,
0 x02,
0 x02,
0 xcc},
{
0 xbf,
0 xc0,
0 x39,
0 xcc},
{
0 xbf,
0 xc1,
0 x04,
0 xcc},
{
0 xbf,
0 xcc,
0 x10,
0 xcc},
{
0 xbc,
0 x02,
0 x18,
0 xcc},
{
0 xbc,
0 x03,
0 x50,
0 xcc},
{
0 xbc,
0 x04,
0 x18,
0 xcc},
{
0 xbc,
0 x05,
0 x00,
0 xcc},
{
0 xbc,
0 x06,
0 x00,
0 xcc},
{
0 xbc,
0 x08,
0 x30,
0 xcc},
{
0 xbc,
0 x09,
0 x40,
0 xcc},
{
0 xbc,
0 x0a,
0 x10,
0 xcc},
{
0 xbc,
0 x0b,
0 x00,
0 xcc},
{
0 xbc,
0 x0c,
0 x00,
0 xcc},
{
0 xb9,
0 x12,
0 x00,
0 xcc},
{
0 xb9,
0 x13,
0 x0a,
0 xcc},
{
0 xb9,
0 x14,
0 x0a,
0 xcc},
{
0 xb9,
0 x15,
0 x0a,
0 xcc},
{
0 xb9,
0 x16,
0 x0a,
0 xcc},
{
0 xb9,
0 x18,
0 x00,
0 xcc},
{
0 xb9,
0 x19,
0 x0f,
0 xcc},
{
0 xb8,
0 x0c,
0 x20,
0 xcc},
{
0 xb8,
0 x0d,
0 x70,
0 xcc},
{
0 xb9,
0 x1a,
0 x0f,
0 xcc},
{
0 xb9,
0 x1b,
0 x0f,
0 xcc},
{
0 xb9,
0 x1c,
0 x0f,
0 xcc},
{
0 xb6,
0 x12,
0 xf8,
0 xcc},
{
0 xb6,
0 x13,
0 x13,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{}
};
static const u8 ov7660_gamma[
17 ] = {
0 x00,
0 x13,
0 x38,
0 x59,
0 x79,
0 x92,
0 xa7,
0 xb9,
0 xc8,
0 xd4,
0 xdf,
0 xe7,
0 xee,
0 xf4,
0 xf9,
0 xfc,
0 xff
};
static const u8 ov7660_matrix[
9 ] = {
0 x5a,
0 xf0,
0 xf6,
0 xf3,
0 x57,
0 xf6,
0 xf3,
0 xef,
0 x62
};
static const u8 ov7660_initVGA_data[][
4 ] = {
{
0 xb0,
0 x4d,
0 x00,
0 xcc}, {
0 xb3,
0 x01,
0 x01,
0 xcc},
{
0 x00,
0 x00,
0 x50,
0 xdd},
{
0 xb0,
0 x03,
0 x01,
0 xcc},
{
0 xb3,
0 x00,
0 x21,
0 xcc}, {
0 xb3,
0 x00,
0 x26,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x03,
0 xcc},
{
0 xb3,
0 x03,
0 x1f,
0 xcc}, {
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x05,
0 x00,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
/* 0xb315 <-0 href startl */
{
0 xb3,
0 x16,
0 x02,
0 xcc}, {
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc}, {
0 xb3,
0 x1d,
0 x01,
0 xcc},
{
0 xb3,
0 x1f,
0 x02,
0 xcc},
{
0 xb3,
0 x34,
0 x01,
0 xcc},
{
0 xb3,
0 x35,
0 xa1,
0 xcc},
/* i2c add: 21 */
{
0 xb3,
0 x00,
0 x26,
0 xcc},
{
0 xb8,
0 x00,
0 x33,
0 xcc},
/* 13 */
{
0 xb8,
0 x01,
0 x7d,
0 xcc},
{
0 xbc,
0 x00,
0 x73,
0 xcc}, {
0 xb8,
0 x81,
0 x09,
0 xcc},
{
0 xb8,
0 x27,
0 x20,
0 xcc},
{
0 xb8,
0 x8f,
0 x50,
0 xcc},
{
0 x00,
0 x01,
0 x80,
0 xaa}, {
0 x00,
0 x02,
0 x80,
0 xaa},
{
0 x00,
0 x12,
0 x80,
0 xaa},
{
0 x00,
0 x12,
0 x05,
0 xaa},
{
0 x00,
0 x1e,
0 x01,
0 xaa},
/* MVFP */
{
0 x00,
0 x3d,
0 x40,
0 xaa},
/* 0x3d <-40 gamma 01 */
{
0 x00,
0 x41,
0 x00,
0 xaa},
/* edge 00 */
{
0 x00,
0 x0d,
0 x48,
0 xaa}, {
0 x00,
0 x0e,
0 x04,
0 xaa},
{
0 x00,
0 x13,
0 xa7,
0 xaa},
{
0 x00,
0 x40,
0 xc1,
0 xaa}, {
0 x00,
0 x35,
0 x00,
0 xaa},
{
0 x00,
0 x36,
0 x00,
0 xaa},
{
0 x00,
0 x3c,
0 x68,
0 xaa}, {
0 x00,
0 x1b,
0 x05,
0 xaa},
{
0 x00,
0 x39,
0 x43,
0 xaa},
{
0 x00,
0 x8d,
0 xcf,
0 xaa},
{
0 x00,
0 x8b,
0 xcc,
0 xaa}, {
0 x00,
0 x8c,
0 xcc,
0 xaa},
{
0 x00,
0 x0f,
0 x62,
0 xaa},
{
0 x00,
0 x35,
0 x84,
0 xaa},
{
0 x00,
0 x3b,
0 x08,
0 xaa},
/* 0 * Nightframe 1/4 + 50Hz -> 0xC8 */
{
0 x00,
0 x3a,
0 x00,
0 xaa},
/* mx change yuyv format 00, 04, 01; 08, 0c*/
{
0 x00,
0 x14,
0 x2a,
0 xaa},
/* agc ampli */
{
0 x00,
0 x9e,
0 x40,
0 xaa}, {
0 xb8,
0 x8f,
0 x50,
0 xcc},
{
0 x00,
0 x01,
0 x80,
0 xaa},
{
0 x00,
0 x02,
0 x80,
0 xaa},
{
0 xb8,
0 xfe,
0 x00,
0 xcc}, {
0 xb8,
0 xff,
0 x28,
0 xcc},
{
0 xb9,
0 x00,
0 x28,
0 xcc},
{
0 xb9,
0 x01,
0 x28,
0 xcc}, {
0 xb9,
0 x02,
0 x28,
0 xcc},
{
0 xb9,
0 x03,
0 x00,
0 xcc},
{
0 xb9,
0 x04,
0 x00,
0 xcc},
{
0 xb9,
0 x05,
0 x3c,
0 xcc}, {
0 xb9,
0 x06,
0 x3c,
0 xcc},
{
0 xb9,
0 x07,
0 x3c,
0 xcc},
{
0 xb9,
0 x08,
0 x3c,
0 xcc},
{
0 xb8,
0 x8e,
0 x00,
0 xcc}, {
0 xb8,
0 x8f,
0 xff,
0 xcc},
{
0 x00,
0 x29,
0 x3c,
0 xaa}, {
0 xb3,
0 x01,
0 x45,
0 xcc},
{}
};
static const u8 ov7660_initQVGA_data[][
4 ] = {
{
0 xb0,
0 x4d,
0 x00,
0 xcc}, {
0 xb3,
0 x01,
0 x01,
0 xcc},
{
0 x00,
0 x00,
0 x50,
0 xdd}, {
0 xb0,
0 x03,
0 x01,
0 xcc},
{
0 xb3,
0 x00,
0 x21,
0 xcc}, {
0 xb3,
0 x00,
0 x26,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc}, {
0 xb3,
0 x06,
0 x03,
0 xcc},
{
0 xb3,
0 x03,
0 x1f,
0 xcc}, {
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x05,
0 x00,
0 xcc}, {
0 xb3,
0 x06,
0 x01,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
/* 0xb315 <-0 href startl */
{
0 xb3,
0 x16,
0 x02,
0 xcc}, {
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc}, {
0 xb3,
0 x1d,
0 x01,
0 xcc},
{
0 xb3,
0 x1f,
0 x02,
0 xcc}, {
0 xb3,
0 x34,
0 x01,
0 xcc},
{
0 xb3,
0 x35,
0 xa1,
0 xcc}, {
0 xb3,
0 x00,
0 x26,
0 xcc},
{
0 xb8,
0 x00,
0 x33,
0 xcc},
/* 13 */
{
0 xb8,
0 x01,
0 x7d,
0 xcc},
/* sizer */
{
0 xbc,
0 x00,
0 xd3,
0 xcc},
{
0 xb8,
0 x81,
0 x09,
0 xcc}, {
0 xb8,
0 x81,
0 x09,
0 xcc},
{
0 xb8,
0 x27,
0 x20,
0 xcc}, {
0 xb8,
0 x8f,
0 x50,
0 xcc},
{
0 x00,
0 x01,
0 x80,
0 xaa}, {
0 x00,
0 x02,
0 x80,
0 xaa},
{
0 x00,
0 x12,
0 x80,
0 xaa}, {
0 x00,
0 x12,
0 x05,
0 xaa},
{
0 x00,
0 x1e,
0 x01,
0 xaa},
/* MVFP */
{
0 x00,
0 x3d,
0 x40,
0 xaa},
/* 0x3d <-40 gamma 01 */
{
0 x00,
0 x41,
0 x00,
0 xaa},
/* edge 00 */
{
0 x00,
0 x0d,
0 x48,
0 xaa}, {
0 x00,
0 x0e,
0 x04,
0 xaa},
{
0 x00,
0 x13,
0 xa7,
0 xaa},
{
0 x00,
0 x40,
0 xc1,
0 xaa}, {
0 x00,
0 x35,
0 x00,
0 xaa},
{
0 x00,
0 x36,
0 x00,
0 xaa},
{
0 x00,
0 x3c,
0 x68,
0 xaa}, {
0 x00,
0 x1b,
0 x05,
0 xaa},
{
0 x00,
0 x39,
0 x43,
0 xaa}, {
0 x00,
0 x8d,
0 xcf,
0 xaa},
{
0 x00,
0 x8b,
0 xcc,
0 xaa}, {
0 x00,
0 x8c,
0 xcc,
0 xaa},
{
0 x00,
0 x0f,
0 x62,
0 xaa}, {
0 x00,
0 x35,
0 x84,
0 xaa},
{
0 x00,
0 x3b,
0 x08,
0 xaa},
/* 0 * Nightframe 1/4 + 50Hz -> 0xC8 */
{
0 x00,
0 x3a,
0 x00,
0 xaa},
/* mx change yuyv format 00, 04, 01; 08, 0c*/
{
0 x00,
0 x14,
0 x2a,
0 xaa},
/* agc ampli */
{
0 x00,
0 x9e,
0 x40,
0 xaa}, {
0 xb8,
0 x8f,
0 x50,
0 xcc},
{
0 x00,
0 x01,
0 x80,
0 xaa},
{
0 x00,
0 x02,
0 x80,
0 xaa},
/* sizer filters */
{
0 xbc,
0 x02,
0 x08,
0 xcc},
{
0 xbc,
0 x03,
0 x70,
0 xcc},
{
0 xb8,
0 x35,
0 x00,
0 xcc},
{
0 xb8,
0 x36,
0 x00,
0 xcc},
{
0 xb8,
0 x37,
0 x00,
0 xcc},
{
0 xbc,
0 x04,
0 x08,
0 xcc},
{
0 xbc,
0 x05,
0 x00,
0 xcc},
{
0 xbc,
0 x06,
0 x00,
0 xcc},
{
0 xbc,
0 x08,
0 x3c,
0 xcc},
{
0 xbc,
0 x09,
0 x40,
0 xcc},
{
0 xbc,
0 x0a,
0 x04,
0 xcc},
{
0 xbc,
0 x0b,
0 x00,
0 xcc},
{
0 xbc,
0 x0c,
0 x00,
0 xcc},
/* */
{
0 xb8,
0 xfe,
0 x00,
0 xcc},
{
0 xb8,
0 xff,
0 x28,
0 xcc},
/* */
{
0 xb9,
0 x00,
0 x28,
0 xcc}, {
0 xb9,
0 x01,
0 x28,
0 xcc},
{
0 xb9,
0 x02,
0 x28,
0 xcc}, {
0 xb9,
0 x03,
0 x00,
0 xcc},
{
0 xb9,
0 x04,
0 x00,
0 xcc}, {
0 xb9,
0 x05,
0 x3c,
0 xcc},
{
0 xb9,
0 x06,
0 x3c,
0 xcc}, {
0 xb9,
0 x07,
0 x3c,
0 xcc},
{
0 xb9,
0 x08,
0 x3c,
0 xcc},
/* */
{
0 xb8,
0 x8e,
0 x00,
0 xcc},
{
0 xb8,
0 x8f,
0 xff,
0 xcc},
/* ff */
{
0 x00,
0 x29,
0 x3c,
0 xaa},
{
0 xb3,
0 x01,
0 x45,
0 xcc},
/* 45 */
{}
};
static const u8 ov7660_50HZ[][
4 ] = {
{
0 x00,
0 x3b,
0 x08,
0 xaa},
{
0 x00,
0 x9d,
0 x40,
0 xaa},
{
0 x00,
0 x13,
0 xa7,
0 xaa},
{}
};
static const u8 ov7660_60HZ[][
4 ] = {
{
0 x00,
0 x3b,
0 x00,
0 xaa},
{
0 x00,
0 x9e,
0 x40,
0 xaa},
{
0 x00,
0 x13,
0 xa7,
0 xaa},
{}
};
static const u8 ov7660_NoFlicker[][
4 ] = {
{
0 x00,
0 x13,
0 x87,
0 xaa},
{}
};
static const u8 ov7670_InitVGA[][
4 ] = {
{
0 xb3,
0 x01,
0 x05,
0 xcc},
{
0 x00,
0 x00,
0 x30,
0 xdd},
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xb3,
0 x00,
0 x66,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xb0,
0 x16,
0 x01,
0 xcc},
{
0 xb3,
0 x35,
0 xa1,
0 xcc},
/* i2c add: 21 */
{
0 xb3,
0 x34,
0 x01,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x02,
0 x02,
0 xcc},
{
0 xb3,
0 x03,
0 x1f,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc},
{
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x01,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc},
{
0 xbc,
0 x00,
0 x41,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc},
{
0 x00,
0 x12,
0 x80,
0 xaa},
{
0 x00,
0 x00,
0 x20,
0 xdd},
{
0 x00,
0 x12,
0 x00,
0 xaa},
{
0 x00,
0 x11,
0 x40,
0 xaa},
{
0 x00,
0 x6b,
0 x0a,
0 xaa},
{
0 x00,
0 x3a,
0 x04,
0 xaa},
{
0 x00,
0 x40,
0 xc0,
0 xaa},
{
0 x00,
0 x8c,
0 x00,
0 xaa},
{
0 x00,
0 x7a,
0 x29,
0 xaa},
{
0 x00,
0 x7b,
0 x0e,
0 xaa},
{
0 x00,
0 x7c,
0 x1a,
0 xaa},
{
0 x00,
0 x7d,
0 x31,
0 xaa},
{
0 x00,
0 x7e,
0 x53,
0 xaa},
{
0 x00,
0 x7f,
0 x60,
0 xaa},
{
0 x00,
0 x80,
0 x6b,
0 xaa},
{
0 x00,
0 x81,
0 x73,
0 xaa},
{
0 x00,
0 x82,
0 x7b,
0 xaa},
{
0 x00,
0 x83,
0 x82,
0 xaa},
{
0 x00,
0 x84,
0 x89,
0 xaa},
{
0 x00,
0 x85,
0 x96,
0 xaa},
{
0 x00,
0 x86,
0 xa1,
0 xaa},
{
0 x00,
0 x87,
0 xb7,
0 xaa},
{
0 x00,
0 x88,
0 xcc,
0 xaa},
{
0 x00,
0 x89,
0 xe1,
0 xaa},
{
0 x00,
0 x13,
0 xe0,
0 xaa},
{
0 x00,
0 x00,
0 x00,
0 xaa},
{
0 x00,
0 x10,
0 x00,
0 xaa},
{
0 x00,
0 x0d,
0 x40,
0 xaa},
{
0 x00,
0 x14,
0 x28,
0 xaa},
{
0 x00,
0 xa5,
0 x05,
0 xaa},
{
0 x00,
0 xab,
0 x07,
0 xaa},
{
0 x00,
0 x24,
0 x95,
0 xaa},
{
0 x00,
0 x25,
0 x33,
0 xaa},
{
0 x00,
0 x26,
0 xe3,
0 xaa},
{
0 x00,
0 x9f,
0 x88,
0 xaa},
{
0 x00,
0 xa0,
0 x78,
0 xaa},
{
0 x00,
0 x55,
0 x90,
0 xaa},
{
0 x00,
0 xa1,
0 x03,
0 xaa},
{
0 x00,
0 xa6,
0 xe0,
0 xaa},
{
0 x00,
0 xa7,
0 xd8,
0 xaa},
{
0 x00,
0 xa8,
0 xf0,
0 xaa},
{
0 x00,
0 xa9,
0 x90,
0 xaa},
{
0 x00,
0 xaa,
0 x14,
0 xaa},
{
0 x00,
0 x13,
0 xe5,
0 xaa},
{
0 x00,
0 x0e,
0 x61,
0 xaa},
{
0 x00,
0 x0f,
0 x4b,
0 xaa},
{
0 x00,
0 x16,
0 x02,
0 xaa},
{
0 x00,
0 x1e,
0 x07,
0 xaa},
/* MVFP */
{
0 x00,
0 x21,
0 x02,
0 xaa},
{
0 x00,
0 x22,
0 x91,
0 xaa},
{
0 x00,
0 x29,
0 x07,
0 xaa},
{
0 x00,
0 x33,
0 x0b,
0 xaa},
{
0 x00,
0 x35,
0 x0b,
0 xaa},
{
0 x00,
0 x37,
0 x1d,
0 xaa},
{
0 x00,
0 x38,
0 x71,
0 xaa},
{
0 x00,
0 x39,
0 x2a,
0 xaa},
{
0 x00,
0 x3c,
0 x78,
0 xaa},
{
0 x00,
0 x4d,
0 x40,
0 xaa},
{
0 x00,
0 x4e,
0 x20,
0 xaa},
{
0 x00,
0 x74,
0 x19,
0 xaa},
{
0 x00,
0 x8d,
0 x4f,
0 xaa},
{
0 x00,
0 x8e,
0 x00,
0 xaa},
{
0 x00,
0 x8f,
0 x00,
0 xaa},
{
0 x00,
0 x90,
0 x00,
0 xaa},
{
0 x00,
0 x91,
0 x00,
0 xaa},
{
0 x00,
0 x96,
0 x00,
0 xaa},
{
0 x00,
0 x9a,
0 x80,
0 xaa},
{
0 x00,
0 xb0,
0 x84,
0 xaa},
{
0 x00,
0 xb1,
0 x0c,
0 xaa},
{
0 x00,
0 xb2,
0 x0e,
0 xaa},
{
0 x00,
0 xb3,
0 x82,
0 xaa},
{
0 x00,
0 xb8,
0 x0a,
0 xaa},
{
0 x00,
0 x43,
0 x14,
0 xaa},
{
0 x00,
0 x44,
0 xf0,
0 xaa},
{
0 x00,
0 x45,
0 x45,
0 xaa},
{
0 x00,
0 x46,
0 x63,
0 xaa},
{
0 x00,
0 x47,
0 x2d,
0 xaa},
{
0 x00,
0 x48,
0 x46,
0 xaa},
{
0 x00,
0 x59,
0 x88,
0 xaa},
{
0 x00,
0 x5a,
0 xa0,
0 xaa},
{
0 x00,
0 x5b,
0 xc6,
0 xaa},
{
0 x00,
0 x5c,
0 x7d,
0 xaa},
{
0 x00,
0 x5d,
0 x5f,
0 xaa},
{
0 x00,
0 x5e,
0 x19,
0 xaa},
{
0 x00,
0 x6c,
0 x0a,
0 xaa},
{
0 x00,
0 x6d,
0 x55,
0 xaa},
{
0 x00,
0 x6e,
0 x11,
0 xaa},
{
0 x00,
0 x6f,
0 x9e,
0 xaa},
{
0 x00,
0 x69,
0 x00,
0 xaa},
{
0 x00,
0 x6a,
0 x40,
0 xaa},
{
0 x00,
0 x01,
0 x40,
0 xaa},
{
0 x00,
0 x02,
0 x40,
0 xaa},
{
0 x00,
0 x13,
0 xe7,
0 xaa},
{
0 x00,
0 x5f,
0 xf0,
0 xaa},
{
0 x00,
0 x60,
0 xf0,
0 xaa},
{
0 x00,
0 x61,
0 xf0,
0 xaa},
{
0 x00,
0 x27,
0 xa0,
0 xaa},
{
0 x00,
0 x28,
0 x80,
0 xaa},
{
0 x00,
0 x2c,
0 x90,
0 xaa},
{
0 x00,
0 x4f,
0 x66,
0 xaa},
{
0 x00,
0 x50,
0 x66,
0 xaa},
{
0 x00,
0 x51,
0 x00,
0 xaa},
{
0 x00,
0 x52,
0 x22,
0 xaa},
{
0 x00,
0 x53,
0 x5e,
0 xaa},
{
0 x00,
0 x54,
0 x80,
0 xaa},
{
0 x00,
0 x58,
0 x9e,
0 xaa},
{
0 x00,
0 x41,
0 x08,
0 xaa},
{
0 x00,
0 x3f,
0 x00,
0 xaa},
{
0 x00,
0 x75,
0 x85,
0 xaa},
{
0 x00,
0 x76,
0 xe1,
0 xaa},
{
0 x00,
0 x4c,
0 x00,
0 xaa},
{
0 x00,
0 x77,
0 x0a,
0 xaa},
{
0 x00,
0 x3d,
0 x88,
0 xaa},
{
0 x00,
0 x4b,
0 x09,
0 xaa},
{
0 x00,
0 xc9,
0 x60,
0 xaa},
{
0 x00,
0 x41,
0 x38,
0 xaa},
{
0 x00,
0 x62,
0 x30,
0 xaa},
{
0 x00,
0 x63,
0 x30,
0 xaa},
{
0 x00,
0 x64,
0 x08,
0 xaa},
{
0 x00,
0 x94,
0 x07,
0 xaa},
{
0 x00,
0 x95,
0 x0b,
0 xaa},
{
0 x00,
0 x65,
0 x00,
0 xaa},
{
0 x00,
0 x66,
0 x05,
0 xaa},
{
0 x00,
0 x56,
0 x50,
0 xaa},
{
0 x00,
0 x34,
0 x11,
0 xaa},
{
0 x00,
0 xa4,
0 x88,
0 xaa},
{
0 x00,
0 x96,
0 x00,
0 xaa},
{
0 x00,
0 x97,
0 x30,
0 xaa},
{
0 x00,
0 x98,
0 x20,
0 xaa},
{
0 x00,
0 x99,
0 x30,
0 xaa},
{
0 x00,
0 x9a,
0 x84,
0 xaa},
{
0 x00,
0 x9b,
0 x29,
0 xaa},
{
0 x00,
0 x9c,
0 x03,
0 xaa},
{
0 x00,
0 x78,
0 x04,
0 xaa},
{
0 x00,
0 x79,
0 x01,
0 xaa},
{
0 x00,
0 xc8,
0 xf0,
0 xaa},
{
0 x00,
0 x79,
0 x0f,
0 xaa},
{
0 x00,
0 xc8,
0 x00,
0 xaa},
{
0 x00,
0 x79,
0 x10,
0 xaa},
{
0 x00,
0 xc8,
0 x7e,
0 xaa},
{
0 x00,
0 x79,
0 x0a,
0 xaa},
{
0 x00,
0 xc8,
0 x80,
0 xaa},
{
0 x00,
0 x79,
0 x0b,
0 xaa},
{
0 x00,
0 xc8,
0 x01,
0 xaa},
{
0 x00,
0 x79,
0 x0c,
0 xaa},
{
0 x00,
0 xc8,
0 x0f,
0 xaa},
{
0 x00,
0 x79,
0 x0d,
0 xaa},
{
0 x00,
0 xc8,
0 x20,
0 xaa},
{
0 x00,
0 x79,
0 x09,
0 xaa},
{
0 x00,
0 xc8,
0 x80,
0 xaa},
{
0 x00,
0 x79,
0 x02,
0 xaa},
{
0 x00,
0 xc8,
0 xc0,
0 xaa},
{
0 x00,
0 x79,
0 x03,
0 xaa},
{
0 x00,
0 xc8,
0 x40,
0 xaa},
{
0 x00,
0 x79,
0 x05,
0 xaa},
{
0 x00,
0 xc8,
0 x30,
0 xaa},
{
0 x00,
0 x79,
0 x26,
0 xaa},
{
0 x00,
0 x11,
0 x40,
0 xaa},
{
0 x00,
0 x3a,
0 x04,
0 xaa},
{
0 x00,
0 x12,
0 x00,
0 xaa},
{
0 x00,
0 x40,
0 xc0,
0 xaa},
{
0 x00,
0 x8c,
0 x00,
0 xaa},
{
0 x00,
0 x17,
0 x14,
0 xaa},
{
0 x00,
0 x18,
0 x02,
0 xaa},
{
0 x00,
0 x32,
0 x92,
0 xaa},
{
0 x00,
0 x19,
0 x02,
0 xaa},
{
0 x00,
0 x1a,
0 x7a,
0 xaa},
{
0 x00,
0 x03,
0 x0a,
0 xaa},
{
0 x00,
0 x0c,
0 x00,
0 xaa},
{
0 x00,
0 x3e,
0 x00,
0 xaa},
{
0 x00,
0 x70,
0 x3a,
0 xaa},
{
0 x00,
0 x71,
0 x35,
0 xaa},
{
0 x00,
0 x72,
0 x11,
0 xaa},
{
0 x00,
0 x73,
0 xf0,
0 xaa},
{
0 x00,
0 xa2,
0 x02,
0 xaa},
{
0 x00,
0 xb1,
0 x00,
0 xaa},
{
0 x00,
0 xb1,
0 x0c,
0 xaa},
{
0 x00,
0 x1e,
0 x37,
0 xaa},
/* MVFP */
{
0 x00,
0 xaa,
0 x14,
0 xaa},
{
0 x00,
0 x24,
0 x80,
0 xaa},
{
0 x00,
0 x25,
0 x74,
0 xaa},
{
0 x00,
0 x26,
0 xd3,
0 xaa},
{
0 x00,
0 x0d,
0 x00,
0 xaa},
{
0 x00,
0 x14,
0 x18,
0 xaa},
{
0 x00,
0 x9d,
0 x99,
0 xaa},
{
0 x00,
0 x9e,
0 x7f,
0 xaa},
{
0 x00,
0 x64,
0 x08,
0 xaa},
{
0 x00,
0 x94,
0 x07,
0 xaa},
{
0 x00,
0 x95,
0 x06,
0 xaa},
{
0 x00,
0 x66,
0 x05,
0 xaa},
{
0 x00,
0 x41,
0 x08,
0 xaa},
{
0 x00,
0 x3f,
0 x00,
0 xaa},
{
0 x00,
0 x75,
0 x07,
0 xaa},
{
0 x00,
0 x76,
0 xe1,
0 xaa},
{
0 x00,
0 x4c,
0 x00,
0 xaa},
{
0 x00,
0 x77,
0 x00,
0 xaa},
{
0 x00,
0 x3d,
0 xc2,
0 xaa},
{
0 x00,
0 x4b,
0 x09,
0 xaa},
{
0 x00,
0 xc9,
0 x60,
0 xaa},
{
0 x00,
0 x41,
0 x38,
0 xaa},
{
0 xbf,
0 xc0,
0 x26,
0 xcc},
{
0 xbf,
0 xc1,
0 x02,
0 xcc},
{
0 xbf,
0 xcc,
0 x04,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xb3,
0 x01,
0 x45,
0 xcc},
{
0 x00,
0 x77,
0 x05,
0 xaa},
{},
};
static const u8 ov7670_InitQVGA[][
4 ] = {
{
0 xb3,
0 x01,
0 x05,
0 xcc},
{
0 x00,
0 x00,
0 x30,
0 xdd},
{
0 xb0,
0 x03,
0 x19,
0 xcc},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xb3,
0 x00,
0 x66,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xb0,
0 x16,
0 x01,
0 xcc},
{
0 xb3,
0 x35,
0 xa1,
0 xcc},
/* i2c add: 21 */
{
0 xb3,
0 x34,
0 x01,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x02,
0 x02,
0 xcc},
{
0 xb3,
0 x03,
0 x1f,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc},
{
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x04,
0 x05,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x01,
0 xcc},
{
0 xb3,
0 x23,
0 xe0,
0 xcc},
{
0 xbc,
0 x00,
0 xd1,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc},
{
0 x00,
0 x12,
0 x80,
0 xaa},
{
0 x00,
0 x00,
0 x20,
0 xdd},
{
0 x00,
0 x12,
0 x00,
0 xaa},
{
0 x00,
0 x11,
0 x40,
0 xaa},
{
0 x00,
0 x6b,
0 x0a,
0 xaa},
{
0 x00,
0 x3a,
0 x04,
0 xaa},
{
0 x00,
0 x40,
0 xc0,
0 xaa},
{
0 x00,
0 x8c,
0 x00,
0 xaa},
{
0 x00,
0 x7a,
0 x29,
0 xaa},
{
0 x00,
0 x7b,
0 x0e,
0 xaa},
{
0 x00,
0 x7c,
0 x1a,
0 xaa},
{
0 x00,
0 x7d,
0 x31,
0 xaa},
{
0 x00,
0 x7e,
0 x53,
0 xaa},
{
0 x00,
0 x7f,
0 x60,
0 xaa},
{
0 x00,
0 x80,
0 x6b,
0 xaa},
{
0 x00,
0 x81,
0 x73,
0 xaa},
{
0 x00,
0 x82,
0 x7b,
0 xaa},
{
0 x00,
0 x83,
0 x82,
0 xaa},
{
0 x00,
0 x84,
0 x89,
0 xaa},
{
0 x00,
0 x85,
0 x96,
0 xaa},
{
0 x00,
0 x86,
0 xa1,
0 xaa},
{
0 x00,
0 x87,
0 xb7,
0 xaa},
{
0 x00,
0 x88,
0 xcc,
0 xaa},
{
0 x00,
0 x89,
0 xe1,
0 xaa},
{
0 x00,
0 x13,
0 xe0,
0 xaa},
{
0 x00,
0 x00,
0 x00,
0 xaa},
{
0 x00,
0 x10,
0 x00,
0 xaa},
{
0 x00,
0 x0d,
0 x40,
0 xaa},
{
0 x00,
0 x14,
0 x28,
0 xaa},
{
0 x00,
0 xa5,
0 x05,
0 xaa},
{
0 x00,
0 xab,
0 x07,
0 xaa},
{
0 x00,
0 x24,
0 x95,
0 xaa},
{
0 x00,
0 x25,
0 x33,
0 xaa},
{
0 x00,
0 x26,
0 xe3,
0 xaa},
{
0 x00,
0 x9f,
0 x88,
0 xaa},
{
0 x00,
0 xa0,
0 x78,
0 xaa},
{
0 x00,
0 x55,
0 x90,
0 xaa},
{
0 x00,
0 xa1,
0 x03,
0 xaa},
{
0 x00,
0 xa6,
0 xe0,
0 xaa},
{
0 x00,
0 xa7,
0 xd8,
0 xaa},
{
0 x00,
0 xa8,
0 xf0,
0 xaa},
{
0 x00,
0 xa9,
0 x90,
0 xaa},
{
0 x00,
0 xaa,
0 x14,
0 xaa},
{
0 x00,
0 x13,
0 xe5,
0 xaa},
{
0 x00,
0 x0e,
0 x61,
0 xaa},
{
0 x00,
0 x0f,
0 x4b,
0 xaa},
{
0 x00,
0 x16,
0 x02,
0 xaa},
{
0 x00,
0 x1e,
0 x07,
0 xaa},
/* MVFP */
{
0 x00,
0 x21,
0 x02,
0 xaa},
{
0 x00,
0 x22,
0 x91,
0 xaa},
{
0 x00,
0 x29,
0 x07,
0 xaa},
{
0 x00,
0 x33,
0 x0b,
0 xaa},
{
0 x00,
0 x35,
0 x0b,
0 xaa},
{
0 x00,
0 x37,
0 x1d,
0 xaa},
{
0 x00,
0 x38,
0 x71,
0 xaa},
{
0 x00,
0 x39,
0 x2a,
0 xaa},
{
0 x00,
0 x3c,
0 x78,
0 xaa},
{
0 x00,
0 x4d,
0 x40,
0 xaa},
{
0 x00,
0 x4e,
0 x20,
0 xaa},
{
0 x00,
0 x74,
0 x19,
0 xaa},
{
0 x00,
0 x8d,
0 x4f,
0 xaa},
{
0 x00,
0 x8e,
0 x00,
0 xaa},
{
0 x00,
0 x8f,
0 x00,
0 xaa},
{
0 x00,
0 x90,
0 x00,
0 xaa},
{
0 x00,
0 x91,
0 x00,
0 xaa},
{
0 x00,
0 x96,
0 x00,
0 xaa},
{
0 x00,
0 x9a,
0 x80,
0 xaa},
{
0 x00,
0 xb0,
0 x84,
0 xaa},
{
0 x00,
0 xb1,
0 x0c,
0 xaa},
{
0 x00,
0 xb2,
0 x0e,
0 xaa},
{
0 x00,
0 xb3,
0 x82,
0 xaa},
{
0 x00,
0 xb8,
0 x0a,
0 xaa},
{
0 x00,
0 x43,
0 x14,
0 xaa},
{
0 x00,
0 x44,
0 xf0,
0 xaa},
{
0 x00,
0 x45,
0 x45,
0 xaa},
{
0 x00,
0 x46,
0 x63,
0 xaa},
{
0 x00,
0 x47,
0 x2d,
0 xaa},
{
0 x00,
0 x48,
0 x46,
0 xaa},
{
0 x00,
0 x59,
0 x88,
0 xaa},
{
0 x00,
0 x5a,
0 xa0,
0 xaa},
{
0 x00,
0 x5b,
0 xc6,
0 xaa},
{
0 x00,
0 x5c,
0 x7d,
0 xaa},
{
0 x00,
0 x5d,
0 x5f,
0 xaa},
{
0 x00,
0 x5e,
0 x19,
0 xaa},
{
0 x00,
0 x6c,
0 x0a,
0 xaa},
{
0 x00,
0 x6d,
0 x55,
0 xaa},
{
0 x00,
0 x6e,
0 x11,
0 xaa},
{
0 x00,
0 x6f,
0 x9e,
0 xaa},
{
0 x00,
0 x69,
0 x00,
0 xaa},
{
0 x00,
0 x6a,
0 x40,
0 xaa},
{
0 x00,
0 x01,
0 x40,
0 xaa},
{
0 x00,
0 x02,
0 x40,
0 xaa},
{
0 x00,
0 x13,
0 xe7,
0 xaa},
{
0 x00,
0 x5f,
0 xf0,
0 xaa},
{
0 x00,
0 x60,
0 xf0,
0 xaa},
{
0 x00,
0 x61,
0 xf0,
0 xaa},
{
0 x00,
0 x27,
0 xa0,
0 xaa},
{
0 x00,
0 x28,
0 x80,
0 xaa},
{
0 x00,
0 x2c,
0 x90,
0 xaa},
{
0 x00,
0 x4f,
0 x66,
0 xaa},
{
0 x00,
0 x50,
0 x66,
0 xaa},
{
0 x00,
0 x51,
0 x00,
0 xaa},
{
0 x00,
0 x52,
0 x22,
0 xaa},
{
0 x00,
0 x53,
0 x5e,
0 xaa},
{
0 x00,
0 x54,
0 x80,
0 xaa},
{
0 x00,
0 x58,
0 x9e,
0 xaa},
{
0 x00,
0 x41,
0 x08,
0 xaa},
{
0 x00,
0 x3f,
0 x00,
0 xaa},
{
0 x00,
0 x75,
0 x85,
0 xaa},
{
0 x00,
0 x76,
0 xe1,
0 xaa},
{
0 x00,
0 x4c,
0 x00,
0 xaa},
{
0 x00,
0 x77,
0 x0a,
0 xaa},
{
0 x00,
0 x3d,
0 x88,
0 xaa},
{
0 x00,
0 x4b,
0 x09,
0 xaa},
{
0 x00,
0 xc9,
0 x60,
0 xaa},
{
0 x00,
0 x41,
0 x38,
0 xaa},
{
0 x00,
0 x62,
0 x30,
0 xaa},
{
0 x00,
0 x63,
0 x30,
0 xaa},
{
0 x00,
0 x64,
0 x08,
0 xaa},
{
0 x00,
0 x94,
0 x07,
0 xaa},
{
0 x00,
0 x95,
0 x0b,
0 xaa},
{
0 x00,
0 x65,
0 x00,
0 xaa},
{
0 x00,
0 x66,
0 x05,
0 xaa},
{
0 x00,
0 x56,
0 x50,
0 xaa},
{
0 x00,
0 x34,
0 x11,
0 xaa},
{
0 x00,
0 xa4,
0 x88,
0 xaa},
{
0 x00,
0 x96,
0 x00,
0 xaa},
{
0 x00,
0 x97,
0 x30,
0 xaa},
{
0 x00,
0 x98,
0 x20,
0 xaa},
{
0 x00,
0 x99,
0 x30,
0 xaa},
{
0 x00,
0 x9a,
0 x84,
0 xaa},
{
0 x00,
0 x9b,
0 x29,
0 xaa},
{
0 x00,
0 x9c,
0 x03,
0 xaa},
{
0 x00,
0 x78,
0 x04,
0 xaa},
{
0 x00,
0 x79,
0 x01,
0 xaa},
{
0 x00,
0 xc8,
0 xf0,
0 xaa},
{
0 x00,
0 x79,
0 x0f,
0 xaa},
{
0 x00,
0 xc8,
0 x00,
0 xaa},
{
0 x00,
0 x79,
0 x10,
0 xaa},
{
0 x00,
0 xc8,
0 x7e,
0 xaa},
{
0 x00,
0 x79,
0 x0a,
0 xaa},
{
0 x00,
0 xc8,
0 x80,
0 xaa},
{
0 x00,
0 x79,
0 x0b,
0 xaa},
{
0 x00,
0 xc8,
0 x01,
0 xaa},
{
0 x00,
0 x79,
0 x0c,
0 xaa},
{
0 x00,
0 xc8,
0 x0f,
0 xaa},
{
0 x00,
0 x79,
0 x0d,
0 xaa},
{
0 x00,
0 xc8,
0 x20,
0 xaa},
{
0 x00,
0 x79,
0 x09,
0 xaa},
{
0 x00,
0 xc8,
0 x80,
0 xaa},
{
0 x00,
0 x79,
0 x02,
0 xaa},
{
0 x00,
0 xc8,
0 xc0,
0 xaa},
{
0 x00,
0 x79,
0 x03,
0 xaa},
{
0 x00,
0 xc8,
0 x40,
0 xaa},
{
0 x00,
0 x79,
0 x05,
0 xaa},
{
0 x00,
0 xc8,
0 x30,
0 xaa},
{
0 x00,
0 x79,
0 x26,
0 xaa},
{
0 x00,
0 x11,
0 x40,
0 xaa},
{
0 x00,
0 x3a,
0 x04,
0 xaa},
{
0 x00,
0 x12,
0 x00,
0 xaa},
{
0 x00,
0 x40,
0 xc0,
0 xaa},
{
0 x00,
0 x8c,
0 x00,
0 xaa},
{
0 x00,
0 x17,
0 x14,
0 xaa},
{
0 x00,
0 x18,
0 x02,
0 xaa},
{
0 x00,
0 x32,
0 x92,
0 xaa},
{
0 x00,
0 x19,
0 x02,
0 xaa},
{
0 x00,
0 x1a,
0 x7a,
0 xaa},
{
0 x00,
0 x03,
0 x0a,
0 xaa},
{
0 x00,
0 x0c,
0 x00,
0 xaa},
{
0 x00,
0 x3e,
0 x00,
0 xaa},
{
0 x00,
0 x70,
0 x3a,
0 xaa},
{
0 x00,
0 x71,
0 x35,
0 xaa},
{
0 x00,
0 x72,
0 x11,
0 xaa},
{
0 x00,
0 x73,
0 xf0,
0 xaa},
{
0 x00,
0 xa2,
0 x02,
0 xaa},
{
0 x00,
0 xb1,
0 x00,
0 xaa},
{
0 x00,
0 xb1,
0 x0c,
0 xaa},
{
0 x00,
0 x1e,
0 x37,
0 xaa},
/* MVFP */
{
0 x00,
0 xaa,
0 x14,
0 xaa},
{
0 x00,
0 x24,
0 x80,
0 xaa},
{
0 x00,
0 x25,
0 x74,
0 xaa},
{
0 x00,
0 x26,
0 xd3,
0 xaa},
{
0 x00,
0 x0d,
0 x00,
0 xaa},
{
0 x00,
0 x14,
0 x18,
0 xaa},
{
0 x00,
0 x9d,
0 x99,
0 xaa},
{
0 x00,
0 x9e,
0 x7f,
0 xaa},
{
0 x00,
0 x64,
0 x08,
0 xaa},
{
0 x00,
0 x94,
0 x07,
0 xaa},
{
0 x00,
0 x95,
0 x06,
0 xaa},
{
0 x00,
0 x66,
0 x05,
0 xaa},
{
0 x00,
0 x41,
0 x08,
0 xaa},
{
0 x00,
0 x3f,
0 x00,
0 xaa},
{
0 x00,
0 x75,
0 x07,
0 xaa},
{
0 x00,
0 x76,
0 xe1,
0 xaa},
{
0 x00,
0 x4c,
0 x00,
0 xaa},
{
0 x00,
0 x77,
0 x00,
0 xaa},
{
0 x00,
0 x3d,
0 xc2,
0 xaa},
{
0 x00,
0 x4b,
0 x09,
0 xaa},
{
0 x00,
0 xc9,
0 x60,
0 xaa},
{
0 x00,
0 x41,
0 x38,
0 xaa},
{
0 xbc,
0 x02,
0 x18,
0 xcc},
{
0 xbc,
0 x03,
0 x50,
0 xcc},
{
0 xbc,
0 x04,
0 x18,
0 xcc},
{
0 xbc,
0 x05,
0 x00,
0 xcc},
{
0 xbc,
0 x06,
0 x00,
0 xcc},
{
0 xbc,
0 x08,
0 x30,
0 xcc},
{
0 xbc,
0 x09,
0 x40,
0 xcc},
{
0 xbc,
0 x0a,
0 x10,
0 xcc},
{
0 xbc,
0 x0b,
0 x00,
0 xcc},
{
0 xbc,
0 x0c,
0 x00,
0 xcc},
{
0 xbf,
0 xc0,
0 x26,
0 xcc},
{
0 xbf,
0 xc1,
0 x02,
0 xcc},
{
0 xbf,
0 xcc,
0 x04,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xb3,
0 x01,
0 x45,
0 xcc},
{
0 x00,
0 x77,
0 x05,
0 xaa},
{},
};
/* PO1200 - values from usbvm326.inf and ms-win trace */
static const u8 po1200_gamma[
17 ] = {
0 x00,
0 x13,
0 x38,
0 x59,
0 x79,
0 x92,
0 xa7,
0 xb9,
0 xc8,
0 xd4,
0 xdf,
0 xe7,
0 xee,
0 xf4,
0 xf9,
0 xfc,
0 xff
};
static const u8 po1200_matrix[
9 ] = {
0 x60,
0 xf9,
0 xe5,
0 xe7,
0 x50,
0 x05,
0 xf3,
0 xe6,
0 x5e
};
static const u8 po1200_initVGA_data[][
4 ] = {
{
0 xb0,
0 x03,
0 x19,
0 xcc},
/* reset? */
{
0 xb0,
0 x03,
0 x19,
0 xcc},
/* {0x00, 0x00, 0x33, 0xdd}, */
{
0 xb0,
0 x04,
0 x02,
0 xcc},
{
0 xb0,
0 x02,
0 x02,
0 xcc},
{
0 xb3,
0 x5d,
0 x00,
0 xcc},
{
0 xb3,
0 x01,
0 x01,
0 xcc},
{
0 xb3,
0 x00,
0 x64,
0 xcc},
{
0 xb3,
0 x00,
0 x65,
0 xcc},
{
0 xb3,
0 x05,
0 x01,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xb3,
0 x02,
0 xb2,
0 xcc},
{
0 xb3,
0 x03,
0 x18,
0 xcc},
{
0 xb3,
0 x04,
0 x15,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x02,
0 xcc},
{
0 xb3,
0 x23,
0 x58,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x03,
0 xcc},
{
0 xb3,
0 x17,
0 x1f,
0 xcc},
{
0 xbc,
0 x00,
0 x71,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc},
{
0 xb0,
0 x54,
0 x13,
0 xcc},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xb3,
0 x34,
0 x01,
0 xcc},
{
0 xb3,
0 x35,
0 xdc,
0 xcc},
/* i2c add: 5c */
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 x12,
0 x05,
0 xaa},
{
0 x00,
0 x13,
0 x02,
0 xaa},
{
0 x00,
0 x1e,
0 xc6,
0 xaa},
/* h/v flip */
{
0 x00,
0 x21,
0 x00,
0 xaa},
{
0 x00,
0 x25,
0 x02,
0 xaa},
{
0 x00,
0 x3c,
0 x4f,
0 xaa},
{
0 x00,
0 x3f,
0 xe0,
0 xaa},
{
0 x00,
0 x42,
0 xff,
0 xaa},
{
0 x00,
0 x45,
0 x34,
0 xaa},
{
0 x00,
0 x55,
0 xfe,
0 xaa},
{
0 x00,
0 x59,
0 xd3,
0 xaa},
{
0 x00,
0 x5e,
0 x04,
0 xaa},
{
0 x00,
0 x61,
0 xb8,
0 xaa},
/* sharpness */
{
0 x00,
0 x62,
0 x02,
0 xaa},
{
0 x00,
0 xa7,
0 x31,
0 xaa},
{
0 x00,
0 xa9,
0 x66,
0 xaa},
{
0 x00,
0 xb0,
0 x00,
0 xaa},
{
0 x00,
0 xb1,
0 x00,
0 xaa},
{
0 x00,
0 xb3,
0 x11,
0 xaa},
{
0 x00,
0 xb6,
0 x26,
0 xaa},
{
0 x00,
0 xb7,
0 x20,
0 xaa},
{
0 x00,
0 xba,
0 x04,
0 xaa},
{
0 x00,
0 x88,
0 x42,
0 xaa},
{
0 x00,
0 x89,
0 x9a,
0 xaa},
{
0 x00,
0 x8a,
0 x88,
0 xaa},
{
0 x00,
0 x8b,
0 x8e,
0 xaa},
{
0 x00,
0 x8c,
0 x3e,
0 xaa},
{
0 x00,
0 x8d,
0 x90,
0 xaa},
{
0 x00,
0 x8e,
0 x87,
0 xaa},
{
0 x00,
0 x8f,
0 x96,
0 xaa},
{
0 x00,
0 x90,
0 x3d,
0 xaa},
{
0 x00,
0 x64,
0 x00,
0 xaa},
{
0 x00,
0 x65,
0 x10,
0 xaa},
{
0 x00,
0 x66,
0 x20,
0 xaa},
{
0 x00,
0 x67,
0 x2b,
0 xaa},
{
0 x00,
0 x68,
0 x36,
0 xaa},
{
0 x00,
0 x69,
0 x49,
0 xaa},
{
0 x00,
0 x6a,
0 x5a,
0 xaa},
{
0 x00,
0 x6b,
0 x7f,
0 xaa},
{
0 x00,
0 x6c,
0 x9b,
0 xaa},
{
0 x00,
0 x6d,
0 xba,
0 xaa},
{
0 x00,
0 x6e,
0 xd4,
0 xaa},
{
0 x00,
0 x6f,
0 xea,
0 xaa},
{
0 x00,
0 x70,
0 x00,
0 xaa},
{
0 x00,
0 x71,
0 x10,
0 xaa},
{
0 x00,
0 x72,
0 x20,
0 xaa},
{
0 x00,
0 x73,
0 x2b,
0 xaa},
{
0 x00,
0 x74,
0 x36,
0 xaa},
{
0 x00,
0 x75,
0 x49,
0 xaa},
{
0 x00,
0 x76,
0 x5a,
0 xaa},
{
0 x00,
0 x77,
0 x7f,
0 xaa},
{
0 x00,
0 x78,
0 x9b,
0 xaa},
{
0 x00,
0 x79,
0 xba,
0 xaa},
{
0 x00,
0 x7a,
0 xd4,
0 xaa},
{
0 x00,
0 x7b,
0 xea,
0 xaa},
{
0 x00,
0 x7c,
0 x00,
0 xaa},
{
0 x00,
0 x7d,
0 x10,
0 xaa},
{
0 x00,
0 x7e,
0 x20,
0 xaa},
{
0 x00,
0 x7f,
0 x2b,
0 xaa},
{
0 x00,
0 x80,
0 x36,
0 xaa},
{
0 x00,
0 x81,
0 x49,
0 xaa},
{
0 x00,
0 x82,
0 x5a,
0 xaa},
{
0 x00,
0 x83,
0 x7f,
0 xaa},
{
0 x00,
0 x84,
0 x9b,
0 xaa},
{
0 x00,
0 x85,
0 xba,
0 xaa},
{
0 x00,
0 x86,
0 xd4,
0 xaa},
{
0 x00,
0 x87,
0 xea,
0 xaa},
{
0 x00,
0 x57,
0 x2a,
0 xaa},
{
0 x00,
0 x03,
0 x01,
0 xaa},
{
0 x00,
0 x04,
0 x10,
0 xaa},
{
0 x00,
0 x05,
0 x10,
0 xaa},
{
0 x00,
0 x06,
0 x10,
0 xaa},
{
0 x00,
0 x07,
0 x10,
0 xaa},
{
0 x00,
0 x08,
0 x13,
0 xaa},
{
0 x00,
0 x0a,
0 x00,
0 xaa},
{
0 x00,
0 x0b,
0 x10,
0 xaa},
{
0 x00,
0 x0c,
0 x20,
0 xaa},
{
0 x00,
0 x0d,
0 x18,
0 xaa},
{
0 x00,
0 x22,
0 x01,
0 xaa},
{
0 x00,
0 x23,
0 x60,
0 xaa},
{
0 x00,
0 x25,
0 x08,
0 xaa},
{
0 x00,
0 x26,
0 x82,
0 xaa},
{
0 x00,
0 x2e,
0 x0f,
0 xaa},
{
0 x00,
0 x2f,
0 x1e,
0 xaa},
{
0 x00,
0 x30,
0 x2d,
0 xaa},
{
0 x00,
0 x31,
0 x3c,
0 xaa},
{
0 x00,
0 x32,
0 x4b,
0 xaa},
{
0 x00,
0 x33,
0 x5a,
0 xaa},
{
0 x00,
0 x34,
0 x69,
0 xaa},
{
0 x00,
0 x35,
0 x78,
0 xaa},
{
0 x00,
0 x36,
0 x87,
0 xaa},
{
0 x00,
0 x37,
0 x96,
0 xaa},
{
0 x00,
0 x38,
0 xa5,
0 xaa},
{
0 x00,
0 x39,
0 xb4,
0 xaa},
{
0 x00,
0 x3a,
0 xc3,
0 xaa},
{
0 x00,
0 x3b,
0 xd2,
0 xaa},
{
0 x00,
0 x3c,
0 xe1,
0 xaa},
{
0 x00,
0 x3e,
0 xff,
0 xaa},
{
0 x00,
0 x3f,
0 xff,
0 xaa},
{
0 x00,
0 x40,
0 xff,
0 xaa},
{
0 x00,
0 x41,
0 xff,
0 xaa},
{
0 x00,
0 x42,
0 xff,
0 xaa},
{
0 x00,
0 x43,
0 xff,
0 xaa},
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 x20,
0 xc4,
0 xaa},
{
0 x00,
0 x13,
0 x03,
0 xaa},
{
0 x00,
0 x3c,
0 x50,
0 xaa},
{
0 x00,
0 x61,
0 x6a,
0 xaa},
/* sharpness? */
{
0 x00,
0 x51,
0 x5b,
0 xaa},
{
0 x00,
0 x52,
0 x91,
0 xaa},
{
0 x00,
0 x53,
0 x4c,
0 xaa},
{
0 x00,
0 x54,
0 x50,
0 xaa},
{
0 x00,
0 x56,
0 x02,
0 xaa},
{
0 xb6,
0 x00,
0 x00,
0 xcc},
{
0 xb6,
0 x03,
0 x03,
0 xcc},
{
0 xb6,
0 x02,
0 x20,
0 xcc},
{
0 xb6,
0 x05,
0 x02,
0 xcc},
{
0 xb6,
0 x04,
0 x58,
0 xcc},
{
0 xb6,
0 x12,
0 xf8,
0 xcc},
{
0 xb6,
0 x13,
0 x21,
0 xcc},
{
0 xb6,
0 x18,
0 x03,
0 xcc},
{
0 xb6,
0 x17,
0 xa9,
0 xcc},
{
0 xb6,
0 x16,
0 x80,
0 xcc},
{
0 xb6,
0 x22,
0 x12,
0 xcc},
{
0 xb6,
0 x23,
0 x0b,
0 xcc},
{
0 xbf,
0 xc0,
0 x39,
0 xcc},
{
0 xbf,
0 xc1,
0 x04,
0 xcc},
{
0 xbf,
0 xcc,
0 x00,
0 xcc},
{
0 xb8,
0 x06,
0 x20,
0 xcc},
{
0 xb8,
0 x07,
0 x03,
0 xcc},
{
0 xb8,
0 x08,
0 x58,
0 xcc},
{
0 xb8,
0 x09,
0 x02,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 xd9,
0 x0f,
0 xaa},
{
0 x00,
0 xda,
0 xaa,
0 xaa},
{
0 x00,
0 xd9,
0 x10,
0 xaa},
{
0 x00,
0 xda,
0 xaa,
0 xaa},
{
0 x00,
0 xd9,
0 x11,
0 xaa},
{
0 x00,
0 xda,
0 x00,
0 xaa},
{
0 x00,
0 xd9,
0 x12,
0 xaa},
{
0 x00,
0 xda,
0 xff,
0 xaa},
{
0 x00,
0 xd9,
0 x13,
0 xaa},
{
0 x00,
0 xda,
0 xff,
0 xaa},
{
0 x00,
0 xe8,
0 x11,
0 xaa},
{
0 x00,
0 xe9,
0 x12,
0 xaa},
{
0 x00,
0 xea,
0 x5c,
0 xaa},
{
0 x00,
0 xeb,
0 xff,
0 xaa},
{
0 x00,
0 xd8,
0 x80,
0 xaa},
{
0 x00,
0 xe6,
0 x02,
0 xaa},
{
0 x00,
0 xd6,
0 x40,
0 xaa},
{
0 x00,
0 xe3,
0 x05,
0 xaa},
{
0 x00,
0 xe0,
0 x40,
0 xaa},
{
0 x00,
0 xde,
0 x03,
0 xaa},
{
0 x00,
0 xdf,
0 x03,
0 xaa},
{
0 x00,
0 xdb,
0 x02,
0 xaa},
{
0 x00,
0 xdc,
0 x00,
0 xaa},
{
0 x00,
0 xdd,
0 x03,
0 xaa},
{
0 x00,
0 xe1,
0 x08,
0 xaa},
{
0 x00,
0 xe2,
0 x01,
0 xaa},
{
0 x00,
0 xd6,
0 x40,
0 xaa},
{
0 x00,
0 xe4,
0 x40,
0 xaa},
{
0 x00,
0 xa8,
0 x8f,
0 xaa},
{
0 x00,
0 xb4,
0 x16,
0 xaa},
{
0 xb0,
0 x02,
0 x06,
0 xcc},
{
0 xb0,
0 x18,
0 x06,
0 xcc},
{
0 xb0,
0 x19,
0 x06,
0 xcc},
{
0 xb3,
0 x5d,
0 x18,
0 xcc},
{
0 xb3,
0 x05,
0 x00,
0 xcc},
{
0 xb3,
0 x06,
0 x00,
0 xcc},
{
0 x00,
0 xb4,
0 x0e,
0 xaa},
{
0 x00,
0 xb5,
0 x49,
0 xaa},
{
0 x00,
0 xb6,
0 x1c,
0 xaa},
{
0 x00,
0 xb7,
0 x96,
0 xaa},
/* end of usbvm326.inf - start of ms-win trace */
{
0 xb6,
0 x12,
0 xf8,
0 xcc},
{
0 xb6,
0 x13,
0 x3d,
0 xcc},
/*read b306*/
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 x1a,
0 x09,
0 xaa},
{
0 x00,
0 x1b,
0 x8a,
0 xaa},
/*read b827*/
{
0 xb8,
0 x27,
0 x00,
0 xcc},
{
0 xb8,
0 x26,
0 x60,
0 xcc},
{
0 xb8,
0 x26,
0 x60,
0 xcc},
/*gamma - to do?*/
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 xae,
0 x84,
0 xaa},
/*gamma again*/
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 x96,
0 xa0,
0 xaa},
/*matrix*/
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 x91,
0 x35,
0 xaa},
{
0 x00,
0 x92,
0 x22,
0 xaa},
/*gamma*/
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 x95,
0 x85,
0 xaa},
/*matrix*/
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 x4d,
0 x20,
0 xaa},
{
0 xb8,
0 x22,
0 x40,
0 xcc},
{
0 xb8,
0 x23,
0 x40,
0 xcc},
{
0 xb8,
0 x24,
0 x40,
0 xcc},
{
0 xb8,
0 x81,
0 x09,
0 xcc},
{
0 x00,
0 x00,
0 x64,
0 xdd},
{
0 x00,
0 x03,
0 x01,
0 xaa},
/*read 46*/
{
0 x00,
0 x46,
0 x3c,
0 xaa},
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 x16,
0 x40,
0 xaa},
{
0 x00,
0 x17,
0 x40,
0 xaa},
{
0 x00,
0 x18,
0 x40,
0 xaa},
{
0 x00,
0 x19,
0 x41,
0 xaa},
{
0 x00,
0 x03,
0 x01,
0 xaa},
{
0 x00,
0 x46,
0 x3c,
0 xaa},
{
0 x00,
0 x00,
0 x18,
0 xdd},
/*read bfff*/
{
0 x00,
0 x03,
0 x00,
0 xaa},
{
0 x00,
0 xb4,
0 x1c,
0 xaa},
{
0 x00,
0 xb5,
0 x92,
0 xaa},
{
0 x00,
0 xb6,
0 x39,
0 xaa},
{
0 x00,
0 xb7,
0 x24,
0 xaa},
/*write 89 0400 1415*/
{}
};
static const u8 poxxxx_init_common[][
4 ] = {
{
0 xb3,
0 x00,
0 x04,
0 xcc},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xb3,
0 x00,
0 x64,
0 xcc},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xb3,
0 x00,
0 x65,
0 xcc},
{
0 x00,
0 x00,
0 x10,
0 xdd},
{
0 xb3,
0 x00,
0 x67,
0 xcc},
{
0 xb0,
0 x03,
0 x09,
0 xcc},
{
0 xb3,
0 x05,
0 x00,
0 xcc},
{
0 xb3,
0 x06,
0 x00,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 xb3,
0 x08,
0 x01,
0 xcc},
{
0 xb3,
0 x09,
0 x0c,
0 xcc},
{
0 xb3,
0 x34,
0 x01,
0 xcc},
{
0 xb3,
0 x35,
0 xf6,
0 xcc},
/* i2c add: 76 */
{
0 xb3,
0 x02,
0 xb0,
0 xcc},
{
0 xb3,
0 x03,
0 x18,
0 xcc},
{
0 xb3,
0 x04,
0 x15,
0 xcc},
{
0 xb3,
0 x20,
0 x00,
0 xcc},
{
0 xb3,
0 x21,
0 x00,
0 xcc},
{
0 xb3,
0 x22,
0 x04,
0 xcc},
/* sensor height = 1024 */
{
0 xb3,
0 x23,
0 x00,
0 xcc},
{
0 xb3,
0 x14,
0 x00,
0 xcc},
{
0 xb3,
0 x15,
0 x00,
0 xcc},
{
0 xb3,
0 x16,
0 x04,
0 xcc},
/* sensor width = 1280 */
{
0 xb3,
0 x17,
0 xff,
0 xcc},
{
0 xb3,
0 x2c,
0 x03,
0 xcc},
{
0 xb3,
0 x2d,
0 x56,
0 xcc},
{
0 xb3,
0 x2e,
0 x02,
0 xcc},
{
0 xb3,
0 x2f,
0 x0a,
0 xcc},
{
0 xb3,
0 x40,
0 x00,
0 xcc},
{
0 xb3,
0 x41,
0 x34,
0 xcc},
{
0 xb3,
0 x42,
0 x01,
0 xcc},
{
0 xb3,
0 x43,
0 xe0,
0 xcc},
{
0 xbc,
0 x00,
0 x71,
0 xcc},
{
0 xbc,
0 x01,
0 x01,
0 xcc},
{
0 xb3,
0 x01,
0 x41,
0 xcc},
{
0 xb3,
0 x4d,
0 x00,
0 xcc},
{
0 x00,
0 x0b,
0 x2a,
0 xaa},
{
0 x00,
0 x0e,
0 x03,
0 xaa},
{
0 x00,
0 x0f,
0 xea,
0 xaa},
{
0 x00,
0 x12,
0 x08,
0 xaa},
{
0 x00,
0 x1e,
0 x06,
0 xaa},
{
0 x00,
0 x21,
0 x00,
0 xaa},
{
0 x00,
0 x31,
0 x1f,
0 xaa},
{
0 x00,
0 x33,
0 x38,
0 xaa},
{
0 x00,
0 x36,
0 xc0,
0 xaa},
{
0 x00,
0 x37,
0 xc8,
0 xaa},
{
0 x00,
0 x3b,
0 x36,
0 xaa},
{
0 x00,
0 x4b,
0 xfe,
0 xaa},
{
0 x00,
0 x4d,
0 x2e,
0 xaa},
{
0 x00,
0 x51,
0 x1c,
0 xaa},
{
0 x00,
0 x52,
0 x01,
0 xaa},
{
0 x00,
0 x55,
0 x0a,
0 xaa},
{
0 x00,
0 x56,
0 x0a,
0 xaa},
{
0 x00,
0 x57,
0 x07,
0 xaa},
{
0 x00,
0 x58,
0 x07,
0 xaa},
{
0 x00,
0 x59,
0 x04,
0 xaa},
{
0 x00,
0 x70,
0 x68,
0 xaa},
{
0 x00,
0 x71,
0 x04,
0 xaa},
{
0 x00,
0 x72,
0 x10,
0 xaa},
{
0 x00,
0 x80,
0 x71,
0 xaa},
{
0 x00,
0 x81,
0 x08,
0 xaa},
{
0 x00,
0 x82,
0 x00,
0 xaa},
{
0 x00,
0 x83,
0 x55,
0 xaa},
{
0 x00,
0 x84,
0 x06,
0 xaa},
{
0 x00,
0 x85,
0 x06,
0 xaa},
{
0 x00,
0 x8b,
0 x25,
0 xaa},
{
0 x00,
0 x8c,
0 x00,
0 xaa},
{
0 x00,
0 x8d,
0 x86,
0 xaa},
{
0 x00,
0 x8e,
0 x82,
0 xaa},
{
0 x00,
0 x8f,
0 x2d,
0 xaa},
{
0 x00,
0 x90,
0 x8b,
0 xaa},
{
0 x00,
0 x91,
0 x81,
0 xaa},
{
0 x00,
0 x92,
0 x81,
0 xaa},
{
0 x00,
0 x93,
0 x23,
0 xaa},
{
0 x00,
0 xa3,
0 x2a,
0 xaa},
{
0 x00,
0 xa4,
0 x03,
0 xaa},
{
0 x00,
0 xa5,
0 xea,
0 xaa},
{
0 x00,
0 xb0,
0 x68,
0 xaa},
{
0 x00,
0 xbc,
0 x04,
0 xaa},
{
0 x00,
0 xbe,
0 x3b,
0 xaa},
{
0 x00,
0 x4e,
0 x40,
0 xaa},
{
0 x00,
0 x06,
0 x04,
0 xaa},
{
0 x00,
0 x07,
0 x03,
0 xaa},
{
0 x00,
0 xcd,
0 x18,
0 xaa},
{
0 x00,
0 x28,
0 x03,
0 xaa},
{
0 x00,
0 x29,
0 xef,
0 xaa},
/* reinit on alt 2 (qvga) or alt7 (vga) */
{
0 xb3,
0 x05,
0 x00,
0 xcc},
{
0 xb3,
0 x06,
0 x00,
0 xcc},
{
0 xb8,
0 x00,
0 x01,
0 xcc},
{
0 x00,
0 x1d,
0 x85,
0 xaa},
{
0 x00,
0 x1e,
0 xc6,
0 xaa},
{
0 x00,
0 x00,
0 x40,
0 xdd},
{
0 x00,
0 x1d,
0 x05,
0 xaa},
{}
};
static const u8 poxxxx_gamma[][
4 ] = {
{
0 x00,
0 xd6,
0 x22,
0 xaa},
/* gamma 0 */
{
0 x00,
0 x73,
0 x00,
0 xaa},
{
0 x00,
0 x74,
0 x0a,
0 xaa},
{
0 x00,
0 x75,
0 x16,
0 xaa},
{
0 x00,
0 x76,
0 x25,
0 xaa},
{
0 x00,
0 x77,
0 x34,
0 xaa},
{
0 x00,
0 x78,
0 x49,
0 xaa},
{
0 x00,
0 x79,
0 x5a,
0 xaa},
{
0 x00,
0 x7a,
0 x7f,
0 xaa},
{
0 x00,
0 x7b,
0 x9b,
0 xaa},
{
0 x00,
0 x7c,
0 xba,
0 xaa},
{
0 x00,
0 x7d,
0 xd4,
0 xaa},
{
0 x00,
0 x7e,
0 xea,
0 xaa},
{
0 x00,
0 xd6,
0 x62,
0 xaa},
/* gamma 1 */
{
0 x00,
0 x73,
0 x00,
0 xaa},
{
0 x00,
0 x74,
0 x0a,
0 xaa},
{
0 x00,
0 x75,
0 x16,
0 xaa},
{
0 x00,
0 x76,
0 x25,
0 xaa},
{
0 x00,
0 x77,
0 x34,
0 xaa},
{
0 x00,
0 x78,
0 x49,
0 xaa},
{
0 x00,
0 x79,
0 x5a,
0 xaa},
{
0 x00,
0 x7a,
0 x7f,
0 xaa},
{
0 x00,
0 x7b,
0 x9b,
0 xaa},
{
0 x00,
0 x7c,
0 xba,
0 xaa},
{
0 x00,
0 x7d,
0 xd4,
0 xaa},
{
0 x00,
0 x7e,
0 xea,
0 xaa},
{
0 x00,
0 xd6,
0 xa2,
0 xaa},
/* gamma 2 */
{
0 x00,
0 x73,
0 x00,
0 xaa},
{
0 x00,
0 x74,
0 x0a,
0 xaa},
{
0 x00,
0 x75,
0 x16,
0 xaa},
{
0 x00,
0 x76,
0 x25,
0 xaa},
{
0 x00,
0 x77,
0 x34,
0 xaa},
{
0 x00,
0 x78,
0 x49,
0 xaa},
{
0 x00,
0 x79,
0 x5a,
0 xaa},
{
0 x00,
0 x7a,
0 x7f,
0 xaa},
{
0 x00,
0 x7b,
0 x9b,
0 xaa},
{
0 x00,
0 x7c,
0 xba,
0 xaa},
{
0 x00,
0 x7d,
0 xd4,
0 xaa},
{
0 x00,
0 x7e,
0 xea,
0 xaa},
{}
};
static const u8 poxxxx_init_start_3[][
4 ] = {
{
0 x00,
0 xb8,
0 x28,
0 xaa},
{
0 x00,
0 xb9,
0 x1e,
0 xaa},
{
0 x00,
0 xb6,
0 x14,
0 xaa},
{
0 x00,
0 xb7,
0 x0f,
0 xaa},
{
0 x00,
0 x5c,
0 x10,
0 xaa},
{
0 x00,
0 x5d,
0 x18,
0 xaa},
{
0 x00,
0 x5e,
0 x24,
0 xaa},
{
0 x00,
0 x5f,
0 x24,
0 xaa},
{
0 x00,
0 x86,
0 x1a,
0 xaa},
{
0 x00,
0 x60,
0 x00,
0 xaa},
{
0 x00,
0 x61,
0 x1b,
0 xaa},
{
0 x00,
0 x62,
0 x30,
0 xaa},
{
0 x00,
0 x63,
0 x40,
0 xaa},
{
0 x00,
0 x87,
0 x1a,
0 xaa},
{
0 x00,
0 x64,
0 x00,
0 xaa},
{
0 x00,
0 x65,
0 x08,
0 xaa},
{
0 x00,
0 x66,
0 x10,
0 xaa},
{
0 x00,
0 x67,
0 x20,
0 xaa},
{
0 x00,
0 x88,
0 x10,
0 xaa},
{
0 x00,
0 x68,
0 x00,
0 xaa},
{
0 x00,
0 x69,
0 x08,
0 xaa},
{
0 x00,
0 x6a,
0 x0f,
0 xaa},
{
0 x00,
0 x6b,
0 x0f,
0 xaa},
{
0 x00,
0 x89,
0 x07,
0 xaa},
{
0 x00,
0 xd5,
0 x4c,
0 xaa},
{
0 x00,
0 x0a,
0 x00,
0 xaa},
{
0 x00,
0 x0b,
0 x2a,
0 xaa},
{
0 x00,
0 x0e,
0 x03,
0 xaa},
{
0 x00,
0 x0f,
0 xea,
0 xaa},
{
0 x00,
0 xa2,
0 x00,
0 xaa},
{
0 x00,
0 xa3,
0 x2a,
0 xaa},
{
0 x00,
0 xa4,
0 x03,
0 xaa},
{
0 x00,
0 xa5,
0 xea,
0 xaa},
{}
};
static const u8 poxxxx_initVGA[][
4 ] = {
{
0 x00,
0 x20,
0 x11,
0 xaa},
{
0 x00,
0 x33,
0 x38,
0 xaa},
{
0 x00,
0 xbb,
0 x0d,
0 xaa},
{
0 xb3,
0 x22,
0 x01,
0 xcc},
/* change to 640x480 */
{
0 xb3,
0 x23,
0 xe0,
0 xcc},
{
0 xb3,
0 x16,
0 x02,
0 xcc},
{
0 xb3,
0 x17,
0 x7f,
0 xcc},
{
0 xb3,
0 x02,
0 xb0,
0 xcc},
{
0 xb3,
0 x06,
0 x00,
0 xcc},
{
0 xb3,
0 x5c,
0 x01,
0 xcc},
{
0 x00,
0 x04,
0 x06,
0 xaa},
{
0 x00,
0 x05,
0 x3f,
0 xaa},
{
0 x00,
0 x04,
0 x00,
0 xdd},
/* delay 1s */
{}
};
static const u8 poxxxx_initQVGA[][
4 ] = {
{
0 x00,
0 x20,
0 x33,
0 xaa},
{
0 x00,
0 x33,
0 x38,
0 xaa},
{
0 x00,
0 xbb,
0 x0d,
0 xaa},
{
0 xb3,
0 x22,
0 x00,
0 xcc},
/* change to 320x240 */
{
0 xb3,
0 x23,
0 xf0,
0 xcc},
{
0 xb3,
0 x16,
0 x01,
0 xcc},
{
0 xb3,
0 x17,
0 x3f,
0 xcc},
{
0 xb3,
0 x02,
0 xb0,
0 xcc},
{
0 xb3,
0 x06,
0 x01,
0 xcc},
{
0 xb3,
0 x5c,
0 x00,
0 xcc},
{
0 x00,
0 x04,
0 x06,
0 xaa},
{
0 x00,
0 x05,
0 x3f,
0 xaa},
{
0 x00,
0 x04,
0 x00,
0 xdd},
/* delay 1s */
{}
};
static const u8 poxxxx_init_end_1[][
4 ] = {
{
0 x00,
0 x47,
0 x25,
0 xaa},
{
0 x00,
0 x48,
0 x80,
0 xaa},
{
0 x00,
0 x49,
0 x1f,
0 xaa},
{
0 x00,
0 x4a,
0 x40,
0 xaa},
{
0 x00,
0 x44,
0 x40,
0 xaa},
{
0 x00,
0 xab,
0 x4a,
0 xaa},
{
0 x00,
0 xb1,
0 x00,
0 xaa},
{
0 x00,
0 xb2,
0 x04,
0 xaa},
{
0 x00,
0 xb3,
0 x08,
0 xaa},
{
0 x00,
0 xb4,
0 x0b,
0 xaa},
{
0 x00,
0 xb5,
0 x0d,
0 xaa},
{}
};
static const u8 poxxxx_init_end_2[][
4 ] = {
{
0 x00,
0 x1d,
0 x85,
0 xaa},
{
0 x00,
0 x1e,
0 x06,
0 xaa},
{
0 x00,
0 x1d,
0 x05,
0 xaa},
{}
};
struct sensor_info {
s8 sensorId;
u8 I2cAdd;
u8 IdAdd;
u16 VpId;
u8 m1;
u8 m2;
u8 op;
};
/* probe values */
static const struct sensor_info vc0321_probe_data[] = {
/* sensorId, I2cAdd, IdAdd, VpId, m1, m2, op */
/* 0 OV9640 */
{-
1 ,
0 x80 |
0 x30,
0 x0a,
0 x0000,
0 x25,
0 x24,
0 x05},
/* 1 ICM108T (may respond on IdAdd == 0x83 - tested in vc032x_probe_sensor) */
{-
1 ,
0 x80 |
0 x20,
0 x82,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 2 PO2130 (may detect PO3130NC - tested in vc032x_probe_sensor)*/
{-
1 ,
0 x80 |
0 x76,
0 x00,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 3 MI1310 */
{-
1 ,
0 x80 |
0 x5d,
0 x00,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 4 MI360 - tested in vc032x_probe_sensor */
/* {SENSOR_MI0360, 0x80 | 0x5d, 0x00, 0x8243, 0x24, 0x25, 0x01}, */
/* 5 7131R */
{SENSOR_HV7131R,
0 x80 |
0 x11,
0 x00,
0 x0209,
0 x24,
0 x25,
0 x01},
/* 6 OV7649 */
{-
1 ,
0 x80 |
0 x21,
0 x0a,
0 x0000,
0 x21,
0 x20,
0 x05},
/* 7 PAS302BCW */
{-
1 ,
0 x80 |
0 x40,
0 x00,
0 x0000,
0 x20,
0 x22,
0 x05},
/* 8 OV7660 */
{SENSOR_OV7660,
0 x80 |
0 x21,
0 x0a,
0 x7660,
0 x26,
0 x26,
0 x05},
/* 9 PO3130NC - (tested in vc032x_probe_sensor) */
/* {SENSOR_PO3130NC, 0x80 | 0x76, 0x00, 0x3130, 0x24, 0x25, 0x01}, */
/* 10 PO1030KC */
{-
1 ,
0 x80 |
0 x6e,
0 x00,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 11 MI1310_SOC */
{SENSOR_MI1310_SOC,
0 x80 |
0 x5d,
0 x00,
0 x143a,
0 x24,
0 x25,
0 x01},
/* 12 OV9650 */
{-
1 ,
0 x80 |
0 x30,
0 x0a,
0 x0000,
0 x25,
0 x24,
0 x05},
/* 13 S5K532 */
{-
1 ,
0 x80 |
0 x11,
0 x39,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 14 MI360_SOC - ??? */
/* 15 PO1200N */
{SENSOR_PO1200,
0 x80 |
0 x5c,
0 x00,
0 x1200,
0 x67,
0 x67,
0 x01},
/* 16 PO3030K */
{-
1 ,
0 x80 |
0 x18,
0 x00,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 17 PO2030 */
{-
1 ,
0 x80 |
0 x6e,
0 x00,
0 x0000,
0 x24,
0 x25,
0 x01},
/* ?? */
{-
1 ,
0 x80 |
0 x56,
0 x01,
0 x0000,
0 x64,
0 x67,
0 x01},
{SENSOR_MI1320,
0 x80 |
0 x48,
0 x00,
0 x148c,
0 x64,
0 x65,
0 x01},
};
static const struct sensor_info vc0323_probe_data[] = {
/* sensorId, I2cAdd, IdAdd, VpId, m1, m2, op */
/* 0 OV9640 */
{-
1 ,
0 x80 |
0 x30,
0 x0a,
0 x0000,
0 x25,
0 x24,
0 x05},
/* 1 ICM108T (may respond on IdAdd == 0x83 - tested in vc032x_probe_sensor) */
{-
1 ,
0 x80 |
0 x20,
0 x82,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 2 PO2130 (may detect PO3130NC - tested in vc032x_probe_sensor)*/
{-
1 ,
0 x80 |
0 x76,
0 x00,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 3 MI1310 */
{-
1 ,
0 x80 |
0 x5d,
0 x00,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 4 MI360 - tested in vc032x_probe_sensor */
/* {SENSOR_MI0360, 0x80 | 0x5d, 0x00, 0x8243, 0x24, 0x25, 0x01}, */
/* 5 7131R */
{SENSOR_HV7131R,
0 x80 |
0 x11,
0 x00,
0 x0209,
0 x24,
0 x25,
0 x01},
/* 6 OV7649 */
{-
1 ,
0 x80 |
0 x21,
0 x0a,
0 x0000,
0 x21,
0 x20,
0 x05},
/* 7 PAS302BCW */
{-
1 ,
0 x80 |
0 x40,
0 x00,
0 x0000,
0 x20,
0 x22,
0 x05},
/* 8 OV7660 */
{SENSOR_OV7660,
0 x80 |
0 x21,
0 x0a,
0 x7660,
0 x26,
0 x26,
0 x05},
/* 9 PO3130NC - (tested in vc032x_probe_sensor) */
/* {SENSOR_PO3130NC, 0x80 | 0x76, 0x00, 0x3130, 0x24, 0x25, 0x01}, */
/* 10 PO1030KC */
{-
1 ,
0 x80 |
0 x6e,
0 x00,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 11 MI1310_SOC */
{SENSOR_MI1310_SOC,
0 x80 |
0 x5d,
0 x00,
0 x143a,
0 x24,
0 x25,
0 x01},
/* 12 OV9650 */
{-
1 ,
0 x80 |
0 x30,
0 x0a,
0 x0000,
0 x25,
0 x24,
0 x05},
/* 13 S5K532 */
{-
1 ,
0 x80 |
0 x11,
0 x39,
0 x0000,
0 x24,
0 x25,
0 x01},
/* 14 MI360_SOC - ??? */
/* 15 PO1200N */
{SENSOR_PO1200,
0 x80 |
0 x5c,
0 x00,
0 x1200,
0 x67,
0 x67,
0 x01},
/* 16 ?? */
{-
1 ,
0 x80 |
0 x2d,
0 x00,
0 x0000,
0 x65,
0 x67,
0 x01},
/* 17 PO2030 */
{-
1 ,
0 x80 |
0 x6e,
0 x00,
0 x0000,
0 x24,
0 x25,
0 x01},
/* ?? */
{-
1 ,
0 x80 |
0 x56,
0 x01,
0 x0000,
0 x64,
0 x67,
0 x01},
{SENSOR_MI1320_SOC,
0 x80 |
0 x48,
0 x00,
0 x148c,
0 x64,
0 x67,
0 x01},
/*fixme: not in the ms-win probe - may be found before? */
{SENSOR_OV7670,
0 x80 |
0 x21,
0 x0a,
0 x7673,
0 x66,
0 x67,
0 x05},
};
/* read 'len' bytes in gspca_dev->usb_buf */
static void reg_r_i(
struct gspca_dev *gspca_dev,
u16 req,
u16 index,
u16 len)
{
int ret;
if (gspca_dev->usb_err <
0 )
return ;
ret = usb_control_msg(gspca_dev->dev,
usb_rcvctrlpipe(gspca_dev->dev,
0 ),
req,
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1 ,
/* value */
index, gspca_dev->usb_buf, len,
500 );
if (ret <
0 ) {
pr_err(
"reg_r err %d\n" , ret);
gspca_dev->usb_err = ret;
/*
* Make sure the buffer is zeroed to avoid uninitialized
* values.
*/
memset(gspca_dev->usb_buf,
0 , USB_BUF_SZ);
}
}
static void reg_r(
struct gspca_dev *gspca_dev,
u16 req,
u16 index,
u16 len)
{
reg_r_i(gspca_dev, req, index, len);
if (gspca_dev->usb_err <
0 )
return ;
if (len ==
1 )
gspca_dbg(gspca_dev, D_USBI,
"GET %02x 0001 %04x %02x\n" ,
req, index,
gspca_dev->usb_buf[
0 ]);
else
gspca_dbg(gspca_dev, D_USBI,
"GET %02x 0001 %04x %*ph\n" ,
req, index,
3 , gspca_dev->usb_buf);
}
static void reg_w_i(
struct gspca_dev *gspca_dev,
u16 req,
u16 value,
u16 index)
{
int ret;
if (gspca_dev->usb_err <
0 )
return ;
ret = usb_control_msg(gspca_dev->dev,
usb_sndctrlpipe(gspca_dev->dev,
0 ),
req,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
value, index, NULL,
0 ,
500 );
if (ret <
0 ) {
pr_err(
"reg_w err %d\n" , ret);
gspca_dev->usb_err = ret;
}
}
static void reg_w(
struct gspca_dev *gspca_dev,
u16 req,
u16 value,
u16 index)
{
if (gspca_dev->usb_err <
0 )
return ;
gspca_dbg(gspca_dev, D_USBO,
"SET %02x %04x %04x\n" , req, value, index);
reg_w_i(gspca_dev, req, value, index);
}
static u16 read_sensor_register(
struct gspca_dev *gspca_dev,
u16 address)
{
u8 ldata, mdata, hdata;
int retry =
50 ;
reg_r(gspca_dev,
0 xa1,
0 xb33f,
1 );
if (!(gspca_dev->usb_buf[
0 ] &
0 x02)) {
pr_err(
"I2c Bus Busy Wait %02x\n" , gspca_dev->usb_buf[
0 ]);
return 0 ;
}
reg_w(gspca_dev,
0 xa0, address,
0 xb33a);
reg_w(gspca_dev,
0 xa0,
0 x02,
0 xb339);
do {
reg_r(gspca_dev,
0 xa1,
0 xb33b,
1 );
if (gspca_dev->usb_buf[
0 ] ==
0 x00)
break ;
msleep(
40 );
}
while (--retry >=
0 );
reg_r(gspca_dev,
0 xa1,
0 xb33e,
1 );
ldata = gspca_dev->usb_buf[
0 ];
reg_r(gspca_dev,
0 xa1,
0 xb33d,
1 );
mdata = gspca_dev->usb_buf[
0 ];
reg_r(gspca_dev,
0 xa1,
0 xb33c,
1 );
hdata = gspca_dev->usb_buf[
0 ];
if (hdata !=
0 && mdata !=
0 && ldata !=
0 )
gspca_dbg(gspca_dev, D_PROBE,
"Read Sensor %02x%02x %02x\n" ,
hdata, mdata, ldata);
reg_r(gspca_dev,
0 xa1,
0 xb334,
1 );
if (gspca_dev->usb_buf[
0 ] ==
0 x02)
return (hdata <<
8 ) + mdata;
return hdata;
}
static int vc032x_probe_sensor(
struct gspca_dev *gspca_dev)
{
struct sd *sd = (
struct sd *) gspca_dev;
int i, n;
u16 value;
const struct sensor_info *ptsensor_info;
/*fixme: should also check the other sensor (back mi1320_soc, front mc501cb)*/
if (sd->flags & FL_SAMSUNG) {
reg_w(gspca_dev,
0 xa0,
0 x01,
0 xb301);
reg_w(gspca_dev,
0 x89,
0 xf0ff,
0 xffff);
/* select the back sensor */
}
reg_r(gspca_dev,
0 xa1,
0 xbfcf,
1 );
gspca_dbg(gspca_dev, D_PROBE,
"vc032%d check sensor header %02x\n" ,
sd->bridge == BRIDGE_VC0321 ?
1 :
3 , gspca_dev->usb_buf[
0 ]);
if (sd->bridge == BRIDGE_VC0321) {
ptsensor_info = vc0321_probe_data;
n = ARRAY_SIZE(vc0321_probe_data);
}
else {
ptsensor_info = vc0323_probe_data;
n = ARRAY_SIZE(vc0323_probe_data);
}
for (i =
0 ; i < n; i++) {
reg_w(gspca_dev,
0 xa0,
0 x02,
0 xb334);
reg_w(gspca_dev,
0 xa0, ptsensor_info->m1,
0 xb300);
reg_w(gspca_dev,
0 xa0, ptsensor_info->m2,
0 xb300);
reg_w(gspca_dev,
0 xa0,
0 x01,
0 xb308);
reg_w(gspca_dev,
0 xa0,
0 x0c,
0 xb309);
reg_w(gspca_dev,
0 xa0, ptsensor_info->I2cAdd,
0 xb335);
reg_w(gspca_dev,
0 xa0, ptsensor_info->op,
0 xb301);
value = read_sensor_register(gspca_dev, ptsensor_info->IdAdd);
if (value ==
0 && ptsensor_info->IdAdd ==
0 x82)
value = read_sensor_register(gspca_dev,
0 x83);
if (value !=
0 ) {
gspca_dbg(gspca_dev, D_PROBE,
"Sensor ID %04x (%d)\n" ,
value, i);
if (value == ptsensor_info->VpId)
return ptsensor_info->sensorId;
switch (value) {
case 0 x3130:
return SENSOR_PO3130NC;
case 0 x7673:
return SENSOR_OV7670;
case 0 x8243:
return SENSOR_MI0360;
}
}
ptsensor_info++;
}
return -
1 ;
}
static void i2c_write(
struct gspca_dev *gspca_dev,
u8 reg,
const u8 *val,
u8 size)
/* 1 or 2 */
{
int retry;
if (gspca_dev->usb_err <
0 )
return ;
if (size ==
1 )
gspca_dbg(gspca_dev, D_USBO,
"i2c_w %02x %02x\n" , reg, *val);
else
gspca_dbg(gspca_dev, D_USBO,
"i2c_w %02x %02x%02x\n" ,
reg, *val, val[
1 ]);
reg_r_i(gspca_dev,
0 xa1,
0 xb33f,
1 );
/*fixme:should check if (!(gspca_dev->usb_buf[0] & 0x02)) error*/
reg_w_i(gspca_dev,
0 xa0, size,
0 xb334);
reg_w_i(gspca_dev,
0 xa0, reg,
0 xb33a);
reg_w_i(gspca_dev,
0 xa0, val[
0 ],
0 xb336);
if (size >
1 )
reg_w_i(gspca_dev,
0 xa0, val[
1 ],
0 xb337);
reg_w_i(gspca_dev,
0 xa0,
0 x01,
0 xb339);
retry =
4 ;
do {
reg_r_i(gspca_dev,
0 xa1,
0 xb33b,
1 );
if (gspca_dev->usb_buf[
0 ] ==
0 )
break ;
msleep(
20 );
}
while (--retry >
0 );
if (retry <=
0 )
pr_err(
"i2c_write timeout\n" );
}
static void put_tab_to_reg(
struct gspca_dev *gspca_dev,
const u8 *tab, u8 tabsize, u16 addr)
{
int j;
u16 ad = addr;
for (j =
0 ; j < tabsize; j++)
reg_w(gspca_dev,
0 xa0, tab[j], ad++);
}
static void usb_exchange(
struct gspca_dev *gspca_dev,
const u8 data[][
4 ])
{
int i =
0 ;
for (;;) {
switch (data[i][
3 ]) {
default :
return ;
case 0 xcc:
/* normal write */
reg_w(gspca_dev,
0 xa0, data[i][
2 ],
(data[i][
0 ]) <<
8 | data[i][
1 ]);
break ;
case 0 xaa:
/* i2c op */
i2c_write(gspca_dev, data[i][
1 ], &data[i][
2 ],
1 );
break ;
case 0 xbb:
/* i2c op */
i2c_write(gspca_dev, data[i][
0 ], &data[i][
1 ],
2 );
break ;
case 0 xdd:
msleep(data[i][
1 ] *
256 + data[i][
2 ] +
10 );
break ;
}
i++;
}
/*not reached*/
}
/* this function is called at probe time */
static int sd_config(
struct gspca_dev *gspca_dev,
const struct usb_device_id *id)
{
struct sd *sd = (
struct sd *) gspca_dev;
sd->bridge = id->driver_info >>
8 ;
sd->flags = id->driver_info &
0 xff;
if (id->idVendor ==
0 x046d &&
(id->idProduct ==
0 x0892 || id->idProduct ==
0 x0896))
sd->sensor = SENSOR_POxxxx;
/* no probe */
return 0 ;
}
/* this function is called at probe and resume time */
static int sd_init(
struct gspca_dev *gspca_dev)
{
struct sd *sd = (
struct sd *) gspca_dev;
struct cam *cam;
int sensor;
/* number of packets per ISOC message */
static u8 npkt[NSENSORS] = {
[SENSOR_HV7131R] =
64 ,
[SENSOR_MI0360] =
32 ,
[SENSOR_MI1310_SOC] =
32 ,
[SENSOR_MI1320] =
64 ,
[SENSOR_MI1320_SOC] =
128 ,
[SENSOR_OV7660] =
32 ,
[SENSOR_OV7670] =
64 ,
[SENSOR_PO1200] =
128 ,
[SENSOR_PO3130NC] =
128 ,
[SENSOR_POxxxx] =
128 ,
};
if (sd->sensor != SENSOR_POxxxx)
sensor = vc032x_probe_sensor(gspca_dev);
else
sensor = sd->sensor;
switch (sensor) {
case -
1 :
pr_err(
"Unknown sensor...\n" );
return -EINVAL;
case SENSOR_HV7131R:
gspca_dbg(gspca_dev, D_PROBE,
"Find Sensor HV7131R\n" );
break ;
case SENSOR_MI0360:
gspca_dbg(gspca_dev, D_PROBE,
"Find Sensor MI0360\n" );
sd->bridge = BRIDGE_VC0323;
break ;
case SENSOR_MI1310_SOC:
gspca_dbg(gspca_dev, D_PROBE,
"Find Sensor MI1310_SOC\n" );
break ;
case SENSOR_MI1320:
gspca_dbg(gspca_dev, D_PROBE,
"Find Sensor MI1320\n" );
break ;
case SENSOR_MI1320_SOC:
gspca_dbg(gspca_dev, D_PROBE,
"Find Sensor MI1320_SOC\n" );
break ;
case SENSOR_OV7660:
gspca_dbg(gspca_dev, D_PROBE,
"Find Sensor OV7660\n" );
break ;
case SENSOR_OV7670:
gspca_dbg(gspca_dev, D_PROBE,
"Find Sensor OV7670\n" );
break ;
case SENSOR_PO1200:
gspca_dbg(gspca_dev, D_PROBE,
"Find Sensor PO1200\n" );
break ;
case SENSOR_PO3130NC:
gspca_dbg(gspca_dev, D_PROBE,
"Find Sensor PO3130NC\n" );
break ;
case SENSOR_POxxxx:
gspca_dbg(gspca_dev, D_PROBE,
"Sensor POxxxx\n" );
break ;
}
sd->sensor = sensor;
cam = &gspca_dev->cam;
if (sd->bridge == BRIDGE_VC0321) {
cam->cam_mode = vc0321_mode;
cam->nmodes = ARRAY_SIZE(vc0321_mode);
}
else {
switch (sensor) {
case SENSOR_PO1200:
cam->cam_mode = svga_mode;
cam->nmodes = ARRAY_SIZE(svga_mode);
break ;
case SENSOR_MI1310_SOC:
cam->cam_mode = vc0323_mode;
cam->nmodes = ARRAY_SIZE(vc0323_mode);
break ;
case SENSOR_MI1320_SOC:
cam->cam_mode = bi_mode;
cam->nmodes = ARRAY_SIZE(bi_mode);
break ;
case SENSOR_OV7670:
cam->cam_mode = bi_mode;
cam->nmodes = ARRAY_SIZE(bi_mode) -
1 ;
break ;
default :
cam->cam_mode = vc0323_mode;
cam->nmodes = ARRAY_SIZE(vc0323_mode) -
1 ;
break ;
}
}
cam->npkt = npkt[sd->sensor];
if (sd->sensor == SENSOR_OV7670)
sd->flags |= FL_HFLIP | FL_VFLIP;
if (sd->bridge == BRIDGE_VC0321) {
reg_r(gspca_dev,
0 x8a,
0 ,
3 );
reg_w(gspca_dev,
0 x87,
0 x00,
0 x0f0f);
reg_r(gspca_dev,
0 x8b,
0 ,
3 );
reg_w(gspca_dev,
0 x88,
0 x00,
0 x0202);
if (sd->sensor == SENSOR_POxxxx) {
reg_r(gspca_dev,
0 xa1,
0 xb300,
1 );
if (gspca_dev->usb_buf[
0 ] !=
0 ) {
reg_w(gspca_dev,
0 xa0,
0 x26,
0 xb300);
reg_w(gspca_dev,
0 xa0,
0 x04,
0 xb300);
}
reg_w(gspca_dev,
0 xa0,
0 x00,
0 xb300);
}
}
return gspca_dev->usb_err;
}
static void setbrightness(
struct gspca_dev *gspca_dev, s32 val)
{
u8 data;
data = val;
if (data >=
0 x80)
data &=
0 x7f;
else
data =
0 xff ^ data;
i2c_write(gspca_dev,
0 x98, &data,
1 );
}
static void setcontrast(
struct gspca_dev *gspca_dev, u8 val)
{
i2c_write(gspca_dev,
0 x99, &val,
1 );
}
static void setcolors(
struct gspca_dev *gspca_dev, u8 val)
{
u8 data;
data = val - (val >>
3 ) -
1 ;
i2c_write(gspca_dev,
0 x94, &data,
1 );
i2c_write(gspca_dev,
0 x95, &val,
1 );
}
static void sethvflip(
struct gspca_dev *gspca_dev,
bool hflip,
bool vflip)
{
struct sd *sd = (
struct sd *) gspca_dev;
u8 data[
2 ];
if (sd->flags & FL_HFLIP)
hflip = !hflip;
if (sd->flags & FL_VFLIP)
vflip = !vflip;
switch (sd->sensor) {
case SENSOR_MI1310_SOC:
case SENSOR_MI1320:
case SENSOR_MI1320_SOC:
data[
0 ] = data[
1 ] =
0 ;
/* select page 0 */
i2c_write(gspca_dev,
0 xf0, data,
2 );
data[
0 ] = sd->sensor == SENSOR_MI1310_SOC ?
0 x03 :
0 x01;
data[
1 ] =
0 x02 * hflip
|
0 x01 * vflip;
i2c_write(gspca_dev,
0 x20, data,
2 );
break ;
case SENSOR_OV7660:
case SENSOR_OV7670:
data[
0 ] = sd->sensor == SENSOR_OV7660 ?
0 x01 :
0 x07;
data[
0 ] |= OV7660_MVFP_MIRROR * hflip
| OV7660_MVFP_VFLIP * vflip;
i2c_write(gspca_dev, OV7660_REG_MVFP, data,
1 );
break ;
case SENSOR_PO1200:
data[
0 ] =
0 ;
i2c_write(gspca_dev,
0 x03, data,
1 );
data[
0 ] =
0 x80 * hflip
|
0 x40 * vflip
|
0 x06;
i2c_write(gspca_dev,
0 x1e, data,
1 );
break ;
}
}
static void setlightfreq(
struct gspca_dev *gspca_dev, s32 val)
{
struct sd *sd = (
struct sd *) gspca_dev;
static const u8 (*ov7660_freq_tb[
3 ])[
4 ] = {
ov7660_NoFlicker, ov7660_50HZ, ov7660_60HZ};
if (sd->sensor != SENSOR_OV7660)
return ;
usb_exchange(gspca_dev, ov7660_freq_tb[val]);
}
static void setsharpness(
struct gspca_dev *gspca_dev, s32 val)
{
struct sd *sd = (
struct sd *) gspca_dev;
u8 data;
switch (sd->sensor) {
case SENSOR_PO1200:
data =
0 ;
i2c_write(gspca_dev,
0 x03, &data,
1 );
if (val <
0 )
data =
0 x6a;
else
data =
0 xb5 + val *
3 ;
i2c_write(gspca_dev,
0 x61, &data,
1 );
break ;
case SENSOR_POxxxx:
if (val <
0 )
data =
0 x7e;
/* def = max */
else
data =
0 x60 + val *
0 x0f;
i2c_write(gspca_dev,
0 x59, &data,
1 );
break ;
}
}
static void setgain(
struct gspca_dev *gspca_dev, u8 val)
{
i2c_write(gspca_dev,
0 x15, &val,
1 );
}
static void setexposure(
struct gspca_dev *gspca_dev, s32 val)
{
u8 data;
data = val >>
8 ;
i2c_write(gspca_dev,
0 x1a, &data,
1 );
data = val;
i2c_write(gspca_dev,
0 x1b, &data,
1 );
}
static void setautogain(
struct gspca_dev *gspca_dev, s32 val)
{
static const u8 data[
2 ] = {
0 x28,
0 x3c};
i2c_write(gspca_dev,
0 xd1, &data[val],
1 );
}
static void setgamma(
struct gspca_dev *gspca_dev)
{
/*fixme:to do */
usb_exchange(gspca_dev, poxxxx_gamma);
}
static void setbacklight(
struct gspca_dev *gspca_dev, s32 val)
{
u16 v;
u8 data;
data = (val <<
4 ) |
0 x0f;
i2c_write(gspca_dev,
0 xaa, &data,
1 );
v =
613 +
12 * val;
data = v >>
8 ;
i2c_write(gspca_dev,
0 xc4, &data,
1 );
data = v;
i2c_write(gspca_dev,
0 xc5, &data,
1 );
v =
1093 -
12 * val;
data = v >>
8 ;
i2c_write(gspca_dev,
0 xc6, &data,
1 );
data = v;
i2c_write(gspca_dev,
0 xc7, &data,
1 );
v =
342 +
9 * val;
data = v >>
8 ;
i2c_write(gspca_dev,
0 xc8, &data,
1 );
data = v;
i2c_write(gspca_dev,
0 xc9, &data,
1 );
v =
702 -
9 * val;
data = v >>
8 ;
i2c_write(gspca_dev,
0 xca, &data,
1 );
data = v;
i2c_write(gspca_dev,
0 xcb, &data,
1 );
}
static void setwb(
struct gspca_dev *gspca_dev)
{
/*fixme:to do - valid when reg d1 = 0x1c - (reg16 + reg15 = 0xa3)*/
static const u8 data[
2 ] = {
0 x00,
0 x00};
i2c_write(gspca_dev,
0 x16, &data[
0 ],
1 );
i2c_write(gspca_dev,
0 x18, &data[
1 ],
1 );
}
static int sd_start(
struct gspca_dev *gspca_dev)
{
struct sd *sd = (
struct sd *) gspca_dev;
const u8 (*init)[
4 ];
const u8 *GammaT = NULL;
const u8 *MatrixT = NULL;
int mode;
static const u8 (*mi1320_soc_init[])[
4 ] = {
mi1320_soc_InitSXGA,
mi1320_soc_InitVGA,
mi1320_soc_InitQVGA,
};
/*fixme: back sensor only*/
if (sd->flags & FL_SAMSUNG) {
reg_w(gspca_dev,
0 x89,
0 xf0ff,
0 xffff);
reg_w(gspca_dev,
0 xa9,
0 x8348,
0 x000e);
reg_w(gspca_dev,
0 xa9,
0 x0000,
0 x001a);
}
/* Assume start use the good resolution from gspca_dev->mode */
if (sd->bridge == BRIDGE_VC0321) {
reg_w(gspca_dev,
0 xa0,
0 xff,
0 xbfec);
reg_w(gspca_dev,
0 xa0,
0 xff,
0 xbfed);
reg_w(gspca_dev,
0 xa0,
0 xff,
0 xbfee);
reg_w(gspca_dev,
0 xa0,
0 xff,
0 xbfef);
sd->image_offset =
46 ;
}
else {
if (gspca_dev->cam.cam_mode[gspca_dev->curr_mode].pixelformat
== V4L2_PIX_FMT_JPEG)
sd->image_offset =
0 ;
else
sd->image_offset =
32 ;
}
mode = gspca_dev->cam.cam_mode[(
int ) gspca_dev->curr_mode].priv;
switch (sd->sensor) {
case SENSOR_HV7131R:
GammaT = hv7131r_gamma;
MatrixT = hv7131r_matrix;
if (mode)
init = hv7131r_initQVGA_data;
/* 320x240 */
else
init = hv7131r_initVGA_data;
/* 640x480 */
break ;
case SENSOR_OV7660:
GammaT = ov7660_gamma;
MatrixT = ov7660_matrix;
if (mode)
init = ov7660_initQVGA_data;
/* 320x240 */
else
init = ov7660_initVGA_data;
/* 640x480 */
break ;
case SENSOR_MI0360:
GammaT = mi1320_gamma;
MatrixT = mi0360_matrix;
if (mode)
init = mi0360_initQVGA_JPG;
/* 320x240 */
else
init = mi0360_initVGA_JPG;
/* 640x480 */
break ;
case SENSOR_MI1310_SOC:
GammaT = mi1320_gamma;
MatrixT = mi1320_matrix;
switch (mode) {
case 1 :
init = mi1310_socinitQVGA_JPG;
/* 320x240 */
break ;
case 0 :
init = mi1310_socinitVGA_JPG;
/* 640x480 */
break ;
default :
init = mi1310_soc_InitSXGA_JPG;
/* 1280x1024 */
break ;
}
break ;
case SENSOR_MI1320:
GammaT = mi1320_gamma;
MatrixT = mi1320_matrix;
if (mode)
init = mi1320_initQVGA_data;
/* 320x240 */
else
init = mi1320_initVGA_data;
/* 640x480 */
break ;
case SENSOR_MI1320_SOC:
GammaT = mi1320_gamma;
MatrixT = mi1320_matrix;
init = mi1320_soc_init[mode];
break ;
case SENSOR_OV7670:
init = mode ==
1 ? ov7670_InitVGA : ov7670_InitQVGA;
break ;
case SENSOR_PO3130NC:
GammaT = po3130_gamma;
MatrixT = po3130_matrix;
if (mode)
init = po3130_initQVGA_data;
/* 320x240 */
else
init = po3130_initVGA_data;
/* 640x480 */
usb_exchange(gspca_dev, init);
init = po3130_rundata;
break ;
case SENSOR_PO1200:
GammaT = po1200_gamma;
MatrixT = po1200_matrix;
init = po1200_initVGA_data;
break ;
default :
/* case SENSOR_POxxxx: */
usb_exchange(gspca_dev, poxxxx_init_common);
setgamma(gspca_dev);
usb_exchange(gspca_dev, poxxxx_init_start_3);
if (mode)
init = poxxxx_initQVGA;
else
init = poxxxx_initVGA;
usb_exchange(gspca_dev, init);
reg_r(gspca_dev,
0 x8c,
0 x0000,
3 );
reg_w(gspca_dev,
0 xa0,
gspca_dev->usb_buf[
2 ] &
1 ?
0 :
1 ,
0 xb35c);
msleep(
300 );
/*fixme: i2c read 04 and 05*/
init = poxxxx_init_end_1;
break ;
}
usb_exchange(gspca_dev, init);
if (GammaT && MatrixT) {
put_tab_to_reg(gspca_dev, GammaT,
17 ,
0 xb84a);
put_tab_to_reg(gspca_dev, GammaT,
17 ,
0 xb85b);
put_tab_to_reg(gspca_dev, GammaT,
17 ,
0 xb86c);
put_tab_to_reg(gspca_dev, MatrixT,
9 ,
0 xb82c);
switch (sd->sensor) {
case SENSOR_PO1200:
case SENSOR_HV7131R:
reg_w(gspca_dev,
0 x89,
0 x0400,
0 x1415);
break ;
case SENSOR_MI1310_SOC:
reg_w(gspca_dev,
0 x89,
0 x058c,
0 x0000);
break ;
}
msleep(
100 );
}
switch (sd->sensor) {
case SENSOR_OV7670:
reg_w(gspca_dev,
0 x87,
0 xffff,
0 xffff);
reg_w(gspca_dev,
0 x88,
0 xff00,
0 xf0f1);
reg_w(gspca_dev,
0 xa0,
0 x0000,
0 xbfff);
break ;
case SENSOR_POxxxx:
usb_exchange(gspca_dev, poxxxx_init_end_2);
setwb(gspca_dev);
msleep(
80 );
/* led on */
reg_w(gspca_dev,
0 x89,
0 xffff,
0 xfdff);
break ;
}
return gspca_dev->usb_err;
}
static void sd_stopN(
struct gspca_dev *gspca_dev)
{
struct sd *sd = (
struct sd *) gspca_dev;
switch (sd->sensor) {
case SENSOR_MI1310_SOC:
reg_w(gspca_dev,
0 x89,
0 x058c,
0 x00ff);
break ;
case SENSOR_POxxxx:
return ;
default :
if (!(sd->flags & FL_SAMSUNG))
reg_w(gspca_dev,
0 x89,
0 xffff,
0 xffff);
break ;
}
reg_w(gspca_dev,
0 xa0,
0 x01,
0 xb301);
reg_w(gspca_dev,
0 xa0,
0 x09,
0 xb003);
}
/* called on streamoff with alt 0 and on disconnect */
static void sd_stop0(
struct gspca_dev *gspca_dev)
{
struct sd *sd = (
struct sd *) gspca_dev;
if (!gspca_dev->present)
return ;
/*fixme: is this useful?*/
if (sd->sensor == SENSOR_MI1310_SOC)
reg_w(gspca_dev,
0 x89,
0 x058c,
0 x00ff);
else if (!(sd->flags & FL_SAMSUNG))
reg_w(gspca_dev,
0 x89,
0 xffff,
0 xffff);
if (sd->sensor == SENSOR_POxxxx) {
reg_w(gspca_dev,
0 xa0,
0 x26,
0 xb300);
reg_w(gspca_dev,
0 xa0,
0 x04,
0 xb300);
reg_w(gspca_dev,
0 xa0,
0 x00,
0 xb300);
}
}
static void sd_pkt_scan(
struct gspca_dev *gspca_dev,
u8 *data,
/* isoc packet */
int len)
/* iso pkt length */
{
struct sd *sd = (
struct sd *) gspca_dev;
if (data[
0 ] ==
0 xff && data[
1 ] ==
0 xd8) {
gspca_dbg(gspca_dev, D_PACK,
"vc032x header packet found len %d\n" , len);
gspca_frame_add(gspca_dev, LAST_PACKET, NULL,
0 );
data += sd->image_offset;
len -= sd->image_offset;
gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
return ;
}
/* The vc0321 sends some additional data after sending the complete
* frame, we ignore this. */
if (sd->bridge == BRIDGE_VC0321) {
int size, l;
l = gspca_dev->image_len;
size = gspca_dev->pixfmt.sizeimage;
if (len > size - l)
len = size - l;
}
gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
}
static int sd_s_ctrl(
struct v4l2_ctrl *ctrl)
{
struct gspca_dev *gspca_dev =
container_of(ctrl->handler,
struct gspca_dev, ctrl_handler);
struct sd *sd = (
struct sd *)gspca_dev;
gspca_dev->usb_err =
0 ;
if (!gspca_dev->streaming && ctrl->id != V4L2_CID_POWER_LINE_FREQUENCY)
return 0 ;
switch (ctrl->id) {
case V4L2_CID_BRIGHTNESS:
setbrightness(gspca_dev, ctrl->val);
break ;
case V4L2_CID_CONTRAST:
setcontrast(gspca_dev, ctrl->val);
break ;
case V4L2_CID_SATURATION:
setcolors(gspca_dev, ctrl->val);
break ;
case V4L2_CID_HFLIP:
sethvflip(gspca_dev, sd->hflip->val, sd->vflip->val);
break ;
case V4L2_CID_SHARPNESS:
setsharpness(gspca_dev, ctrl->val);
break ;
case V4L2_CID_AUTOGAIN:
setautogain(gspca_dev, ctrl->val);
break ;
case V4L2_CID_GAIN:
setgain(gspca_dev, ctrl->val);
break ;
case V4L2_CID_EXPOSURE:
setexposure(gspca_dev, ctrl->val);
break ;
case V4L2_CID_BACKLIGHT_COMPENSATION:
setbacklight(gspca_dev, ctrl->val);
break ;
case V4L2_CID_POWER_LINE_FREQUENCY:
setlightfreq(gspca_dev, ctrl->val);
break ;
}
return gspca_dev->usb_err;
}
static const struct v4l2_ctrl_ops sd_ctrl_ops = {
.s_ctrl = sd_s_ctrl,
};
static int sd_init_controls(
struct gspca_dev *gspca_dev)
{
struct sd *sd = (
struct sd *)gspca_dev;
struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
bool has_brightness =
false ;
bool has_contrast =
false ;
bool has_sat =
false ;
bool has_hvflip =
false ;
bool has_freq =
false ;
bool has_backlight =
false ;
bool has_exposure =
false ;
bool has_autogain =
false ;
bool has_gain =
false ;
bool has_sharpness =
false ;
switch (sd->sensor) {
case SENSOR_HV7131R:
case SENSOR_MI0360:
case SENSOR_PO3130NC:
break ;
case SENSOR_MI1310_SOC:
case SENSOR_MI1320:
case SENSOR_MI1320_SOC:
case SENSOR_OV7660:
has_hvflip =
true ;
break ;
case SENSOR_OV7670:
has_hvflip = has_freq =
true ;
break ;
case SENSOR_PO1200:
has_hvflip = has_sharpness =
true ;
break ;
case SENSOR_POxxxx:
has_brightness = has_contrast = has_sat = has_backlight =
has_exposure = has_autogain = has_gain =
has_sharpness =
true ;
break ;
}
gspca_dev->vdev.ctrl_handler = hdl;
v4l2_ctrl_handler_init(hdl,
8 );
if (has_brightness)
v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
V4L2_CID_BRIGHTNESS,
0 ,
255 ,
1 ,
128 );
if (has_contrast)
v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
V4L2_CID_CONTRAST,
0 ,
255 ,
1 ,
127 );
if (has_sat)
v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
V4L2_CID_SATURATION,
1 ,
127 ,
1 ,
63 );
if (has_hvflip) {
sd->hflip = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
V4L2_CID_HFLIP,
0 ,
1 ,
1 ,
0 );
sd->vflip = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
V4L2_CID_VFLIP,
0 ,
1 ,
1 ,
0 );
}
if (has_sharpness)
v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
V4L2_CID_SHARPNESS, -
1 ,
2 ,
1 , -
1 );
if (has_freq)
v4l2_ctrl_new_std_menu(hdl, &sd_ctrl_ops,
V4L2_CID_POWER_LINE_FREQUENCY,
V4L2_CID_POWER_LINE_FREQUENCY_60HZ,
0 ,
V4L2_CID_POWER_LINE_FREQUENCY_50HZ);
if (has_autogain)
v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
V4L2_CID_AUTOGAIN,
0 ,
1 ,
1 ,
1 );
if (has_gain)
v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
V4L2_CID_GAIN,
0 ,
78 ,
1 ,
0 );
if (has_exposure)
v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
V4L2_CID_EXPOSURE,
0 ,
4095 ,
1 ,
450 );
if (has_backlight)
v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
V4L2_CID_BACKLIGHT_COMPENSATION,
0 ,
15 ,
1 ,
15 );
if (hdl->error) {
pr_err(
"Could not initialize controls\n" );
return hdl->error;
}
if (sd->hflip)
v4l2_ctrl_cluster(
2 , &sd->hflip);
return 0 ;
}
/* sub-driver description */
static const struct sd_desc sd_desc = {
.name = MODULE_NAME,
.init_controls = sd_init_controls,
.config = sd_config,
.init = sd_init,
.start = sd_start,
.stopN = sd_stopN,
.stop0 = sd_stop0,
.pkt_scan = sd_pkt_scan,
};
/* -- module initialisation -- */
#define BF(bridge, flags) \
.driver_info = (BRIDGE_
## bridge <<
8 ) \
| (flags)
static const struct usb_device_id device_table[] = {
{USB_DEVICE(
0 x041e,
0 x405b), BF(VC0323, FL_VFLIP)},
{USB_DEVICE(
0 x046d,
0 x0892), BF(VC0321,
0 )},
{USB_DEVICE(
0 x046d,
0 x0896), BF(VC0321,
0 )},
{USB_DEVICE(
0 x046d,
0 x0897), BF(VC0321,
0 )},
{USB_DEVICE(
0 x0ac8,
0 x0321), BF(VC0321,
0 )},
{USB_DEVICE(
0 x0ac8,
0 x0323), BF(VC0323,
0 )},
{USB_DEVICE(
0 x0ac8,
0 x0328), BF(VC0321,
0 )},
{USB_DEVICE(
0 x0ac8,
0 xc001), BF(VC0321,
0 )},
{USB_DEVICE(
0 x0ac8,
0 xc002), BF(VC0321,
0 )},
{USB_DEVICE(
0 x0ac8,
0 xc301), BF(VC0323, FL_SAMSUNG)},
{USB_DEVICE(
0 x15b8,
0 x6001), BF(VC0323,
0 )},
{USB_DEVICE(
0 x15b8,
0 x6002), BF(VC0323,
0 )},
{USB_DEVICE(
0 x17ef,
0 x4802), BF(VC0323,
0 )},
{}
};
MODULE_DEVICE_TABLE(usb, device_table);
/* -- device connect -- */
static int sd_probe(
struct usb_interface *intf,
const struct usb_device_id *id)
{
return gspca_dev_probe(intf, id, &sd_desc,
sizeof (
struct sd),
THIS_MODULE);
}
static struct usb_driver sd_driver = {
.name = MODULE_NAME,
.id_table = device_table,
.probe = sd_probe,
.disconnect = gspca_disconnect,
#ifdef CONFIG_PM
.suspend = gspca_suspend,
.resume = gspca_resume,
.reset_resume = gspca_resume,
#endif
};
module_usb_driver(sd_driver);
Messung V0.5 in Prozent C=96 H=91 G=93
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.110Bemerkung:
(vorverarbeitet am 2026-06-08)
¤
*Bot Zugriff