xref: /linux/drivers/media/usb/gspca/vc032x.c (revision 976e3645923bdd2fe7893aae33fd7a21098bfb28)
1fd9871f7SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later
26a7eba24SJean-Francois Moine /*
36a7eba24SJean-Francois Moine  * Z-star vc0321 library
427c6f9e5SJean-François Moine  *
527c6f9e5SJean-François Moine  * Copyright (C) 2009-2010 Jean-François Moine <http://moinejf.free.fr>
66a7eba24SJean-Francois Moine  * Copyright (C) 2006 Koninski Artur takeshi87@o2.pl
76a7eba24SJean-Francois Moine  * Copyright (C) 2006 Michel Xhaard
86a7eba24SJean-Francois Moine  */
96a7eba24SJean-Francois Moine 
10133a9fe9SJoe Perches #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
11133a9fe9SJoe Perches 
126a7eba24SJean-Francois Moine #define MODULE_NAME "vc032x"
136a7eba24SJean-Francois Moine 
146a7eba24SJean-Francois Moine #include "gspca.h"
156a7eba24SJean-Francois Moine 
1627c6f9e5SJean-François Moine MODULE_AUTHOR("Jean-François Moine <http://moinejf.free.fr>");
176a7eba24SJean-Francois Moine MODULE_DESCRIPTION("GSPCA/VC032X USB Camera Driver");
186a7eba24SJean-Francois Moine MODULE_LICENSE("GPL");
196a7eba24SJean-Francois Moine 
206a7eba24SJean-Francois Moine /* specific webcam descriptor */
216a7eba24SJean-Francois Moine struct sd {
226a7eba24SJean-Francois Moine 	struct gspca_dev gspca_dev;	/* !! must be the first item */
23930806cbSHans Verkuil 	struct { /* hvflip cluster */
24930806cbSHans Verkuil 		struct v4l2_ctrl *hflip;
25930806cbSHans Verkuil 		struct v4l2_ctrl *vflip;
26930806cbSHans Verkuil 	};
276a7eba24SJean-Francois Moine 
2858e2ded8SJean-Francois Moine 	u8 image_offset;
2958e2ded8SJean-Francois Moine 
308b605f18SJean-Francois Moine 	u8 bridge;
3149cb6b04SJean-Francois Moine 	u8 sensor;
32e27188eeSJean-Francois Moine 	u8 flags;
33e27188eeSJean-Francois Moine #define FL_SAMSUNG 0x01		/* SamsungQ1 (2 sensors) */
34e27188eeSJean-Francois Moine #define FL_HFLIP 0x02		/* mirrored by default */
35e27188eeSJean-Francois Moine #define FL_VFLIP 0x04		/* vertical flipped by default */
366a7eba24SJean-Francois Moine };
377e5f9059SJean-François Moine enum bridges {
387e5f9059SJean-François Moine 	BRIDGE_VC0321,
397e5f9059SJean-François Moine 	BRIDGE_VC0323,
407e5f9059SJean-François Moine };
417e5f9059SJean-François Moine enum sensors {
427e5f9059SJean-François Moine 	SENSOR_HV7131R,
437e5f9059SJean-François Moine 	SENSOR_MI0360,
447e5f9059SJean-François Moine 	SENSOR_MI1310_SOC,
457e5f9059SJean-François Moine 	SENSOR_MI1320,
467e5f9059SJean-François Moine 	SENSOR_MI1320_SOC,
477e5f9059SJean-François Moine 	SENSOR_OV7660,
487e5f9059SJean-François Moine 	SENSOR_OV7670,
497e5f9059SJean-François Moine 	SENSOR_PO1200,
507e5f9059SJean-François Moine 	SENSOR_PO3130NC,
517e5f9059SJean-François Moine 	SENSOR_POxxxx,
527e5f9059SJean-François Moine 	NSENSORS
537e5f9059SJean-François Moine };
546a7eba24SJean-Francois Moine 
5583c94a18SJean-Francois Moine 
56cc611b8aSJean-Francois Moine static const struct v4l2_pix_format vc0321_mode[] = {
5720122542SJean-Francois Moine 	{320, 240, V4L2_PIX_FMT_YVYU, V4L2_FIELD_NONE,
5891de062fSLuca Bonissi 		.bytesperline = 320 * 2,
59c2446b3eSJean-Francois Moine 		.sizeimage = 320 * 240 * 2,
60c2446b3eSJean-Francois Moine 		.colorspace = V4L2_COLORSPACE_SRGB,
61c2446b3eSJean-Francois Moine 		.priv = 1},
6220122542SJean-Francois Moine 	{640, 480, V4L2_PIX_FMT_YVYU, V4L2_FIELD_NONE,
6391de062fSLuca Bonissi 		.bytesperline = 640 * 2,
64c2446b3eSJean-Francois Moine 		.sizeimage = 640 * 480 * 2,
65c2446b3eSJean-Francois Moine 		.colorspace = V4L2_COLORSPACE_SRGB,
66c2446b3eSJean-Francois Moine 		.priv = 0},
676a7eba24SJean-Francois Moine };
68cc611b8aSJean-Francois Moine static const struct v4l2_pix_format vc0323_mode[] = {
69c2446b3eSJean-Francois Moine 	{320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
70c2446b3eSJean-Francois Moine 		.bytesperline = 320,
71c2446b3eSJean-Francois Moine 		.sizeimage = 320 * 240 * 3 / 8 + 590,
72c2446b3eSJean-Francois Moine 		.colorspace = V4L2_COLORSPACE_JPEG,
73c2446b3eSJean-Francois Moine 		.priv = 1},
74c2446b3eSJean-Francois Moine 	{640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
75c2446b3eSJean-Francois Moine 		.bytesperline = 640,
76c2446b3eSJean-Francois Moine 		.sizeimage = 640 * 480 * 3 / 8 + 590,
77c2446b3eSJean-Francois Moine 		.colorspace = V4L2_COLORSPACE_JPEG,
78c2446b3eSJean-Francois Moine 		.priv = 0},
79111815efSJean-Francois Moine 	{1280, 960, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, /* mi1310_soc only */
806af4e7a1SJean-Francois Moine 		.bytesperline = 1280,
81111815efSJean-Francois Moine 		.sizeimage = 1280 * 960 * 3 / 8 + 590,
826af4e7a1SJean-Francois Moine 		.colorspace = V4L2_COLORSPACE_JPEG,
836af4e7a1SJean-Francois Moine 		.priv = 2},
846a7eba24SJean-Francois Moine };
8558e2ded8SJean-Francois Moine static const struct v4l2_pix_format bi_mode[] = {
862c956108SJean-Francois Moine 	{320, 240, V4L2_PIX_FMT_YUYV, V4L2_FIELD_NONE,
8791de062fSLuca Bonissi 		.bytesperline = 320 * 2,
8858e2ded8SJean-Francois Moine 		.sizeimage = 320 * 240 * 2,
8958e2ded8SJean-Francois Moine 		.colorspace = V4L2_COLORSPACE_SRGB,
9051412aacSJean-Francois Moine 		.priv = 2},
912c956108SJean-Francois Moine 	{640, 480, V4L2_PIX_FMT_YUYV, V4L2_FIELD_NONE,
9291de062fSLuca Bonissi 		.bytesperline = 640 * 2,
9358e2ded8SJean-Francois Moine 		.sizeimage = 640 * 480 * 2,
9458e2ded8SJean-Francois Moine 		.colorspace = V4L2_COLORSPACE_SRGB,
9558e2ded8SJean-Francois Moine 		.priv = 1},
962c956108SJean-Francois Moine 	{1280, 1024, V4L2_PIX_FMT_YUYV, V4L2_FIELD_NONE,
9791de062fSLuca Bonissi 		.bytesperline = 1280 * 2,
9858e2ded8SJean-Francois Moine 		.sizeimage = 1280 * 1024 * 2,
9958e2ded8SJean-Francois Moine 		.colorspace = V4L2_COLORSPACE_SRGB,
10058e2ded8SJean-Francois Moine 		.priv = 0},
10158e2ded8SJean-Francois Moine };
102cc611b8aSJean-Francois Moine static const struct v4l2_pix_format svga_mode[] = {
10388521535SJean-Francois Moine 	{800, 600, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
10488521535SJean-Francois Moine 		.bytesperline = 800,
10588521535SJean-Francois Moine 		.sizeimage = 800 * 600 * 1 / 4 + 590,
10688521535SJean-Francois Moine 		.colorspace = V4L2_COLORSPACE_JPEG,
10788521535SJean-Francois Moine 		.priv = 0},
10888521535SJean-Francois Moine };
10988521535SJean-Francois Moine 
1107dc7ad38SJean-Francois Moine /* OV7660/7670 registers */
1117dc7ad38SJean-Francois Moine #define OV7660_REG_MVFP 0x1e
1127dc7ad38SJean-Francois Moine #define OV7660_MVFP_MIRROR	0x20
1137dc7ad38SJean-Francois Moine #define OV7660_MVFP_VFLIP	0x10
1147dc7ad38SJean-Francois Moine 
1158b605f18SJean-Francois Moine static const u8 mi0360_matrix[9] = {
116cbb0554fSJean-Francois Moine 	0x50, 0xf8, 0xf8, 0xf5, 0x50, 0xfb, 0xff, 0xf1, 0x50
117cbb0554fSJean-Francois Moine };
118cbb0554fSJean-Francois Moine 
1198b605f18SJean-Francois Moine static const u8 mi0360_initVGA_JPG[][4] = {
120cbb0554fSJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},
121cbb0554fSJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},
122cbb0554fSJean-Francois Moine 	{0xb3, 0x00, 0x24, 0xcc},
123cbb0554fSJean-Francois Moine 	{0xb3, 0x00, 0x25, 0xcc},
124cbb0554fSJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
125cbb0554fSJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
126cbb0554fSJean-Francois Moine 	{0xb3, 0x05, 0x01, 0xcc},
127cbb0554fSJean-Francois Moine 	{0xb3, 0x06, 0x03, 0xcc},
128cbb0554fSJean-Francois Moine 	{0xb3, 0x03, 0x0a, 0xcc},
129cbb0554fSJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
130cbb0554fSJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
131cbb0554fSJean-Francois Moine 	{0xb3, 0x22, 0x01, 0xcc},
132cbb0554fSJean-Francois Moine 	{0xb3, 0x23, 0xe0, 0xcc},
133cbb0554fSJean-Francois Moine 	{0xb3, 0x04, 0x05, 0xcc},
134cbb0554fSJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
135cbb0554fSJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},
136cbb0554fSJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},
137cbb0554fSJean-Francois Moine 	{0xb3, 0x17, 0x7f, 0xcc},
138ff1cf408SJean-Francois Moine 	{0xb3, 0x35, 0xdd, 0xcc},	/* i2c add: 5d */
139cbb0554fSJean-Francois Moine 	{0xb3, 0x34, 0x02, 0xcc},
140cbb0554fSJean-Francois Moine 	{0xb3, 0x00, 0x25, 0xcc},
141cbb0554fSJean-Francois Moine 	{0xbc, 0x00, 0x71, 0xcc},
142cbb0554fSJean-Francois Moine 	{0xb8, 0x00, 0x13, 0xcc},
143cbb0554fSJean-Francois Moine 	{0xb8, 0x27, 0x20, 0xcc},
144cbb0554fSJean-Francois Moine 	{0xb8, 0x2c, 0x50, 0xcc},
145cbb0554fSJean-Francois Moine 	{0xb8, 0x2d, 0xf8, 0xcc},
146cbb0554fSJean-Francois Moine 	{0xb8, 0x2e, 0xf8, 0xcc},
147cbb0554fSJean-Francois Moine 	{0xb8, 0x2f, 0xf8, 0xcc},
148cbb0554fSJean-Francois Moine 	{0xb8, 0x30, 0x50, 0xcc},
149cbb0554fSJean-Francois Moine 	{0xb8, 0x31, 0xf8, 0xcc},
150cbb0554fSJean-Francois Moine 	{0xb8, 0x32, 0xf8, 0xcc},
151cbb0554fSJean-Francois Moine 	{0xb8, 0x33, 0xf8, 0xcc},
152cbb0554fSJean-Francois Moine 	{0xb8, 0x34, 0x50, 0xcc},
153cbb0554fSJean-Francois Moine 	{0xb8, 0x35, 0x00, 0xcc},
154cbb0554fSJean-Francois Moine 	{0xb8, 0x36, 0x00, 0xcc},
155cbb0554fSJean-Francois Moine 	{0xb8, 0x37, 0x00, 0xcc},
156cbb0554fSJean-Francois Moine 	{0xb8, 0x01, 0x79, 0xcc},
157cbb0554fSJean-Francois Moine 	{0xb8, 0x08, 0xe0, 0xcc},
158cbb0554fSJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
159cbb0554fSJean-Francois Moine 	{0xb8, 0x01, 0x79, 0xcc},
160cbb0554fSJean-Francois Moine 	{0xb8, 0x14, 0x18, 0xcc},
161cbb0554fSJean-Francois Moine 	{0xb8, 0xb2, 0x0a, 0xcc},
162cbb0554fSJean-Francois Moine 	{0xb8, 0xb4, 0x0a, 0xcc},
163cbb0554fSJean-Francois Moine 	{0xb8, 0xb5, 0x0a, 0xcc},
164cbb0554fSJean-Francois Moine 	{0xb8, 0xfe, 0x00, 0xcc},
165cbb0554fSJean-Francois Moine 	{0xb8, 0xff, 0x28, 0xcc},
166cbb0554fSJean-Francois Moine 	{0xb9, 0x00, 0x28, 0xcc},
167cbb0554fSJean-Francois Moine 	{0xb9, 0x01, 0x28, 0xcc},
168cbb0554fSJean-Francois Moine 	{0xb9, 0x02, 0x28, 0xcc},
169cbb0554fSJean-Francois Moine 	{0xb9, 0x03, 0x00, 0xcc},
170cbb0554fSJean-Francois Moine 	{0xb9, 0x04, 0x00, 0xcc},
171cbb0554fSJean-Francois Moine 	{0xb9, 0x05, 0x3c, 0xcc},
172cbb0554fSJean-Francois Moine 	{0xb9, 0x06, 0x3c, 0xcc},
173cbb0554fSJean-Francois Moine 	{0xb9, 0x07, 0x3c, 0xcc},
174cbb0554fSJean-Francois Moine 	{0xb9, 0x08, 0x3c, 0xcc},
175cbb0554fSJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},
176cbb0554fSJean-Francois Moine 	{0xb8, 0x8f, 0xff, 0xcc},
177cbb0554fSJean-Francois Moine 	{0xb8, 0x81, 0x09, 0xcc},
178cbb0554fSJean-Francois Moine 	{0x31, 0x00, 0x00, 0xbb},
179cbb0554fSJean-Francois Moine 	{0x09, 0x01, 0xc7, 0xbb},
180cbb0554fSJean-Francois Moine 	{0x34, 0x01, 0x00, 0xbb},
181cbb0554fSJean-Francois Moine 	{0x2b, 0x00, 0x28, 0xbb},
182cbb0554fSJean-Francois Moine 	{0x2c, 0x00, 0x30, 0xbb},
183cbb0554fSJean-Francois Moine 	{0x2d, 0x00, 0x30, 0xbb},
184cbb0554fSJean-Francois Moine 	{0x2e, 0x00, 0x28, 0xbb},
185cbb0554fSJean-Francois Moine 	{0x62, 0x04, 0x11, 0xbb},
186cbb0554fSJean-Francois Moine 	{0x03, 0x01, 0xe0, 0xbb},
187cbb0554fSJean-Francois Moine 	{0x2c, 0x00, 0x2c, 0xbb},
188cbb0554fSJean-Francois Moine 	{0x20, 0xd0, 0x00, 0xbb},
189cbb0554fSJean-Francois Moine 	{0x01, 0x00, 0x08, 0xbb},
190cbb0554fSJean-Francois Moine 	{0x06, 0x00, 0x10, 0xbb},
191cbb0554fSJean-Francois Moine 	{0x05, 0x00, 0x20, 0xbb},
192cbb0554fSJean-Francois Moine 	{0x20, 0x00, 0x00, 0xbb},
193cbb0554fSJean-Francois Moine 	{0xb6, 0x00, 0x00, 0xcc},
194cbb0554fSJean-Francois Moine 	{0xb6, 0x03, 0x02, 0xcc},
195cbb0554fSJean-Francois Moine 	{0xb6, 0x02, 0x80, 0xcc},
196cbb0554fSJean-Francois Moine 	{0xb6, 0x05, 0x01, 0xcc},
197cbb0554fSJean-Francois Moine 	{0xb6, 0x04, 0xe0, 0xcc},
198cbb0554fSJean-Francois Moine 	{0xb6, 0x12, 0x78, 0xcc},
199cbb0554fSJean-Francois Moine 	{0xb6, 0x18, 0x02, 0xcc},
200cbb0554fSJean-Francois Moine 	{0xb6, 0x17, 0x58, 0xcc},
201cbb0554fSJean-Francois Moine 	{0xb6, 0x16, 0x00, 0xcc},
202cbb0554fSJean-Francois Moine 	{0xb6, 0x22, 0x12, 0xcc},
203cbb0554fSJean-Francois Moine 	{0xb6, 0x23, 0x0b, 0xcc},
204cbb0554fSJean-Francois Moine 	{0xb3, 0x02, 0x02, 0xcc},
205cbb0554fSJean-Francois Moine 	{0xbf, 0xc0, 0x39, 0xcc},
206cbb0554fSJean-Francois Moine 	{0xbf, 0xc1, 0x04, 0xcc},
207cbb0554fSJean-Francois Moine 	{0xbf, 0xcc, 0x10, 0xcc},
208cbb0554fSJean-Francois Moine 	{0xb9, 0x12, 0x00, 0xcc},
209cbb0554fSJean-Francois Moine 	{0xb9, 0x13, 0x0a, 0xcc},
210cbb0554fSJean-Francois Moine 	{0xb9, 0x14, 0x0a, 0xcc},
211cbb0554fSJean-Francois Moine 	{0xb9, 0x15, 0x0a, 0xcc},
212cbb0554fSJean-Francois Moine 	{0xb9, 0x16, 0x0a, 0xcc},
213cbb0554fSJean-Francois Moine 	{0xb9, 0x18, 0x00, 0xcc},
214cbb0554fSJean-Francois Moine 	{0xb9, 0x19, 0x0f, 0xcc},
215cbb0554fSJean-Francois Moine 	{0xb9, 0x1a, 0x0f, 0xcc},
216cbb0554fSJean-Francois Moine 	{0xb9, 0x1b, 0x0f, 0xcc},
217cbb0554fSJean-Francois Moine 	{0xb9, 0x1c, 0x0f, 0xcc},
218cbb0554fSJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},
219cbb0554fSJean-Francois Moine 	{0xb8, 0x8f, 0xff, 0xcc},
220cbb0554fSJean-Francois Moine 	{0xb6, 0x12, 0xf8, 0xcc},
221cbb0554fSJean-Francois Moine 	{0xb8, 0x0c, 0x20, 0xcc},
222cbb0554fSJean-Francois Moine 	{0xb8, 0x0d, 0x70, 0xcc},
223cbb0554fSJean-Francois Moine 	{0xb6, 0x13, 0x13, 0xcc},
224cbb0554fSJean-Francois Moine 	{0x35, 0x00, 0x60, 0xbb},
225cbb0554fSJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
226cbb0554fSJean-Francois Moine 	{}
227cbb0554fSJean-Francois Moine };
2288b605f18SJean-Francois Moine static const u8 mi0360_initQVGA_JPG[][4] = {
229cbb0554fSJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},
230cbb0554fSJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},
231cbb0554fSJean-Francois Moine 	{0xb3, 0x00, 0x24, 0xcc},
232cbb0554fSJean-Francois Moine 	{0xb3, 0x00, 0x25, 0xcc},
233cbb0554fSJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
234cbb0554fSJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
235cbb0554fSJean-Francois Moine 	{0xb3, 0x05, 0x01, 0xcc},
236cbb0554fSJean-Francois Moine 	{0xb3, 0x06, 0x03, 0xcc},
237cbb0554fSJean-Francois Moine 	{0xb3, 0x03, 0x0a, 0xcc},
238cbb0554fSJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
239cbb0554fSJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
240cbb0554fSJean-Francois Moine 	{0xb3, 0x22, 0x01, 0xcc},
241cbb0554fSJean-Francois Moine 	{0xb3, 0x23, 0xe0, 0xcc},
242cbb0554fSJean-Francois Moine 	{0xb3, 0x04, 0x05, 0xcc},
243cbb0554fSJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
244cbb0554fSJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},
245cbb0554fSJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},
246cbb0554fSJean-Francois Moine 	{0xb3, 0x17, 0x7f, 0xcc},
247cbb0554fSJean-Francois Moine 	{0xb3, 0x35, 0xdd, 0xcc},
248cbb0554fSJean-Francois Moine 	{0xb3, 0x34, 0x02, 0xcc},
249cbb0554fSJean-Francois Moine 	{0xb3, 0x00, 0x25, 0xcc},
250cbb0554fSJean-Francois Moine 	{0xbc, 0x00, 0xd1, 0xcc},
251cbb0554fSJean-Francois Moine 	{0xb8, 0x00, 0x13, 0xcc},
252cbb0554fSJean-Francois Moine 	{0xb8, 0x27, 0x20, 0xcc},
253cbb0554fSJean-Francois Moine 	{0xb8, 0x2c, 0x50, 0xcc},
254cbb0554fSJean-Francois Moine 	{0xb8, 0x2d, 0xf8, 0xcc},
255cbb0554fSJean-Francois Moine 	{0xb8, 0x2e, 0xf8, 0xcc},
256cbb0554fSJean-Francois Moine 	{0xb8, 0x2f, 0xf8, 0xcc},
257cbb0554fSJean-Francois Moine 	{0xb8, 0x30, 0x50, 0xcc},
258cbb0554fSJean-Francois Moine 	{0xb8, 0x31, 0xf8, 0xcc},
259cbb0554fSJean-Francois Moine 	{0xb8, 0x32, 0xf8, 0xcc},
260cbb0554fSJean-Francois Moine 	{0xb8, 0x33, 0xf8, 0xcc},
261cbb0554fSJean-Francois Moine 	{0xb8, 0x34, 0x50, 0xcc},
262cbb0554fSJean-Francois Moine 	{0xb8, 0x35, 0x00, 0xcc},
263cbb0554fSJean-Francois Moine 	{0xb8, 0x36, 0x00, 0xcc},
264cbb0554fSJean-Francois Moine 	{0xb8, 0x37, 0x00, 0xcc},
265cbb0554fSJean-Francois Moine 	{0xb8, 0x01, 0x79, 0xcc},
266cbb0554fSJean-Francois Moine 	{0xb8, 0x08, 0xe0, 0xcc},
267cbb0554fSJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
268cbb0554fSJean-Francois Moine 	{0xb8, 0x01, 0x79, 0xcc},
269cbb0554fSJean-Francois Moine 	{0xb8, 0x14, 0x18, 0xcc},
270cbb0554fSJean-Francois Moine 	{0xb8, 0xb2, 0x0a, 0xcc},
271cbb0554fSJean-Francois Moine 	{0xb8, 0xb4, 0x0a, 0xcc},
272cbb0554fSJean-Francois Moine 	{0xb8, 0xb5, 0x0a, 0xcc},
273cbb0554fSJean-Francois Moine 	{0xb8, 0xfe, 0x00, 0xcc},
274cbb0554fSJean-Francois Moine 	{0xb8, 0xff, 0x28, 0xcc},
275cbb0554fSJean-Francois Moine 	{0xb9, 0x00, 0x28, 0xcc},
276cbb0554fSJean-Francois Moine 	{0xb9, 0x01, 0x28, 0xcc},
277cbb0554fSJean-Francois Moine 	{0xb9, 0x02, 0x28, 0xcc},
278cbb0554fSJean-Francois Moine 	{0xb9, 0x03, 0x00, 0xcc},
279cbb0554fSJean-Francois Moine 	{0xb9, 0x04, 0x00, 0xcc},
280cbb0554fSJean-Francois Moine 	{0xb9, 0x05, 0x3c, 0xcc},
281cbb0554fSJean-Francois Moine 	{0xb9, 0x06, 0x3c, 0xcc},
282cbb0554fSJean-Francois Moine 	{0xb9, 0x07, 0x3c, 0xcc},
283cbb0554fSJean-Francois Moine 	{0xb9, 0x08, 0x3c, 0xcc},
284cbb0554fSJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},
285cbb0554fSJean-Francois Moine 	{0xb8, 0x8f, 0xff, 0xcc},
286cbb0554fSJean-Francois Moine 	{0xb8, 0x81, 0x09, 0xcc},
287cbb0554fSJean-Francois Moine 	{0x31, 0x00, 0x00, 0xbb},
288cbb0554fSJean-Francois Moine 	{0x09, 0x01, 0xc7, 0xbb},
289cbb0554fSJean-Francois Moine 	{0x34, 0x01, 0x00, 0xbb},
290cbb0554fSJean-Francois Moine 	{0x2b, 0x00, 0x28, 0xbb},
291cbb0554fSJean-Francois Moine 	{0x2c, 0x00, 0x30, 0xbb},
292cbb0554fSJean-Francois Moine 	{0x2d, 0x00, 0x30, 0xbb},
293cbb0554fSJean-Francois Moine 	{0x2e, 0x00, 0x28, 0xbb},
294cbb0554fSJean-Francois Moine 	{0x62, 0x04, 0x11, 0xbb},
295cbb0554fSJean-Francois Moine 	{0x03, 0x01, 0xe0, 0xbb},
296cbb0554fSJean-Francois Moine 	{0x2c, 0x00, 0x2c, 0xbb},
297cbb0554fSJean-Francois Moine 	{0x20, 0xd0, 0x00, 0xbb},
298cbb0554fSJean-Francois Moine 	{0x01, 0x00, 0x08, 0xbb},
299cbb0554fSJean-Francois Moine 	{0x06, 0x00, 0x10, 0xbb},
300cbb0554fSJean-Francois Moine 	{0x05, 0x00, 0x20, 0xbb},
301cbb0554fSJean-Francois Moine 	{0x20, 0x00, 0x00, 0xbb},
302cbb0554fSJean-Francois Moine 	{0xb6, 0x00, 0x00, 0xcc},
303cbb0554fSJean-Francois Moine 	{0xb6, 0x03, 0x01, 0xcc},
304cbb0554fSJean-Francois Moine 	{0xb6, 0x02, 0x40, 0xcc},
305cbb0554fSJean-Francois Moine 	{0xb6, 0x05, 0x00, 0xcc},
306cbb0554fSJean-Francois Moine 	{0xb6, 0x04, 0xf0, 0xcc},
307cbb0554fSJean-Francois Moine 	{0xb6, 0x12, 0x78, 0xcc},
308cbb0554fSJean-Francois Moine 	{0xb6, 0x18, 0x00, 0xcc},
309cbb0554fSJean-Francois Moine 	{0xb6, 0x17, 0x96, 0xcc},
310cbb0554fSJean-Francois Moine 	{0xb6, 0x16, 0x00, 0xcc},
311cbb0554fSJean-Francois Moine 	{0xb6, 0x22, 0x12, 0xcc},
312cbb0554fSJean-Francois Moine 	{0xb6, 0x23, 0x0b, 0xcc},
313cbb0554fSJean-Francois Moine 	{0xb3, 0x02, 0x02, 0xcc},
314cbb0554fSJean-Francois Moine 	{0xbf, 0xc0, 0x39, 0xcc},
315cbb0554fSJean-Francois Moine 	{0xbf, 0xc1, 0x04, 0xcc},
316cbb0554fSJean-Francois Moine 	{0xbf, 0xcc, 0x10, 0xcc},
317cbb0554fSJean-Francois Moine 	{0xb9, 0x12, 0x00, 0xcc},
318cbb0554fSJean-Francois Moine 	{0xb9, 0x13, 0x0a, 0xcc},
319cbb0554fSJean-Francois Moine 	{0xb9, 0x14, 0x0a, 0xcc},
320cbb0554fSJean-Francois Moine 	{0xb9, 0x15, 0x0a, 0xcc},
321cbb0554fSJean-Francois Moine 	{0xb9, 0x16, 0x0a, 0xcc},
322cbb0554fSJean-Francois Moine 	{0xb9, 0x18, 0x00, 0xcc},
323cbb0554fSJean-Francois Moine 	{0xb9, 0x19, 0x0f, 0xcc},
324cbb0554fSJean-Francois Moine 	{0xb9, 0x1a, 0x0f, 0xcc},
325cbb0554fSJean-Francois Moine 	{0xb9, 0x1b, 0x0f, 0xcc},
326cbb0554fSJean-Francois Moine 	{0xb9, 0x1c, 0x0f, 0xcc},
327cbb0554fSJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},
328cbb0554fSJean-Francois Moine 	{0xb8, 0x8f, 0xff, 0xcc},
329cbb0554fSJean-Francois Moine 	{0xb6, 0x12, 0xf8, 0xcc},
330cbb0554fSJean-Francois Moine 	{0xb6, 0x13, 0x13, 0xcc},
331cbb0554fSJean-Francois Moine 	{0xbc, 0x02, 0x18, 0xcc},
332cbb0554fSJean-Francois Moine 	{0xbc, 0x03, 0x50, 0xcc},
333cbb0554fSJean-Francois Moine 	{0xbc, 0x04, 0x18, 0xcc},
334cbb0554fSJean-Francois Moine 	{0xbc, 0x05, 0x00, 0xcc},
335cbb0554fSJean-Francois Moine 	{0xbc, 0x06, 0x00, 0xcc},
336cbb0554fSJean-Francois Moine 	{0xbc, 0x08, 0x30, 0xcc},
337cbb0554fSJean-Francois Moine 	{0xbc, 0x09, 0x40, 0xcc},
338cbb0554fSJean-Francois Moine 	{0xbc, 0x0a, 0x10, 0xcc},
339cbb0554fSJean-Francois Moine 	{0xb8, 0x0c, 0x20, 0xcc},
340cbb0554fSJean-Francois Moine 	{0xb8, 0x0d, 0x70, 0xcc},
341cbb0554fSJean-Francois Moine 	{0xbc, 0x0b, 0x00, 0xcc},
342cbb0554fSJean-Francois Moine 	{0xbc, 0x0c, 0x00, 0xcc},
343cbb0554fSJean-Francois Moine 	{0x35, 0x00, 0xef, 0xbb},
344cbb0554fSJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
345cbb0554fSJean-Francois Moine 	{}
346cbb0554fSJean-Francois Moine };
347cbb0554fSJean-Francois Moine 
3488b605f18SJean-Francois Moine static const u8 mi1310_socinitVGA_JPG[][4] = {
3496a7eba24SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},
3506a7eba24SJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},
3514041f6b3SAceLan Kao 	{0xb3, 0x00, 0x64, 0xcc},
3524041f6b3SAceLan Kao 	{0xb3, 0x00, 0x65, 0xcc},
3534041f6b3SAceLan Kao 	{0xb3, 0x05, 0x00, 0xcc},
3544041f6b3SAceLan Kao 	{0xb3, 0x06, 0x00, 0xcc},
3556a7eba24SJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
3566a7eba24SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
3576a7eba24SJean-Francois Moine 	{0xb3, 0x34, 0x02, 0xcc},
358ff1cf408SJean-Francois Moine 	{0xb3, 0x35, 0xdd, 0xcc},	/* i2c add: 5d */
3594041f6b3SAceLan Kao 	{0xb3, 0x02, 0x00, 0xcc},
3606a7eba24SJean-Francois Moine 	{0xb3, 0x03, 0x0a, 0xcc},
3614041f6b3SAceLan Kao 	{0xb3, 0x04, 0x05, 0xcc},
3626a7eba24SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
3636a7eba24SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
3644041f6b3SAceLan Kao 	{0xb3, 0x22, 0x03, 0xcc},
3654041f6b3SAceLan Kao 	{0xb3, 0x23, 0xc0, 0xcc},
3666a7eba24SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
3676a7eba24SJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},
3684041f6b3SAceLan Kao 	{0xb3, 0x16, 0x04, 0xcc},
3694041f6b3SAceLan Kao 	{0xb3, 0x17, 0xff, 0xcc},
3704041f6b3SAceLan Kao 	{0xb3, 0x00, 0x65, 0xcc},
3714041f6b3SAceLan Kao 	{0xb8, 0x00, 0x00, 0xcc},
3724041f6b3SAceLan Kao 	{0xbc, 0x00, 0xd0, 0xcc},
3734041f6b3SAceLan Kao 	{0xbc, 0x01, 0x01, 0xcc},
3744041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},
3754041f6b3SAceLan Kao 	{0xc8, 0x9f, 0x0b, 0xbb},
3764041f6b3SAceLan Kao 	{0x5b, 0x00, 0x01, 0xbb},
3774041f6b3SAceLan Kao 	{0x2f, 0xde, 0x20, 0xbb},
3786a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
379e27188eeSJean-Francois Moine 	{0x20, 0x03, 0x02, 0xbb},	/* h/v flip */
3806a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},
3814041f6b3SAceLan Kao 	{0x05, 0x00, 0x07, 0xbb},
3824041f6b3SAceLan Kao 	{0x34, 0x00, 0x00, 0xbb},
3834041f6b3SAceLan Kao 	{0x35, 0xff, 0x00, 0xbb},
3844041f6b3SAceLan Kao 	{0xdc, 0x07, 0x02, 0xbb},
3854041f6b3SAceLan Kao 	{0xdd, 0x3c, 0x18, 0xbb},
3864041f6b3SAceLan Kao 	{0xde, 0x92, 0x6d, 0xbb},
3874041f6b3SAceLan Kao 	{0xdf, 0xcd, 0xb1, 0xbb},
3884041f6b3SAceLan Kao 	{0xe0, 0xff, 0xe7, 0xbb},
3894041f6b3SAceLan Kao 	{0x06, 0xf0, 0x0d, 0xbb},
3904041f6b3SAceLan Kao 	{0x06, 0x70, 0x0e, 0xbb},
3914041f6b3SAceLan Kao 	{0x4c, 0x00, 0x01, 0xbb},
3924041f6b3SAceLan Kao 	{0x4d, 0x00, 0x01, 0xbb},
3934041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},
3944041f6b3SAceLan Kao 	{0x2e, 0x0c, 0x55, 0xbb},
3954041f6b3SAceLan Kao 	{0x21, 0xb6, 0x6e, 0xbb},
3964041f6b3SAceLan Kao 	{0x36, 0x30, 0x10, 0xbb},
3974041f6b3SAceLan Kao 	{0x37, 0x00, 0xc1, 0xbb},
3986a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
3994041f6b3SAceLan Kao 	{0x07, 0x00, 0x84, 0xbb},
4004041f6b3SAceLan Kao 	{0x08, 0x02, 0x4a, 0xbb},
4014041f6b3SAceLan Kao 	{0x05, 0x01, 0x10, 0xbb},
4024041f6b3SAceLan Kao 	{0x06, 0x00, 0x39, 0xbb},
4034041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},
4044041f6b3SAceLan Kao 	{0x58, 0x02, 0x67, 0xbb},
4054041f6b3SAceLan Kao 	{0x57, 0x02, 0x00, 0xbb},
4064041f6b3SAceLan Kao 	{0x5a, 0x02, 0x67, 0xbb},
4074041f6b3SAceLan Kao 	{0x59, 0x02, 0x00, 0xbb},
4084041f6b3SAceLan Kao 	{0x5c, 0x12, 0x0d, 0xbb},
4094041f6b3SAceLan Kao 	{0x5d, 0x16, 0x11, 0xbb},
4104041f6b3SAceLan Kao 	{0x39, 0x06, 0x18, 0xbb},
4114041f6b3SAceLan Kao 	{0x3a, 0x06, 0x18, 0xbb},
4124041f6b3SAceLan Kao 	{0x3b, 0x06, 0x18, 0xbb},
4134041f6b3SAceLan Kao 	{0x3c, 0x06, 0x18, 0xbb},
4144041f6b3SAceLan Kao 	{0x64, 0x7b, 0x5b, 0xbb},
4154041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},
4164041f6b3SAceLan Kao 	{0x36, 0x30, 0x10, 0xbb},
4174041f6b3SAceLan Kao 	{0x37, 0x00, 0xc0, 0xbb},
4184041f6b3SAceLan Kao 	{0xbc, 0x0e, 0x00, 0xcc},
4194041f6b3SAceLan Kao 	{0xbc, 0x0f, 0x05, 0xcc},
4204041f6b3SAceLan Kao 	{0xbc, 0x10, 0xc0, 0xcc},
4214041f6b3SAceLan Kao 	{0xbc, 0x11, 0x03, 0xcc},
4226a7eba24SJean-Francois Moine 	{0xb6, 0x00, 0x00, 0xcc},
4236a7eba24SJean-Francois Moine 	{0xb6, 0x03, 0x02, 0xcc},
4246a7eba24SJean-Francois Moine 	{0xb6, 0x02, 0x80, 0xcc},
4256a7eba24SJean-Francois Moine 	{0xb6, 0x05, 0x01, 0xcc},
4266a7eba24SJean-Francois Moine 	{0xb6, 0x04, 0xe0, 0xcc},
4274041f6b3SAceLan Kao 	{0xb6, 0x12, 0xf8, 0xcc},
4284041f6b3SAceLan Kao 	{0xb6, 0x13, 0x25, 0xcc},
4296a7eba24SJean-Francois Moine 	{0xb6, 0x18, 0x02, 0xcc},
4306a7eba24SJean-Francois Moine 	{0xb6, 0x17, 0x58, 0xcc},
4316a7eba24SJean-Francois Moine 	{0xb6, 0x16, 0x00, 0xcc},
4326a7eba24SJean-Francois Moine 	{0xb6, 0x22, 0x12, 0xcc},
4336a7eba24SJean-Francois Moine 	{0xb6, 0x23, 0x0b, 0xcc},
4346a7eba24SJean-Francois Moine 	{0xbf, 0xc0, 0x39, 0xcc},
4356a7eba24SJean-Francois Moine 	{0xbf, 0xc1, 0x04, 0xcc},
4364041f6b3SAceLan Kao 	{0xbf, 0xcc, 0x00, 0xcc},
4376a7eba24SJean-Francois Moine 	{0xbc, 0x02, 0x18, 0xcc},
4386a7eba24SJean-Francois Moine 	{0xbc, 0x03, 0x50, 0xcc},
4396a7eba24SJean-Francois Moine 	{0xbc, 0x04, 0x18, 0xcc},
4406a7eba24SJean-Francois Moine 	{0xbc, 0x05, 0x00, 0xcc},
4416a7eba24SJean-Francois Moine 	{0xbc, 0x06, 0x00, 0xcc},
4426a7eba24SJean-Francois Moine 	{0xbc, 0x08, 0x30, 0xcc},
4436a7eba24SJean-Francois Moine 	{0xbc, 0x09, 0x40, 0xcc},
4446a7eba24SJean-Francois Moine 	{0xbc, 0x0a, 0x10, 0xcc},
4456a7eba24SJean-Francois Moine 	{0xbc, 0x0b, 0x00, 0xcc},
4466a7eba24SJean-Francois Moine 	{0xbc, 0x0c, 0x00, 0xcc},
4474041f6b3SAceLan Kao 	{0xb3, 0x5c, 0x01, 0xcc},
4484041f6b3SAceLan Kao 	{0xf0, 0x00, 0x01, 0xbb},
4494041f6b3SAceLan Kao 	{0x80, 0x00, 0x03, 0xbb},
4504041f6b3SAceLan Kao 	{0x81, 0xc7, 0x14, 0xbb},
4514041f6b3SAceLan Kao 	{0x82, 0xeb, 0xe8, 0xbb},
4524041f6b3SAceLan Kao 	{0x83, 0xfe, 0xf4, 0xbb},
4534041f6b3SAceLan Kao 	{0x84, 0xcd, 0x10, 0xbb},
4544041f6b3SAceLan Kao 	{0x85, 0xf3, 0xee, 0xbb},
4554041f6b3SAceLan Kao 	{0x86, 0xff, 0xf1, 0xbb},
4564041f6b3SAceLan Kao 	{0x87, 0xcd, 0x10, 0xbb},
4574041f6b3SAceLan Kao 	{0x88, 0xf3, 0xee, 0xbb},
4584041f6b3SAceLan Kao 	{0x89, 0x01, 0xf1, 0xbb},
4594041f6b3SAceLan Kao 	{0x8a, 0xe5, 0x17, 0xbb},
4604041f6b3SAceLan Kao 	{0x8b, 0xe8, 0xe2, 0xbb},
4614041f6b3SAceLan Kao 	{0x8c, 0xf7, 0xed, 0xbb},
4624041f6b3SAceLan Kao 	{0x8d, 0x00, 0xff, 0xbb},
4634041f6b3SAceLan Kao 	{0x8e, 0xec, 0x10, 0xbb},
4644041f6b3SAceLan Kao 	{0x8f, 0xf0, 0xed, 0xbb},
4654041f6b3SAceLan Kao 	{0x90, 0xf9, 0xf2, 0xbb},
4664041f6b3SAceLan Kao 	{0x91, 0x00, 0x00, 0xbb},
4674041f6b3SAceLan Kao 	{0x92, 0xe9, 0x0d, 0xbb},
4684041f6b3SAceLan Kao 	{0x93, 0xf4, 0xf2, 0xbb},
4694041f6b3SAceLan Kao 	{0x94, 0xfb, 0xf5, 0xbb},
4704041f6b3SAceLan Kao 	{0x95, 0x00, 0xff, 0xbb},
4714041f6b3SAceLan Kao 	{0xb6, 0x0f, 0x08, 0xbb},
4724041f6b3SAceLan Kao 	{0xb7, 0x3d, 0x16, 0xbb},
4734041f6b3SAceLan Kao 	{0xb8, 0x0c, 0x04, 0xbb},
4744041f6b3SAceLan Kao 	{0xb9, 0x1c, 0x07, 0xbb},
4754041f6b3SAceLan Kao 	{0xba, 0x0a, 0x03, 0xbb},
4764041f6b3SAceLan Kao 	{0xbb, 0x1b, 0x09, 0xbb},
4774041f6b3SAceLan Kao 	{0xbc, 0x17, 0x0d, 0xbb},
4784041f6b3SAceLan Kao 	{0xbd, 0x23, 0x1d, 0xbb},
4794041f6b3SAceLan Kao 	{0xbe, 0x00, 0x28, 0xbb},
4804041f6b3SAceLan Kao 	{0xbf, 0x11, 0x09, 0xbb},
4814041f6b3SAceLan Kao 	{0xc0, 0x16, 0x15, 0xbb},
4824041f6b3SAceLan Kao 	{0xc1, 0x00, 0x1b, 0xbb},
4834041f6b3SAceLan Kao 	{0xc2, 0x0e, 0x07, 0xbb},
4844041f6b3SAceLan Kao 	{0xc3, 0x14, 0x10, 0xbb},
4854041f6b3SAceLan Kao 	{0xc4, 0x00, 0x17, 0xbb},
4864041f6b3SAceLan Kao 	{0x06, 0x74, 0x8e, 0xbb},
4874041f6b3SAceLan Kao 	{0xf0, 0x00, 0x01, 0xbb},
4884041f6b3SAceLan Kao 	{0x06, 0xf4, 0x8e, 0xbb},
4894041f6b3SAceLan Kao 	{0x00, 0x00, 0x50, 0xdd},
4904041f6b3SAceLan Kao 	{0x06, 0x74, 0x8e, 0xbb},
4914041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},
4924041f6b3SAceLan Kao 	{0x24, 0x50, 0x20, 0xbb},
4934041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},
4944041f6b3SAceLan Kao 	{0x34, 0x0c, 0x50, 0xbb},
4956a7eba24SJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
4964041f6b3SAceLan Kao 	{0xf0, 0x00, 0x00, 0xbb},
4976a7eba24SJean-Francois Moine 	{0x03, 0x03, 0xc0, 0xbb},
4984041f6b3SAceLan Kao 	{},
4994041f6b3SAceLan Kao };
5008b605f18SJean-Francois Moine static const u8 mi1310_socinitQVGA_JPG[][4] = {
5014041f6b3SAceLan Kao 	{0xb0, 0x03, 0x19, 0xcc},	{0xb0, 0x04, 0x02, 0xcc},
5024041f6b3SAceLan Kao 	{0xb3, 0x00, 0x64, 0xcc},	{0xb3, 0x00, 0x65, 0xcc},
5034041f6b3SAceLan Kao 	{0xb3, 0x05, 0x00, 0xcc},	{0xb3, 0x06, 0x00, 0xcc},
5044041f6b3SAceLan Kao 	{0xb3, 0x08, 0x01, 0xcc},	{0xb3, 0x09, 0x0c, 0xcc},
5054041f6b3SAceLan Kao 	{0xb3, 0x34, 0x02, 0xcc},	{0xb3, 0x35, 0xdd, 0xcc},
5064041f6b3SAceLan Kao 	{0xb3, 0x02, 0x00, 0xcc},	{0xb3, 0x03, 0x0a, 0xcc},
5074041f6b3SAceLan Kao 	{0xb3, 0x04, 0x05, 0xcc},	{0xb3, 0x20, 0x00, 0xcc},
5084041f6b3SAceLan Kao 	{0xb3, 0x21, 0x00, 0xcc},	{0xb3, 0x22, 0x03, 0xcc},
5094041f6b3SAceLan Kao 	{0xb3, 0x23, 0xc0, 0xcc},	{0xb3, 0x14, 0x00, 0xcc},
5104041f6b3SAceLan Kao 	{0xb3, 0x15, 0x00, 0xcc},	{0xb3, 0x16, 0x04, 0xcc},
5114041f6b3SAceLan Kao 	{0xb3, 0x17, 0xff, 0xcc},	{0xb3, 0x00, 0x65, 0xcc},
5124041f6b3SAceLan Kao 	{0xb8, 0x00, 0x00, 0xcc},	{0xbc, 0x00, 0xf0, 0xcc},
5134041f6b3SAceLan Kao 	{0xbc, 0x01, 0x01, 0xcc},	{0xf0, 0x00, 0x02, 0xbb},
5144041f6b3SAceLan Kao 	{0xc8, 0x9f, 0x0b, 0xbb},	{0x5b, 0x00, 0x01, 0xbb},
5154041f6b3SAceLan Kao 	{0x2f, 0xde, 0x20, 0xbb},	{0xf0, 0x00, 0x00, 0xbb},
516e27188eeSJean-Francois Moine 	{0x20, 0x03, 0x02, 0xbb},	/* h/v flip */
517e27188eeSJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},
5184041f6b3SAceLan Kao 	{0x05, 0x00, 0x07, 0xbb},	{0x34, 0x00, 0x00, 0xbb},
5194041f6b3SAceLan Kao 	{0x35, 0xff, 0x00, 0xbb},	{0xdc, 0x07, 0x02, 0xbb},
5204041f6b3SAceLan Kao 	{0xdd, 0x3c, 0x18, 0xbb},	{0xde, 0x92, 0x6d, 0xbb},
5214041f6b3SAceLan Kao 	{0xdf, 0xcd, 0xb1, 0xbb},	{0xe0, 0xff, 0xe7, 0xbb},
5224041f6b3SAceLan Kao 	{0x06, 0xf0, 0x0d, 0xbb},	{0x06, 0x70, 0x0e, 0xbb},
5234041f6b3SAceLan Kao 	{0x4c, 0x00, 0x01, 0xbb},	{0x4d, 0x00, 0x01, 0xbb},
5244041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},	{0x2e, 0x0c, 0x55, 0xbb},
5254041f6b3SAceLan Kao 	{0x21, 0xb6, 0x6e, 0xbb},	{0x36, 0x30, 0x10, 0xbb},
5264041f6b3SAceLan Kao 	{0x37, 0x00, 0xc1, 0xbb},	{0xf0, 0x00, 0x00, 0xbb},
5274041f6b3SAceLan Kao 	{0x07, 0x00, 0x84, 0xbb},	{0x08, 0x02, 0x4a, 0xbb},
5284041f6b3SAceLan Kao 	{0x05, 0x01, 0x10, 0xbb},	{0x06, 0x00, 0x39, 0xbb},
5294041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},	{0x58, 0x02, 0x67, 0xbb},
5304041f6b3SAceLan Kao 	{0x57, 0x02, 0x00, 0xbb},	{0x5a, 0x02, 0x67, 0xbb},
5314041f6b3SAceLan Kao 	{0x59, 0x02, 0x00, 0xbb},	{0x5c, 0x12, 0x0d, 0xbb},
5324041f6b3SAceLan Kao 	{0x5d, 0x16, 0x11, 0xbb},	{0x39, 0x06, 0x18, 0xbb},
5334041f6b3SAceLan Kao 	{0x3a, 0x06, 0x18, 0xbb},	{0x3b, 0x06, 0x18, 0xbb},
5344041f6b3SAceLan Kao 	{0x3c, 0x06, 0x18, 0xbb},	{0x64, 0x7b, 0x5b, 0xbb},
5354041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},	{0x36, 0x30, 0x10, 0xbb},
5364041f6b3SAceLan Kao 	{0x37, 0x00, 0xc0, 0xbb},	{0xbc, 0x0e, 0x00, 0xcc},
5374041f6b3SAceLan Kao 	{0xbc, 0x0f, 0x05, 0xcc},	{0xbc, 0x10, 0xc0, 0xcc},
5384041f6b3SAceLan Kao 	{0xbc, 0x11, 0x03, 0xcc},	{0xb6, 0x00, 0x00, 0xcc},
5394041f6b3SAceLan Kao 	{0xb6, 0x03, 0x01, 0xcc},	{0xb6, 0x02, 0x40, 0xcc},
5404041f6b3SAceLan Kao 	{0xb6, 0x05, 0x00, 0xcc},	{0xb6, 0x04, 0xf0, 0xcc},
5414041f6b3SAceLan Kao 	{0xb6, 0x12, 0xf8, 0xcc},	{0xb6, 0x13, 0x25, 0xcc},
5424041f6b3SAceLan Kao 	{0xb6, 0x18, 0x00, 0xcc},	{0xb6, 0x17, 0x96, 0xcc},
5434041f6b3SAceLan Kao 	{0xb6, 0x16, 0x00, 0xcc},	{0xb6, 0x22, 0x12, 0xcc},
5444041f6b3SAceLan Kao 	{0xb6, 0x23, 0x0b, 0xcc},	{0xbf, 0xc0, 0x39, 0xcc},
5454041f6b3SAceLan Kao 	{0xbf, 0xc1, 0x04, 0xcc},	{0xbf, 0xcc, 0x00, 0xcc},
5464041f6b3SAceLan Kao 	{0xb3, 0x5c, 0x01, 0xcc},	{0xf0, 0x00, 0x01, 0xbb},
5474041f6b3SAceLan Kao 	{0x80, 0x00, 0x03, 0xbb},	{0x81, 0xc7, 0x14, 0xbb},
5484041f6b3SAceLan Kao 	{0x82, 0xeb, 0xe8, 0xbb},	{0x83, 0xfe, 0xf4, 0xbb},
5494041f6b3SAceLan Kao 	{0x84, 0xcd, 0x10, 0xbb},	{0x85, 0xf3, 0xee, 0xbb},
5504041f6b3SAceLan Kao 	{0x86, 0xff, 0xf1, 0xbb},	{0x87, 0xcd, 0x10, 0xbb},
5514041f6b3SAceLan Kao 	{0x88, 0xf3, 0xee, 0xbb},	{0x89, 0x01, 0xf1, 0xbb},
5524041f6b3SAceLan Kao 	{0x8a, 0xe5, 0x17, 0xbb},	{0x8b, 0xe8, 0xe2, 0xbb},
5534041f6b3SAceLan Kao 	{0x8c, 0xf7, 0xed, 0xbb},	{0x8d, 0x00, 0xff, 0xbb},
5544041f6b3SAceLan Kao 	{0x8e, 0xec, 0x10, 0xbb},	{0x8f, 0xf0, 0xed, 0xbb},
5554041f6b3SAceLan Kao 	{0x90, 0xf9, 0xf2, 0xbb},	{0x91, 0x00, 0x00, 0xbb},
5564041f6b3SAceLan Kao 	{0x92, 0xe9, 0x0d, 0xbb},	{0x93, 0xf4, 0xf2, 0xbb},
5574041f6b3SAceLan Kao 	{0x94, 0xfb, 0xf5, 0xbb},	{0x95, 0x00, 0xff, 0xbb},
5584041f6b3SAceLan Kao 	{0xb6, 0x0f, 0x08, 0xbb},	{0xb7, 0x3d, 0x16, 0xbb},
5594041f6b3SAceLan Kao 	{0xb8, 0x0c, 0x04, 0xbb},	{0xb9, 0x1c, 0x07, 0xbb},
5604041f6b3SAceLan Kao 	{0xba, 0x0a, 0x03, 0xbb},	{0xbb, 0x1b, 0x09, 0xbb},
5614041f6b3SAceLan Kao 	{0xbc, 0x17, 0x0d, 0xbb},	{0xbd, 0x23, 0x1d, 0xbb},
5624041f6b3SAceLan Kao 	{0xbe, 0x00, 0x28, 0xbb},	{0xbf, 0x11, 0x09, 0xbb},
5634041f6b3SAceLan Kao 	{0xc0, 0x16, 0x15, 0xbb},	{0xc1, 0x00, 0x1b, 0xbb},
5644041f6b3SAceLan Kao 	{0xc2, 0x0e, 0x07, 0xbb},	{0xc3, 0x14, 0x10, 0xbb},
5654041f6b3SAceLan Kao 	{0xc4, 0x00, 0x17, 0xbb},	{0x06, 0x74, 0x8e, 0xbb},
5664041f6b3SAceLan Kao 	{0xf0, 0x00, 0x01, 0xbb},	{0x06, 0xf4, 0x8e, 0xbb},
5674041f6b3SAceLan Kao 	{0x00, 0x00, 0x50, 0xdd},	{0x06, 0x74, 0x8e, 0xbb},
5684041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},	{0x24, 0x50, 0x20, 0xbb},
5694041f6b3SAceLan Kao 	{0xf0, 0x00, 0x02, 0xbb},	{0x34, 0x0c, 0x50, 0xbb},
5704041f6b3SAceLan Kao 	{0xb3, 0x01, 0x41, 0xcc},	{0xf0, 0x00, 0x00, 0xbb},
5714041f6b3SAceLan Kao 	{0x03, 0x03, 0xc0, 0xbb},
5726a7eba24SJean-Francois Moine 	{},
5736a7eba24SJean-Francois Moine };
5746af4e7a1SJean-Francois Moine static const u8 mi1310_soc_InitSXGA_JPG[][4] = {
5756af4e7a1SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},
5766af4e7a1SJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},
577111815efSJean-Francois Moine 	{0xb3, 0x00, 0x64, 0xcc},
578111815efSJean-Francois Moine 	{0xb3, 0x00, 0x65, 0xcc},
5796af4e7a1SJean-Francois Moine 	{0xb3, 0x05, 0x00, 0xcc},
580111815efSJean-Francois Moine 	{0xb3, 0x06, 0x00, 0xcc},
5816af4e7a1SJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
5826af4e7a1SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
5836af4e7a1SJean-Francois Moine 	{0xb3, 0x34, 0x02, 0xcc},
5846af4e7a1SJean-Francois Moine 	{0xb3, 0x35, 0xdd, 0xcc},
585111815efSJean-Francois Moine 	{0xb3, 0x02, 0x00, 0xcc},
5866af4e7a1SJean-Francois Moine 	{0xb3, 0x03, 0x0a, 0xcc},
5876af4e7a1SJean-Francois Moine 	{0xb3, 0x04, 0x0d, 0xcc},
5886af4e7a1SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
5896af4e7a1SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
590111815efSJean-Francois Moine 	{0xb3, 0x22, 0x03, 0xcc},
591111815efSJean-Francois Moine 	{0xb3, 0x23, 0xc0, 0xcc},
5926af4e7a1SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
5936af4e7a1SJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},
5946af4e7a1SJean-Francois Moine 	{0xb3, 0x16, 0x04, 0xcc},
5956af4e7a1SJean-Francois Moine 	{0xb3, 0x17, 0xff, 0xcc},
596111815efSJean-Francois Moine 	{0xb3, 0x00, 0x65, 0xcc},
597111815efSJean-Francois Moine 	{0xb8, 0x00, 0x00, 0xcc},
598111815efSJean-Francois Moine 	{0xbc, 0x00, 0x70, 0xcc},
599111815efSJean-Francois Moine 	{0xbc, 0x01, 0x01, 0xcc},
600111815efSJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
601111815efSJean-Francois Moine 	{0xc8, 0x9f, 0x0b, 0xbb},
602111815efSJean-Francois Moine 	{0x5b, 0x00, 0x01, 0xbb},
6036af4e7a1SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
604e27188eeSJean-Francois Moine 	{0x20, 0x03, 0x02, 0xbb},	/* h/v flip */
6056af4e7a1SJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},
606111815efSJean-Francois Moine 	{0x05, 0x00, 0x07, 0xbb},
607111815efSJean-Francois Moine 	{0x34, 0x00, 0x00, 0xbb},
608111815efSJean-Francois Moine 	{0x35, 0xff, 0x00, 0xbb},
609111815efSJean-Francois Moine 	{0xdc, 0x07, 0x02, 0xbb},
610111815efSJean-Francois Moine 	{0xdd, 0x3c, 0x18, 0xbb},
611111815efSJean-Francois Moine 	{0xde, 0x92, 0x6d, 0xbb},
612111815efSJean-Francois Moine 	{0xdf, 0xcd, 0xb1, 0xbb},
613111815efSJean-Francois Moine 	{0xe0, 0xff, 0xe7, 0xbb},
614111815efSJean-Francois Moine 	{0x06, 0xf0, 0x0d, 0xbb},
615111815efSJean-Francois Moine 	{0x06, 0x70, 0x0e, 0xbb},
616111815efSJean-Francois Moine 	{0x4c, 0x00, 0x01, 0xbb},
617111815efSJean-Francois Moine 	{0x4d, 0x00, 0x01, 0xbb},
618111815efSJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
619111815efSJean-Francois Moine 	{0x2e, 0x0c, 0x60, 0xbb},
620111815efSJean-Francois Moine 	{0x21, 0xb6, 0x6e, 0xbb},
621111815efSJean-Francois Moine 	{0x37, 0x01, 0x40, 0xbb},
6226af4e7a1SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
623111815efSJean-Francois Moine 	{0x07, 0x00, 0x84, 0xbb},
624111815efSJean-Francois Moine 	{0x08, 0x02, 0x4a, 0xbb},
625111815efSJean-Francois Moine 	{0x05, 0x01, 0x10, 0xbb},
626111815efSJean-Francois Moine 	{0x06, 0x00, 0x39, 0xbb},
627111815efSJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
628111815efSJean-Francois Moine 	{0x58, 0x02, 0x67, 0xbb},
629111815efSJean-Francois Moine 	{0x57, 0x02, 0x00, 0xbb},
630111815efSJean-Francois Moine 	{0x5a, 0x02, 0x67, 0xbb},
631111815efSJean-Francois Moine 	{0x59, 0x02, 0x00, 0xbb},
632111815efSJean-Francois Moine 	{0x5c, 0x12, 0x0d, 0xbb},
633111815efSJean-Francois Moine 	{0x5d, 0x16, 0x11, 0xbb},
634111815efSJean-Francois Moine 	{0x39, 0x06, 0x18, 0xbb},
635111815efSJean-Francois Moine 	{0x3a, 0x06, 0x18, 0xbb},
636111815efSJean-Francois Moine 	{0x3b, 0x06, 0x18, 0xbb},
637111815efSJean-Francois Moine 	{0x3c, 0x06, 0x18, 0xbb},
638111815efSJean-Francois Moine 	{0x64, 0x7b, 0x5b, 0xbb},
6396af4e7a1SJean-Francois Moine 	{0xb6, 0x00, 0x00, 0xcc},
6406af4e7a1SJean-Francois Moine 	{0xb6, 0x03, 0x05, 0xcc},
6416af4e7a1SJean-Francois Moine 	{0xb6, 0x02, 0x00, 0xcc},
642111815efSJean-Francois Moine 	{0xb6, 0x05, 0x03, 0xcc},
643111815efSJean-Francois Moine 	{0xb6, 0x04, 0xc0, 0xcc},
6446af4e7a1SJean-Francois Moine 	{0xb6, 0x12, 0xf8, 0xcc},
645111815efSJean-Francois Moine 	{0xb6, 0x13, 0x29, 0xcc},
646111815efSJean-Francois Moine 	{0xb6, 0x18, 0x09, 0xcc},
647111815efSJean-Francois Moine 	{0xb6, 0x17, 0x60, 0xcc},
6486af4e7a1SJean-Francois Moine 	{0xb6, 0x16, 0x00, 0xcc},
6496af4e7a1SJean-Francois Moine 	{0xb6, 0x22, 0x12, 0xcc},
6506af4e7a1SJean-Francois Moine 	{0xb6, 0x23, 0x0b, 0xcc},
6516af4e7a1SJean-Francois Moine 	{0xbf, 0xc0, 0x39, 0xcc},
6526af4e7a1SJean-Francois Moine 	{0xbf, 0xc1, 0x04, 0xcc},
653111815efSJean-Francois Moine 	{0xbf, 0xcc, 0x00, 0xcc},
6546af4e7a1SJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
655111815efSJean-Francois Moine 	{0x00, 0x00, 0x80, 0xdd},
656111815efSJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
657111815efSJean-Francois Moine 	{0x00, 0x00, 0x10, 0xdd},
658111815efSJean-Francois Moine 	{0x22, 0xa0, 0x78, 0xbb},
659111815efSJean-Francois Moine 	{0x23, 0xa0, 0x78, 0xbb},
660111815efSJean-Francois Moine 	{0x24, 0x7f, 0x00, 0xbb},
661111815efSJean-Francois Moine 	{0x28, 0xea, 0x02, 0xbb},
662111815efSJean-Francois Moine 	{0x29, 0x86, 0x7a, 0xbb},
663111815efSJean-Francois Moine 	{0x5e, 0x52, 0x4c, 0xbb},
664111815efSJean-Francois Moine 	{0x5f, 0x20, 0x24, 0xbb},
665111815efSJean-Francois Moine 	{0x60, 0x00, 0x02, 0xbb},
666111815efSJean-Francois Moine 	{0x02, 0x00, 0xee, 0xbb},
667111815efSJean-Francois Moine 	{0x03, 0x39, 0x23, 0xbb},
668111815efSJean-Francois Moine 	{0x04, 0x07, 0x24, 0xbb},
669111815efSJean-Francois Moine 	{0x09, 0x00, 0xc0, 0xbb},
670111815efSJean-Francois Moine 	{0x0a, 0x00, 0x79, 0xbb},
671111815efSJean-Francois Moine 	{0x0b, 0x00, 0x04, 0xbb},
672111815efSJean-Francois Moine 	{0x0c, 0x00, 0x5c, 0xbb},
673111815efSJean-Francois Moine 	{0x0d, 0x00, 0xd9, 0xbb},
674111815efSJean-Francois Moine 	{0x0e, 0x00, 0x53, 0xbb},
675111815efSJean-Francois Moine 	{0x0f, 0x00, 0x21, 0xbb},
676111815efSJean-Francois Moine 	{0x10, 0x00, 0xa4, 0xbb},
677111815efSJean-Francois Moine 	{0x11, 0x00, 0xe5, 0xbb},
678111815efSJean-Francois Moine 	{0x15, 0x00, 0x00, 0xbb},
679111815efSJean-Francois Moine 	{0x16, 0x00, 0x00, 0xbb},
680111815efSJean-Francois Moine 	{0x17, 0x00, 0x00, 0xbb},
681111815efSJean-Francois Moine 	{0x18, 0x00, 0x00, 0xbb},
682111815efSJean-Francois Moine 	{0x19, 0x00, 0x00, 0xbb},
683111815efSJean-Francois Moine 	{0x1a, 0x00, 0x00, 0xbb},
684111815efSJean-Francois Moine 	{0x1b, 0x00, 0x00, 0xbb},
685111815efSJean-Francois Moine 	{0x1c, 0x00, 0x00, 0xbb},
686111815efSJean-Francois Moine 	{0x1d, 0x00, 0x00, 0xbb},
687111815efSJean-Francois Moine 	{0x1e, 0x00, 0x00, 0xbb},
688111815efSJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},
689111815efSJean-Francois Moine 	{0x00, 0x00, 0x20, 0xdd},
690111815efSJean-Francois Moine 	{0x06, 0xf0, 0x8e, 0xbb},
691111815efSJean-Francois Moine 	{0x00, 0x00, 0x80, 0xdd},
692111815efSJean-Francois Moine 	{0x06, 0x70, 0x8e, 0xbb},
693111815efSJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
694111815efSJean-Francois Moine 	{0x00, 0x00, 0x20, 0xdd},
695111815efSJean-Francois Moine 	{0x5e, 0x6a, 0x53, 0xbb},
696111815efSJean-Francois Moine 	{0x5f, 0x40, 0x2c, 0xbb},
697111815efSJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},
698111815efSJean-Francois Moine 	{0x00, 0x00, 0x20, 0xdd},
699111815efSJean-Francois Moine 	{0x58, 0x00, 0x00, 0xbb},
700111815efSJean-Francois Moine 	{0x53, 0x09, 0x03, 0xbb},
701111815efSJean-Francois Moine 	{0x54, 0x31, 0x18, 0xbb},
702111815efSJean-Francois Moine 	{0x55, 0x8b, 0x5f, 0xbb},
703111815efSJean-Francois Moine 	{0x56, 0xc0, 0xa9, 0xbb},
704111815efSJean-Francois Moine 	{0x57, 0xe0, 0xd2, 0xbb},
705111815efSJean-Francois Moine 	{0xe1, 0x00, 0x00, 0xbb},
706111815efSJean-Francois Moine 	{0xdc, 0x09, 0x03, 0xbb},
707111815efSJean-Francois Moine 	{0xdd, 0x31, 0x18, 0xbb},
708111815efSJean-Francois Moine 	{0xde, 0x8b, 0x5f, 0xbb},
709111815efSJean-Francois Moine 	{0xdf, 0xc0, 0xa9, 0xbb},
710111815efSJean-Francois Moine 	{0xe0, 0xe0, 0xd2, 0xbb},
711111815efSJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
712111815efSJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},
713111815efSJean-Francois Moine 	{0x06, 0xf0, 0x8e, 0xbb},
714111815efSJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
715111815efSJean-Francois Moine 	{0x2f, 0xde, 0x20, 0xbb},
716111815efSJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
717111815efSJean-Francois Moine 	{0x24, 0x50, 0x20, 0xbb},
718111815efSJean-Francois Moine 	{0xbc, 0x0e, 0x00, 0xcc},
719111815efSJean-Francois Moine 	{0xbc, 0x0f, 0x05, 0xcc},
720111815efSJean-Francois Moine 	{0xbc, 0x10, 0xc0, 0xcc},
721111815efSJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
722111815efSJean-Francois Moine 	{0x34, 0x0c, 0x50, 0xbb},
723111815efSJean-Francois Moine 	{0xbc, 0x11, 0x03, 0xcc},
724111815efSJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},
725111815efSJean-Francois Moine 	{0x80, 0x00, 0x03, 0xbb},
726111815efSJean-Francois Moine 	{0x81, 0xc7, 0x14, 0xbb},
727111815efSJean-Francois Moine 	{0x82, 0xeb, 0xe8, 0xbb},
728111815efSJean-Francois Moine 	{0x83, 0xfe, 0xf4, 0xbb},
729111815efSJean-Francois Moine 	{0x84, 0xcd, 0x10, 0xbb},
730111815efSJean-Francois Moine 	{0x85, 0xf3, 0xee, 0xbb},
731111815efSJean-Francois Moine 	{0x86, 0xff, 0xf1, 0xbb},
732111815efSJean-Francois Moine 	{0x87, 0xcd, 0x10, 0xbb},
733111815efSJean-Francois Moine 	{0x88, 0xf3, 0xee, 0xbb},
734111815efSJean-Francois Moine 	{0x89, 0x01, 0xf1, 0xbb},
735111815efSJean-Francois Moine 	{0x8a, 0xe5, 0x17, 0xbb},
736111815efSJean-Francois Moine 	{0x8b, 0xe8, 0xe2, 0xbb},
737111815efSJean-Francois Moine 	{0x8c, 0xf7, 0xed, 0xbb},
738111815efSJean-Francois Moine 	{0x8d, 0x00, 0xff, 0xbb},
739111815efSJean-Francois Moine 	{0x8e, 0xec, 0x10, 0xbb},
740111815efSJean-Francois Moine 	{0x8f, 0xf0, 0xed, 0xbb},
741111815efSJean-Francois Moine 	{0x90, 0xf9, 0xf2, 0xbb},
742111815efSJean-Francois Moine 	{0x91, 0x00, 0x00, 0xbb},
743111815efSJean-Francois Moine 	{0x92, 0xe9, 0x0d, 0xbb},
744111815efSJean-Francois Moine 	{0x93, 0xf4, 0xf2, 0xbb},
745111815efSJean-Francois Moine 	{0x94, 0xfb, 0xf5, 0xbb},
746111815efSJean-Francois Moine 	{0x95, 0x00, 0xff, 0xbb},
747111815efSJean-Francois Moine 	{0xb6, 0x0f, 0x08, 0xbb},
748111815efSJean-Francois Moine 	{0xb7, 0x3d, 0x16, 0xbb},
749111815efSJean-Francois Moine 	{0xb8, 0x0c, 0x04, 0xbb},
750111815efSJean-Francois Moine 	{0xb9, 0x1c, 0x07, 0xbb},
751111815efSJean-Francois Moine 	{0xba, 0x0a, 0x03, 0xbb},
752111815efSJean-Francois Moine 	{0xbb, 0x1b, 0x09, 0xbb},
753111815efSJean-Francois Moine 	{0xbc, 0x17, 0x0d, 0xbb},
754111815efSJean-Francois Moine 	{0xbd, 0x23, 0x1d, 0xbb},
755111815efSJean-Francois Moine 	{0xbe, 0x00, 0x28, 0xbb},
756111815efSJean-Francois Moine 	{0xbf, 0x11, 0x09, 0xbb},
757111815efSJean-Francois Moine 	{0xc0, 0x16, 0x15, 0xbb},
758111815efSJean-Francois Moine 	{0xc1, 0x00, 0x1b, 0xbb},
759111815efSJean-Francois Moine 	{0xc2, 0x0e, 0x07, 0xbb},
760111815efSJean-Francois Moine 	{0xc3, 0x14, 0x10, 0xbb},
761111815efSJean-Francois Moine 	{0xc4, 0x00, 0x17, 0xbb},
762111815efSJean-Francois Moine 	{0x06, 0x74, 0x8e, 0xbb},
763111815efSJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
764111815efSJean-Francois Moine 	{0x03, 0x03, 0xc0, 0xbb},
7656af4e7a1SJean-Francois Moine 	{}
7666af4e7a1SJean-Francois Moine };
7676a7eba24SJean-Francois Moine 
7688b605f18SJean-Francois Moine static const u8 mi1320_gamma[17] = {
7696a7eba24SJean-Francois Moine 	0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8,
7706a7eba24SJean-Francois Moine 	0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff
7716a7eba24SJean-Francois Moine };
7728b605f18SJean-Francois Moine static const u8 mi1320_matrix[9] = {
7736a7eba24SJean-Francois Moine 	0x54, 0xda, 0x06, 0xf1, 0x50, 0xf4, 0xf7, 0xea, 0x52
7746a7eba24SJean-Francois Moine };
7758b605f18SJean-Francois Moine static const u8 mi1320_initVGA_data[][4] = {
7766a7eba24SJean-Francois Moine 	{0xb3, 0x01, 0x01, 0xcc},	{0x00, 0x00, 0x33, 0xdd},
7776a7eba24SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},	{0x00, 0x00, 0x33, 0xdd},
7786a7eba24SJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},	{0x00, 0x00, 0x33, 0xdd},
7796a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x64, 0xcc},	{0xb3, 0x00, 0x65, 0xcc},
7806a7eba24SJean-Francois Moine 	{0xb0, 0x16, 0x03, 0xcc},	{0xb3, 0x05, 0x00, 0xcc},
7816a7eba24SJean-Francois Moine 	{0xb3, 0x06, 0x00, 0xcc},	{0xb3, 0x08, 0x01, 0xcc},
7826a7eba24SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},	{0xb3, 0x34, 0x02, 0xcc},
783ff1cf408SJean-Francois Moine 	{0xb3, 0x35, 0xc8, 0xcc},	/* i2c add: 48 */
784ff1cf408SJean-Francois Moine 	{0xb3, 0x02, 0x00, 0xcc},
7856a7eba24SJean-Francois Moine 	{0xb3, 0x03, 0x0a, 0xcc},	{0xb3, 0x04, 0x05, 0xcc},
7866a7eba24SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},	{0xb3, 0x21, 0x00, 0xcc},
7876a7eba24SJean-Francois Moine 	{0xb3, 0x22, 0x03, 0xcc},	{0xb3, 0x23, 0xc0, 0xcc},
7886a7eba24SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},	{0xb3, 0x15, 0x00, 0xcc},
7896a7eba24SJean-Francois Moine 	{0xb3, 0x16, 0x04, 0xcc},	{0xb3, 0x17, 0xff, 0xcc},
7906a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x67, 0xcc},	{0xbc, 0x00, 0xd0, 0xcc},
7916a7eba24SJean-Francois Moine 	{0xbc, 0x01, 0x01, 0xcc},	{0xf0, 0x00, 0x00, 0xbb},
7926a7eba24SJean-Francois Moine 	{0x0d, 0x00, 0x09, 0xbb},	{0x00, 0x01, 0x00, 0xdd},
7936a7eba24SJean-Francois Moine 	{0x0d, 0x00, 0x08, 0xbb},	{0xf0, 0x00, 0x01, 0xbb},
7946a7eba24SJean-Francois Moine 	{0xa1, 0x05, 0x00, 0xbb},	{0xa4, 0x03, 0xc0, 0xbb},
7956a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},	{0x00, 0x00, 0x10, 0xdd},
7966a7eba24SJean-Francois Moine 	{0xc8, 0x9f, 0x0b, 0xbb},	{0x00, 0x00, 0x10, 0xdd},
7976a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},	{0x00, 0x00, 0x10, 0xdd},
7986a7eba24SJean-Francois Moine 	{0x20, 0x01, 0x00, 0xbb},	{0x00, 0x00, 0x10, 0xdd},
7996a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},	{0x9d, 0x3c, 0xa0, 0xbb},
8006a7eba24SJean-Francois Moine 	{0x47, 0x30, 0x30, 0xbb},	{0xf0, 0x00, 0x00, 0xbb},
8016a7eba24SJean-Francois Moine 	{0x0a, 0x80, 0x11, 0xbb},	{0x35, 0x00, 0x22, 0xbb},
8026a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},	{0x9d, 0xc5, 0x05, 0xbb},
8036a7eba24SJean-Francois Moine 	{0xdc, 0x0f, 0xfc, 0xbb},	{0xf0, 0x00, 0x01, 0xbb},
8046a7eba24SJean-Francois Moine 	{0x06, 0x74, 0x0e, 0xbb},	{0x80, 0x00, 0x06, 0xbb},
8056a7eba24SJean-Francois Moine 	{0x81, 0x04, 0x00, 0xbb},	{0x82, 0x01, 0x02, 0xbb},
8066a7eba24SJean-Francois Moine 	{0x83, 0x03, 0x02, 0xbb},	{0x84, 0x05, 0x00, 0xbb},
8076a7eba24SJean-Francois Moine 	{0x85, 0x01, 0x00, 0xbb},	{0x86, 0x03, 0x02, 0xbb},
8086a7eba24SJean-Francois Moine 	{0x87, 0x05, 0x00, 0xbb},	{0x88, 0x01, 0x00, 0xbb},
8096a7eba24SJean-Francois Moine 	{0x89, 0x02, 0x02, 0xbb},	{0x8a, 0xfd, 0x04, 0xbb},
8106a7eba24SJean-Francois Moine 	{0x8b, 0xfc, 0xfd, 0xbb},	{0x8c, 0xff, 0xfd, 0xbb},
8116a7eba24SJean-Francois Moine 	{0x8d, 0x00, 0x00, 0xbb},	{0x8e, 0xfe, 0x05, 0xbb},
8126a7eba24SJean-Francois Moine 	{0x8f, 0xfc, 0xfd, 0xbb},	{0x90, 0xfe, 0xfd, 0xbb},
8136a7eba24SJean-Francois Moine 	{0x91, 0x00, 0x00, 0xbb},	{0x92, 0xfe, 0x03, 0xbb},
8146a7eba24SJean-Francois Moine 	{0x93, 0xfd, 0xfe, 0xbb},	{0x94, 0xff, 0xfd, 0xbb},
8156a7eba24SJean-Francois Moine 	{0x95, 0x00, 0x00, 0xbb},	{0xb6, 0x07, 0x05, 0xbb},
8166a7eba24SJean-Francois Moine 	{0xb7, 0x13, 0x06, 0xbb},	{0xb8, 0x08, 0x06, 0xbb},
8176a7eba24SJean-Francois Moine 	{0xb9, 0x14, 0x08, 0xbb},	{0xba, 0x06, 0x05, 0xbb},
8186a7eba24SJean-Francois Moine 	{0xbb, 0x13, 0x06, 0xbb},	{0xbc, 0x03, 0x01, 0xbb},
8196a7eba24SJean-Francois Moine 	{0xbd, 0x03, 0x04, 0xbb},	{0xbe, 0x00, 0x02, 0xbb},
8206a7eba24SJean-Francois Moine 	{0xbf, 0x03, 0x01, 0xbb},	{0xc0, 0x02, 0x04, 0xbb},
8216a7eba24SJean-Francois Moine 	{0xc1, 0x00, 0x04, 0xbb},	{0xc2, 0x02, 0x01, 0xbb},
8226a7eba24SJean-Francois Moine 	{0xc3, 0x01, 0x03, 0xbb},	{0xc4, 0x00, 0x04, 0xbb},
8236a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},	{0x05, 0x01, 0x13, 0xbb},
8246a7eba24SJean-Francois Moine 	{0x06, 0x00, 0x11, 0xbb},	{0x07, 0x00, 0x85, 0xbb},
825ff1cf408SJean-Francois Moine 	{0x08, 0x00, 0x27, 0xbb},
826ff1cf408SJean-Francois Moine 	{0x20, 0x01, 0x00, 0xbb},	/* h/v flips - was 03 */
8276a7eba24SJean-Francois Moine 	{0x21, 0x80, 0x00, 0xbb},	{0x22, 0x0d, 0x0f, 0xbb},
8286a7eba24SJean-Francois Moine 	{0x24, 0x80, 0x00, 0xbb},	{0x59, 0x00, 0xff, 0xbb},
8296a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},	{0x39, 0x03, 0x0d, 0xbb},
8306a7eba24SJean-Francois Moine 	{0x3a, 0x06, 0x1b, 0xbb},	{0x3b, 0x00, 0x95, 0xbb},
8316a7eba24SJean-Francois Moine 	{0x3c, 0x04, 0xdb, 0xbb},	{0x57, 0x02, 0x00, 0xbb},
8326a7eba24SJean-Francois Moine 	{0x58, 0x02, 0x66, 0xbb},	{0x59, 0x00, 0xff, 0xbb},
8336a7eba24SJean-Francois Moine 	{0x5a, 0x01, 0x33, 0xbb},	{0x5c, 0x12, 0x0d, 0xbb},
8346a7eba24SJean-Francois Moine 	{0x5d, 0x16, 0x11, 0xbb},	{0x64, 0x5e, 0x1c, 0xbb},
8356a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},	{0x2f, 0xd1, 0x00, 0xbb},
8366a7eba24SJean-Francois Moine 	{0x5b, 0x00, 0x01, 0xbb},	{0xf0, 0x00, 0x02, 0xbb},
8376a7eba24SJean-Francois Moine 	{0x36, 0x68, 0x10, 0xbb},	{0x00, 0x00, 0x30, 0xdd},
8386a7eba24SJean-Francois Moine 	{0x37, 0x82, 0x00, 0xbb},	{0xbc, 0x0e, 0x00, 0xcc},
8396a7eba24SJean-Francois Moine 	{0xbc, 0x0f, 0x05, 0xcc},	{0xbc, 0x10, 0xc0, 0xcc},
8406a7eba24SJean-Francois Moine 	{0xbc, 0x11, 0x03, 0xcc},	{0xb6, 0x00, 0x00, 0xcc},
8416a7eba24SJean-Francois Moine 	{0xb6, 0x03, 0x05, 0xcc},	{0xb6, 0x02, 0x00, 0xcc},
8426a7eba24SJean-Francois Moine 	{0xb6, 0x05, 0x04, 0xcc},	{0xb6, 0x04, 0x00, 0xcc},
8436a7eba24SJean-Francois Moine 	{0xb6, 0x12, 0xf8, 0xcc},	{0xb6, 0x13, 0x29, 0xcc},
8446a7eba24SJean-Francois Moine 	{0xb6, 0x18, 0x0a, 0xcc},	{0xb6, 0x17, 0x00, 0xcc},
8456a7eba24SJean-Francois Moine 	{0xb6, 0x16, 0x00, 0xcc},	{0xb6, 0x22, 0x12, 0xcc},
8466a7eba24SJean-Francois Moine 	{0xb6, 0x23, 0x0b, 0xcc},	{0xbf, 0xc0, 0x26, 0xcc},
8476a7eba24SJean-Francois Moine 	{0xbf, 0xc1, 0x02, 0xcc},	{0xbf, 0xcc, 0x04, 0xcc},
8486a7eba24SJean-Francois Moine 	{0xbc, 0x02, 0x18, 0xcc},	{0xbc, 0x03, 0x50, 0xcc},
8496a7eba24SJean-Francois Moine 	{0xbc, 0x04, 0x18, 0xcc},	{0xbc, 0x05, 0x00, 0xcc},
8506a7eba24SJean-Francois Moine 	{0xbc, 0x06, 0x00, 0xcc},	{0xbc, 0x08, 0x30, 0xcc},
8516a7eba24SJean-Francois Moine 	{0xbc, 0x09, 0x40, 0xcc},	{0xbc, 0x0a, 0x10, 0xcc},
8526a7eba24SJean-Francois Moine 	{0xbc, 0x0b, 0x00, 0xcc},	{0xbc, 0x0c, 0x00, 0xcc},
8536a7eba24SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},	{0xb3, 0x01, 0x41, 0xcc},
8546a7eba24SJean-Francois Moine 	{}
8556a7eba24SJean-Francois Moine };
8568b605f18SJean-Francois Moine static const u8 mi1320_initQVGA_data[][4] = {
8576a7eba24SJean-Francois Moine 	{0xb3, 0x01, 0x01, 0xcc},	{0x00, 0x00, 0x33, 0xdd},
8586a7eba24SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},	{0x00, 0x00, 0x33, 0xdd},
8596a7eba24SJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},	{0x00, 0x00, 0x33, 0xdd},
8606a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x64, 0xcc},	{0xb3, 0x00, 0x65, 0xcc},
8616a7eba24SJean-Francois Moine 	{0xb0, 0x16, 0x03, 0xcc},	{0xb3, 0x05, 0x01, 0xcc},
8626a7eba24SJean-Francois Moine 	{0xb3, 0x06, 0x01, 0xcc},	{0xb3, 0x08, 0x01, 0xcc},
8636a7eba24SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},	{0xb3, 0x34, 0x02, 0xcc},
8646a7eba24SJean-Francois Moine 	{0xb3, 0x35, 0xc8, 0xcc},	{0xb3, 0x02, 0x00, 0xcc},
8656a7eba24SJean-Francois Moine 	{0xb3, 0x03, 0x0a, 0xcc},	{0xb3, 0x04, 0x05, 0xcc},
8666a7eba24SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},	{0xb3, 0x21, 0x00, 0xcc},
8676a7eba24SJean-Francois Moine 	{0xb3, 0x22, 0x01, 0xcc},	{0xb3, 0x23, 0xe0, 0xcc},
8686a7eba24SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},	{0xb3, 0x15, 0x00, 0xcc},
8696a7eba24SJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},	{0xb3, 0x17, 0x7f, 0xcc},
8706a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x65, 0xcc},	{0xb8, 0x00, 0x00, 0xcc},
8716a7eba24SJean-Francois Moine 	{0xbc, 0x00, 0xd0, 0xcc},	{0xbc, 0x01, 0x01, 0xcc},
8726a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},	{0x0d, 0x00, 0x09, 0xbb},
8736a7eba24SJean-Francois Moine 	{0x00, 0x01, 0x00, 0xdd},	{0x0d, 0x00, 0x08, 0xbb},
8746a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},	{0x02, 0x00, 0x64, 0xbb},
8756a7eba24SJean-Francois Moine 	{0x05, 0x01, 0x78, 0xbb},	{0x06, 0x00, 0x11, 0xbb},
8766a7eba24SJean-Francois Moine 	{0x07, 0x01, 0x42, 0xbb},	{0x08, 0x00, 0x11, 0xbb},
8776a7eba24SJean-Francois Moine 	{0x20, 0x01, 0x00, 0xbb},	{0x21, 0x80, 0x00, 0xbb},
8786a7eba24SJean-Francois Moine 	{0x22, 0x0d, 0x0f, 0xbb},	{0x24, 0x80, 0x00, 0xbb},
8796a7eba24SJean-Francois Moine 	{0x59, 0x00, 0xff, 0xbb},	{0xf0, 0x00, 0x01, 0xbb},
8806a7eba24SJean-Francois Moine 	{0x9d, 0x3c, 0xa0, 0xbb},	{0x47, 0x30, 0x30, 0xbb},
8816a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},	{0x0a, 0x80, 0x11, 0xbb},
8826a7eba24SJean-Francois Moine 	{0x35, 0x00, 0x22, 0xbb},	{0xf0, 0x00, 0x02, 0xbb},
8836a7eba24SJean-Francois Moine 	{0x9d, 0xc5, 0x05, 0xbb},	{0xdc, 0x0f, 0xfc, 0xbb},
8846a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},	{0x06, 0x74, 0x0e, 0xbb},
8856a7eba24SJean-Francois Moine 	{0x80, 0x00, 0x06, 0xbb},	{0x81, 0x04, 0x00, 0xbb},
8866a7eba24SJean-Francois Moine 	{0x82, 0x01, 0x02, 0xbb},	{0x83, 0x03, 0x02, 0xbb},
8876a7eba24SJean-Francois Moine 	{0x84, 0x05, 0x00, 0xbb},	{0x85, 0x01, 0x00, 0xbb},
8886a7eba24SJean-Francois Moine 	{0x86, 0x03, 0x02, 0xbb},	{0x87, 0x05, 0x00, 0xbb},
8896a7eba24SJean-Francois Moine 	{0x88, 0x01, 0x00, 0xbb},	{0x89, 0x02, 0x02, 0xbb},
8906a7eba24SJean-Francois Moine 	{0x8a, 0xfd, 0x04, 0xbb},	{0x8b, 0xfc, 0xfd, 0xbb},
8916a7eba24SJean-Francois Moine 	{0x8c, 0xff, 0xfd, 0xbb},	{0x8d, 0x00, 0x00, 0xbb},
8926a7eba24SJean-Francois Moine 	{0x8e, 0xfe, 0x05, 0xbb},	{0x8f, 0xfc, 0xfd, 0xbb},
8936a7eba24SJean-Francois Moine 	{0x90, 0xfe, 0xfd, 0xbb},	{0x91, 0x00, 0x00, 0xbb},
8946a7eba24SJean-Francois Moine 	{0x92, 0xfe, 0x03, 0xbb},	{0x93, 0xfd, 0xfe, 0xbb},
8956a7eba24SJean-Francois Moine 	{0x94, 0xff, 0xfd, 0xbb},	{0x95, 0x00, 0x00, 0xbb},
8966a7eba24SJean-Francois Moine 	{0xb6, 0x07, 0x05, 0xbb},	{0xb7, 0x13, 0x06, 0xbb},
8976a7eba24SJean-Francois Moine 	{0xb8, 0x08, 0x06, 0xbb},	{0xb9, 0x14, 0x08, 0xbb},
8986a7eba24SJean-Francois Moine 	{0xba, 0x06, 0x05, 0xbb},	{0xbb, 0x13, 0x06, 0xbb},
8996a7eba24SJean-Francois Moine 	{0xbc, 0x03, 0x01, 0xbb},	{0xbd, 0x03, 0x04, 0xbb},
9006a7eba24SJean-Francois Moine 	{0xbe, 0x00, 0x02, 0xbb},	{0xbf, 0x03, 0x01, 0xbb},
9016a7eba24SJean-Francois Moine 	{0xc0, 0x02, 0x04, 0xbb},	{0xc1, 0x00, 0x04, 0xbb},
9026a7eba24SJean-Francois Moine 	{0xc2, 0x02, 0x01, 0xbb},	{0xc3, 0x01, 0x03, 0xbb},
9036a7eba24SJean-Francois Moine 	{0xc4, 0x00, 0x04, 0xbb},	{0xf0, 0x00, 0x02, 0xbb},
9046a7eba24SJean-Francois Moine 	{0xc8, 0x00, 0x00, 0xbb},	{0x2e, 0x00, 0x00, 0xbb},
9056a7eba24SJean-Francois Moine 	{0x2e, 0x0c, 0x5b, 0xbb},	{0x2f, 0xd1, 0x00, 0xbb},
9066a7eba24SJean-Francois Moine 	{0x39, 0x03, 0xca, 0xbb},	{0x3a, 0x06, 0x80, 0xbb},
9076a7eba24SJean-Francois Moine 	{0x3b, 0x01, 0x52, 0xbb},	{0x3c, 0x05, 0x40, 0xbb},
9086a7eba24SJean-Francois Moine 	{0x57, 0x01, 0x9c, 0xbb},	{0x58, 0x01, 0xee, 0xbb},
9096a7eba24SJean-Francois Moine 	{0x59, 0x00, 0xf0, 0xbb},	{0x5a, 0x01, 0x20, 0xbb},
9106a7eba24SJean-Francois Moine 	{0x5c, 0x1d, 0x17, 0xbb},	{0x5d, 0x22, 0x1c, 0xbb},
9116a7eba24SJean-Francois Moine 	{0x64, 0x1e, 0x1c, 0xbb},	{0x5b, 0x00, 0x01, 0xbb},
9126a7eba24SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},	{0x36, 0x68, 0x10, 0xbb},
9136a7eba24SJean-Francois Moine 	{0x00, 0x00, 0x30, 0xdd},	{0x37, 0x81, 0x00, 0xbb},
9146a7eba24SJean-Francois Moine 	{0xbc, 0x02, 0x18, 0xcc},	{0xbc, 0x03, 0x50, 0xcc},
9156a7eba24SJean-Francois Moine 	{0xbc, 0x04, 0x18, 0xcc},	{0xbc, 0x05, 0x00, 0xcc},
9166a7eba24SJean-Francois Moine 	{0xbc, 0x06, 0x00, 0xcc},	{0xbc, 0x08, 0x30, 0xcc},
9176a7eba24SJean-Francois Moine 	{0xbc, 0x09, 0x40, 0xcc},	{0xbc, 0x0a, 0x10, 0xcc},
9186a7eba24SJean-Francois Moine 	{0xbc, 0x0b, 0x00, 0xcc},	{0xbc, 0x0c, 0x00, 0xcc},
9196a7eba24SJean-Francois Moine 	{0xbf, 0xc0, 0x26, 0xcc},	{0xbf, 0xc1, 0x02, 0xcc},
9206a7eba24SJean-Francois Moine 	{0xbf, 0xcc, 0x04, 0xcc},	{0xb3, 0x5c, 0x01, 0xcc},
9216a7eba24SJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
9226a7eba24SJean-Francois Moine 	{}
9236a7eba24SJean-Francois Moine };
9246a7eba24SJean-Francois Moine 
92558e2ded8SJean-Francois Moine static const u8 mi1320_soc_InitVGA[][4] = {
92658e2ded8SJean-Francois Moine 	{0xb3, 0x01, 0x01, 0xcc},
92758e2ded8SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},
92858e2ded8SJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},
92958e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x30, 0xdd},
93058e2ded8SJean-Francois Moine 	{0xb3, 0x00, 0x64, 0xcc},
93158e2ded8SJean-Francois Moine 	{0xb3, 0x00, 0x67, 0xcc},
93258e2ded8SJean-Francois Moine 	{0xb3, 0x05, 0x01, 0xcc},
93358e2ded8SJean-Francois Moine 	{0xb3, 0x06, 0x01, 0xcc},
93458e2ded8SJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
93558e2ded8SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
93658e2ded8SJean-Francois Moine 	{0xb3, 0x34, 0x02, 0xcc},
937ff1cf408SJean-Francois Moine 	{0xb3, 0x35, 0xc8, 0xcc},	/* i2c add: 48 */
93858e2ded8SJean-Francois Moine 	{0xb3, 0x02, 0x00, 0xcc},
93958e2ded8SJean-Francois Moine 	{0xb3, 0x03, 0x0a, 0xcc},
94058e2ded8SJean-Francois Moine 	{0xb3, 0x04, 0x05, 0xcc},
94158e2ded8SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
94258e2ded8SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
94358e2ded8SJean-Francois Moine 	{0xb3, 0x22, 0x01, 0xcc},
94458e2ded8SJean-Francois Moine 	{0xb3, 0x23, 0xe0, 0xcc},
94558e2ded8SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
94658e2ded8SJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},
94758e2ded8SJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},
94858e2ded8SJean-Francois Moine 	{0xb3, 0x17, 0x7f, 0xcc},
94958e2ded8SJean-Francois Moine 	{0xb3, 0x00, 0x67, 0xcc},
95058e2ded8SJean-Francois Moine 	{0xb8, 0x00, 0x00, 0xcc},
95158e2ded8SJean-Francois Moine 	{0xbc, 0x00, 0x71, 0xcc},
95258e2ded8SJean-Francois Moine 	{0xbc, 0x01, 0x01, 0xcc},
95358e2ded8SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
95458e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
95558e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x10, 0xdd},
95658e2ded8SJean-Francois Moine 	{0xc8, 0x00, 0x00, 0xbb},
95758e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x30, 0xdd},
95858e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
95958e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x10, 0xdd},
96058e2ded8SJean-Francois Moine 	{0x07, 0x00, 0xe0, 0xbb},
96158e2ded8SJean-Francois Moine 	{0x08, 0x00, 0x0b, 0xbb},
96258e2ded8SJean-Francois Moine 	{0x21, 0x00, 0x0c, 0xbb},
963e27188eeSJean-Francois Moine 	{0x20, 0x01, 0x03, 0xbb},	/* h/v flip */
96458e2ded8SJean-Francois Moine 	{0xbf, 0xc0, 0x26, 0xcc},
96558e2ded8SJean-Francois Moine 	{0xbf, 0xc1, 0x02, 0xcc},
96658e2ded8SJean-Francois Moine 	{0xbf, 0xcc, 0x04, 0xcc},
96758e2ded8SJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
96858e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
96958e2ded8SJean-Francois Moine 	{0x05, 0x01, 0x78, 0xbb},
97058e2ded8SJean-Francois Moine 	{0x06, 0x00, 0x11, 0xbb},
97158e2ded8SJean-Francois Moine 	{0x07, 0x01, 0x42, 0xbb},
97258e2ded8SJean-Francois Moine 	{0x08, 0x00, 0x11, 0xbb},
973e27188eeSJean-Francois Moine 	{0x20, 0x01, 0x03, 0xbb},	/* h/v flip */
97458e2ded8SJean-Francois Moine 	{0x21, 0x80, 0x00, 0xbb},
97558e2ded8SJean-Francois Moine 	{0x22, 0x0d, 0x0f, 0xbb},
97658e2ded8SJean-Francois Moine 	{0x24, 0x80, 0x00, 0xbb},
97758e2ded8SJean-Francois Moine 	{0x59, 0x00, 0xff, 0xbb},
97858e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
97958e2ded8SJean-Francois Moine 	{0x39, 0x03, 0xca, 0xbb},
98058e2ded8SJean-Francois Moine 	{0x3a, 0x06, 0x80, 0xbb},
98158e2ded8SJean-Francois Moine 	{0x3b, 0x01, 0x52, 0xbb},
98258e2ded8SJean-Francois Moine 	{0x3c, 0x05, 0x40, 0xbb},
98358e2ded8SJean-Francois Moine 	{0x57, 0x01, 0x9c, 0xbb},
98458e2ded8SJean-Francois Moine 	{0x58, 0x01, 0xee, 0xbb},
98558e2ded8SJean-Francois Moine 	{0x59, 0x00, 0xf0, 0xbb},
98658e2ded8SJean-Francois Moine 	{0x5a, 0x01, 0x20, 0xbb},
98758e2ded8SJean-Francois Moine 	{0x5c, 0x1d, 0x17, 0xbb},
98858e2ded8SJean-Francois Moine 	{0x5d, 0x22, 0x1c, 0xbb},
98958e2ded8SJean-Francois Moine 	{0x64, 0x1e, 0x1c, 0xbb},
99058e2ded8SJean-Francois Moine 	{0x5b, 0x00, 0x00, 0xbb},
99158e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
99258e2ded8SJean-Francois Moine 	{0x22, 0xa0, 0x78, 0xbb},
99358e2ded8SJean-Francois Moine 	{0x23, 0xa0, 0x78, 0xbb},
99458e2ded8SJean-Francois Moine 	{0x24, 0x7f, 0x00, 0xbb},
99558e2ded8SJean-Francois Moine 	{0x28, 0xea, 0x02, 0xbb},
99658e2ded8SJean-Francois Moine 	{0x29, 0x86, 0x7a, 0xbb},
99758e2ded8SJean-Francois Moine 	{0x5e, 0x52, 0x4c, 0xbb},
99858e2ded8SJean-Francois Moine 	{0x5f, 0x20, 0x24, 0xbb},
99958e2ded8SJean-Francois Moine 	{0x60, 0x00, 0x02, 0xbb},
100058e2ded8SJean-Francois Moine 	{0x02, 0x00, 0xee, 0xbb},
100158e2ded8SJean-Francois Moine 	{0x03, 0x39, 0x23, 0xbb},
100258e2ded8SJean-Francois Moine 	{0x04, 0x07, 0x24, 0xbb},
100358e2ded8SJean-Francois Moine 	{0x09, 0x00, 0xc0, 0xbb},
100458e2ded8SJean-Francois Moine 	{0x0a, 0x00, 0x79, 0xbb},
100558e2ded8SJean-Francois Moine 	{0x0b, 0x00, 0x04, 0xbb},
100658e2ded8SJean-Francois Moine 	{0x0c, 0x00, 0x5c, 0xbb},
100758e2ded8SJean-Francois Moine 	{0x0d, 0x00, 0xd9, 0xbb},
100858e2ded8SJean-Francois Moine 	{0x0e, 0x00, 0x53, 0xbb},
100958e2ded8SJean-Francois Moine 	{0x0f, 0x00, 0x21, 0xbb},
101058e2ded8SJean-Francois Moine 	{0x10, 0x00, 0xa4, 0xbb},
101158e2ded8SJean-Francois Moine 	{0x11, 0x00, 0xe5, 0xbb},
101258e2ded8SJean-Francois Moine 	{0x15, 0x00, 0x00, 0xbb},
101358e2ded8SJean-Francois Moine 	{0x16, 0x00, 0x00, 0xbb},
101458e2ded8SJean-Francois Moine 	{0x17, 0x00, 0x00, 0xbb},
101558e2ded8SJean-Francois Moine 	{0x18, 0x00, 0x00, 0xbb},
101658e2ded8SJean-Francois Moine 	{0x19, 0x00, 0x00, 0xbb},
101758e2ded8SJean-Francois Moine 	{0x1a, 0x00, 0x00, 0xbb},
101858e2ded8SJean-Francois Moine 	{0x1b, 0x00, 0x00, 0xbb},
101958e2ded8SJean-Francois Moine 	{0x1c, 0x00, 0x00, 0xbb},
102058e2ded8SJean-Francois Moine 	{0x1d, 0x00, 0x00, 0xbb},
102158e2ded8SJean-Francois Moine 	{0x1e, 0x00, 0x00, 0xbb},
102258e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},
102358e2ded8SJean-Francois Moine 	{0x06, 0xe0, 0x0e, 0xbb},
102458e2ded8SJean-Francois Moine 	{0x06, 0x60, 0x0e, 0xbb},
102558e2ded8SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
102658e2ded8SJean-Francois Moine 	{}
102758e2ded8SJean-Francois Moine };
102858e2ded8SJean-Francois Moine static const u8 mi1320_soc_InitQVGA[][4] = {
102958e2ded8SJean-Francois Moine 	{0xb3, 0x01, 0x01, 0xcc},
103058e2ded8SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},
103158e2ded8SJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},
103258e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x30, 0xdd},
103358e2ded8SJean-Francois Moine 	{0xb3, 0x00, 0x64, 0xcc},
103458e2ded8SJean-Francois Moine 	{0xb3, 0x00, 0x67, 0xcc},
103558e2ded8SJean-Francois Moine 	{0xb3, 0x05, 0x01, 0xcc},
103658e2ded8SJean-Francois Moine 	{0xb3, 0x06, 0x01, 0xcc},
103758e2ded8SJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
103858e2ded8SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
103958e2ded8SJean-Francois Moine 	{0xb3, 0x34, 0x02, 0xcc},
104058e2ded8SJean-Francois Moine 	{0xb3, 0x35, 0xc8, 0xcc},
104158e2ded8SJean-Francois Moine 	{0xb3, 0x02, 0x00, 0xcc},
104258e2ded8SJean-Francois Moine 	{0xb3, 0x03, 0x0a, 0xcc},
104358e2ded8SJean-Francois Moine 	{0xb3, 0x04, 0x05, 0xcc},
104458e2ded8SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
104558e2ded8SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
104658e2ded8SJean-Francois Moine 	{0xb3, 0x22, 0x01, 0xcc},
104758e2ded8SJean-Francois Moine 	{0xb3, 0x23, 0xe0, 0xcc},
104858e2ded8SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
104958e2ded8SJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},
105058e2ded8SJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},
105158e2ded8SJean-Francois Moine 	{0xb3, 0x17, 0x7f, 0xcc},
105258e2ded8SJean-Francois Moine 	{0xb3, 0x00, 0x67, 0xcc},
105358e2ded8SJean-Francois Moine 	{0xb8, 0x00, 0x00, 0xcc},
105458e2ded8SJean-Francois Moine 	{0xbc, 0x00, 0xd1, 0xcc},
105558e2ded8SJean-Francois Moine 	{0xbc, 0x01, 0x01, 0xcc},
105658e2ded8SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
105758e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
105858e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x10, 0xdd},
105958e2ded8SJean-Francois Moine 	{0xc8, 0x00, 0x00, 0xbb},
106058e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x30, 0xdd},
106158e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
106258e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x10, 0xdd},
106358e2ded8SJean-Francois Moine 	{0x07, 0x00, 0xe0, 0xbb},
106458e2ded8SJean-Francois Moine 	{0x08, 0x00, 0x0b, 0xbb},
106558e2ded8SJean-Francois Moine 	{0x21, 0x00, 0x0c, 0xbb},
1066e27188eeSJean-Francois Moine 	{0x20, 0x01, 0x03, 0xbb},	/* h/v flip */
106758e2ded8SJean-Francois Moine 	{0xbf, 0xc0, 0x26, 0xcc},
106858e2ded8SJean-Francois Moine 	{0xbf, 0xc1, 0x02, 0xcc},
106958e2ded8SJean-Francois Moine 	{0xbf, 0xcc, 0x04, 0xcc},
107058e2ded8SJean-Francois Moine 	{0xbc, 0x02, 0x18, 0xcc},
107158e2ded8SJean-Francois Moine 	{0xbc, 0x03, 0x50, 0xcc},
107258e2ded8SJean-Francois Moine 	{0xbc, 0x04, 0x18, 0xcc},
107358e2ded8SJean-Francois Moine 	{0xbc, 0x05, 0x00, 0xcc},
107458e2ded8SJean-Francois Moine 	{0xbc, 0x06, 0x00, 0xcc},
107558e2ded8SJean-Francois Moine 	{0xbc, 0x08, 0x30, 0xcc},
107658e2ded8SJean-Francois Moine 	{0xbc, 0x09, 0x40, 0xcc},
107758e2ded8SJean-Francois Moine 	{0xbc, 0x0a, 0x10, 0xcc},
107858e2ded8SJean-Francois Moine 	{0xbc, 0x0b, 0x00, 0xcc},
107958e2ded8SJean-Francois Moine 	{0xbc, 0x0c, 0x00, 0xcc},
108058e2ded8SJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
108158e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
108258e2ded8SJean-Francois Moine 	{0x05, 0x01, 0x78, 0xbb},
108358e2ded8SJean-Francois Moine 	{0x06, 0x00, 0x11, 0xbb},
108458e2ded8SJean-Francois Moine 	{0x07, 0x01, 0x42, 0xbb},
108558e2ded8SJean-Francois Moine 	{0x08, 0x00, 0x11, 0xbb},
1086e27188eeSJean-Francois Moine 	{0x20, 0x01, 0x03, 0xbb},	/* h/v flip */
108758e2ded8SJean-Francois Moine 	{0x21, 0x80, 0x00, 0xbb},
108858e2ded8SJean-Francois Moine 	{0x22, 0x0d, 0x0f, 0xbb},
108958e2ded8SJean-Francois Moine 	{0x24, 0x80, 0x00, 0xbb},
109058e2ded8SJean-Francois Moine 	{0x59, 0x00, 0xff, 0xbb},
109158e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
109258e2ded8SJean-Francois Moine 	{0x39, 0x03, 0xca, 0xbb},
109358e2ded8SJean-Francois Moine 	{0x3a, 0x06, 0x80, 0xbb},
109458e2ded8SJean-Francois Moine 	{0x3b, 0x01, 0x52, 0xbb},
109558e2ded8SJean-Francois Moine 	{0x3c, 0x05, 0x40, 0xbb},
109658e2ded8SJean-Francois Moine 	{0x57, 0x01, 0x9c, 0xbb},
109758e2ded8SJean-Francois Moine 	{0x58, 0x01, 0xee, 0xbb},
109858e2ded8SJean-Francois Moine 	{0x59, 0x00, 0xf0, 0xbb},
109958e2ded8SJean-Francois Moine 	{0x5a, 0x01, 0x20, 0xbb},
110058e2ded8SJean-Francois Moine 	{0x5c, 0x1d, 0x17, 0xbb},
110158e2ded8SJean-Francois Moine 	{0x5d, 0x22, 0x1c, 0xbb},
110258e2ded8SJean-Francois Moine 	{0x64, 0x1e, 0x1c, 0xbb},
110358e2ded8SJean-Francois Moine 	{0x5b, 0x00, 0x00, 0xbb},
110458e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
110558e2ded8SJean-Francois Moine 	{0x22, 0xa0, 0x78, 0xbb},
110658e2ded8SJean-Francois Moine 	{0x23, 0xa0, 0x78, 0xbb},
110758e2ded8SJean-Francois Moine 	{0x24, 0x7f, 0x00, 0xbb},
110858e2ded8SJean-Francois Moine 	{0x28, 0xea, 0x02, 0xbb},
110958e2ded8SJean-Francois Moine 	{0x29, 0x86, 0x7a, 0xbb},
111058e2ded8SJean-Francois Moine 	{0x5e, 0x52, 0x4c, 0xbb},
111158e2ded8SJean-Francois Moine 	{0x5f, 0x20, 0x24, 0xbb},
111258e2ded8SJean-Francois Moine 	{0x60, 0x00, 0x02, 0xbb},
111358e2ded8SJean-Francois Moine 	{0x02, 0x00, 0xee, 0xbb},
111458e2ded8SJean-Francois Moine 	{0x03, 0x39, 0x23, 0xbb},
111558e2ded8SJean-Francois Moine 	{0x04, 0x07, 0x24, 0xbb},
111658e2ded8SJean-Francois Moine 	{0x09, 0x00, 0xc0, 0xbb},
111758e2ded8SJean-Francois Moine 	{0x0a, 0x00, 0x79, 0xbb},
111858e2ded8SJean-Francois Moine 	{0x0b, 0x00, 0x04, 0xbb},
111958e2ded8SJean-Francois Moine 	{0x0c, 0x00, 0x5c, 0xbb},
112058e2ded8SJean-Francois Moine 	{0x0d, 0x00, 0xd9, 0xbb},
112158e2ded8SJean-Francois Moine 	{0x0e, 0x00, 0x53, 0xbb},
112258e2ded8SJean-Francois Moine 	{0x0f, 0x00, 0x21, 0xbb},
112358e2ded8SJean-Francois Moine 	{0x10, 0x00, 0xa4, 0xbb},
112458e2ded8SJean-Francois Moine 	{0x11, 0x00, 0xe5, 0xbb},
112558e2ded8SJean-Francois Moine 	{0x15, 0x00, 0x00, 0xbb},
112658e2ded8SJean-Francois Moine 	{0x16, 0x00, 0x00, 0xbb},
112758e2ded8SJean-Francois Moine 	{0x17, 0x00, 0x00, 0xbb},
112858e2ded8SJean-Francois Moine 	{0x18, 0x00, 0x00, 0xbb},
112958e2ded8SJean-Francois Moine 	{0x19, 0x00, 0x00, 0xbb},
113058e2ded8SJean-Francois Moine 	{0x1a, 0x00, 0x00, 0xbb},
113158e2ded8SJean-Francois Moine 	{0x1b, 0x00, 0x00, 0xbb},
113258e2ded8SJean-Francois Moine 	{0x1c, 0x00, 0x00, 0xbb},
113358e2ded8SJean-Francois Moine 	{0x1d, 0x00, 0x00, 0xbb},
113458e2ded8SJean-Francois Moine 	{0x1e, 0x00, 0x00, 0xbb},
113558e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},
113658e2ded8SJean-Francois Moine 	{0x06, 0xe0, 0x0e, 0xbb},
113758e2ded8SJean-Francois Moine 	{0x06, 0x60, 0x0e, 0xbb},
113858e2ded8SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
113958e2ded8SJean-Francois Moine 	{}
114058e2ded8SJean-Francois Moine };
114158e2ded8SJean-Francois Moine static const u8 mi1320_soc_InitSXGA[][4] = {
114258e2ded8SJean-Francois Moine 	{0xb3, 0x01, 0x01, 0xcc},
114358e2ded8SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},
114458e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x30, 0xdd},
114558e2ded8SJean-Francois Moine 	{0xb3, 0x00, 0x64, 0xcc},
114658e2ded8SJean-Francois Moine 	{0xb3, 0x00, 0x67, 0xcc},
114758e2ded8SJean-Francois Moine 	{0xb3, 0x05, 0x01, 0xcc},
114858e2ded8SJean-Francois Moine 	{0xb3, 0x06, 0x01, 0xcc},
114958e2ded8SJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
115058e2ded8SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
115158e2ded8SJean-Francois Moine 	{0xb3, 0x34, 0x02, 0xcc},
115258e2ded8SJean-Francois Moine 	{0xb3, 0x35, 0xc8, 0xcc},
115358e2ded8SJean-Francois Moine 	{0xb3, 0x02, 0x00, 0xcc},
115458e2ded8SJean-Francois Moine 	{0xb3, 0x03, 0x0a, 0xcc},
115558e2ded8SJean-Francois Moine 	{0xb3, 0x04, 0x05, 0xcc},
115658e2ded8SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
115758e2ded8SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
115858e2ded8SJean-Francois Moine 	{0xb3, 0x22, 0x04, 0xcc},
115958e2ded8SJean-Francois Moine 	{0xb3, 0x23, 0x00, 0xcc},
116058e2ded8SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
116158e2ded8SJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},
116258e2ded8SJean-Francois Moine 	{0xb3, 0x16, 0x04, 0xcc},
116358e2ded8SJean-Francois Moine 	{0xb3, 0x17, 0xff, 0xcc},
116458e2ded8SJean-Francois Moine 	{0xb3, 0x00, 0x67, 0xcc},
116558e2ded8SJean-Francois Moine 	{0xbc, 0x00, 0x71, 0xcc},
116658e2ded8SJean-Francois Moine 	{0xbc, 0x01, 0x01, 0xcc},
116758e2ded8SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
116858e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
116958e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x30, 0xdd},
117058e2ded8SJean-Francois Moine 	{0xc8, 0x9f, 0x0b, 0xbb},
117158e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x20, 0xdd},
117258e2ded8SJean-Francois Moine 	{0x5b, 0x00, 0x01, 0xbb},
117358e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x20, 0xdd},
117458e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
117558e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x30, 0xdd},
1176e27188eeSJean-Francois Moine 	{0x20, 0x01, 0x03, 0xbb},	/* h/v flip */
117758e2ded8SJean-Francois Moine 	{0x00, 0x00, 0x20, 0xdd},
117858e2ded8SJean-Francois Moine 	{0xbf, 0xc0, 0x26, 0xcc},
117958e2ded8SJean-Francois Moine 	{0xbf, 0xc1, 0x02, 0xcc},
118058e2ded8SJean-Francois Moine 	{0xbf, 0xcc, 0x04, 0xcc},
118158e2ded8SJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
118258e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
118358e2ded8SJean-Francois Moine 	{0x05, 0x01, 0x78, 0xbb},
118458e2ded8SJean-Francois Moine 	{0x06, 0x00, 0x11, 0xbb},
118558e2ded8SJean-Francois Moine 	{0x07, 0x01, 0x42, 0xbb},
118658e2ded8SJean-Francois Moine 	{0x08, 0x00, 0x11, 0xbb},
1187e27188eeSJean-Francois Moine 	{0x20, 0x01, 0x03, 0xbb},	/* h/v flip */
118858e2ded8SJean-Francois Moine 	{0x21, 0x80, 0x00, 0xbb},
118958e2ded8SJean-Francois Moine 	{0x22, 0x0d, 0x0f, 0xbb},
119058e2ded8SJean-Francois Moine 	{0x24, 0x80, 0x00, 0xbb},
119158e2ded8SJean-Francois Moine 	{0x59, 0x00, 0xff, 0xbb},
119258e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
119358e2ded8SJean-Francois Moine 	{0x39, 0x03, 0xca, 0xbb},
119458e2ded8SJean-Francois Moine 	{0x3a, 0x06, 0x80, 0xbb},
119558e2ded8SJean-Francois Moine 	{0x3b, 0x01, 0x52, 0xbb},
119658e2ded8SJean-Francois Moine 	{0x3c, 0x05, 0x40, 0xbb},
119758e2ded8SJean-Francois Moine 	{0x57, 0x01, 0x9c, 0xbb},
119858e2ded8SJean-Francois Moine 	{0x58, 0x01, 0xee, 0xbb},
119958e2ded8SJean-Francois Moine 	{0x59, 0x00, 0xf0, 0xbb},
120058e2ded8SJean-Francois Moine 	{0x5a, 0x01, 0x20, 0xbb},
120158e2ded8SJean-Francois Moine 	{0x5c, 0x1d, 0x17, 0xbb},
120258e2ded8SJean-Francois Moine 	{0x5d, 0x22, 0x1c, 0xbb},
120358e2ded8SJean-Francois Moine 	{0x64, 0x1e, 0x1c, 0xbb},
120458e2ded8SJean-Francois Moine 	{0x5b, 0x00, 0x00, 0xbb},
120558e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
120658e2ded8SJean-Francois Moine 	{0x22, 0xa0, 0x78, 0xbb},
120758e2ded8SJean-Francois Moine 	{0x23, 0xa0, 0x78, 0xbb},
120858e2ded8SJean-Francois Moine 	{0x24, 0x7f, 0x00, 0xbb},
120958e2ded8SJean-Francois Moine 	{0x28, 0xea, 0x02, 0xbb},
121058e2ded8SJean-Francois Moine 	{0x29, 0x86, 0x7a, 0xbb},
121158e2ded8SJean-Francois Moine 	{0x5e, 0x52, 0x4c, 0xbb},
121258e2ded8SJean-Francois Moine 	{0x5f, 0x20, 0x24, 0xbb},
121358e2ded8SJean-Francois Moine 	{0x60, 0x00, 0x02, 0xbb},
121458e2ded8SJean-Francois Moine 	{0x02, 0x00, 0xee, 0xbb},
121558e2ded8SJean-Francois Moine 	{0x03, 0x39, 0x23, 0xbb},
121658e2ded8SJean-Francois Moine 	{0x04, 0x07, 0x24, 0xbb},
121758e2ded8SJean-Francois Moine 	{0x09, 0x00, 0xc0, 0xbb},
121858e2ded8SJean-Francois Moine 	{0x0a, 0x00, 0x79, 0xbb},
121958e2ded8SJean-Francois Moine 	{0x0b, 0x00, 0x04, 0xbb},
122058e2ded8SJean-Francois Moine 	{0x0c, 0x00, 0x5c, 0xbb},
122158e2ded8SJean-Francois Moine 	{0x0d, 0x00, 0xd9, 0xbb},
122258e2ded8SJean-Francois Moine 	{0x0e, 0x00, 0x53, 0xbb},
122358e2ded8SJean-Francois Moine 	{0x0f, 0x00, 0x21, 0xbb},
122458e2ded8SJean-Francois Moine 	{0x10, 0x00, 0xa4, 0xbb},
122558e2ded8SJean-Francois Moine 	{0x11, 0x00, 0xe5, 0xbb},
122658e2ded8SJean-Francois Moine 	{0x15, 0x00, 0x00, 0xbb},
122758e2ded8SJean-Francois Moine 	{0x16, 0x00, 0x00, 0xbb},
122858e2ded8SJean-Francois Moine 	{0x17, 0x00, 0x00, 0xbb},
122958e2ded8SJean-Francois Moine 	{0x18, 0x00, 0x00, 0xbb},
123058e2ded8SJean-Francois Moine 	{0x19, 0x00, 0x00, 0xbb},
123158e2ded8SJean-Francois Moine 	{0x1a, 0x00, 0x00, 0xbb},
123258e2ded8SJean-Francois Moine 	{0x1b, 0x00, 0x00, 0xbb},
123358e2ded8SJean-Francois Moine 	{0x1c, 0x00, 0x00, 0xbb},
123458e2ded8SJean-Francois Moine 	{0x1d, 0x00, 0x00, 0xbb},
123558e2ded8SJean-Francois Moine 	{0x1e, 0x00, 0x00, 0xbb},
123658e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x01, 0xbb},
123758e2ded8SJean-Francois Moine 	{0x06, 0xe0, 0x0e, 0xbb},
123858e2ded8SJean-Francois Moine 	{0x06, 0x60, 0x0e, 0xbb},
123958e2ded8SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
124058e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x00, 0xbb},
124158e2ded8SJean-Francois Moine 	{0x05, 0x01, 0x13, 0xbb},
124258e2ded8SJean-Francois Moine 	{0x06, 0x00, 0x11, 0xbb},
124358e2ded8SJean-Francois Moine 	{0x07, 0x00, 0x85, 0xbb},
124458e2ded8SJean-Francois Moine 	{0x08, 0x00, 0x27, 0xbb},
1245e27188eeSJean-Francois Moine 	{0x20, 0x01, 0x03, 0xbb},	/* h/v flip */
124658e2ded8SJean-Francois Moine 	{0x21, 0x80, 0x00, 0xbb},
124758e2ded8SJean-Francois Moine 	{0x22, 0x0d, 0x0f, 0xbb},
124858e2ded8SJean-Francois Moine 	{0x24, 0x80, 0x00, 0xbb},
124958e2ded8SJean-Francois Moine 	{0x59, 0x00, 0xff, 0xbb},
125058e2ded8SJean-Francois Moine 	{0xf0, 0x00, 0x02, 0xbb},
125158e2ded8SJean-Francois Moine 	{0x39, 0x03, 0x0d, 0xbb},
125258e2ded8SJean-Francois Moine 	{0x3a, 0x06, 0x1b, 0xbb},
125358e2ded8SJean-Francois Moine 	{0x3b, 0x00, 0x95, 0xbb},
125458e2ded8SJean-Francois Moine 	{0x3c, 0x04, 0xdb, 0xbb},
125558e2ded8SJean-Francois Moine 	{0x57, 0x02, 0x00, 0xbb},
125658e2ded8SJean-Francois Moine 	{0x58, 0x02, 0x66, 0xbb},
125758e2ded8SJean-Francois Moine 	{0x59, 0x00, 0xff, 0xbb},
125858e2ded8SJean-Francois Moine 	{0x5a, 0x01, 0x33, 0xbb},
125958e2ded8SJean-Francois Moine 	{0x5c, 0x12, 0x0d, 0xbb},
126058e2ded8SJean-Francois Moine 	{0x5d, 0x16, 0x11, 0xbb},
126158e2ded8SJean-Francois Moine 	{0x64, 0x5e, 0x1c, 0xbb},
126258e2ded8SJean-Francois Moine 	{}
126358e2ded8SJean-Francois Moine };
12648b605f18SJean-Francois Moine static const u8 po3130_gamma[17] = {
12656a7eba24SJean-Francois Moine 	0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8,
12666a7eba24SJean-Francois Moine 	0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff
12676a7eba24SJean-Francois Moine };
12688b605f18SJean-Francois Moine static const u8 po3130_matrix[9] = {
12696a7eba24SJean-Francois Moine 	0x5f, 0xec, 0xf5, 0xf1, 0x5a, 0xf5, 0xf1, 0xec, 0x63
12706a7eba24SJean-Francois Moine };
12716a7eba24SJean-Francois Moine 
12728b605f18SJean-Francois Moine static const u8 po3130_initVGA_data[][4] = {
12736a7eba24SJean-Francois Moine 	{0xb0, 0x4d, 0x00, 0xcc},	{0xb3, 0x01, 0x01, 0xcc},
12746a7eba24SJean-Francois Moine 	{0x00, 0x00, 0x50, 0xdd},	{0xb0, 0x03, 0x01, 0xcc},
12756a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x04, 0xcc},	{0xb3, 0x00, 0x24, 0xcc},
12766a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x25, 0xcc},	{0xb3, 0x08, 0x01, 0xcc},
12776a7eba24SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},	{0xb3, 0x05, 0x00, 0xcc},
12786a7eba24SJean-Francois Moine 	{0xb3, 0x06, 0x01, 0xcc},	{0xb3, 0x03, 0x1a, 0xcc},
12796a7eba24SJean-Francois Moine 	{0xb3, 0x04, 0x15, 0xcc},	{0xb3, 0x20, 0x00, 0xcc},
12806a7eba24SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},	{0xb3, 0x22, 0x01, 0xcc},
12816a7eba24SJean-Francois Moine 	{0xb3, 0x23, 0xe8, 0xcc},	{0xb8, 0x08, 0xe8, 0xcc},
12826a7eba24SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},	{0xb3, 0x15, 0x00, 0xcc},
12836a7eba24SJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},	{0xb3, 0x17, 0x7f, 0xcc},
1284ff1cf408SJean-Francois Moine 	{0xb3, 0x34, 0x01, 0xcc},
1285ff1cf408SJean-Francois Moine 	{0xb3, 0x35, 0xf6, 0xcc},	/* i2c add: 76 */
12866a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x27, 0xcc},	{0xbc, 0x00, 0x71, 0xcc},
12876a7eba24SJean-Francois Moine 	{0xb8, 0x00, 0x21, 0xcc},	{0xb8, 0x27, 0x20, 0xcc},
12886a7eba24SJean-Francois Moine 	{0xb8, 0x01, 0x79, 0xcc},	{0xb8, 0x81, 0x09, 0xcc},
12896a7eba24SJean-Francois Moine 	{0xb8, 0x2c, 0x50, 0xcc},	{0xb8, 0x2d, 0xf8, 0xcc},
12906a7eba24SJean-Francois Moine 	{0xb8, 0x2e, 0xf8, 0xcc},	{0xb8, 0x2f, 0xf8, 0xcc},
12916a7eba24SJean-Francois Moine 	{0xb8, 0x30, 0x50, 0xcc},	{0xb8, 0x31, 0xf8, 0xcc},
12926a7eba24SJean-Francois Moine 	{0xb8, 0x32, 0xf8, 0xcc},	{0xb8, 0x33, 0xf8, 0xcc},
12936a7eba24SJean-Francois Moine 	{0xb8, 0x34, 0x50, 0xcc},	{0xb8, 0x35, 0x00, 0xcc},
12946a7eba24SJean-Francois Moine 	{0xb8, 0x36, 0x00, 0xcc},	{0xb8, 0x37, 0x00, 0xcc},
12956a7eba24SJean-Francois Moine 	{0x00, 0x1e, 0xc6, 0xaa},	{0x00, 0x20, 0x44, 0xaa},
12966a7eba24SJean-Francois Moine 	{0x00, 0xad, 0x02, 0xaa},	{0x00, 0xae, 0x2c, 0xaa},
12976a7eba24SJean-Francois Moine 	{0x00, 0x12, 0x08, 0xaa},	{0x00, 0x17, 0x41, 0xaa},
12986a7eba24SJean-Francois Moine 	{0x00, 0x19, 0x41, 0xaa},	{0x00, 0x1e, 0x06, 0xaa},
12996a7eba24SJean-Francois Moine 	{0x00, 0x21, 0x00, 0xaa},	{0x00, 0x36, 0xc0, 0xaa},
13006a7eba24SJean-Francois Moine 	{0x00, 0x37, 0xc8, 0xaa},	{0x00, 0x3b, 0x36, 0xaa},
13016a7eba24SJean-Francois Moine 	{0x00, 0x4b, 0xfe, 0xaa},	{0x00, 0x51, 0x1c, 0xaa},
13026a7eba24SJean-Francois Moine 	{0x00, 0x52, 0x01, 0xaa},	{0x00, 0x55, 0x0a, 0xaa},
13036a7eba24SJean-Francois Moine 	{0x00, 0x59, 0x02, 0xaa},	{0x00, 0x5a, 0x04, 0xaa},
13046a7eba24SJean-Francois Moine 	{0x00, 0x5c, 0x10, 0xaa},	{0x00, 0x5d, 0x10, 0xaa},
13056a7eba24SJean-Francois Moine 	{0x00, 0x5e, 0x10, 0xaa},	{0x00, 0x5f, 0x10, 0xaa},
13066a7eba24SJean-Francois Moine 	{0x00, 0x61, 0x00, 0xaa},	{0x00, 0x62, 0x18, 0xaa},
13076a7eba24SJean-Francois Moine 	{0x00, 0x63, 0x30, 0xaa},	{0x00, 0x70, 0x68, 0xaa},
13086a7eba24SJean-Francois Moine 	{0x00, 0x80, 0x71, 0xaa},	{0x00, 0x81, 0x08, 0xaa},
13096a7eba24SJean-Francois Moine 	{0x00, 0x82, 0x00, 0xaa},	{0x00, 0x83, 0x55, 0xaa},
13106a7eba24SJean-Francois Moine 	{0x00, 0x84, 0x06, 0xaa},	{0x00, 0x85, 0x06, 0xaa},
13116a7eba24SJean-Francois Moine 	{0x00, 0x86, 0x13, 0xaa},	{0x00, 0x87, 0x18, 0xaa},
13126a7eba24SJean-Francois Moine 	{0x00, 0xaa, 0x3f, 0xaa},	{0x00, 0xab, 0x44, 0xaa},
13136a7eba24SJean-Francois Moine 	{0x00, 0xb0, 0x68, 0xaa},	{0x00, 0xb5, 0x10, 0xaa},
13146a7eba24SJean-Francois Moine 	{0x00, 0xb8, 0x20, 0xaa},	{0x00, 0xb9, 0xa0, 0xaa},
13156a7eba24SJean-Francois Moine 	{0x00, 0xbc, 0x04, 0xaa},	{0x00, 0x8b, 0x40, 0xaa},
13166a7eba24SJean-Francois Moine 	{0x00, 0x8c, 0x91, 0xaa},	{0x00, 0x8d, 0x8f, 0xaa},
13176a7eba24SJean-Francois Moine 	{0x00, 0x8e, 0x91, 0xaa},	{0x00, 0x8f, 0x43, 0xaa},
13186a7eba24SJean-Francois Moine 	{0x00, 0x90, 0x92, 0xaa},	{0x00, 0x91, 0x89, 0xaa},
13196a7eba24SJean-Francois Moine 	{0x00, 0x92, 0x9d, 0xaa},	{0x00, 0x93, 0x46, 0xaa},
13206a7eba24SJean-Francois Moine 	{0x00, 0xd6, 0x22, 0xaa},	{0x00, 0x73, 0x00, 0xaa},
13216a7eba24SJean-Francois Moine 	{0x00, 0x74, 0x10, 0xaa},	{0x00, 0x75, 0x20, 0xaa},
13226a7eba24SJean-Francois Moine 	{0x00, 0x76, 0x2b, 0xaa},	{0x00, 0x77, 0x36, 0xaa},
13236a7eba24SJean-Francois Moine 	{0x00, 0x78, 0x49, 0xaa},	{0x00, 0x79, 0x5a, 0xaa},
13246a7eba24SJean-Francois Moine 	{0x00, 0x7a, 0x7f, 0xaa},	{0x00, 0x7b, 0x9b, 0xaa},
13256a7eba24SJean-Francois Moine 	{0x00, 0x7c, 0xba, 0xaa},	{0x00, 0x7d, 0xd4, 0xaa},
13266a7eba24SJean-Francois Moine 	{0x00, 0x7e, 0xea, 0xaa},	{0x00, 0xd6, 0x62, 0xaa},
13276a7eba24SJean-Francois Moine 	{0x00, 0x73, 0x00, 0xaa},	{0x00, 0x74, 0x10, 0xaa},
13286a7eba24SJean-Francois Moine 	{0x00, 0x75, 0x20, 0xaa},	{0x00, 0x76, 0x2b, 0xaa},
13296a7eba24SJean-Francois Moine 	{0x00, 0x77, 0x36, 0xaa},	{0x00, 0x78, 0x49, 0xaa},
13306a7eba24SJean-Francois Moine 	{0x00, 0x79, 0x5a, 0xaa},	{0x00, 0x7a, 0x7f, 0xaa},
13316a7eba24SJean-Francois Moine 	{0x00, 0x7b, 0x9b, 0xaa},	{0x00, 0x7c, 0xba, 0xaa},
13326a7eba24SJean-Francois Moine 	{0x00, 0x7d, 0xd4, 0xaa},	{0x00, 0x7e, 0xea, 0xaa},
13336a7eba24SJean-Francois Moine 	{0x00, 0xd6, 0xa2, 0xaa},	{0x00, 0x73, 0x00, 0xaa},
13346a7eba24SJean-Francois Moine 	{0x00, 0x74, 0x10, 0xaa},	{0x00, 0x75, 0x20, 0xaa},
13356a7eba24SJean-Francois Moine 	{0x00, 0x76, 0x2b, 0xaa},	{0x00, 0x77, 0x36, 0xaa},
13366a7eba24SJean-Francois Moine 	{0x00, 0x78, 0x49, 0xaa},	{0x00, 0x79, 0x5a, 0xaa},
13376a7eba24SJean-Francois Moine 	{0x00, 0x7a, 0x7f, 0xaa},	{0x00, 0x7b, 0x9b, 0xaa},
13386a7eba24SJean-Francois Moine 	{0x00, 0x7c, 0xba, 0xaa},	{0x00, 0x7d, 0xd4, 0xaa},
13396a7eba24SJean-Francois Moine 	{0x00, 0x7e, 0xea, 0xaa},
13406a7eba24SJean-Francois Moine 	{0x00, 0x4c, 0x07, 0xaa},
13416a7eba24SJean-Francois Moine 	{0x00, 0x4b, 0xe0, 0xaa},	{0x00, 0x4e, 0x77, 0xaa},
13426a7eba24SJean-Francois Moine 	{0x00, 0x59, 0x02, 0xaa},	{0x00, 0x4d, 0x0a, 0xaa},
13436a7eba24SJean-Francois Moine /*	{0x00, 0xd1, 0x00, 0xaa},	{0x00, 0x20, 0xc4, 0xaa},
13446a7eba24SJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},	{0xb8, 0x8f, 0xff, 0xcc}, */
13456a7eba24SJean-Francois Moine 	{0x00, 0xd1, 0x3c, 0xaa},	{0x00, 0x20, 0xc4, 0xaa},
13466a7eba24SJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},	{0xb8, 0x8f, 0xff, 0xcc},
13476a7eba24SJean-Francois Moine 	{0xb8, 0xfe, 0x00, 0xcc},	{0xb8, 0xff, 0x28, 0xcc},
13486a7eba24SJean-Francois Moine 	{0xb9, 0x00, 0x28, 0xcc},	{0xb9, 0x01, 0x28, 0xcc},
13496a7eba24SJean-Francois Moine 	{0xb9, 0x02, 0x28, 0xcc},	{0xb9, 0x03, 0x00, 0xcc},
13506a7eba24SJean-Francois Moine 	{0xb9, 0x04, 0x00, 0xcc},	{0xb9, 0x05, 0x3c, 0xcc},
13516a7eba24SJean-Francois Moine 	{0xb9, 0x06, 0x3c, 0xcc},	{0xb9, 0x07, 0x3c, 0xcc},
13526a7eba24SJean-Francois Moine 	{0xb9, 0x08, 0x3c, 0xcc},	{0x00, 0x05, 0x00, 0xaa},
13536a7eba24SJean-Francois Moine 	{0xb3, 0x5c, 0x00, 0xcc},	{0xb3, 0x01, 0x41, 0xcc},
13546a7eba24SJean-Francois Moine 	{}
13556a7eba24SJean-Francois Moine };
13568b605f18SJean-Francois Moine static const u8 po3130_rundata[][4] = {
13576a7eba24SJean-Francois Moine 	{0x00, 0x47, 0x45, 0xaa},	{0x00, 0x48, 0x9b, 0xaa},
13586a7eba24SJean-Francois Moine 	{0x00, 0x49, 0x3a, 0xaa},	{0x00, 0x4a, 0x01, 0xaa},
13596a7eba24SJean-Francois Moine 	{0x00, 0x44, 0x40, 0xaa},
13606a7eba24SJean-Francois Moine /*	{0x00, 0xd5, 0x7c, 0xaa}, */
13616a7eba24SJean-Francois Moine 	{0x00, 0xad, 0x04, 0xaa},	{0x00, 0xae, 0x00, 0xaa},
13626a7eba24SJean-Francois Moine 	{0x00, 0xb0, 0x78, 0xaa},	{0x00, 0x98, 0x02, 0xaa},
13636a7eba24SJean-Francois Moine 	{0x00, 0x94, 0x25, 0xaa},	{0x00, 0x95, 0x25, 0xaa},
13646a7eba24SJean-Francois Moine 	{0x00, 0x59, 0x68, 0xaa},	{0x00, 0x44, 0x20, 0xaa},
13656a7eba24SJean-Francois Moine 	{0x00, 0x17, 0x50, 0xaa},	{0x00, 0x19, 0x50, 0xaa},
13666a7eba24SJean-Francois Moine 	{0x00, 0xd1, 0x3c, 0xaa},	{0x00, 0xd1, 0x3c, 0xaa},
13676a7eba24SJean-Francois Moine 	{0x00, 0x1e, 0x06, 0xaa},	{0x00, 0x1e, 0x06, 0xaa},
13686a7eba24SJean-Francois Moine 	{}
13696a7eba24SJean-Francois Moine };
13706a7eba24SJean-Francois Moine 
13718b605f18SJean-Francois Moine static const u8 po3130_initQVGA_data[][4] = {
13726a7eba24SJean-Francois Moine 	{0xb0, 0x4d, 0x00, 0xcc},	{0xb3, 0x01, 0x01, 0xcc},
13736a7eba24SJean-Francois Moine 	{0x00, 0x00, 0x50, 0xdd},	{0xb0, 0x03, 0x09, 0xcc},
13746a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x04, 0xcc},	{0xb3, 0x00, 0x24, 0xcc},
13756a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x25, 0xcc},	{0xb3, 0x08, 0x01, 0xcc},
13766a7eba24SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},	{0xb3, 0x05, 0x00, 0xcc},
13776a7eba24SJean-Francois Moine 	{0xb3, 0x06, 0x01, 0xcc},	{0xb3, 0x03, 0x1a, 0xcc},
13786a7eba24SJean-Francois Moine 	{0xb3, 0x04, 0x15, 0xcc},	{0xb3, 0x20, 0x00, 0xcc},
13796a7eba24SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},	{0xb3, 0x22, 0x01, 0xcc},
13806a7eba24SJean-Francois Moine 	{0xb3, 0x23, 0xe0, 0xcc},	{0xb8, 0x08, 0xe0, 0xcc},
13816a7eba24SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},	{0xb3, 0x15, 0x00, 0xcc},
13826a7eba24SJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},	{0xb3, 0x17, 0x7f, 0xcc},
13836a7eba24SJean-Francois Moine 	{0xb3, 0x34, 0x01, 0xcc},	{0xb3, 0x35, 0xf6, 0xcc},
13846a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x27, 0xcc},	{0xbc, 0x00, 0xd1, 0xcc},
13856a7eba24SJean-Francois Moine 	{0xb8, 0x00, 0x21, 0xcc},	{0xb8, 0x27, 0x20, 0xcc},
13866a7eba24SJean-Francois Moine 	{0xb8, 0x01, 0x79, 0xcc},	{0xb8, 0x81, 0x09, 0xcc},
13876a7eba24SJean-Francois Moine 	{0xb8, 0x2c, 0x50, 0xcc},	{0xb8, 0x2d, 0xf8, 0xcc},
13886a7eba24SJean-Francois Moine 	{0xb8, 0x2e, 0xf8, 0xcc},	{0xb8, 0x2f, 0xf8, 0xcc},
13896a7eba24SJean-Francois Moine 	{0xb8, 0x30, 0x50, 0xcc},	{0xb8, 0x31, 0xf8, 0xcc},
13906a7eba24SJean-Francois Moine 	{0xb8, 0x32, 0xf8, 0xcc},	{0xb8, 0x33, 0xf8, 0xcc},
13916a7eba24SJean-Francois Moine 	{0xb8, 0x34, 0x50, 0xcc},	{0xb8, 0x35, 0x00, 0xcc},
13926a7eba24SJean-Francois Moine 	{0xb8, 0x36, 0x00, 0xcc},	{0xb8, 0x37, 0x00, 0xcc},
13936a7eba24SJean-Francois Moine 	{0x00, 0x1e, 0xc6, 0xaa},	{0x00, 0x20, 0x44, 0xaa},
13946a7eba24SJean-Francois Moine 	{0x00, 0xad, 0x02, 0xaa},	{0x00, 0xae, 0x2c, 0xaa},
13956a7eba24SJean-Francois Moine 	{0x00, 0x12, 0x08, 0xaa},	{0x00, 0x17, 0x41, 0xaa},
13966a7eba24SJean-Francois Moine 	{0x00, 0x19, 0x41, 0xaa},	{0x00, 0x1e, 0x06, 0xaa},
13976a7eba24SJean-Francois Moine 	{0x00, 0x21, 0x00, 0xaa},	{0x00, 0x36, 0xc0, 0xaa},
13986a7eba24SJean-Francois Moine 	{0x00, 0x37, 0xc8, 0xaa},	{0x00, 0x3b, 0x36, 0xaa},
13996a7eba24SJean-Francois Moine 	{0x00, 0x4b, 0xfe, 0xaa},	{0x00, 0x51, 0x1c, 0xaa},
14006a7eba24SJean-Francois Moine 	{0x00, 0x52, 0x01, 0xaa},	{0x00, 0x55, 0x0a, 0xaa},
14016a7eba24SJean-Francois Moine 	{0x00, 0x59, 0x6f, 0xaa},	{0x00, 0x5a, 0x04, 0xaa},
14026a7eba24SJean-Francois Moine 	{0x00, 0x5c, 0x10, 0xaa},	{0x00, 0x5d, 0x10, 0xaa},
14036a7eba24SJean-Francois Moine 	{0x00, 0x5e, 0x10, 0xaa},	{0x00, 0x5f, 0x10, 0xaa},
14046a7eba24SJean-Francois Moine 	{0x00, 0x61, 0x00, 0xaa},	{0x00, 0x62, 0x18, 0xaa},
14056a7eba24SJean-Francois Moine 	{0x00, 0x63, 0x30, 0xaa},	{0x00, 0x70, 0x68, 0xaa},
14066a7eba24SJean-Francois Moine 	{0x00, 0x80, 0x71, 0xaa},	{0x00, 0x81, 0x08, 0xaa},
14076a7eba24SJean-Francois Moine 	{0x00, 0x82, 0x00, 0xaa},	{0x00, 0x83, 0x55, 0xaa},
14086a7eba24SJean-Francois Moine 	{0x00, 0x84, 0x06, 0xaa},	{0x00, 0x85, 0x06, 0xaa},
14096a7eba24SJean-Francois Moine 	{0x00, 0x86, 0x13, 0xaa},	{0x00, 0x87, 0x18, 0xaa},
14106a7eba24SJean-Francois Moine 	{0x00, 0xaa, 0x3f, 0xaa},	{0x00, 0xab, 0x44, 0xaa},
14116a7eba24SJean-Francois Moine 	{0x00, 0xb0, 0x68, 0xaa},	{0x00, 0xb5, 0x10, 0xaa},
14126a7eba24SJean-Francois Moine 	{0x00, 0xb8, 0x20, 0xaa},	{0x00, 0xb9, 0xa0, 0xaa},
14136a7eba24SJean-Francois Moine 	{0x00, 0xbc, 0x04, 0xaa},	{0x00, 0x8b, 0x40, 0xaa},
14146a7eba24SJean-Francois Moine 	{0x00, 0x8c, 0x91, 0xaa},	{0x00, 0x8d, 0x8f, 0xaa},
14156a7eba24SJean-Francois Moine 	{0x00, 0x8e, 0x91, 0xaa},	{0x00, 0x8f, 0x43, 0xaa},
14166a7eba24SJean-Francois Moine 	{0x00, 0x90, 0x92, 0xaa},	{0x00, 0x91, 0x89, 0xaa},
14176a7eba24SJean-Francois Moine 	{0x00, 0x92, 0x9d, 0xaa},	{0x00, 0x93, 0x46, 0xaa},
14186a7eba24SJean-Francois Moine 	{0x00, 0xd6, 0x22, 0xaa},	{0x00, 0x73, 0x00, 0xaa},
14196a7eba24SJean-Francois Moine 	{0x00, 0x74, 0x10, 0xaa},	{0x00, 0x75, 0x20, 0xaa},
14206a7eba24SJean-Francois Moine 	{0x00, 0x76, 0x2b, 0xaa},	{0x00, 0x77, 0x36, 0xaa},
14216a7eba24SJean-Francois Moine 	{0x00, 0x78, 0x49, 0xaa},	{0x00, 0x79, 0x5a, 0xaa},
14226a7eba24SJean-Francois Moine 	{0x00, 0x7a, 0x7f, 0xaa},	{0x00, 0x7b, 0x9b, 0xaa},
14236a7eba24SJean-Francois Moine 	{0x00, 0x7c, 0xba, 0xaa},	{0x00, 0x7d, 0xd4, 0xaa},
14246a7eba24SJean-Francois Moine 	{0x00, 0x7e, 0xea, 0xaa},	{0x00, 0xd6, 0x62, 0xaa},
14256a7eba24SJean-Francois Moine 	{0x00, 0x73, 0x00, 0xaa},	{0x00, 0x74, 0x10, 0xaa},
14266a7eba24SJean-Francois Moine 	{0x00, 0x75, 0x20, 0xaa},	{0x00, 0x76, 0x2b, 0xaa},
14276a7eba24SJean-Francois Moine 	{0x00, 0x77, 0x36, 0xaa},	{0x00, 0x78, 0x49, 0xaa},
14286a7eba24SJean-Francois Moine 	{0x00, 0x79, 0x5a, 0xaa},	{0x00, 0x7a, 0x7f, 0xaa},
14296a7eba24SJean-Francois Moine 	{0x00, 0x7b, 0x9b, 0xaa},	{0x00, 0x7c, 0xba, 0xaa},
14306a7eba24SJean-Francois Moine 	{0x00, 0x7d, 0xd4, 0xaa},	{0x00, 0x7e, 0xea, 0xaa},
14316a7eba24SJean-Francois Moine 	{0x00, 0xd6, 0xa2, 0xaa},	{0x00, 0x73, 0x00, 0xaa},
14326a7eba24SJean-Francois Moine 	{0x00, 0x74, 0x10, 0xaa},	{0x00, 0x75, 0x20, 0xaa},
14336a7eba24SJean-Francois Moine 	{0x00, 0x76, 0x2b, 0xaa},	{0x00, 0x77, 0x36, 0xaa},
14346a7eba24SJean-Francois Moine 	{0x00, 0x78, 0x49, 0xaa},	{0x00, 0x79, 0x5a, 0xaa},
14356a7eba24SJean-Francois Moine 	{0x00, 0x7a, 0x7f, 0xaa},	{0x00, 0x7b, 0x9b, 0xaa},
14366a7eba24SJean-Francois Moine 	{0x00, 0x7c, 0xba, 0xaa},	{0x00, 0x7d, 0xd4, 0xaa},
14376a7eba24SJean-Francois Moine 	{0x00, 0x7e, 0xea, 0xaa},	{0x00, 0x4c, 0x07, 0xaa},
14386a7eba24SJean-Francois Moine 	{0x00, 0x4b, 0xe0, 0xaa},	{0x00, 0x4e, 0x77, 0xaa},
14396a7eba24SJean-Francois Moine 	{0x00, 0x59, 0x66, 0xaa},	{0x00, 0x4d, 0x0a, 0xaa},
14406a7eba24SJean-Francois Moine 	{0x00, 0xd1, 0x00, 0xaa},	{0x00, 0x20, 0xc4, 0xaa},
14416a7eba24SJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},	{0xb8, 0x8f, 0xff, 0xcc},
14426a7eba24SJean-Francois Moine 	{0xb8, 0xfe, 0x00, 0xcc},	{0xb8, 0xff, 0x28, 0xcc},
14436a7eba24SJean-Francois Moine 	{0xb9, 0x00, 0x28, 0xcc},	{0xb9, 0x01, 0x28, 0xcc},
14446a7eba24SJean-Francois Moine 	{0xb9, 0x02, 0x28, 0xcc},	{0xb9, 0x03, 0x00, 0xcc},
14456a7eba24SJean-Francois Moine 	{0xb9, 0x04, 0x00, 0xcc},	{0xb9, 0x05, 0x3c, 0xcc},
14466a7eba24SJean-Francois Moine 	{0xb9, 0x06, 0x3c, 0xcc},	{0xb9, 0x07, 0x3c, 0xcc},
14476a7eba24SJean-Francois Moine 	{0xb9, 0x08, 0x3c, 0xcc},	{0xbc, 0x02, 0x18, 0xcc},
14486a7eba24SJean-Francois Moine 	{0xbc, 0x03, 0x50, 0xcc},	{0xbc, 0x04, 0x18, 0xcc},
14496a7eba24SJean-Francois Moine 	{0xbc, 0x05, 0x00, 0xcc},	{0xbc, 0x06, 0x00, 0xcc},
14506a7eba24SJean-Francois Moine 	{0xbc, 0x08, 0x30, 0xcc},	{0xbc, 0x09, 0x40, 0xcc},
14516a7eba24SJean-Francois Moine 	{0xbc, 0x0a, 0x10, 0xcc},	{0xbc, 0x0b, 0x00, 0xcc},
14526a7eba24SJean-Francois Moine 	{0xbc, 0x0c, 0x00, 0xcc},	{0x00, 0x05, 0x00, 0xaa},
14536a7eba24SJean-Francois Moine 	{0xb3, 0x5c, 0x00, 0xcc},	{0xb3, 0x01, 0x41, 0xcc},
14546a7eba24SJean-Francois Moine 	{}
14556a7eba24SJean-Francois Moine };
14566a7eba24SJean-Francois Moine 
14578b605f18SJean-Francois Moine static const u8 hv7131r_gamma[17] = {
14580ee7e4d6SJean-Francois Moine 	0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8,
14590ee7e4d6SJean-Francois Moine 	0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff
14606a7eba24SJean-Francois Moine };
14618b605f18SJean-Francois Moine static const u8 hv7131r_matrix[9] = {
14626a7eba24SJean-Francois Moine 	0x5f, 0xec, 0xf5, 0xf1, 0x5a, 0xf5, 0xf1, 0xec, 0x63
14636a7eba24SJean-Francois Moine };
14648b605f18SJean-Francois Moine static const u8 hv7131r_initVGA_data[][4] = {
14650ee7e4d6SJean-Francois Moine 	{0xb3, 0x01, 0x01, 0xcc},
14660ee7e4d6SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},
14670ee7e4d6SJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},
14680ee7e4d6SJean-Francois Moine 	{0x00, 0x00, 0x20, 0xdd},
14696a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x24, 0xcc},
14700ee7e4d6SJean-Francois Moine 	{0xb3, 0x00, 0x25, 0xcc},
14710ee7e4d6SJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
14720ee7e4d6SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
14730ee7e4d6SJean-Francois Moine 	{0xb3, 0x05, 0x01, 0xcc},
14740ee7e4d6SJean-Francois Moine 	{0xb3, 0x06, 0x03, 0xcc},
14750ee7e4d6SJean-Francois Moine 	{0xb3, 0x01, 0x45, 0xcc},
14760ee7e4d6SJean-Francois Moine 	{0xb3, 0x03, 0x0b, 0xcc},
14770ee7e4d6SJean-Francois Moine 	{0xb3, 0x04, 0x05, 0xcc},
14780ee7e4d6SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
14796a7eba24SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
14800ee7e4d6SJean-Francois Moine 	{0xb3, 0x22, 0x01, 0xcc},
14810ee7e4d6SJean-Francois Moine 	{0xb3, 0x23, 0xe0, 0xcc},
14820ee7e4d6SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
14830ee7e4d6SJean-Francois Moine 	{0xb3, 0x15, 0x02, 0xcc},
14846a7eba24SJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},
14850ee7e4d6SJean-Francois Moine 	{0xb3, 0x17, 0x7f, 0xcc},
14860ee7e4d6SJean-Francois Moine 	{0xb3, 0x34, 0x01, 0xcc},
1487ff1cf408SJean-Francois Moine 	{0xb3, 0x35, 0x91, 0xcc},	/* i2c add: 11 */
14880ee7e4d6SJean-Francois Moine 	{0xb3, 0x00, 0x27, 0xcc},
14896a7eba24SJean-Francois Moine 	{0xbc, 0x00, 0x73, 0xcc},
14900ee7e4d6SJean-Francois Moine 	{0xb8, 0x00, 0x23, 0xcc},
14910ee7e4d6SJean-Francois Moine 	{0xb8, 0x2c, 0x50, 0xcc},
14920ee7e4d6SJean-Francois Moine 	{0xb8, 0x2d, 0xf8, 0xcc},
14930ee7e4d6SJean-Francois Moine 	{0xb8, 0x2e, 0xf8, 0xcc},
14940ee7e4d6SJean-Francois Moine 	{0xb8, 0x2f, 0xf8, 0xcc},
14956a7eba24SJean-Francois Moine 	{0xb8, 0x30, 0x50, 0xcc},
14960ee7e4d6SJean-Francois Moine 	{0xb8, 0x31, 0xf8, 0xcc},
14970ee7e4d6SJean-Francois Moine 	{0xb8, 0x32, 0xf8, 0xcc},
14980ee7e4d6SJean-Francois Moine 	{0xb8, 0x33, 0xf8, 0xcc},
14990ee7e4d6SJean-Francois Moine 	{0xb8, 0x34, 0x58, 0xcc},
15006a7eba24SJean-Francois Moine 	{0xb8, 0x35, 0x00, 0xcc},
15010ee7e4d6SJean-Francois Moine 	{0xb8, 0x36, 0x00, 0xcc},
15020ee7e4d6SJean-Francois Moine 	{0xb8, 0x37, 0x00, 0xcc},
15030ee7e4d6SJean-Francois Moine 	{0xb8, 0x27, 0x20, 0xcc},
15040ee7e4d6SJean-Francois Moine 	{0xb8, 0x01, 0x7d, 0xcc},
15056a7eba24SJean-Francois Moine 	{0xb8, 0x81, 0x09, 0xcc},
15060ee7e4d6SJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
15070ee7e4d6SJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},
15080ee7e4d6SJean-Francois Moine 	{0xb8, 0x8f, 0xff, 0xcc},
15090ee7e4d6SJean-Francois Moine 	{0x00, 0x01, 0x0c, 0xaa},
15100ee7e4d6SJean-Francois Moine 	{0x00, 0x14, 0x01, 0xaa},
15110ee7e4d6SJean-Francois Moine 	{0x00, 0x15, 0xe6, 0xaa},
15120ee7e4d6SJean-Francois Moine 	{0x00, 0x16, 0x02, 0xaa},
15130ee7e4d6SJean-Francois Moine 	{0x00, 0x17, 0x86, 0xaa},
15140ee7e4d6SJean-Francois Moine 	{0x00, 0x23, 0x00, 0xaa},
15150ee7e4d6SJean-Francois Moine 	{0x00, 0x25, 0x03, 0xaa},
15160ee7e4d6SJean-Francois Moine 	{0x00, 0x26, 0xa9, 0xaa},
15170ee7e4d6SJean-Francois Moine 	{0x00, 0x27, 0x80, 0xaa},
15186a7eba24SJean-Francois Moine 	{0x00, 0x30, 0x18, 0xaa},
15190ee7e4d6SJean-Francois Moine 	{0xb6, 0x00, 0x00, 0xcc},
15200ee7e4d6SJean-Francois Moine 	{0xb6, 0x03, 0x02, 0xcc},
15210ee7e4d6SJean-Francois Moine 	{0xb6, 0x02, 0x80, 0xcc},
15220ee7e4d6SJean-Francois Moine 	{0xb6, 0x05, 0x01, 0xcc},
15230ee7e4d6SJean-Francois Moine 	{0xb6, 0x04, 0xe0, 0xcc},
15240ee7e4d6SJean-Francois Moine 	{0xb6, 0x12, 0x78, 0xcc},
15250ee7e4d6SJean-Francois Moine 	{0xb6, 0x18, 0x02, 0xcc},
15260ee7e4d6SJean-Francois Moine 	{0xb6, 0x17, 0x58, 0xcc},
15270ee7e4d6SJean-Francois Moine 	{0xb6, 0x16, 0x00, 0xcc},
15280ee7e4d6SJean-Francois Moine 	{0xb6, 0x22, 0x12, 0xcc},
15290ee7e4d6SJean-Francois Moine 	{0xb6, 0x23, 0x0b, 0xcc},
15300ee7e4d6SJean-Francois Moine 	{0xb3, 0x02, 0x02, 0xcc},
15310ee7e4d6SJean-Francois Moine 	{0xbf, 0xc0, 0x39, 0xcc},
15320ee7e4d6SJean-Francois Moine 	{0xbf, 0xc1, 0x04, 0xcc},
15330ee7e4d6SJean-Francois Moine 	{0xbf, 0xcc, 0x10, 0xcc},
15340ee7e4d6SJean-Francois Moine 	{0xb6, 0x12, 0xf8, 0xcc},
15350ee7e4d6SJean-Francois Moine 	{0xb6, 0x13, 0x13, 0xcc},
15360ee7e4d6SJean-Francois Moine 	{0xb9, 0x12, 0x00, 0xcc},
15370ee7e4d6SJean-Francois Moine 	{0xb9, 0x13, 0x0a, 0xcc},
15380ee7e4d6SJean-Francois Moine 	{0xb9, 0x14, 0x0a, 0xcc},
15390ee7e4d6SJean-Francois Moine 	{0xb9, 0x15, 0x0a, 0xcc},
15400ee7e4d6SJean-Francois Moine 	{0xb9, 0x16, 0x0a, 0xcc},
15410ee7e4d6SJean-Francois Moine 	{0xb8, 0x0c, 0x20, 0xcc},
15420ee7e4d6SJean-Francois Moine 	{0xb8, 0x0d, 0x70, 0xcc},
15430ee7e4d6SJean-Francois Moine 	{0xb9, 0x18, 0x00, 0xcc},
15440ee7e4d6SJean-Francois Moine 	{0xb9, 0x19, 0x0f, 0xcc},
15450ee7e4d6SJean-Francois Moine 	{0xb9, 0x1a, 0x0f, 0xcc},
15460ee7e4d6SJean-Francois Moine 	{0xb9, 0x1b, 0x0f, 0xcc},
15470ee7e4d6SJean-Francois Moine 	{0xb9, 0x1c, 0x0f, 0xcc},
15480ee7e4d6SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
15496a7eba24SJean-Francois Moine 	{}
15506a7eba24SJean-Francois Moine };
15516a7eba24SJean-Francois Moine 
15528b605f18SJean-Francois Moine static const u8 hv7131r_initQVGA_data[][4] = {
15530ee7e4d6SJean-Francois Moine 	{0xb3, 0x01, 0x01, 0xcc},
15540ee7e4d6SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},
15550ee7e4d6SJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},
15560ee7e4d6SJean-Francois Moine 	{0x00, 0x00, 0x20, 0xdd},
15576a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x24, 0xcc},
15580ee7e4d6SJean-Francois Moine 	{0xb3, 0x00, 0x25, 0xcc},
15590ee7e4d6SJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
15600ee7e4d6SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
15610ee7e4d6SJean-Francois Moine 	{0xb3, 0x05, 0x01, 0xcc},
15620ee7e4d6SJean-Francois Moine 	{0xb3, 0x06, 0x03, 0xcc},
15630ee7e4d6SJean-Francois Moine 	{0xb3, 0x01, 0x45, 0xcc},
15640ee7e4d6SJean-Francois Moine 	{0xb3, 0x03, 0x0b, 0xcc},
15650ee7e4d6SJean-Francois Moine 	{0xb3, 0x04, 0x05, 0xcc},
15660ee7e4d6SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
15670ee7e4d6SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
15686a7eba24SJean-Francois Moine 	{0xb3, 0x22, 0x01, 0xcc},
15690ee7e4d6SJean-Francois Moine 	{0xb3, 0x23, 0xe0, 0xcc},
15700ee7e4d6SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
15710ee7e4d6SJean-Francois Moine 	{0xb3, 0x15, 0x02, 0xcc},
15720ee7e4d6SJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},
15736a7eba24SJean-Francois Moine 	{0xb3, 0x17, 0x7f, 0xcc},
15740ee7e4d6SJean-Francois Moine 	{0xb3, 0x34, 0x01, 0xcc},
15750ee7e4d6SJean-Francois Moine 	{0xb3, 0x35, 0x91, 0xcc},
15760ee7e4d6SJean-Francois Moine 	{0xb3, 0x00, 0x27, 0xcc},
15770ee7e4d6SJean-Francois Moine 	{0xbc, 0x00, 0xd3, 0xcc},
15780ee7e4d6SJean-Francois Moine 	{0xb8, 0x00, 0x23, 0xcc},
15790ee7e4d6SJean-Francois Moine 	{0xb8, 0x2c, 0x50, 0xcc},
15800ee7e4d6SJean-Francois Moine 	{0xb8, 0x2d, 0xf8, 0xcc},
15810ee7e4d6SJean-Francois Moine 	{0xb8, 0x2e, 0xf8, 0xcc},
15820ee7e4d6SJean-Francois Moine 	{0xb8, 0x2f, 0xf8, 0xcc},
15836a7eba24SJean-Francois Moine 	{0xb8, 0x30, 0x50, 0xcc},
15840ee7e4d6SJean-Francois Moine 	{0xb8, 0x31, 0xf8, 0xcc},
15850ee7e4d6SJean-Francois Moine 	{0xb8, 0x32, 0xf8, 0xcc},
15866a7eba24SJean-Francois Moine 	{0xb8, 0x33, 0xf8, 0xcc},
15870ee7e4d6SJean-Francois Moine 	{0xb8, 0x34, 0x58, 0xcc},
15880ee7e4d6SJean-Francois Moine 	{0xb8, 0x35, 0x00, 0xcc},
15890ee7e4d6SJean-Francois Moine 	{0xb8, 0x36, 0x00, 0xcc},
15900ee7e4d6SJean-Francois Moine 	{0xb8, 0x37, 0x00, 0xcc},
15916a7eba24SJean-Francois Moine 	{0xb8, 0x27, 0x20, 0xcc},
15920ee7e4d6SJean-Francois Moine 	{0xb8, 0x01, 0x7d, 0xcc},
15930ee7e4d6SJean-Francois Moine 	{0xb8, 0x81, 0x09, 0xcc},
15940ee7e4d6SJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
15956a7eba24SJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},
15960ee7e4d6SJean-Francois Moine 	{0xb8, 0x8f, 0xff, 0xcc},
15970ee7e4d6SJean-Francois Moine 	{0x00, 0x01, 0x0c, 0xaa},
15980ee7e4d6SJean-Francois Moine 	{0x00, 0x14, 0x01, 0xaa},
15990ee7e4d6SJean-Francois Moine 	{0x00, 0x15, 0xe6, 0xaa},
16000ee7e4d6SJean-Francois Moine 	{0x00, 0x16, 0x02, 0xaa},
16010ee7e4d6SJean-Francois Moine 	{0x00, 0x17, 0x86, 0xaa},
16020ee7e4d6SJean-Francois Moine 	{0x00, 0x23, 0x00, 0xaa},
16030ee7e4d6SJean-Francois Moine 	{0x00, 0x25, 0x03, 0xaa},
16040ee7e4d6SJean-Francois Moine 	{0x00, 0x26, 0xa9, 0xaa},
16050ee7e4d6SJean-Francois Moine 	{0x00, 0x27, 0x80, 0xaa},
16060ee7e4d6SJean-Francois Moine 	{0x00, 0x30, 0x18, 0xaa},
16070ee7e4d6SJean-Francois Moine 	{0xb6, 0x00, 0x00, 0xcc},
16080ee7e4d6SJean-Francois Moine 	{0xb6, 0x03, 0x01, 0xcc},
16090ee7e4d6SJean-Francois Moine 	{0xb6, 0x02, 0x40, 0xcc},
16100ee7e4d6SJean-Francois Moine 	{0xb6, 0x05, 0x00, 0xcc},
16110ee7e4d6SJean-Francois Moine 	{0xb6, 0x04, 0xf0, 0xcc},
16120ee7e4d6SJean-Francois Moine 	{0xb6, 0x12, 0x78, 0xcc},
16130ee7e4d6SJean-Francois Moine 	{0xb6, 0x18, 0x00, 0xcc},
16140ee7e4d6SJean-Francois Moine 	{0xb6, 0x17, 0x96, 0xcc},
16150ee7e4d6SJean-Francois Moine 	{0xb6, 0x16, 0x00, 0xcc},
16160ee7e4d6SJean-Francois Moine 	{0xb6, 0x22, 0x12, 0xcc},
16170ee7e4d6SJean-Francois Moine 	{0xb6, 0x23, 0x0b, 0xcc},
16180ee7e4d6SJean-Francois Moine 	{0xb3, 0x02, 0x02, 0xcc},
16190ee7e4d6SJean-Francois Moine 	{0xbf, 0xc0, 0x39, 0xcc},
16200ee7e4d6SJean-Francois Moine 	{0xbf, 0xc1, 0x04, 0xcc},
16210ee7e4d6SJean-Francois Moine 	{0xbf, 0xcc, 0x10, 0xcc},
16220ee7e4d6SJean-Francois Moine 	{0xbc, 0x02, 0x18, 0xcc},
16230ee7e4d6SJean-Francois Moine 	{0xbc, 0x03, 0x50, 0xcc},
16240ee7e4d6SJean-Francois Moine 	{0xbc, 0x04, 0x18, 0xcc},
16250ee7e4d6SJean-Francois Moine 	{0xbc, 0x05, 0x00, 0xcc},
16260ee7e4d6SJean-Francois Moine 	{0xbc, 0x06, 0x00, 0xcc},
16270ee7e4d6SJean-Francois Moine 	{0xbc, 0x08, 0x30, 0xcc},
16280ee7e4d6SJean-Francois Moine 	{0xbc, 0x09, 0x40, 0xcc},
16290ee7e4d6SJean-Francois Moine 	{0xbc, 0x0a, 0x10, 0xcc},
16300ee7e4d6SJean-Francois Moine 	{0xbc, 0x0b, 0x00, 0xcc},
16310ee7e4d6SJean-Francois Moine 	{0xbc, 0x0c, 0x00, 0xcc},
16320ee7e4d6SJean-Francois Moine 	{0xb9, 0x12, 0x00, 0xcc},
16330ee7e4d6SJean-Francois Moine 	{0xb9, 0x13, 0x0a, 0xcc},
16340ee7e4d6SJean-Francois Moine 	{0xb9, 0x14, 0x0a, 0xcc},
16350ee7e4d6SJean-Francois Moine 	{0xb9, 0x15, 0x0a, 0xcc},
16360ee7e4d6SJean-Francois Moine 	{0xb9, 0x16, 0x0a, 0xcc},
16370ee7e4d6SJean-Francois Moine 	{0xb9, 0x18, 0x00, 0xcc},
16380ee7e4d6SJean-Francois Moine 	{0xb9, 0x19, 0x0f, 0xcc},
16390ee7e4d6SJean-Francois Moine 	{0xb8, 0x0c, 0x20, 0xcc},
16400ee7e4d6SJean-Francois Moine 	{0xb8, 0x0d, 0x70, 0xcc},
16410ee7e4d6SJean-Francois Moine 	{0xb9, 0x1a, 0x0f, 0xcc},
16420ee7e4d6SJean-Francois Moine 	{0xb9, 0x1b, 0x0f, 0xcc},
16430ee7e4d6SJean-Francois Moine 	{0xb9, 0x1c, 0x0f, 0xcc},
16440ee7e4d6SJean-Francois Moine 	{0xb6, 0x12, 0xf8, 0xcc},
16450ee7e4d6SJean-Francois Moine 	{0xb6, 0x13, 0x13, 0xcc},
16460ee7e4d6SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
16476a7eba24SJean-Francois Moine 	{}
16486a7eba24SJean-Francois Moine };
16496a7eba24SJean-Francois Moine 
16508b605f18SJean-Francois Moine static const u8 ov7660_gamma[17] = {
16516a7eba24SJean-Francois Moine 	0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8,
16526a7eba24SJean-Francois Moine 	0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff
16536a7eba24SJean-Francois Moine };
16548b605f18SJean-Francois Moine static const u8 ov7660_matrix[9] = {
16556a7eba24SJean-Francois Moine 	0x5a, 0xf0, 0xf6, 0xf3, 0x57, 0xf6, 0xf3, 0xef, 0x62
16566a7eba24SJean-Francois Moine };
16578b605f18SJean-Francois Moine static const u8 ov7660_initVGA_data[][4] = {
16586a7eba24SJean-Francois Moine 	{0xb0, 0x4d, 0x00, 0xcc},	{0xb3, 0x01, 0x01, 0xcc},
16596a7eba24SJean-Francois Moine 	{0x00, 0x00, 0x50, 0xdd},
16606a7eba24SJean-Francois Moine 	{0xb0, 0x03, 0x01, 0xcc},
16616a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x21, 0xcc},	{0xb3, 0x00, 0x26, 0xcc},
16626a7eba24SJean-Francois Moine 	{0xb3, 0x05, 0x01, 0xcc},
16636a7eba24SJean-Francois Moine 	{0xb3, 0x06, 0x03, 0xcc},
16646a7eba24SJean-Francois Moine 	{0xb3, 0x03, 0x1f, 0xcc},	{0xb3, 0x04, 0x05, 0xcc},
16656a7eba24SJean-Francois Moine 	{0xb3, 0x05, 0x00, 0xcc},
16666a7eba24SJean-Francois Moine 	{0xb3, 0x06, 0x01, 0xcc},
16676a7eba24SJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},/* 0xb315  <-0 href startl */
16686a7eba24SJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},	{0xb3, 0x17, 0x7f, 0xcc},
16696a7eba24SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
16706a7eba24SJean-Francois Moine 	{0xb3, 0x23, 0xe0, 0xcc},	{0xb3, 0x1d, 0x01, 0xcc},
16716a7eba24SJean-Francois Moine 	{0xb3, 0x1f, 0x02, 0xcc},
16726a7eba24SJean-Francois Moine 	{0xb3, 0x34, 0x01, 0xcc},
1673ff1cf408SJean-Francois Moine 	{0xb3, 0x35, 0xa1, 0xcc},	/* i2c add: 21 */
1674ff1cf408SJean-Francois Moine 	{0xb3, 0x00, 0x26, 0xcc},
16756a7eba24SJean-Francois Moine 	{0xb8, 0x00, 0x33, 0xcc}, /* 13 */
16766a7eba24SJean-Francois Moine 	{0xb8, 0x01, 0x7d, 0xcc},
16776a7eba24SJean-Francois Moine 	{0xbc, 0x00, 0x73, 0xcc},	{0xb8, 0x81, 0x09, 0xcc},
16786a7eba24SJean-Francois Moine 	{0xb8, 0x27, 0x20, 0xcc},
16796a7eba24SJean-Francois Moine 	{0xb8, 0x8f, 0x50, 0xcc},
16806a7eba24SJean-Francois Moine 	{0x00, 0x01, 0x80, 0xaa},	{0x00, 0x02, 0x80, 0xaa},
16816a7eba24SJean-Francois Moine 	{0x00, 0x12, 0x80, 0xaa},
16826a7eba24SJean-Francois Moine 	{0x00, 0x12, 0x05, 0xaa},
16837dc7ad38SJean-Francois Moine 	{0x00, 0x1e, 0x01, 0xaa},	/* MVFP */
16846a7eba24SJean-Francois Moine 	{0x00, 0x3d, 0x40, 0xaa}, /* 0x3d <-40 gamma 01 */
16856a7eba24SJean-Francois Moine 	{0x00, 0x41, 0x00, 0xaa}, /* edge 00 */
16866a7eba24SJean-Francois Moine 	{0x00, 0x0d, 0x48, 0xaa},	{0x00, 0x0e, 0x04, 0xaa},
16876a7eba24SJean-Francois Moine 	{0x00, 0x13, 0xa7, 0xaa},
16886a7eba24SJean-Francois Moine 	{0x00, 0x40, 0xc1, 0xaa},	{0x00, 0x35, 0x00, 0xaa},
16896a7eba24SJean-Francois Moine 	{0x00, 0x36, 0x00, 0xaa},
16906a7eba24SJean-Francois Moine 	{0x00, 0x3c, 0x68, 0xaa},	{0x00, 0x1b, 0x05, 0xaa},
16916a7eba24SJean-Francois Moine 	{0x00, 0x39, 0x43, 0xaa},
16926a7eba24SJean-Francois Moine 	{0x00, 0x8d, 0xcf, 0xaa},
16936a7eba24SJean-Francois Moine 	{0x00, 0x8b, 0xcc, 0xaa},	{0x00, 0x8c, 0xcc, 0xaa},
16946a7eba24SJean-Francois Moine 	{0x00, 0x0f, 0x62, 0xaa},
16956a7eba24SJean-Francois Moine 	{0x00, 0x35, 0x84, 0xaa},
16966a7eba24SJean-Francois Moine 	{0x00, 0x3b, 0x08, 0xaa}, /* 0 * Nightframe 1/4 + 50Hz -> 0xC8 */
16976a7eba24SJean-Francois Moine 	{0x00, 0x3a, 0x00, 0xaa}, /* mx change yuyv format 00, 04, 01; 08, 0c*/
16986a7eba24SJean-Francois Moine 	{0x00, 0x14, 0x2a, 0xaa}, /* agc ampli */
16996a7eba24SJean-Francois Moine 	{0x00, 0x9e, 0x40, 0xaa},	{0xb8, 0x8f, 0x50, 0xcc},
17006a7eba24SJean-Francois Moine 	{0x00, 0x01, 0x80, 0xaa},
17016a7eba24SJean-Francois Moine 	{0x00, 0x02, 0x80, 0xaa},
17026a7eba24SJean-Francois Moine 	{0xb8, 0xfe, 0x00, 0xcc},	{0xb8, 0xff, 0x28, 0xcc},
17036a7eba24SJean-Francois Moine 	{0xb9, 0x00, 0x28, 0xcc},
17046a7eba24SJean-Francois Moine 	{0xb9, 0x01, 0x28, 0xcc},	{0xb9, 0x02, 0x28, 0xcc},
17056a7eba24SJean-Francois Moine 	{0xb9, 0x03, 0x00, 0xcc},
17066a7eba24SJean-Francois Moine 	{0xb9, 0x04, 0x00, 0xcc},
17076a7eba24SJean-Francois Moine 	{0xb9, 0x05, 0x3c, 0xcc},	{0xb9, 0x06, 0x3c, 0xcc},
17086a7eba24SJean-Francois Moine 	{0xb9, 0x07, 0x3c, 0xcc},
17096a7eba24SJean-Francois Moine 	{0xb9, 0x08, 0x3c, 0xcc},
17106a7eba24SJean-Francois Moine 
17116a7eba24SJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},	{0xb8, 0x8f, 0xff, 0xcc},
17126a7eba24SJean-Francois Moine 
17136a7eba24SJean-Francois Moine 	{0x00, 0x29, 0x3c, 0xaa},	{0xb3, 0x01, 0x45, 0xcc},
17146a7eba24SJean-Francois Moine 	{}
17156a7eba24SJean-Francois Moine };
17168b605f18SJean-Francois Moine static const u8 ov7660_initQVGA_data[][4] = {
17176a7eba24SJean-Francois Moine 	{0xb0, 0x4d, 0x00, 0xcc},	{0xb3, 0x01, 0x01, 0xcc},
17186a7eba24SJean-Francois Moine 	{0x00, 0x00, 0x50, 0xdd},	{0xb0, 0x03, 0x01, 0xcc},
17196a7eba24SJean-Francois Moine 	{0xb3, 0x00, 0x21, 0xcc},	{0xb3, 0x00, 0x26, 0xcc},
17206a7eba24SJean-Francois Moine 	{0xb3, 0x05, 0x01, 0xcc},	{0xb3, 0x06, 0x03, 0xcc},
17216a7eba24SJean-Francois Moine 	{0xb3, 0x03, 0x1f, 0xcc},	{0xb3, 0x04, 0x05, 0xcc},
17226a7eba24SJean-Francois Moine 	{0xb3, 0x05, 0x00, 0xcc},	{0xb3, 0x06, 0x01, 0xcc},
17236a7eba24SJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},/* 0xb315  <-0 href startl */
17246a7eba24SJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},	{0xb3, 0x17, 0x7f, 0xcc},
17256a7eba24SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
17266a7eba24SJean-Francois Moine 	{0xb3, 0x23, 0xe0, 0xcc},	{0xb3, 0x1d, 0x01, 0xcc},
17276a7eba24SJean-Francois Moine 	{0xb3, 0x1f, 0x02, 0xcc},	{0xb3, 0x34, 0x01, 0xcc},
17286a7eba24SJean-Francois Moine 	{0xb3, 0x35, 0xa1, 0xcc},	{0xb3, 0x00, 0x26, 0xcc},
17296a7eba24SJean-Francois Moine 	{0xb8, 0x00, 0x33, 0xcc}, /* 13 */
17306a7eba24SJean-Francois Moine 	{0xb8, 0x01, 0x7d, 0xcc},
17316a7eba24SJean-Francois Moine /* sizer */
17326a7eba24SJean-Francois Moine 	{0xbc, 0x00, 0xd3, 0xcc},
17336a7eba24SJean-Francois Moine 	{0xb8, 0x81, 0x09, 0xcc},	{0xb8, 0x81, 0x09, 0xcc},
17346a7eba24SJean-Francois Moine 	{0xb8, 0x27, 0x20, 0xcc},	{0xb8, 0x8f, 0x50, 0xcc},
17356a7eba24SJean-Francois Moine 	{0x00, 0x01, 0x80, 0xaa},	{0x00, 0x02, 0x80, 0xaa},
17366a7eba24SJean-Francois Moine 	{0x00, 0x12, 0x80, 0xaa},	{0x00, 0x12, 0x05, 0xaa},
17377dc7ad38SJean-Francois Moine 	{0x00, 0x1e, 0x01, 0xaa},	/* MVFP */
17386a7eba24SJean-Francois Moine 	{0x00, 0x3d, 0x40, 0xaa}, /* 0x3d <-40 gamma 01 */
17396a7eba24SJean-Francois Moine 	{0x00, 0x41, 0x00, 0xaa}, /* edge 00 */
17406a7eba24SJean-Francois Moine 	{0x00, 0x0d, 0x48, 0xaa},	{0x00, 0x0e, 0x04, 0xaa},
17416a7eba24SJean-Francois Moine 	{0x00, 0x13, 0xa7, 0xaa},
17426a7eba24SJean-Francois Moine 	{0x00, 0x40, 0xc1, 0xaa},	{0x00, 0x35, 0x00, 0xaa},
17436a7eba24SJean-Francois Moine 	{0x00, 0x36, 0x00, 0xaa},
17446a7eba24SJean-Francois Moine 	{0x00, 0x3c, 0x68, 0xaa},	{0x00, 0x1b, 0x05, 0xaa},
17456a7eba24SJean-Francois Moine 	{0x00, 0x39, 0x43, 0xaa},	{0x00, 0x8d, 0xcf, 0xaa},
17466a7eba24SJean-Francois Moine 	{0x00, 0x8b, 0xcc, 0xaa},	{0x00, 0x8c, 0xcc, 0xaa},
17476a7eba24SJean-Francois Moine 	{0x00, 0x0f, 0x62, 0xaa},	{0x00, 0x35, 0x84, 0xaa},
17486a7eba24SJean-Francois Moine 	{0x00, 0x3b, 0x08, 0xaa}, /* 0  * Nightframe 1/4 + 50Hz -> 0xC8 */
17496a7eba24SJean-Francois Moine 	{0x00, 0x3a, 0x00, 0xaa}, /* mx change yuyv format 00, 04, 01; 08, 0c*/
17506a7eba24SJean-Francois Moine 	{0x00, 0x14, 0x2a, 0xaa}, /* agc ampli */
17516a7eba24SJean-Francois Moine 	{0x00, 0x9e, 0x40, 0xaa},	{0xb8, 0x8f, 0x50, 0xcc},
17526a7eba24SJean-Francois Moine 	{0x00, 0x01, 0x80, 0xaa},
17536a7eba24SJean-Francois Moine 	{0x00, 0x02, 0x80, 0xaa},
17546a7eba24SJean-Francois Moine /* sizer filters */
17556a7eba24SJean-Francois Moine 	{0xbc, 0x02, 0x08, 0xcc},
17566a7eba24SJean-Francois Moine 	{0xbc, 0x03, 0x70, 0xcc},
17576a7eba24SJean-Francois Moine 	{0xb8, 0x35, 0x00, 0xcc},
17586a7eba24SJean-Francois Moine 	{0xb8, 0x36, 0x00, 0xcc},
17596a7eba24SJean-Francois Moine 	{0xb8, 0x37, 0x00, 0xcc},
17606a7eba24SJean-Francois Moine 	{0xbc, 0x04, 0x08, 0xcc},
17616a7eba24SJean-Francois Moine 	{0xbc, 0x05, 0x00, 0xcc},
17626a7eba24SJean-Francois Moine 	{0xbc, 0x06, 0x00, 0xcc},
17636a7eba24SJean-Francois Moine 	{0xbc, 0x08, 0x3c, 0xcc},
17646a7eba24SJean-Francois Moine 	{0xbc, 0x09, 0x40, 0xcc},
17656a7eba24SJean-Francois Moine 	{0xbc, 0x0a, 0x04, 0xcc},
17666a7eba24SJean-Francois Moine 	{0xbc, 0x0b, 0x00, 0xcc},
17676a7eba24SJean-Francois Moine 	{0xbc, 0x0c, 0x00, 0xcc},
17686a7eba24SJean-Francois Moine /* */
17696a7eba24SJean-Francois Moine 	{0xb8, 0xfe, 0x00, 0xcc},
17706a7eba24SJean-Francois Moine 	{0xb8, 0xff, 0x28, 0xcc},
17716a7eba24SJean-Francois Moine /* */
17726a7eba24SJean-Francois Moine 	{0xb9, 0x00, 0x28, 0xcc},	{0xb9, 0x01, 0x28, 0xcc},
17736a7eba24SJean-Francois Moine 	{0xb9, 0x02, 0x28, 0xcc},	{0xb9, 0x03, 0x00, 0xcc},
17746a7eba24SJean-Francois Moine 	{0xb9, 0x04, 0x00, 0xcc},	{0xb9, 0x05, 0x3c, 0xcc},
17756a7eba24SJean-Francois Moine 	{0xb9, 0x06, 0x3c, 0xcc},	{0xb9, 0x07, 0x3c, 0xcc},
17766a7eba24SJean-Francois Moine 	{0xb9, 0x08, 0x3c, 0xcc},
17776a7eba24SJean-Francois Moine /* */
17786a7eba24SJean-Francois Moine 	{0xb8, 0x8e, 0x00, 0xcc},
17796a7eba24SJean-Francois Moine 	{0xb8, 0x8f, 0xff, 0xcc}, /* ff */
17806a7eba24SJean-Francois Moine 	{0x00, 0x29, 0x3c, 0xaa},
17816a7eba24SJean-Francois Moine 	{0xb3, 0x01, 0x45, 0xcc}, /* 45 */
17821ff1e484SJean-Francois Moine 	{}
17836a7eba24SJean-Francois Moine };
17846a7eba24SJean-Francois Moine 
17858b605f18SJean-Francois Moine static const u8 ov7660_50HZ[][4] = {
17866a7eba24SJean-Francois Moine 	{0x00, 0x3b, 0x08, 0xaa},
17876a7eba24SJean-Francois Moine 	{0x00, 0x9d, 0x40, 0xaa},
17886a7eba24SJean-Francois Moine 	{0x00, 0x13, 0xa7, 0xaa},
17891ff1e484SJean-Francois Moine 	{}
17906a7eba24SJean-Francois Moine };
17916a7eba24SJean-Francois Moine 
17928b605f18SJean-Francois Moine static const u8 ov7660_60HZ[][4] = {
17936a7eba24SJean-Francois Moine 	{0x00, 0x3b, 0x00, 0xaa},
17946a7eba24SJean-Francois Moine 	{0x00, 0x9e, 0x40, 0xaa},
17956a7eba24SJean-Francois Moine 	{0x00, 0x13, 0xa7, 0xaa},
17966a7eba24SJean-Francois Moine 	{}
17976a7eba24SJean-Francois Moine };
17986a7eba24SJean-Francois Moine 
17998b605f18SJean-Francois Moine static const u8 ov7660_NoFliker[][4] = {
18006a7eba24SJean-Francois Moine 	{0x00, 0x13, 0x87, 0xaa},
18016a7eba24SJean-Francois Moine 	{}
18026a7eba24SJean-Francois Moine };
18036a7eba24SJean-Francois Moine 
18045624c648SJean-François Moine static const u8 ov7670_InitVGA[][4] = {
18056a7eba24SJean-Francois Moine 	{0xb3, 0x01, 0x05, 0xcc},
18065624c648SJean-François Moine 	{0x00, 0x00, 0x30, 0xdd},
18075624c648SJean-François Moine 	{0xb0, 0x03, 0x19, 0xcc},
18086a7eba24SJean-Francois Moine 	{0x00, 0x00, 0x10, 0xdd},
18095624c648SJean-François Moine 	{0xb0, 0x04, 0x02, 0xcc},
18105624c648SJean-François Moine 	{0x00, 0x00, 0x10, 0xdd},
18115624c648SJean-François Moine 	{0xb3, 0x00, 0x66, 0xcc},
18125624c648SJean-François Moine 	{0xb3, 0x00, 0x67, 0xcc},
18135624c648SJean-François Moine 	{0xb0, 0x16, 0x01, 0xcc},
1814ff1cf408SJean-Francois Moine 	{0xb3, 0x35, 0xa1, 0xcc},	/* i2c add: 21 */
1815ff1cf408SJean-Francois Moine 	{0xb3, 0x34, 0x01, 0xcc},
18165624c648SJean-François Moine 	{0xb3, 0x05, 0x01, 0xcc},
18175624c648SJean-François Moine 	{0xb3, 0x06, 0x01, 0xcc},
18185624c648SJean-François Moine 	{0xb3, 0x08, 0x01, 0xcc},
18195624c648SJean-François Moine 	{0xb3, 0x09, 0x0c, 0xcc},
18205624c648SJean-François Moine 	{0xb3, 0x02, 0x02, 0xcc},
18215624c648SJean-François Moine 	{0xb3, 0x03, 0x1f, 0xcc},
18225624c648SJean-François Moine 	{0xb3, 0x14, 0x00, 0xcc},
18235624c648SJean-François Moine 	{0xb3, 0x15, 0x00, 0xcc},
18245624c648SJean-François Moine 	{0xb3, 0x16, 0x02, 0xcc},
18255624c648SJean-François Moine 	{0xb3, 0x17, 0x7f, 0xcc},
18265624c648SJean-François Moine 	{0xb3, 0x04, 0x05, 0xcc},
18275624c648SJean-François Moine 	{0xb3, 0x20, 0x00, 0xcc},
18285624c648SJean-François Moine 	{0xb3, 0x21, 0x00, 0xcc},
18295624c648SJean-François Moine 	{0xb3, 0x22, 0x01, 0xcc},
18305624c648SJean-François Moine 	{0xb3, 0x23, 0xe0, 0xcc},
18315624c648SJean-François Moine 	{0xbc, 0x00, 0x41, 0xcc},
18325624c648SJean-François Moine 	{0xbc, 0x01, 0x01, 0xcc},
18335624c648SJean-François Moine 	{0x00, 0x12, 0x80, 0xaa},
18345624c648SJean-François Moine 	{0x00, 0x00, 0x20, 0xdd},
18355624c648SJean-François Moine 	{0x00, 0x12, 0x00, 0xaa},
18365624c648SJean-François Moine 	{0x00, 0x11, 0x40, 0xaa},
18375624c648SJean-François Moine 	{0x00, 0x6b, 0x0a, 0xaa},
18385624c648SJean-François Moine 	{0x00, 0x3a, 0x04, 0xaa},
18395624c648SJean-François Moine 	{0x00, 0x40, 0xc0, 0xaa},
18405624c648SJean-François Moine 	{0x00, 0x8c, 0x00, 0xaa},
18415624c648SJean-François Moine 	{0x00, 0x7a, 0x29, 0xaa},
18425624c648SJean-François Moine 	{0x00, 0x7b, 0x0e, 0xaa},
18435624c648SJean-François Moine 	{0x00, 0x7c, 0x1a, 0xaa},
18445624c648SJean-François Moine 	{0x00, 0x7d, 0x31, 0xaa},
18455624c648SJean-François Moine 	{0x00, 0x7e, 0x53, 0xaa},
18465624c648SJean-François Moine 	{0x00, 0x7f, 0x60, 0xaa},
18475624c648SJean-François Moine 	{0x00, 0x80, 0x6b, 0xaa},
18485624c648SJean-François Moine 	{0x00, 0x81, 0x73, 0xaa},
18495624c648SJean-François Moine 	{0x00, 0x82, 0x7b, 0xaa},
18505624c648SJean-François Moine 	{0x00, 0x83, 0x82, 0xaa},
18515624c648SJean-François Moine 	{0x00, 0x84, 0x89, 0xaa},
18525624c648SJean-François Moine 	{0x00, 0x85, 0x96, 0xaa},
18535624c648SJean-François Moine 	{0x00, 0x86, 0xa1, 0xaa},
18545624c648SJean-François Moine 	{0x00, 0x87, 0xb7, 0xaa},
18555624c648SJean-François Moine 	{0x00, 0x88, 0xcc, 0xaa},
18565624c648SJean-François Moine 	{0x00, 0x89, 0xe1, 0xaa},
18575624c648SJean-François Moine 	{0x00, 0x13, 0xe0, 0xaa},
18585624c648SJean-François Moine 	{0x00, 0x00, 0x00, 0xaa},
18595624c648SJean-François Moine 	{0x00, 0x10, 0x00, 0xaa},
18605624c648SJean-François Moine 	{0x00, 0x0d, 0x40, 0xaa},
18615624c648SJean-François Moine 	{0x00, 0x14, 0x28, 0xaa},
18625624c648SJean-François Moine 	{0x00, 0xa5, 0x05, 0xaa},
18635624c648SJean-François Moine 	{0x00, 0xab, 0x07, 0xaa},
18645624c648SJean-François Moine 	{0x00, 0x24, 0x95, 0xaa},
18655624c648SJean-François Moine 	{0x00, 0x25, 0x33, 0xaa},
18665624c648SJean-François Moine 	{0x00, 0x26, 0xe3, 0xaa},
18675624c648SJean-François Moine 	{0x00, 0x9f, 0x88, 0xaa},
18685624c648SJean-François Moine 	{0x00, 0xa0, 0x78, 0xaa},
18695624c648SJean-François Moine 	{0x00, 0x55, 0x90, 0xaa},
18705624c648SJean-François Moine 	{0x00, 0xa1, 0x03, 0xaa},
18715624c648SJean-François Moine 	{0x00, 0xa6, 0xe0, 0xaa},
18725624c648SJean-François Moine 	{0x00, 0xa7, 0xd8, 0xaa},
18735624c648SJean-François Moine 	{0x00, 0xa8, 0xf0, 0xaa},
18745624c648SJean-François Moine 	{0x00, 0xa9, 0x90, 0xaa},
18755624c648SJean-François Moine 	{0x00, 0xaa, 0x14, 0xaa},
18765624c648SJean-François Moine 	{0x00, 0x13, 0xe5, 0xaa},
18775624c648SJean-François Moine 	{0x00, 0x0e, 0x61, 0xaa},
18785624c648SJean-François Moine 	{0x00, 0x0f, 0x4b, 0xaa},
18795624c648SJean-François Moine 	{0x00, 0x16, 0x02, 0xaa},
18807dc7ad38SJean-Francois Moine 	{0x00, 0x1e, 0x07, 0xaa},	/* MVFP */
18817dc7ad38SJean-Francois Moine 	{0x00, 0x21, 0x02, 0xaa},
18825624c648SJean-François Moine 	{0x00, 0x22, 0x91, 0xaa},
18835624c648SJean-François Moine 	{0x00, 0x29, 0x07, 0xaa},
18845624c648SJean-François Moine 	{0x00, 0x33, 0x0b, 0xaa},
18855624c648SJean-François Moine 	{0x00, 0x35, 0x0b, 0xaa},
18865624c648SJean-François Moine 	{0x00, 0x37, 0x1d, 0xaa},
18875624c648SJean-François Moine 	{0x00, 0x38, 0x71, 0xaa},
18885624c648SJean-François Moine 	{0x00, 0x39, 0x2a, 0xaa},
18895624c648SJean-François Moine 	{0x00, 0x3c, 0x78, 0xaa},
18905624c648SJean-François Moine 	{0x00, 0x4d, 0x40, 0xaa},
18915624c648SJean-François Moine 	{0x00, 0x4e, 0x20, 0xaa},
18925624c648SJean-François Moine 	{0x00, 0x74, 0x19, 0xaa},
18935624c648SJean-François Moine 	{0x00, 0x8d, 0x4f, 0xaa},
18945624c648SJean-François Moine 	{0x00, 0x8e, 0x00, 0xaa},
18955624c648SJean-François Moine 	{0x00, 0x8f, 0x00, 0xaa},
18965624c648SJean-François Moine 	{0x00, 0x90, 0x00, 0xaa},
18975624c648SJean-François Moine 	{0x00, 0x91, 0x00, 0xaa},
18985624c648SJean-François Moine 	{0x00, 0x96, 0x00, 0xaa},
18995624c648SJean-François Moine 	{0x00, 0x9a, 0x80, 0xaa},
19005624c648SJean-François Moine 	{0x00, 0xb0, 0x84, 0xaa},
19015624c648SJean-François Moine 	{0x00, 0xb1, 0x0c, 0xaa},
19025624c648SJean-François Moine 	{0x00, 0xb2, 0x0e, 0xaa},
19035624c648SJean-François Moine 	{0x00, 0xb3, 0x82, 0xaa},
19045624c648SJean-François Moine 	{0x00, 0xb8, 0x0a, 0xaa},
19055624c648SJean-François Moine 	{0x00, 0x43, 0x14, 0xaa},
19065624c648SJean-François Moine 	{0x00, 0x44, 0xf0, 0xaa},
19075624c648SJean-François Moine 	{0x00, 0x45, 0x45, 0xaa},
19085624c648SJean-François Moine 	{0x00, 0x46, 0x63, 0xaa},
19095624c648SJean-François Moine 	{0x00, 0x47, 0x2d, 0xaa},
19105624c648SJean-François Moine 	{0x00, 0x48, 0x46, 0xaa},
19115624c648SJean-François Moine 	{0x00, 0x59, 0x88, 0xaa},
19125624c648SJean-François Moine 	{0x00, 0x5a, 0xa0, 0xaa},
19135624c648SJean-François Moine 	{0x00, 0x5b, 0xc6, 0xaa},
19145624c648SJean-François Moine 	{0x00, 0x5c, 0x7d, 0xaa},
19155624c648SJean-François Moine 	{0x00, 0x5d, 0x5f, 0xaa},
19165624c648SJean-François Moine 	{0x00, 0x5e, 0x19, 0xaa},
19175624c648SJean-François Moine 	{0x00, 0x6c, 0x0a, 0xaa},
19185624c648SJean-François Moine 	{0x00, 0x6d, 0x55, 0xaa},
19195624c648SJean-François Moine 	{0x00, 0x6e, 0x11, 0xaa},
19205624c648SJean-François Moine 	{0x00, 0x6f, 0x9e, 0xaa},
19215624c648SJean-François Moine 	{0x00, 0x69, 0x00, 0xaa},
19225624c648SJean-François Moine 	{0x00, 0x6a, 0x40, 0xaa},
19235624c648SJean-François Moine 	{0x00, 0x01, 0x40, 0xaa},
19245624c648SJean-François Moine 	{0x00, 0x02, 0x40, 0xaa},
19255624c648SJean-François Moine 	{0x00, 0x13, 0xe7, 0xaa},
19265624c648SJean-François Moine 	{0x00, 0x5f, 0xf0, 0xaa},
19275624c648SJean-François Moine 	{0x00, 0x60, 0xf0, 0xaa},
19285624c648SJean-François Moine 	{0x00, 0x61, 0xf0, 0xaa},
19295624c648SJean-François Moine 	{0x00, 0x27, 0xa0, 0xaa},
19305624c648SJean-François Moine 	{0x00, 0x28, 0x80, 0xaa},
19315624c648SJean-François Moine 	{0x00, 0x2c, 0x90, 0xaa},
19325624c648SJean-François Moine 	{0x00, 0x4f, 0x66, 0xaa},
19335624c648SJean-François Moine 	{0x00, 0x50, 0x66, 0xaa},
19345624c648SJean-François Moine 	{0x00, 0x51, 0x00, 0xaa},
19355624c648SJean-François Moine 	{0x00, 0x52, 0x22, 0xaa},
19365624c648SJean-François Moine 	{0x00, 0x53, 0x5e, 0xaa},
19375624c648SJean-François Moine 	{0x00, 0x54, 0x80, 0xaa},
19385624c648SJean-François Moine 	{0x00, 0x58, 0x9e, 0xaa},
19395624c648SJean-François Moine 	{0x00, 0x41, 0x08, 0xaa},
19405624c648SJean-François Moine 	{0x00, 0x3f, 0x00, 0xaa},
19415624c648SJean-François Moine 	{0x00, 0x75, 0x85, 0xaa},
19425624c648SJean-François Moine 	{0x00, 0x76, 0xe1, 0xaa},
19435624c648SJean-François Moine 	{0x00, 0x4c, 0x00, 0xaa},
19445624c648SJean-François Moine 	{0x00, 0x77, 0x0a, 0xaa},
19455624c648SJean-François Moine 	{0x00, 0x3d, 0x88, 0xaa},
19465624c648SJean-François Moine 	{0x00, 0x4b, 0x09, 0xaa},
19475624c648SJean-François Moine 	{0x00, 0xc9, 0x60, 0xaa},
19485624c648SJean-François Moine 	{0x00, 0x41, 0x38, 0xaa},
19495624c648SJean-François Moine 	{0x00, 0x62, 0x30, 0xaa},
19505624c648SJean-François Moine 	{0x00, 0x63, 0x30, 0xaa},
19515624c648SJean-François Moine 	{0x00, 0x64, 0x08, 0xaa},
19525624c648SJean-François Moine 	{0x00, 0x94, 0x07, 0xaa},
19535624c648SJean-François Moine 	{0x00, 0x95, 0x0b, 0xaa},
19545624c648SJean-François Moine 	{0x00, 0x65, 0x00, 0xaa},
19555624c648SJean-François Moine 	{0x00, 0x66, 0x05, 0xaa},
19565624c648SJean-François Moine 	{0x00, 0x56, 0x50, 0xaa},
19575624c648SJean-François Moine 	{0x00, 0x34, 0x11, 0xaa},
19585624c648SJean-François Moine 	{0x00, 0xa4, 0x88, 0xaa},
19595624c648SJean-François Moine 	{0x00, 0x96, 0x00, 0xaa},
19605624c648SJean-François Moine 	{0x00, 0x97, 0x30, 0xaa},
19615624c648SJean-François Moine 	{0x00, 0x98, 0x20, 0xaa},
19625624c648SJean-François Moine 	{0x00, 0x99, 0x30, 0xaa},
19635624c648SJean-François Moine 	{0x00, 0x9a, 0x84, 0xaa},
19645624c648SJean-François Moine 	{0x00, 0x9b, 0x29, 0xaa},
19655624c648SJean-François Moine 	{0x00, 0x9c, 0x03, 0xaa},
19665624c648SJean-François Moine 	{0x00, 0x78, 0x04, 0xaa},
19675624c648SJean-François Moine 	{0x00, 0x79, 0x01, 0xaa},
19685624c648SJean-François Moine 	{0x00, 0xc8, 0xf0, 0xaa},
19695624c648SJean-François Moine 	{0x00, 0x79, 0x0f, 0xaa},
19705624c648SJean-François Moine 	{0x00, 0xc8, 0x00, 0xaa},
19715624c648SJean-François Moine 	{0x00, 0x79, 0x10, 0xaa},
19725624c648SJean-François Moine 	{0x00, 0xc8, 0x7e, 0xaa},
19735624c648SJean-François Moine 	{0x00, 0x79, 0x0a, 0xaa},
19745624c648SJean-François Moine 	{0x00, 0xc8, 0x80, 0xaa},
19755624c648SJean-François Moine 	{0x00, 0x79, 0x0b, 0xaa},
19765624c648SJean-François Moine 	{0x00, 0xc8, 0x01, 0xaa},
19775624c648SJean-François Moine 	{0x00, 0x79, 0x0c, 0xaa},
19785624c648SJean-François Moine 	{0x00, 0xc8, 0x0f, 0xaa},
19795624c648SJean-François Moine 	{0x00, 0x79, 0x0d, 0xaa},
19805624c648SJean-François Moine 	{0x00, 0xc8, 0x20, 0xaa},
19815624c648SJean-François Moine 	{0x00, 0x79, 0x09, 0xaa},
19825624c648SJean-François Moine 	{0x00, 0xc8, 0x80, 0xaa},
19835624c648SJean-François Moine 	{0x00, 0x79, 0x02, 0xaa},
19845624c648SJean-François Moine 	{0x00, 0xc8, 0xc0, 0xaa},
19855624c648SJean-François Moine 	{0x00, 0x79, 0x03, 0xaa},
19865624c648SJean-François Moine 	{0x00, 0xc8, 0x40, 0xaa},
19875624c648SJean-François Moine 	{0x00, 0x79, 0x05, 0xaa},
19885624c648SJean-François Moine 	{0x00, 0xc8, 0x30, 0xaa},
19895624c648SJean-François Moine 	{0x00, 0x79, 0x26, 0xaa},
19905624c648SJean-François Moine 	{0x00, 0x11, 0x40, 0xaa},
19915624c648SJean-François Moine 	{0x00, 0x3a, 0x04, 0xaa},
19925624c648SJean-François Moine 	{0x00, 0x12, 0x00, 0xaa},
19935624c648SJean-François Moine 	{0x00, 0x40, 0xc0, 0xaa},
19945624c648SJean-François Moine 	{0x00, 0x8c, 0x00, 0xaa},
19955624c648SJean-François Moine 	{0x00, 0x17, 0x14, 0xaa},
19965624c648SJean-François Moine 	{0x00, 0x18, 0x02, 0xaa},
19975624c648SJean-François Moine 	{0x00, 0x32, 0x92, 0xaa},
19985624c648SJean-François Moine 	{0x00, 0x19, 0x02, 0xaa},
19995624c648SJean-François Moine 	{0x00, 0x1a, 0x7a, 0xaa},
20005624c648SJean-François Moine 	{0x00, 0x03, 0x0a, 0xaa},
20015624c648SJean-François Moine 	{0x00, 0x0c, 0x00, 0xaa},
20025624c648SJean-François Moine 	{0x00, 0x3e, 0x00, 0xaa},
20035624c648SJean-François Moine 	{0x00, 0x70, 0x3a, 0xaa},
20045624c648SJean-François Moine 	{0x00, 0x71, 0x35, 0xaa},
20055624c648SJean-François Moine 	{0x00, 0x72, 0x11, 0xaa},
20065624c648SJean-François Moine 	{0x00, 0x73, 0xf0, 0xaa},
20075624c648SJean-François Moine 	{0x00, 0xa2, 0x02, 0xaa},
20085624c648SJean-François Moine 	{0x00, 0xb1, 0x00, 0xaa},
20095624c648SJean-François Moine 	{0x00, 0xb1, 0x0c, 0xaa},
20107dc7ad38SJean-Francois Moine 	{0x00, 0x1e, 0x37, 0xaa},	/* MVFP */
20117dc7ad38SJean-Francois Moine 	{0x00, 0xaa, 0x14, 0xaa},
20125624c648SJean-François Moine 	{0x00, 0x24, 0x80, 0xaa},
20135624c648SJean-François Moine 	{0x00, 0x25, 0x74, 0xaa},
20145624c648SJean-François Moine 	{0x00, 0x26, 0xd3, 0xaa},
20155624c648SJean-François Moine 	{0x00, 0x0d, 0x00, 0xaa},
20165624c648SJean-François Moine 	{0x00, 0x14, 0x18, 0xaa},
20175624c648SJean-François Moine 	{0x00, 0x9d, 0x99, 0xaa},
20185624c648SJean-François Moine 	{0x00, 0x9e, 0x7f, 0xaa},
20195624c648SJean-François Moine 	{0x00, 0x64, 0x08, 0xaa},
20205624c648SJean-François Moine 	{0x00, 0x94, 0x07, 0xaa},
20215624c648SJean-François Moine 	{0x00, 0x95, 0x06, 0xaa},
20225624c648SJean-François Moine 	{0x00, 0x66, 0x05, 0xaa},
20235624c648SJean-François Moine 	{0x00, 0x41, 0x08, 0xaa},
20245624c648SJean-François Moine 	{0x00, 0x3f, 0x00, 0xaa},
20255624c648SJean-François Moine 	{0x00, 0x75, 0x07, 0xaa},
20265624c648SJean-François Moine 	{0x00, 0x76, 0xe1, 0xaa},
20275624c648SJean-François Moine 	{0x00, 0x4c, 0x00, 0xaa},
20285624c648SJean-François Moine 	{0x00, 0x77, 0x00, 0xaa},
20295624c648SJean-François Moine 	{0x00, 0x3d, 0xc2, 0xaa},
20305624c648SJean-François Moine 	{0x00, 0x4b, 0x09, 0xaa},
20315624c648SJean-François Moine 	{0x00, 0xc9, 0x60, 0xaa},
20325624c648SJean-François Moine 	{0x00, 0x41, 0x38, 0xaa},
20335624c648SJean-François Moine 	{0xbf, 0xc0, 0x26, 0xcc},
20345624c648SJean-François Moine 	{0xbf, 0xc1, 0x02, 0xcc},
20355624c648SJean-François Moine 	{0xbf, 0xcc, 0x04, 0xcc},
20365624c648SJean-François Moine 	{0xb3, 0x5c, 0x01, 0xcc},
20375624c648SJean-François Moine 	{0xb3, 0x01, 0x45, 0xcc},
20386a7eba24SJean-Francois Moine 	{0x00, 0x77, 0x05, 0xaa},
20396a7eba24SJean-Francois Moine 	{},
20406a7eba24SJean-Francois Moine };
20416a7eba24SJean-Francois Moine 
20425624c648SJean-François Moine static const u8 ov7670_InitQVGA[][4] = {
20435624c648SJean-François Moine 	{0xb3, 0x01, 0x05, 0xcc},
20445624c648SJean-François Moine 	{0x00, 0x00, 0x30, 0xdd},
20455624c648SJean-François Moine 	{0xb0, 0x03, 0x19, 0xcc},
20465624c648SJean-François Moine 	{0x00, 0x00, 0x10, 0xdd},
20475624c648SJean-François Moine 	{0xb0, 0x04, 0x02, 0xcc},
20485624c648SJean-François Moine 	{0x00, 0x00, 0x10, 0xdd},
20495624c648SJean-François Moine 	{0xb3, 0x00, 0x66, 0xcc},
20505624c648SJean-François Moine 	{0xb3, 0x00, 0x67, 0xcc},
20515624c648SJean-François Moine 	{0xb0, 0x16, 0x01, 0xcc},
20525624c648SJean-François Moine 	{0xb3, 0x35, 0xa1, 0xcc},	/* i2c add: 21 */
20535624c648SJean-François Moine 	{0xb3, 0x34, 0x01, 0xcc},
20545624c648SJean-François Moine 	{0xb3, 0x05, 0x01, 0xcc},
20555624c648SJean-François Moine 	{0xb3, 0x06, 0x01, 0xcc},
20565624c648SJean-François Moine 	{0xb3, 0x08, 0x01, 0xcc},
20575624c648SJean-François Moine 	{0xb3, 0x09, 0x0c, 0xcc},
20585624c648SJean-François Moine 	{0xb3, 0x02, 0x02, 0xcc},
20595624c648SJean-François Moine 	{0xb3, 0x03, 0x1f, 0xcc},
20605624c648SJean-François Moine 	{0xb3, 0x14, 0x00, 0xcc},
20615624c648SJean-François Moine 	{0xb3, 0x15, 0x00, 0xcc},
20625624c648SJean-François Moine 	{0xb3, 0x16, 0x02, 0xcc},
20635624c648SJean-François Moine 	{0xb3, 0x17, 0x7f, 0xcc},
20645624c648SJean-François Moine 	{0xb3, 0x04, 0x05, 0xcc},
20655624c648SJean-François Moine 	{0xb3, 0x20, 0x00, 0xcc},
20665624c648SJean-François Moine 	{0xb3, 0x21, 0x00, 0xcc},
20675624c648SJean-François Moine 	{0xb3, 0x22, 0x01, 0xcc},
20685624c648SJean-François Moine 	{0xb3, 0x23, 0xe0, 0xcc},
20695624c648SJean-François Moine 	{0xbc, 0x00, 0xd1, 0xcc},
20705624c648SJean-François Moine 	{0xbc, 0x01, 0x01, 0xcc},
20715624c648SJean-François Moine 	{0x00, 0x12, 0x80, 0xaa},
20725624c648SJean-François Moine 	{0x00, 0x00, 0x20, 0xdd},
20735624c648SJean-François Moine 	{0x00, 0x12, 0x00, 0xaa},
20745624c648SJean-François Moine 	{0x00, 0x11, 0x40, 0xaa},
20755624c648SJean-François Moine 	{0x00, 0x6b, 0x0a, 0xaa},
20765624c648SJean-François Moine 	{0x00, 0x3a, 0x04, 0xaa},
20775624c648SJean-François Moine 	{0x00, 0x40, 0xc0, 0xaa},
20785624c648SJean-François Moine 	{0x00, 0x8c, 0x00, 0xaa},
20795624c648SJean-François Moine 	{0x00, 0x7a, 0x29, 0xaa},
20805624c648SJean-François Moine 	{0x00, 0x7b, 0x0e, 0xaa},
20815624c648SJean-François Moine 	{0x00, 0x7c, 0x1a, 0xaa},
20825624c648SJean-François Moine 	{0x00, 0x7d, 0x31, 0xaa},
20835624c648SJean-François Moine 	{0x00, 0x7e, 0x53, 0xaa},
20845624c648SJean-François Moine 	{0x00, 0x7f, 0x60, 0xaa},
20855624c648SJean-François Moine 	{0x00, 0x80, 0x6b, 0xaa},
20865624c648SJean-François Moine 	{0x00, 0x81, 0x73, 0xaa},
20875624c648SJean-François Moine 	{0x00, 0x82, 0x7b, 0xaa},
20885624c648SJean-François Moine 	{0x00, 0x83, 0x82, 0xaa},
20895624c648SJean-François Moine 	{0x00, 0x84, 0x89, 0xaa},
20905624c648SJean-François Moine 	{0x00, 0x85, 0x96, 0xaa},
20915624c648SJean-François Moine 	{0x00, 0x86, 0xa1, 0xaa},
20925624c648SJean-François Moine 	{0x00, 0x87, 0xb7, 0xaa},
20935624c648SJean-François Moine 	{0x00, 0x88, 0xcc, 0xaa},
20945624c648SJean-François Moine 	{0x00, 0x89, 0xe1, 0xaa},
20955624c648SJean-François Moine 	{0x00, 0x13, 0xe0, 0xaa},
20965624c648SJean-François Moine 	{0x00, 0x00, 0x00, 0xaa},
20975624c648SJean-François Moine 	{0x00, 0x10, 0x00, 0xaa},
20985624c648SJean-François Moine 	{0x00, 0x0d, 0x40, 0xaa},
20995624c648SJean-François Moine 	{0x00, 0x14, 0x28, 0xaa},
21005624c648SJean-François Moine 	{0x00, 0xa5, 0x05, 0xaa},
21015624c648SJean-François Moine 	{0x00, 0xab, 0x07, 0xaa},
21025624c648SJean-François Moine 	{0x00, 0x24, 0x95, 0xaa},
21035624c648SJean-François Moine 	{0x00, 0x25, 0x33, 0xaa},
21045624c648SJean-François Moine 	{0x00, 0x26, 0xe3, 0xaa},
21055624c648SJean-François Moine 	{0x00, 0x9f, 0x88, 0xaa},
21065624c648SJean-François Moine 	{0x00, 0xa0, 0x78, 0xaa},
21075624c648SJean-François Moine 	{0x00, 0x55, 0x90, 0xaa},
21085624c648SJean-François Moine 	{0x00, 0xa1, 0x03, 0xaa},
21095624c648SJean-François Moine 	{0x00, 0xa6, 0xe0, 0xaa},
21105624c648SJean-François Moine 	{0x00, 0xa7, 0xd8, 0xaa},
21115624c648SJean-François Moine 	{0x00, 0xa8, 0xf0, 0xaa},
21125624c648SJean-François Moine 	{0x00, 0xa9, 0x90, 0xaa},
21135624c648SJean-François Moine 	{0x00, 0xaa, 0x14, 0xaa},
21145624c648SJean-François Moine 	{0x00, 0x13, 0xe5, 0xaa},
21155624c648SJean-François Moine 	{0x00, 0x0e, 0x61, 0xaa},
21165624c648SJean-François Moine 	{0x00, 0x0f, 0x4b, 0xaa},
21175624c648SJean-François Moine 	{0x00, 0x16, 0x02, 0xaa},
21187dc7ad38SJean-Francois Moine 	{0x00, 0x1e, 0x07, 0xaa},	/* MVFP */
21197dc7ad38SJean-Francois Moine 	{0x00, 0x21, 0x02, 0xaa},
21205624c648SJean-François Moine 	{0x00, 0x22, 0x91, 0xaa},
21215624c648SJean-François Moine 	{0x00, 0x29, 0x07, 0xaa},
21225624c648SJean-François Moine 	{0x00, 0x33, 0x0b, 0xaa},
21235624c648SJean-François Moine 	{0x00, 0x35, 0x0b, 0xaa},
21245624c648SJean-François Moine 	{0x00, 0x37, 0x1d, 0xaa},
21255624c648SJean-François Moine 	{0x00, 0x38, 0x71, 0xaa},
21265624c648SJean-François Moine 	{0x00, 0x39, 0x2a, 0xaa},
21275624c648SJean-François Moine 	{0x00, 0x3c, 0x78, 0xaa},
21285624c648SJean-François Moine 	{0x00, 0x4d, 0x40, 0xaa},
21295624c648SJean-François Moine 	{0x00, 0x4e, 0x20, 0xaa},
21305624c648SJean-François Moine 	{0x00, 0x74, 0x19, 0xaa},
21315624c648SJean-François Moine 	{0x00, 0x8d, 0x4f, 0xaa},
21325624c648SJean-François Moine 	{0x00, 0x8e, 0x00, 0xaa},
21335624c648SJean-François Moine 	{0x00, 0x8f, 0x00, 0xaa},
21345624c648SJean-François Moine 	{0x00, 0x90, 0x00, 0xaa},
21355624c648SJean-François Moine 	{0x00, 0x91, 0x00, 0xaa},
21365624c648SJean-François Moine 	{0x00, 0x96, 0x00, 0xaa},
21375624c648SJean-François Moine 	{0x00, 0x9a, 0x80, 0xaa},
21385624c648SJean-François Moine 	{0x00, 0xb0, 0x84, 0xaa},
21395624c648SJean-François Moine 	{0x00, 0xb1, 0x0c, 0xaa},
21405624c648SJean-François Moine 	{0x00, 0xb2, 0x0e, 0xaa},
21415624c648SJean-François Moine 	{0x00, 0xb3, 0x82, 0xaa},
21425624c648SJean-François Moine 	{0x00, 0xb8, 0x0a, 0xaa},
21435624c648SJean-François Moine 	{0x00, 0x43, 0x14, 0xaa},
21445624c648SJean-François Moine 	{0x00, 0x44, 0xf0, 0xaa},
21455624c648SJean-François Moine 	{0x00, 0x45, 0x45, 0xaa},
21465624c648SJean-François Moine 	{0x00, 0x46, 0x63, 0xaa},
21475624c648SJean-François Moine 	{0x00, 0x47, 0x2d, 0xaa},
21485624c648SJean-François Moine 	{0x00, 0x48, 0x46, 0xaa},
21495624c648SJean-François Moine 	{0x00, 0x59, 0x88, 0xaa},
21505624c648SJean-François Moine 	{0x00, 0x5a, 0xa0, 0xaa},
21515624c648SJean-François Moine 	{0x00, 0x5b, 0xc6, 0xaa},
21525624c648SJean-François Moine 	{0x00, 0x5c, 0x7d, 0xaa},
21535624c648SJean-François Moine 	{0x00, 0x5d, 0x5f, 0xaa},
21545624c648SJean-François Moine 	{0x00, 0x5e, 0x19, 0xaa},
21555624c648SJean-François Moine 	{0x00, 0x6c, 0x0a, 0xaa},
21565624c648SJean-François Moine 	{0x00, 0x6d, 0x55, 0xaa},
21575624c648SJean-François Moine 	{0x00, 0x6e, 0x11, 0xaa},
21585624c648SJean-François Moine 	{0x00, 0x6f, 0x9e, 0xaa},
21595624c648SJean-François Moine 	{0x00, 0x69, 0x00, 0xaa},
21605624c648SJean-François Moine 	{0x00, 0x6a, 0x40, 0xaa},
21615624c648SJean-François Moine 	{0x00, 0x01, 0x40, 0xaa},
21625624c648SJean-François Moine 	{0x00, 0x02, 0x40, 0xaa},
21635624c648SJean-François Moine 	{0x00, 0x13, 0xe7, 0xaa},
21645624c648SJean-François Moine 	{0x00, 0x5f, 0xf0, 0xaa},
21655624c648SJean-François Moine 	{0x00, 0x60, 0xf0, 0xaa},
21665624c648SJean-François Moine 	{0x00, 0x61, 0xf0, 0xaa},
21675624c648SJean-François Moine 	{0x00, 0x27, 0xa0, 0xaa},
21685624c648SJean-François Moine 	{0x00, 0x28, 0x80, 0xaa},
21695624c648SJean-François Moine 	{0x00, 0x2c, 0x90, 0xaa},
21705624c648SJean-François Moine 	{0x00, 0x4f, 0x66, 0xaa},
21715624c648SJean-François Moine 	{0x00, 0x50, 0x66, 0xaa},
21725624c648SJean-François Moine 	{0x00, 0x51, 0x00, 0xaa},
21735624c648SJean-François Moine 	{0x00, 0x52, 0x22, 0xaa},
21745624c648SJean-François Moine 	{0x00, 0x53, 0x5e, 0xaa},
21755624c648SJean-François Moine 	{0x00, 0x54, 0x80, 0xaa},
21765624c648SJean-François Moine 	{0x00, 0x58, 0x9e, 0xaa},
21775624c648SJean-François Moine 	{0x00, 0x41, 0x08, 0xaa},
21785624c648SJean-François Moine 	{0x00, 0x3f, 0x00, 0xaa},
21795624c648SJean-François Moine 	{0x00, 0x75, 0x85, 0xaa},
21805624c648SJean-François Moine 	{0x00, 0x76, 0xe1, 0xaa},
21815624c648SJean-François Moine 	{0x00, 0x4c, 0x00, 0xaa},
21825624c648SJean-François Moine 	{0x00, 0x77, 0x0a, 0xaa},
21835624c648SJean-François Moine 	{0x00, 0x3d, 0x88, 0xaa},
21845624c648SJean-François Moine 	{0x00, 0x4b, 0x09, 0xaa},
21855624c648SJean-François Moine 	{0x00, 0xc9, 0x60, 0xaa},
21865624c648SJean-François Moine 	{0x00, 0x41, 0x38, 0xaa},
21875624c648SJean-François Moine 	{0x00, 0x62, 0x30, 0xaa},
21885624c648SJean-François Moine 	{0x00, 0x63, 0x30, 0xaa},
21895624c648SJean-François Moine 	{0x00, 0x64, 0x08, 0xaa},
21905624c648SJean-François Moine 	{0x00, 0x94, 0x07, 0xaa},
21915624c648SJean-François Moine 	{0x00, 0x95, 0x0b, 0xaa},
21925624c648SJean-François Moine 	{0x00, 0x65, 0x00, 0xaa},
21935624c648SJean-François Moine 	{0x00, 0x66, 0x05, 0xaa},
21945624c648SJean-François Moine 	{0x00, 0x56, 0x50, 0xaa},
21955624c648SJean-François Moine 	{0x00, 0x34, 0x11, 0xaa},
21965624c648SJean-François Moine 	{0x00, 0xa4, 0x88, 0xaa},
21975624c648SJean-François Moine 	{0x00, 0x96, 0x00, 0xaa},
21985624c648SJean-François Moine 	{0x00, 0x97, 0x30, 0xaa},
21995624c648SJean-François Moine 	{0x00, 0x98, 0x20, 0xaa},
22005624c648SJean-François Moine 	{0x00, 0x99, 0x30, 0xaa},
22015624c648SJean-François Moine 	{0x00, 0x9a, 0x84, 0xaa},
22025624c648SJean-François Moine 	{0x00, 0x9b, 0x29, 0xaa},
22035624c648SJean-François Moine 	{0x00, 0x9c, 0x03, 0xaa},
22045624c648SJean-François Moine 	{0x00, 0x78, 0x04, 0xaa},
22055624c648SJean-François Moine 	{0x00, 0x79, 0x01, 0xaa},
22065624c648SJean-François Moine 	{0x00, 0xc8, 0xf0, 0xaa},
22075624c648SJean-François Moine 	{0x00, 0x79, 0x0f, 0xaa},
22085624c648SJean-François Moine 	{0x00, 0xc8, 0x00, 0xaa},
22095624c648SJean-François Moine 	{0x00, 0x79, 0x10, 0xaa},
22105624c648SJean-François Moine 	{0x00, 0xc8, 0x7e, 0xaa},
22115624c648SJean-François Moine 	{0x00, 0x79, 0x0a, 0xaa},
22125624c648SJean-François Moine 	{0x00, 0xc8, 0x80, 0xaa},
22135624c648SJean-François Moine 	{0x00, 0x79, 0x0b, 0xaa},
22145624c648SJean-François Moine 	{0x00, 0xc8, 0x01, 0xaa},
22155624c648SJean-François Moine 	{0x00, 0x79, 0x0c, 0xaa},
22165624c648SJean-François Moine 	{0x00, 0xc8, 0x0f, 0xaa},
22175624c648SJean-François Moine 	{0x00, 0x79, 0x0d, 0xaa},
22185624c648SJean-François Moine 	{0x00, 0xc8, 0x20, 0xaa},
22195624c648SJean-François Moine 	{0x00, 0x79, 0x09, 0xaa},
22205624c648SJean-François Moine 	{0x00, 0xc8, 0x80, 0xaa},
22215624c648SJean-François Moine 	{0x00, 0x79, 0x02, 0xaa},
22225624c648SJean-François Moine 	{0x00, 0xc8, 0xc0, 0xaa},
22235624c648SJean-François Moine 	{0x00, 0x79, 0x03, 0xaa},
22245624c648SJean-François Moine 	{0x00, 0xc8, 0x40, 0xaa},
22255624c648SJean-François Moine 	{0x00, 0x79, 0x05, 0xaa},
22265624c648SJean-François Moine 	{0x00, 0xc8, 0x30, 0xaa},
22275624c648SJean-François Moine 	{0x00, 0x79, 0x26, 0xaa},
22285624c648SJean-François Moine 	{0x00, 0x11, 0x40, 0xaa},
22295624c648SJean-François Moine 	{0x00, 0x3a, 0x04, 0xaa},
22305624c648SJean-François Moine 	{0x00, 0x12, 0x00, 0xaa},
22315624c648SJean-François Moine 	{0x00, 0x40, 0xc0, 0xaa},
22325624c648SJean-François Moine 	{0x00, 0x8c, 0x00, 0xaa},
22335624c648SJean-François Moine 	{0x00, 0x17, 0x14, 0xaa},
22345624c648SJean-François Moine 	{0x00, 0x18, 0x02, 0xaa},
22355624c648SJean-François Moine 	{0x00, 0x32, 0x92, 0xaa},
22365624c648SJean-François Moine 	{0x00, 0x19, 0x02, 0xaa},
22375624c648SJean-François Moine 	{0x00, 0x1a, 0x7a, 0xaa},
22385624c648SJean-François Moine 	{0x00, 0x03, 0x0a, 0xaa},
22395624c648SJean-François Moine 	{0x00, 0x0c, 0x00, 0xaa},
22405624c648SJean-François Moine 	{0x00, 0x3e, 0x00, 0xaa},
22415624c648SJean-François Moine 	{0x00, 0x70, 0x3a, 0xaa},
22425624c648SJean-François Moine 	{0x00, 0x71, 0x35, 0xaa},
22435624c648SJean-François Moine 	{0x00, 0x72, 0x11, 0xaa},
22445624c648SJean-François Moine 	{0x00, 0x73, 0xf0, 0xaa},
22455624c648SJean-François Moine 	{0x00, 0xa2, 0x02, 0xaa},
22465624c648SJean-François Moine 	{0x00, 0xb1, 0x00, 0xaa},
22475624c648SJean-François Moine 	{0x00, 0xb1, 0x0c, 0xaa},
22487dc7ad38SJean-Francois Moine 	{0x00, 0x1e, 0x37, 0xaa},	/* MVFP */
22497dc7ad38SJean-Francois Moine 	{0x00, 0xaa, 0x14, 0xaa},
22505624c648SJean-François Moine 	{0x00, 0x24, 0x80, 0xaa},
22515624c648SJean-François Moine 	{0x00, 0x25, 0x74, 0xaa},
22525624c648SJean-François Moine 	{0x00, 0x26, 0xd3, 0xaa},
22535624c648SJean-François Moine 	{0x00, 0x0d, 0x00, 0xaa},
22545624c648SJean-François Moine 	{0x00, 0x14, 0x18, 0xaa},
22555624c648SJean-François Moine 	{0x00, 0x9d, 0x99, 0xaa},
22565624c648SJean-François Moine 	{0x00, 0x9e, 0x7f, 0xaa},
22575624c648SJean-François Moine 	{0x00, 0x64, 0x08, 0xaa},
22585624c648SJean-François Moine 	{0x00, 0x94, 0x07, 0xaa},
22595624c648SJean-François Moine 	{0x00, 0x95, 0x06, 0xaa},
22605624c648SJean-François Moine 	{0x00, 0x66, 0x05, 0xaa},
22615624c648SJean-François Moine 	{0x00, 0x41, 0x08, 0xaa},
22625624c648SJean-François Moine 	{0x00, 0x3f, 0x00, 0xaa},
22635624c648SJean-François Moine 	{0x00, 0x75, 0x07, 0xaa},
22645624c648SJean-François Moine 	{0x00, 0x76, 0xe1, 0xaa},
22655624c648SJean-François Moine 	{0x00, 0x4c, 0x00, 0xaa},
22665624c648SJean-François Moine 	{0x00, 0x77, 0x00, 0xaa},
22675624c648SJean-François Moine 	{0x00, 0x3d, 0xc2, 0xaa},
22685624c648SJean-François Moine 	{0x00, 0x4b, 0x09, 0xaa},
22695624c648SJean-François Moine 	{0x00, 0xc9, 0x60, 0xaa},
22705624c648SJean-François Moine 	{0x00, 0x41, 0x38, 0xaa},
22715624c648SJean-François Moine 	{0xbc, 0x02, 0x18, 0xcc},
22725624c648SJean-François Moine 	{0xbc, 0x03, 0x50, 0xcc},
22735624c648SJean-François Moine 	{0xbc, 0x04, 0x18, 0xcc},
22745624c648SJean-François Moine 	{0xbc, 0x05, 0x00, 0xcc},
22755624c648SJean-François Moine 	{0xbc, 0x06, 0x00, 0xcc},
22765624c648SJean-François Moine 	{0xbc, 0x08, 0x30, 0xcc},
22775624c648SJean-François Moine 	{0xbc, 0x09, 0x40, 0xcc},
22785624c648SJean-François Moine 	{0xbc, 0x0a, 0x10, 0xcc},
22795624c648SJean-François Moine 	{0xbc, 0x0b, 0x00, 0xcc},
22805624c648SJean-François Moine 	{0xbc, 0x0c, 0x00, 0xcc},
22815624c648SJean-François Moine 	{0xbf, 0xc0, 0x26, 0xcc},
22825624c648SJean-François Moine 	{0xbf, 0xc1, 0x02, 0xcc},
22835624c648SJean-François Moine 	{0xbf, 0xcc, 0x04, 0xcc},
22845624c648SJean-François Moine 	{0xb3, 0x5c, 0x01, 0xcc},
22855624c648SJean-François Moine 	{0xb3, 0x01, 0x45, 0xcc},
22866a7eba24SJean-Francois Moine 	{0x00, 0x77, 0x05, 0xaa},
22876a7eba24SJean-Francois Moine 	{},
22886a7eba24SJean-Francois Moine };
228988521535SJean-Francois Moine 
229088521535SJean-Francois Moine /* PO1200 - values from usbvm326.inf and ms-win trace */
22918b605f18SJean-Francois Moine static const u8 po1200_gamma[17] = {
229288521535SJean-Francois Moine 	0x00, 0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8,
229388521535SJean-Francois Moine 	0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff
229488521535SJean-Francois Moine };
22958b605f18SJean-Francois Moine static const u8 po1200_matrix[9] = {
229688521535SJean-Francois Moine 	0x60, 0xf9, 0xe5, 0xe7, 0x50, 0x05, 0xf3, 0xe6, 0x5e
229788521535SJean-Francois Moine };
22988b605f18SJean-Francois Moine static const u8 po1200_initVGA_data[][4] = {
229988521535SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},	/* reset? */
230088521535SJean-Francois Moine 	{0xb0, 0x03, 0x19, 0xcc},
230188521535SJean-Francois Moine /*	{0x00, 0x00, 0x33, 0xdd}, */
230288521535SJean-Francois Moine 	{0xb0, 0x04, 0x02, 0xcc},
230388521535SJean-Francois Moine 	{0xb0, 0x02, 0x02, 0xcc},
230488521535SJean-Francois Moine 	{0xb3, 0x5d, 0x00, 0xcc},
230588521535SJean-Francois Moine 	{0xb3, 0x01, 0x01, 0xcc},
230688521535SJean-Francois Moine 	{0xb3, 0x00, 0x64, 0xcc},
230788521535SJean-Francois Moine 	{0xb3, 0x00, 0x65, 0xcc},
230888521535SJean-Francois Moine 	{0xb3, 0x05, 0x01, 0xcc},
230988521535SJean-Francois Moine 	{0xb3, 0x06, 0x01, 0xcc},
231088521535SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
231188521535SJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
231288521535SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
231388521535SJean-Francois Moine 	{0xb3, 0x00, 0x67, 0xcc},
231488521535SJean-Francois Moine 	{0xb3, 0x02, 0xb2, 0xcc},
231588521535SJean-Francois Moine 	{0xb3, 0x03, 0x18, 0xcc},
231688521535SJean-Francois Moine 	{0xb3, 0x04, 0x15, 0xcc},
231788521535SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
231888521535SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
231988521535SJean-Francois Moine 	{0xb3, 0x22, 0x02, 0xcc},
232088521535SJean-Francois Moine 	{0xb3, 0x23, 0x58, 0xcc},
232188521535SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
232288521535SJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},
232388521535SJean-Francois Moine 	{0xb3, 0x16, 0x03, 0xcc},
232488521535SJean-Francois Moine 	{0xb3, 0x17, 0x1f, 0xcc},
232588521535SJean-Francois Moine 	{0xbc, 0x00, 0x71, 0xcc},
232688521535SJean-Francois Moine 	{0xbc, 0x01, 0x01, 0xcc},
232788521535SJean-Francois Moine 	{0xb0, 0x54, 0x13, 0xcc},
232888521535SJean-Francois Moine 	{0xb3, 0x00, 0x67, 0xcc},
232988521535SJean-Francois Moine 	{0xb3, 0x34, 0x01, 0xcc},
2330ff1cf408SJean-Francois Moine 	{0xb3, 0x35, 0xdc, 0xcc},	/* i2c add: 5c */
233188521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
233288521535SJean-Francois Moine 	{0x00, 0x12, 0x05, 0xaa},
233388521535SJean-Francois Moine 	{0x00, 0x13, 0x02, 0xaa},
233447a42b0bSJean-Francois Moine 	{0x00, 0x1e, 0xc6, 0xaa},	/* h/v flip */
233588521535SJean-Francois Moine 	{0x00, 0x21, 0x00, 0xaa},
233688521535SJean-Francois Moine 	{0x00, 0x25, 0x02, 0xaa},
233788521535SJean-Francois Moine 	{0x00, 0x3c, 0x4f, 0xaa},
233888521535SJean-Francois Moine 	{0x00, 0x3f, 0xe0, 0xaa},
233988521535SJean-Francois Moine 	{0x00, 0x42, 0xff, 0xaa},
234088521535SJean-Francois Moine 	{0x00, 0x45, 0x34, 0xaa},
234188521535SJean-Francois Moine 	{0x00, 0x55, 0xfe, 0xaa},
234288521535SJean-Francois Moine 	{0x00, 0x59, 0xd3, 0xaa},
234388521535SJean-Francois Moine 	{0x00, 0x5e, 0x04, 0xaa},
234447a42b0bSJean-Francois Moine 	{0x00, 0x61, 0xb8, 0xaa},	/* sharpness */
234588521535SJean-Francois Moine 	{0x00, 0x62, 0x02, 0xaa},
234688521535SJean-Francois Moine 	{0x00, 0xa7, 0x31, 0xaa},
234788521535SJean-Francois Moine 	{0x00, 0xa9, 0x66, 0xaa},
234888521535SJean-Francois Moine 	{0x00, 0xb0, 0x00, 0xaa},
234988521535SJean-Francois Moine 	{0x00, 0xb1, 0x00, 0xaa},
235088521535SJean-Francois Moine 	{0x00, 0xb3, 0x11, 0xaa},
235188521535SJean-Francois Moine 	{0x00, 0xb6, 0x26, 0xaa},
235288521535SJean-Francois Moine 	{0x00, 0xb7, 0x20, 0xaa},
235388521535SJean-Francois Moine 	{0x00, 0xba, 0x04, 0xaa},
235488521535SJean-Francois Moine 	{0x00, 0x88, 0x42, 0xaa},
235588521535SJean-Francois Moine 	{0x00, 0x89, 0x9a, 0xaa},
235688521535SJean-Francois Moine 	{0x00, 0x8a, 0x88, 0xaa},
235788521535SJean-Francois Moine 	{0x00, 0x8b, 0x8e, 0xaa},
235888521535SJean-Francois Moine 	{0x00, 0x8c, 0x3e, 0xaa},
235988521535SJean-Francois Moine 	{0x00, 0x8d, 0x90, 0xaa},
236088521535SJean-Francois Moine 	{0x00, 0x8e, 0x87, 0xaa},
236188521535SJean-Francois Moine 	{0x00, 0x8f, 0x96, 0xaa},
236288521535SJean-Francois Moine 	{0x00, 0x90, 0x3d, 0xaa},
236388521535SJean-Francois Moine 	{0x00, 0x64, 0x00, 0xaa},
236488521535SJean-Francois Moine 	{0x00, 0x65, 0x10, 0xaa},
236588521535SJean-Francois Moine 	{0x00, 0x66, 0x20, 0xaa},
236688521535SJean-Francois Moine 	{0x00, 0x67, 0x2b, 0xaa},
236788521535SJean-Francois Moine 	{0x00, 0x68, 0x36, 0xaa},
236888521535SJean-Francois Moine 	{0x00, 0x69, 0x49, 0xaa},
236988521535SJean-Francois Moine 	{0x00, 0x6a, 0x5a, 0xaa},
237088521535SJean-Francois Moine 	{0x00, 0x6b, 0x7f, 0xaa},
237188521535SJean-Francois Moine 	{0x00, 0x6c, 0x9b, 0xaa},
237288521535SJean-Francois Moine 	{0x00, 0x6d, 0xba, 0xaa},
237388521535SJean-Francois Moine 	{0x00, 0x6e, 0xd4, 0xaa},
237488521535SJean-Francois Moine 	{0x00, 0x6f, 0xea, 0xaa},
237588521535SJean-Francois Moine 	{0x00, 0x70, 0x00, 0xaa},
237688521535SJean-Francois Moine 	{0x00, 0x71, 0x10, 0xaa},
237788521535SJean-Francois Moine 	{0x00, 0x72, 0x20, 0xaa},
237888521535SJean-Francois Moine 	{0x00, 0x73, 0x2b, 0xaa},
237988521535SJean-Francois Moine 	{0x00, 0x74, 0x36, 0xaa},
238088521535SJean-Francois Moine 	{0x00, 0x75, 0x49, 0xaa},
238188521535SJean-Francois Moine 	{0x00, 0x76, 0x5a, 0xaa},
238288521535SJean-Francois Moine 	{0x00, 0x77, 0x7f, 0xaa},
238388521535SJean-Francois Moine 	{0x00, 0x78, 0x9b, 0xaa},
238488521535SJean-Francois Moine 	{0x00, 0x79, 0xba, 0xaa},
238588521535SJean-Francois Moine 	{0x00, 0x7a, 0xd4, 0xaa},
238688521535SJean-Francois Moine 	{0x00, 0x7b, 0xea, 0xaa},
238788521535SJean-Francois Moine 	{0x00, 0x7c, 0x00, 0xaa},
238888521535SJean-Francois Moine 	{0x00, 0x7d, 0x10, 0xaa},
238988521535SJean-Francois Moine 	{0x00, 0x7e, 0x20, 0xaa},
239088521535SJean-Francois Moine 	{0x00, 0x7f, 0x2b, 0xaa},
239188521535SJean-Francois Moine 	{0x00, 0x80, 0x36, 0xaa},
239288521535SJean-Francois Moine 	{0x00, 0x81, 0x49, 0xaa},
239388521535SJean-Francois Moine 	{0x00, 0x82, 0x5a, 0xaa},
239488521535SJean-Francois Moine 	{0x00, 0x83, 0x7f, 0xaa},
239588521535SJean-Francois Moine 	{0x00, 0x84, 0x9b, 0xaa},
239688521535SJean-Francois Moine 	{0x00, 0x85, 0xba, 0xaa},
239788521535SJean-Francois Moine 	{0x00, 0x86, 0xd4, 0xaa},
239888521535SJean-Francois Moine 	{0x00, 0x87, 0xea, 0xaa},
239988521535SJean-Francois Moine 	{0x00, 0x57, 0x2a, 0xaa},
240088521535SJean-Francois Moine 	{0x00, 0x03, 0x01, 0xaa},
240188521535SJean-Francois Moine 	{0x00, 0x04, 0x10, 0xaa},
240288521535SJean-Francois Moine 	{0x00, 0x05, 0x10, 0xaa},
240388521535SJean-Francois Moine 	{0x00, 0x06, 0x10, 0xaa},
240488521535SJean-Francois Moine 	{0x00, 0x07, 0x10, 0xaa},
240588521535SJean-Francois Moine 	{0x00, 0x08, 0x13, 0xaa},
240688521535SJean-Francois Moine 	{0x00, 0x0a, 0x00, 0xaa},
240788521535SJean-Francois Moine 	{0x00, 0x0b, 0x10, 0xaa},
240888521535SJean-Francois Moine 	{0x00, 0x0c, 0x20, 0xaa},
240988521535SJean-Francois Moine 	{0x00, 0x0d, 0x18, 0xaa},
241088521535SJean-Francois Moine 	{0x00, 0x22, 0x01, 0xaa},
241188521535SJean-Francois Moine 	{0x00, 0x23, 0x60, 0xaa},
241288521535SJean-Francois Moine 	{0x00, 0x25, 0x08, 0xaa},
241388521535SJean-Francois Moine 	{0x00, 0x26, 0x82, 0xaa},
241488521535SJean-Francois Moine 	{0x00, 0x2e, 0x0f, 0xaa},
241588521535SJean-Francois Moine 	{0x00, 0x2f, 0x1e, 0xaa},
241688521535SJean-Francois Moine 	{0x00, 0x30, 0x2d, 0xaa},
241788521535SJean-Francois Moine 	{0x00, 0x31, 0x3c, 0xaa},
241888521535SJean-Francois Moine 	{0x00, 0x32, 0x4b, 0xaa},
241988521535SJean-Francois Moine 	{0x00, 0x33, 0x5a, 0xaa},
242088521535SJean-Francois Moine 	{0x00, 0x34, 0x69, 0xaa},
242188521535SJean-Francois Moine 	{0x00, 0x35, 0x78, 0xaa},
242288521535SJean-Francois Moine 	{0x00, 0x36, 0x87, 0xaa},
242388521535SJean-Francois Moine 	{0x00, 0x37, 0x96, 0xaa},
242488521535SJean-Francois Moine 	{0x00, 0x38, 0xa5, 0xaa},
242588521535SJean-Francois Moine 	{0x00, 0x39, 0xb4, 0xaa},
242688521535SJean-Francois Moine 	{0x00, 0x3a, 0xc3, 0xaa},
242788521535SJean-Francois Moine 	{0x00, 0x3b, 0xd2, 0xaa},
242888521535SJean-Francois Moine 	{0x00, 0x3c, 0xe1, 0xaa},
242988521535SJean-Francois Moine 	{0x00, 0x3e, 0xff, 0xaa},
243088521535SJean-Francois Moine 	{0x00, 0x3f, 0xff, 0xaa},
243188521535SJean-Francois Moine 	{0x00, 0x40, 0xff, 0xaa},
243288521535SJean-Francois Moine 	{0x00, 0x41, 0xff, 0xaa},
243388521535SJean-Francois Moine 	{0x00, 0x42, 0xff, 0xaa},
243488521535SJean-Francois Moine 	{0x00, 0x43, 0xff, 0xaa},
243588521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
243688521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
243788521535SJean-Francois Moine 	{0x00, 0x20, 0xc4, 0xaa},
243888521535SJean-Francois Moine 	{0x00, 0x13, 0x03, 0xaa},
243988521535SJean-Francois Moine 	{0x00, 0x3c, 0x50, 0xaa},
244047a42b0bSJean-Francois Moine 	{0x00, 0x61, 0x6a, 0xaa},	/* sharpness? */
244188521535SJean-Francois Moine 	{0x00, 0x51, 0x5b, 0xaa},
244288521535SJean-Francois Moine 	{0x00, 0x52, 0x91, 0xaa},
244388521535SJean-Francois Moine 	{0x00, 0x53, 0x4c, 0xaa},
244488521535SJean-Francois Moine 	{0x00, 0x54, 0x50, 0xaa},
244588521535SJean-Francois Moine 	{0x00, 0x56, 0x02, 0xaa},
244688521535SJean-Francois Moine 	{0xb6, 0x00, 0x00, 0xcc},
244788521535SJean-Francois Moine 	{0xb6, 0x03, 0x03, 0xcc},
244888521535SJean-Francois Moine 	{0xb6, 0x02, 0x20, 0xcc},
244988521535SJean-Francois Moine 	{0xb6, 0x05, 0x02, 0xcc},
245088521535SJean-Francois Moine 	{0xb6, 0x04, 0x58, 0xcc},
245188521535SJean-Francois Moine 	{0xb6, 0x12, 0xf8, 0xcc},
245288521535SJean-Francois Moine 	{0xb6, 0x13, 0x21, 0xcc},
245388521535SJean-Francois Moine 	{0xb6, 0x18, 0x03, 0xcc},
245488521535SJean-Francois Moine 	{0xb6, 0x17, 0xa9, 0xcc},
245588521535SJean-Francois Moine 	{0xb6, 0x16, 0x80, 0xcc},
245688521535SJean-Francois Moine 	{0xb6, 0x22, 0x12, 0xcc},
245788521535SJean-Francois Moine 	{0xb6, 0x23, 0x0b, 0xcc},
245888521535SJean-Francois Moine 	{0xbf, 0xc0, 0x39, 0xcc},
245988521535SJean-Francois Moine 	{0xbf, 0xc1, 0x04, 0xcc},
246088521535SJean-Francois Moine 	{0xbf, 0xcc, 0x00, 0xcc},
246188521535SJean-Francois Moine 	{0xb8, 0x06, 0x20, 0xcc},
246288521535SJean-Francois Moine 	{0xb8, 0x07, 0x03, 0xcc},
246388521535SJean-Francois Moine 	{0xb8, 0x08, 0x58, 0xcc},
246488521535SJean-Francois Moine 	{0xb8, 0x09, 0x02, 0xcc},
246588521535SJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
246688521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
246788521535SJean-Francois Moine 	{0x00, 0xd9, 0x0f, 0xaa},
246888521535SJean-Francois Moine 	{0x00, 0xda, 0xaa, 0xaa},
246988521535SJean-Francois Moine 	{0x00, 0xd9, 0x10, 0xaa},
247088521535SJean-Francois Moine 	{0x00, 0xda, 0xaa, 0xaa},
247188521535SJean-Francois Moine 	{0x00, 0xd9, 0x11, 0xaa},
247288521535SJean-Francois Moine 	{0x00, 0xda, 0x00, 0xaa},
247388521535SJean-Francois Moine 	{0x00, 0xd9, 0x12, 0xaa},
247488521535SJean-Francois Moine 	{0x00, 0xda, 0xff, 0xaa},
247588521535SJean-Francois Moine 	{0x00, 0xd9, 0x13, 0xaa},
247688521535SJean-Francois Moine 	{0x00, 0xda, 0xff, 0xaa},
247788521535SJean-Francois Moine 	{0x00, 0xe8, 0x11, 0xaa},
247888521535SJean-Francois Moine 	{0x00, 0xe9, 0x12, 0xaa},
247988521535SJean-Francois Moine 	{0x00, 0xea, 0x5c, 0xaa},
248088521535SJean-Francois Moine 	{0x00, 0xeb, 0xff, 0xaa},
248188521535SJean-Francois Moine 	{0x00, 0xd8, 0x80, 0xaa},
248288521535SJean-Francois Moine 	{0x00, 0xe6, 0x02, 0xaa},
248388521535SJean-Francois Moine 	{0x00, 0xd6, 0x40, 0xaa},
248488521535SJean-Francois Moine 	{0x00, 0xe3, 0x05, 0xaa},
248588521535SJean-Francois Moine 	{0x00, 0xe0, 0x40, 0xaa},
248688521535SJean-Francois Moine 	{0x00, 0xde, 0x03, 0xaa},
248788521535SJean-Francois Moine 	{0x00, 0xdf, 0x03, 0xaa},
248888521535SJean-Francois Moine 	{0x00, 0xdb, 0x02, 0xaa},
248988521535SJean-Francois Moine 	{0x00, 0xdc, 0x00, 0xaa},
249088521535SJean-Francois Moine 	{0x00, 0xdd, 0x03, 0xaa},
249188521535SJean-Francois Moine 	{0x00, 0xe1, 0x08, 0xaa},
249288521535SJean-Francois Moine 	{0x00, 0xe2, 0x01, 0xaa},
249388521535SJean-Francois Moine 	{0x00, 0xd6, 0x40, 0xaa},
249488521535SJean-Francois Moine 	{0x00, 0xe4, 0x40, 0xaa},
249547a42b0bSJean-Francois Moine 	{0x00, 0xa8, 0x8f, 0xaa},
249688521535SJean-Francois Moine 	{0x00, 0xb4, 0x16, 0xaa},
249788521535SJean-Francois Moine 	{0xb0, 0x02, 0x06, 0xcc},
249888521535SJean-Francois Moine 	{0xb0, 0x18, 0x06, 0xcc},
249988521535SJean-Francois Moine 	{0xb0, 0x19, 0x06, 0xcc},
250088521535SJean-Francois Moine 	{0xb3, 0x5d, 0x18, 0xcc},
250188521535SJean-Francois Moine 	{0xb3, 0x05, 0x00, 0xcc},
250288521535SJean-Francois Moine 	{0xb3, 0x06, 0x00, 0xcc},
250388521535SJean-Francois Moine 	{0x00, 0xb4, 0x0e, 0xaa},
250488521535SJean-Francois Moine 	{0x00, 0xb5, 0x49, 0xaa},
250588521535SJean-Francois Moine 	{0x00, 0xb6, 0x1c, 0xaa},
250688521535SJean-Francois Moine 	{0x00, 0xb7, 0x96, 0xaa},
250788521535SJean-Francois Moine /* end of usbvm326.inf - start of ms-win trace */
250888521535SJean-Francois Moine 	{0xb6, 0x12, 0xf8, 0xcc},
250988521535SJean-Francois Moine 	{0xb6, 0x13, 0x3d, 0xcc},
251088521535SJean-Francois Moine /*read b306*/
251188521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
251288521535SJean-Francois Moine 	{0x00, 0x1a, 0x09, 0xaa},
251388521535SJean-Francois Moine 	{0x00, 0x1b, 0x8a, 0xaa},
251488521535SJean-Francois Moine /*read b827*/
251588521535SJean-Francois Moine 	{0xb8, 0x27, 0x00, 0xcc},
251688521535SJean-Francois Moine 	{0xb8, 0x26, 0x60, 0xcc},
251788521535SJean-Francois Moine 	{0xb8, 0x26, 0x60, 0xcc},
251888521535SJean-Francois Moine /*gamma - to do?*/
251988521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
252088521535SJean-Francois Moine 	{0x00, 0xae, 0x84, 0xaa},
252188521535SJean-Francois Moine /*gamma again*/
252288521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
252388521535SJean-Francois Moine 	{0x00, 0x96, 0xa0, 0xaa},
252488521535SJean-Francois Moine /*matrix*/
252588521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
252688521535SJean-Francois Moine 	{0x00, 0x91, 0x35, 0xaa},
252788521535SJean-Francois Moine 	{0x00, 0x92, 0x22, 0xaa},
252888521535SJean-Francois Moine /*gamma*/
252988521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
253088521535SJean-Francois Moine 	{0x00, 0x95, 0x85, 0xaa},
253188521535SJean-Francois Moine /*matrix*/
253288521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
253388521535SJean-Francois Moine 	{0x00, 0x4d, 0x20, 0xaa},
253488521535SJean-Francois Moine 	{0xb8, 0x22, 0x40, 0xcc},
253588521535SJean-Francois Moine 	{0xb8, 0x23, 0x40, 0xcc},
253688521535SJean-Francois Moine 	{0xb8, 0x24, 0x40, 0xcc},
253788521535SJean-Francois Moine 	{0xb8, 0x81, 0x09, 0xcc},
253888521535SJean-Francois Moine 	{0x00, 0x00, 0x64, 0xdd},
253988521535SJean-Francois Moine 	{0x00, 0x03, 0x01, 0xaa},
254088521535SJean-Francois Moine /*read 46*/
254188521535SJean-Francois Moine 	{0x00, 0x46, 0x3c, 0xaa},
254288521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
254388521535SJean-Francois Moine 	{0x00, 0x16, 0x40, 0xaa},
254488521535SJean-Francois Moine 	{0x00, 0x17, 0x40, 0xaa},
254588521535SJean-Francois Moine 	{0x00, 0x18, 0x40, 0xaa},
254688521535SJean-Francois Moine 	{0x00, 0x19, 0x41, 0xaa},
254788521535SJean-Francois Moine 	{0x00, 0x03, 0x01, 0xaa},
254888521535SJean-Francois Moine 	{0x00, 0x46, 0x3c, 0xaa},
254988521535SJean-Francois Moine 	{0x00, 0x00, 0x18, 0xdd},
255088521535SJean-Francois Moine /*read bfff*/
255188521535SJean-Francois Moine 	{0x00, 0x03, 0x00, 0xaa},
255288521535SJean-Francois Moine 	{0x00, 0xb4, 0x1c, 0xaa},
255388521535SJean-Francois Moine 	{0x00, 0xb5, 0x92, 0xaa},
255488521535SJean-Francois Moine 	{0x00, 0xb6, 0x39, 0xaa},
255588521535SJean-Francois Moine 	{0x00, 0xb7, 0x24, 0xaa},
255688521535SJean-Francois Moine /*write 89 0400 1415*/
255783c94a18SJean-Francois Moine 	{}
255883c94a18SJean-Francois Moine };
255983c94a18SJean-Francois Moine 
256083c94a18SJean-Francois Moine static const u8 poxxxx_init_common[][4] = {
256183c94a18SJean-Francois Moine 	{0xb3, 0x00, 0x04, 0xcc},
256283c94a18SJean-Francois Moine 	{0x00, 0x00, 0x10, 0xdd},
256383c94a18SJean-Francois Moine 	{0xb3, 0x00, 0x64, 0xcc},
256483c94a18SJean-Francois Moine 	{0x00, 0x00, 0x10, 0xdd},
256583c94a18SJean-Francois Moine 	{0xb3, 0x00, 0x65, 0xcc},
256683c94a18SJean-Francois Moine 	{0x00, 0x00, 0x10, 0xdd},
256783c94a18SJean-Francois Moine 	{0xb3, 0x00, 0x67, 0xcc},
256883c94a18SJean-Francois Moine 	{0xb0, 0x03, 0x09, 0xcc},
256983c94a18SJean-Francois Moine 	{0xb3, 0x05, 0x00, 0xcc},
257083c94a18SJean-Francois Moine 	{0xb3, 0x06, 0x00, 0xcc},
257183c94a18SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
257283c94a18SJean-Francois Moine 	{0xb3, 0x08, 0x01, 0xcc},
257383c94a18SJean-Francois Moine 	{0xb3, 0x09, 0x0c, 0xcc},
257483c94a18SJean-Francois Moine 	{0xb3, 0x34, 0x01, 0xcc},
257583c94a18SJean-Francois Moine 	{0xb3, 0x35, 0xf6, 0xcc},	/* i2c add: 76 */
257683c94a18SJean-Francois Moine 	{0xb3, 0x02, 0xb0, 0xcc},
257783c94a18SJean-Francois Moine 	{0xb3, 0x03, 0x18, 0xcc},
257883c94a18SJean-Francois Moine 	{0xb3, 0x04, 0x15, 0xcc},
257983c94a18SJean-Francois Moine 	{0xb3, 0x20, 0x00, 0xcc},
258083c94a18SJean-Francois Moine 	{0xb3, 0x21, 0x00, 0xcc},
258198475cb6SJean-François Moine 	{0xb3, 0x22, 0x04, 0xcc},	/* sensor height = 1024 */
258283c94a18SJean-Francois Moine 	{0xb3, 0x23, 0x00, 0xcc},
258383c94a18SJean-Francois Moine 	{0xb3, 0x14, 0x00, 0xcc},
258483c94a18SJean-Francois Moine 	{0xb3, 0x15, 0x00, 0xcc},
258598475cb6SJean-François Moine 	{0xb3, 0x16, 0x04, 0xcc},	/* sensor width = 1280 */
258683c94a18SJean-Francois Moine 	{0xb3, 0x17, 0xff, 0xcc},
258783c94a18SJean-Francois Moine 	{0xb3, 0x2c, 0x03, 0xcc},
258883c94a18SJean-Francois Moine 	{0xb3, 0x2d, 0x56, 0xcc},
258983c94a18SJean-Francois Moine 	{0xb3, 0x2e, 0x02, 0xcc},
259083c94a18SJean-Francois Moine 	{0xb3, 0x2f, 0x0a, 0xcc},
259183c94a18SJean-Francois Moine 	{0xb3, 0x40, 0x00, 0xcc},
259283c94a18SJean-Francois Moine 	{0xb3, 0x41, 0x34, 0xcc},
259383c94a18SJean-Francois Moine 	{0xb3, 0x42, 0x01, 0xcc},
259483c94a18SJean-Francois Moine 	{0xb3, 0x43, 0xe0, 0xcc},
259583c94a18SJean-Francois Moine 	{0xbc, 0x00, 0x71, 0xcc},
259683c94a18SJean-Francois Moine 	{0xbc, 0x01, 0x01, 0xcc},
259783c94a18SJean-Francois Moine 	{0xb3, 0x01, 0x41, 0xcc},
259883c94a18SJean-Francois Moine 	{0xb3, 0x4d, 0x00, 0xcc},
259983c94a18SJean-Francois Moine 	{0x00, 0x0b, 0x2a, 0xaa},
260083c94a18SJean-Francois Moine 	{0x00, 0x0e, 0x03, 0xaa},
260183c94a18SJean-Francois Moine 	{0x00, 0x0f, 0xea, 0xaa},
260283c94a18SJean-Francois Moine 	{0x00, 0x12, 0x08, 0xaa},
260383c94a18SJean-Francois Moine 	{0x00, 0x1e, 0x06, 0xaa},
260483c94a18SJean-Francois Moine 	{0x00, 0x21, 0x00, 0xaa},
260583c94a18SJean-Francois Moine 	{0x00, 0x31, 0x1f, 0xaa},
260683c94a18SJean-Francois Moine 	{0x00, 0x33, 0x38, 0xaa},
260783c94a18SJean-Francois Moine 	{0x00, 0x36, 0xc0, 0xaa},
260883c94a18SJean-Francois Moine 	{0x00, 0x37, 0xc8, 0xaa},
260983c94a18SJean-Francois Moine 	{0x00, 0x3b, 0x36, 0xaa},
261083c94a18SJean-Francois Moine 	{0x00, 0x4b, 0xfe, 0xaa},
261183c94a18SJean-Francois Moine 	{0x00, 0x4d, 0x2e, 0xaa},
261283c94a18SJean-Francois Moine 	{0x00, 0x51, 0x1c, 0xaa},
261383c94a18SJean-Francois Moine 	{0x00, 0x52, 0x01, 0xaa},
261483c94a18SJean-Francois Moine 	{0x00, 0x55, 0x0a, 0xaa},
261583c94a18SJean-Francois Moine 	{0x00, 0x56, 0x0a, 0xaa},
261683c94a18SJean-Francois Moine 	{0x00, 0x57, 0x07, 0xaa},
261783c94a18SJean-Francois Moine 	{0x00, 0x58, 0x07, 0xaa},
261883c94a18SJean-Francois Moine 	{0x00, 0x59, 0x04, 0xaa},
261983c94a18SJean-Francois Moine 	{0x00, 0x70, 0x68, 0xaa},
262083c94a18SJean-Francois Moine 	{0x00, 0x71, 0x04, 0xaa},
262183c94a18SJean-Francois Moine 	{0x00, 0x72, 0x10, 0xaa},
262283c94a18SJean-Francois Moine 	{0x00, 0x80, 0x71, 0xaa},
262383c94a18SJean-Francois Moine 	{0x00, 0x81, 0x08, 0xaa},
262483c94a18SJean-Francois Moine 	{0x00, 0x82, 0x00, 0xaa},
262583c94a18SJean-Francois Moine 	{0x00, 0x83, 0x55, 0xaa},
262683c94a18SJean-Francois Moine 	{0x00, 0x84, 0x06, 0xaa},
262783c94a18SJean-Francois Moine 	{0x00, 0x85, 0x06, 0xaa},
262883c94a18SJean-Francois Moine 	{0x00, 0x8b, 0x25, 0xaa},
262983c94a18SJean-Francois Moine 	{0x00, 0x8c, 0x00, 0xaa},
263083c94a18SJean-Francois Moine 	{0x00, 0x8d, 0x86, 0xaa},
263183c94a18SJean-Francois Moine 	{0x00, 0x8e, 0x82, 0xaa},
263283c94a18SJean-Francois Moine 	{0x00, 0x8f, 0x2d, 0xaa},
263383c94a18SJean-Francois Moine 	{0x00, 0x90, 0x8b, 0xaa},
263483c94a18SJean-Francois Moine 	{0x00, 0x91, 0x81, 0xaa},
263583c94a18SJean-Francois Moine 	{0x00, 0x92, 0x81, 0xaa},
263683c94a18SJean-Francois Moine 	{0x00, 0x93, 0x23, 0xaa},
263783c94a18SJean-Francois Moine 	{0x00, 0xa3, 0x2a, 0xaa},
263883c94a18SJean-Francois Moine 	{0x00, 0xa4, 0x03, 0xaa},
263983c94a18SJean-Francois Moine 	{0x00, 0xa5, 0xea, 0xaa},
264083c94a18SJean-Francois Moine 	{0x00, 0xb0, 0x68, 0xaa},
264183c94a18SJean-Francois Moine 	{0x00, 0xbc, 0x04, 0xaa},
264283c94a18SJean-Francois Moine 	{0x00, 0xbe, 0x3b, 0xaa},
264383c94a18SJean-Francois Moine 	{0x00, 0x4e, 0x40, 0xaa},
264483c94a18SJean-Francois Moine 	{0x00, 0x06, 0x04, 0xaa},
264583c94a18SJean-Francois Moine 	{0x00, 0x07, 0x03, 0xaa},
264683c94a18SJean-Francois Moine 	{0x00, 0xcd, 0x18, 0xaa},
264783c94a18SJean-Francois Moine 	{0x00, 0x28, 0x03, 0xaa},
264883c94a18SJean-Francois Moine 	{0x00, 0x29, 0xef, 0xaa},
264983c94a18SJean-Francois Moine /* reinit on alt 2 (qvga) or alt7 (vga) */
265083c94a18SJean-Francois Moine 	{0xb3, 0x05, 0x00, 0xcc},
265183c94a18SJean-Francois Moine 	{0xb3, 0x06, 0x00, 0xcc},
265283c94a18SJean-Francois Moine 	{0xb8, 0x00, 0x01, 0xcc},
265383c94a18SJean-Francois Moine 
265483c94a18SJean-Francois Moine 	{0x00, 0x1d, 0x85, 0xaa},
265583c94a18SJean-Francois Moine 	{0x00, 0x1e, 0xc6, 0xaa},
265683c94a18SJean-Francois Moine 	{0x00, 0x00, 0x40, 0xdd},
265783c94a18SJean-Francois Moine 	{0x00, 0x1d, 0x05, 0xaa},
2658486cb2d5SJean-François Moine 	{}
2659486cb2d5SJean-François Moine };
2660486cb2d5SJean-François Moine static const u8 poxxxx_gamma[][4] = {
266183c94a18SJean-Francois Moine 	{0x00, 0xd6, 0x22, 0xaa},	/* gamma 0 */
266283c94a18SJean-Francois Moine 	{0x00, 0x73, 0x00, 0xaa},
266383c94a18SJean-Francois Moine 	{0x00, 0x74, 0x0a, 0xaa},
266483c94a18SJean-Francois Moine 	{0x00, 0x75, 0x16, 0xaa},
266583c94a18SJean-Francois Moine 	{0x00, 0x76, 0x25, 0xaa},
266683c94a18SJean-Francois Moine 	{0x00, 0x77, 0x34, 0xaa},
266783c94a18SJean-Francois Moine 	{0x00, 0x78, 0x49, 0xaa},
266883c94a18SJean-Francois Moine 	{0x00, 0x79, 0x5a, 0xaa},
266983c94a18SJean-Francois Moine 	{0x00, 0x7a, 0x7f, 0xaa},
267083c94a18SJean-Francois Moine 	{0x00, 0x7b, 0x9b, 0xaa},
267183c94a18SJean-Francois Moine 	{0x00, 0x7c, 0xba, 0xaa},
267283c94a18SJean-Francois Moine 	{0x00, 0x7d, 0xd4, 0xaa},
267383c94a18SJean-Francois Moine 	{0x00, 0x7e, 0xea, 0xaa},
267483c94a18SJean-Francois Moine 
267583c94a18SJean-Francois Moine 	{0x00, 0xd6, 0x62, 0xaa},	/* gamma 1 */
267683c94a18SJean-Francois Moine 	{0x00, 0x73, 0x00, 0xaa},
267783c94a18SJean-Francois Moine 	{0x00, 0x74, 0x0a, 0xaa},
267883c94a18SJean-Francois Moine 	{0x00, 0x75, 0x16, 0xaa},
267983c94a18SJean-Francois Moine 	{0x00, 0x76, 0x25, 0xaa},
268083c94a18SJean-Francois Moine 	{0x00, 0x77, 0x34, 0xaa},
268183c94a18SJean-Francois Moine 	{0x00, 0x78, 0x49, 0xaa},
268283c94a18SJean-Francois Moine 	{0x00, 0x79, 0x5a, 0xaa},
268383c94a18SJean-Francois Moine 	{0x00, 0x7a, 0x7f, 0xaa},
268483c94a18SJean-Francois Moine 	{0x00, 0x7b, 0x9b, 0xaa},
268583c94a18SJean-Francois Moine 	{0x00, 0x7c, 0xba, 0xaa},
268683c94a18SJean-Francois Moine 	{0x00, 0x7d, 0xd4, 0xaa},
268783c94a18SJean-Francois Moine 	{0x00, 0x7e, 0xea, 0xaa},
268883c94a18SJean-Francois Moine 
268983c94a18SJean-Francois Moine 	{0x00, 0xd6, 0xa2, 0xaa},	/* gamma 2 */
269083c94a18SJean-Francois Moine 	{0x00, 0x73, 0x00, 0xaa},
269183c94a18SJean-Francois Moine 	{0x00, 0x74, 0x0a, 0xaa},
269283c94a18SJean-Francois Moine 	{0x00, 0x75, 0x16, 0xaa},
269383c94a18SJean-Francois Moine 	{0x00, 0x76, 0x25, 0xaa},
269483c94a18SJean-Francois Moine 	{0x00, 0x77, 0x34, 0xaa},
269583c94a18SJean-Francois Moine 	{0x00, 0x78, 0x49, 0xaa},
269683c94a18SJean-Francois Moine 	{0x00, 0x79, 0x5a, 0xaa},
269783c94a18SJean-Francois Moine 	{0x00, 0x7a, 0x7f, 0xaa},
269883c94a18SJean-Francois Moine 	{0x00, 0x7b, 0x9b, 0xaa},
269983c94a18SJean-Francois Moine 	{0x00, 0x7c, 0xba, 0xaa},
270083c94a18SJean-Francois Moine 	{0x00, 0x7d, 0xd4, 0xaa},
270183c94a18SJean-Francois Moine 	{0x00, 0x7e, 0xea, 0xaa},
2702486cb2d5SJean-François Moine 	{}
2703486cb2d5SJean-François Moine };
2704486cb2d5SJean-François Moine static const u8 poxxxx_init_start_3[][4] = {
270583c94a18SJean-Francois Moine 	{0x00, 0xb8, 0x28, 0xaa},
270683c94a18SJean-Francois Moine 	{0x00, 0xb9, 0x1e, 0xaa},
270783c94a18SJean-Francois Moine 	{0x00, 0xb6, 0x14, 0xaa},
270883c94a18SJean-Francois Moine 	{0x00, 0xb7, 0x0f, 0xaa},
270983c94a18SJean-Francois Moine 	{0x00, 0x5c, 0x10, 0xaa},
271083c94a18SJean-Francois Moine 	{0x00, 0x5d, 0x18, 0xaa},
271183c94a18SJean-Francois Moine 	{0x00, 0x5e, 0x24, 0xaa},
271283c94a18SJean-Francois Moine 	{0x00, 0x5f, 0x24, 0xaa},
271383c94a18SJean-Francois Moine 	{0x00, 0x86, 0x1a, 0xaa},
271483c94a18SJean-Francois Moine 	{0x00, 0x60, 0x00, 0xaa},
271583c94a18SJean-Francois Moine 	{0x00, 0x61, 0x1b, 0xaa},
271683c94a18SJean-Francois Moine 	{0x00, 0x62, 0x30, 0xaa},
271783c94a18SJean-Francois Moine 	{0x00, 0x63, 0x40, 0xaa},
271883c94a18SJean-Francois Moine 	{0x00, 0x87, 0x1a, 0xaa},
271983c94a18SJean-Francois Moine 	{0x00, 0x64, 0x00, 0xaa},
272083c94a18SJean-Francois Moine 	{0x00, 0x65, 0x08, 0xaa},
272183c94a18SJean-Francois Moine 	{0x00, 0x66, 0x10, 0xaa},
272283c94a18SJean-Francois Moine 	{0x00, 0x67, 0x20, 0xaa},
272383c94a18SJean-Francois Moine 	{0x00, 0x88, 0x10, 0xaa},
272483c94a18SJean-Francois Moine 	{0x00, 0x68, 0x00, 0xaa},
272583c94a18SJean-Francois Moine 	{0x00, 0x69, 0x08, 0xaa},
272683c94a18SJean-Francois Moine 	{0x00, 0x6a, 0x0f, 0xaa},
272783c94a18SJean-Francois Moine 	{0x00, 0x6b, 0x0f, 0xaa},
272883c94a18SJean-Francois Moine 	{0x00, 0x89, 0x07, 0xaa},
272983c94a18SJean-Francois Moine 	{0x00, 0xd5, 0x4c, 0xaa},
273083c94a18SJean-Francois Moine 	{0x00, 0x0a, 0x00, 0xaa},
273183c94a18SJean-Francois Moine 	{0x00, 0x0b, 0x2a, 0xaa},
273283c94a18SJean-Francois Moine 	{0x00, 0x0e, 0x03, 0xaa},
273383c94a18SJean-Francois Moine 	{0x00, 0x0f, 0xea, 0xaa},
273483c94a18SJean-Francois Moine 	{0x00, 0xa2, 0x00, 0xaa},
273583c94a18SJean-Francois Moine 	{0x00, 0xa3, 0x2a, 0xaa},
273683c94a18SJean-Francois Moine 	{0x00, 0xa4, 0x03, 0xaa},
273783c94a18SJean-Francois Moine 	{0x00, 0xa5, 0xea, 0xaa},
273883c94a18SJean-Francois Moine 	{}
273983c94a18SJean-Francois Moine };
274083c94a18SJean-Francois Moine static const u8 poxxxx_initVGA[][4] = {
274183c94a18SJean-Francois Moine 	{0x00, 0x20, 0x11, 0xaa},
274283c94a18SJean-Francois Moine 	{0x00, 0x33, 0x38, 0xaa},
274383c94a18SJean-Francois Moine 	{0x00, 0xbb, 0x0d, 0xaa},
274498475cb6SJean-François Moine 	{0xb3, 0x22, 0x01, 0xcc},	/* change to 640x480 */
274583c94a18SJean-Francois Moine 	{0xb3, 0x23, 0xe0, 0xcc},
274683c94a18SJean-Francois Moine 	{0xb3, 0x16, 0x02, 0xcc},
274783c94a18SJean-Francois Moine 	{0xb3, 0x17, 0x7f, 0xcc},
274883c94a18SJean-Francois Moine 	{0xb3, 0x02, 0xb0, 0xcc},
274983c94a18SJean-Francois Moine 	{0xb3, 0x06, 0x00, 0xcc},
275083c94a18SJean-Francois Moine 	{0xb3, 0x5c, 0x01, 0xcc},
275183c94a18SJean-Francois Moine 	{0x00, 0x04, 0x06, 0xaa},
275283c94a18SJean-Francois Moine 	{0x00, 0x05, 0x3f, 0xaa},
275383c94a18SJean-Francois Moine 	{0x00, 0x04, 0x00, 0xdd},	/* delay 1s */
275483c94a18SJean-Francois Moine 	{}
275583c94a18SJean-Francois Moine };
275683c94a18SJean-Francois Moine static const u8 poxxxx_initQVGA[][4] = {
275783c94a18SJean-Francois Moine 	{0x00, 0x20, 0x33, 0xaa},
275883c94a18SJean-Francois Moine 	{0x00, 0x33, 0x38, 0xaa},
275983c94a18SJean-Francois Moine 	{0x00, 0xbb, 0x0d, 0xaa},
276098475cb6SJean-François Moine 	{0xb3, 0x22, 0x00, 0xcc},	/* change to 320x240 */
276183c94a18SJean-Francois Moine 	{0xb3, 0x23, 0xf0, 0xcc},
276283c94a18SJean-Francois Moine 	{0xb3, 0x16, 0x01, 0xcc},
276383c94a18SJean-Francois Moine 	{0xb3, 0x17, 0x3f, 0xcc},
276483c94a18SJean-Francois Moine 	{0xb3, 0x02, 0xb0, 0xcc},
276583c94a18SJean-Francois Moine 	{0xb3, 0x06, 0x01, 0xcc},
276683c94a18SJean-Francois Moine 	{0xb3, 0x5c, 0x00, 0xcc},
276783c94a18SJean-Francois Moine 	{0x00, 0x04, 0x06, 0xaa},
276883c94a18SJean-Francois Moine 	{0x00, 0x05, 0x3f, 0xaa},
276983c94a18SJean-Francois Moine 	{0x00, 0x04, 0x00, 0xdd},	/* delay 1s */
277083c94a18SJean-Francois Moine 	{}
277183c94a18SJean-Francois Moine };
277283c94a18SJean-Francois Moine static const u8 poxxxx_init_end_1[][4] = {
277383c94a18SJean-Francois Moine 	{0x00, 0x47, 0x25, 0xaa},
277483c94a18SJean-Francois Moine 	{0x00, 0x48, 0x80, 0xaa},
277583c94a18SJean-Francois Moine 	{0x00, 0x49, 0x1f, 0xaa},
277683c94a18SJean-Francois Moine 	{0x00, 0x4a, 0x40, 0xaa},
277783c94a18SJean-Francois Moine 	{0x00, 0x44, 0x40, 0xaa},
277883c94a18SJean-Francois Moine 	{0x00, 0xab, 0x4a, 0xaa},
277983c94a18SJean-Francois Moine 	{0x00, 0xb1, 0x00, 0xaa},
278083c94a18SJean-Francois Moine 	{0x00, 0xb2, 0x04, 0xaa},
278183c94a18SJean-Francois Moine 	{0x00, 0xb3, 0x08, 0xaa},
278283c94a18SJean-Francois Moine 	{0x00, 0xb4, 0x0b, 0xaa},
278383c94a18SJean-Francois Moine 	{0x00, 0xb5, 0x0d, 0xaa},
278483c94a18SJean-Francois Moine 	{}
278583c94a18SJean-Francois Moine };
278683c94a18SJean-Francois Moine static const u8 poxxxx_init_end_2[][4] = {
278783c94a18SJean-Francois Moine 	{0x00, 0x1d, 0x85, 0xaa},
278883c94a18SJean-Francois Moine 	{0x00, 0x1e, 0x06, 0xaa},
278983c94a18SJean-Francois Moine 	{0x00, 0x1d, 0x05, 0xaa},
279083c94a18SJean-Francois Moine 	{}
279188521535SJean-Francois Moine };
279288521535SJean-Francois Moine 
27936a7eba24SJean-Francois Moine struct sensor_info {
2794235d0ff2SJean-Francois Moine 	s8 sensorId;
2795235d0ff2SJean-Francois Moine 	u8 I2cAdd;
2796235d0ff2SJean-Francois Moine 	u8 IdAdd;
2797235d0ff2SJean-Francois Moine 	u16 VpId;
2798235d0ff2SJean-Francois Moine 	u8 m1;
2799235d0ff2SJean-Francois Moine 	u8 m2;
2800235d0ff2SJean-Francois Moine 	u8 op;
28016a7eba24SJean-Francois Moine };
28026a7eba24SJean-Francois Moine 
2803ff1cf408SJean-Francois Moine /* probe values */
2804ff1cf408SJean-Francois Moine static const struct sensor_info vc0321_probe_data[] = {
28056a7eba24SJean-Francois Moine /*      sensorId,	   I2cAdd,	IdAdd,  VpId,  m1,    m2,  op */
2806ff1cf408SJean-Francois Moine /* 0 OV9640 */
2807235d0ff2SJean-Francois Moine 	{-1,		    0x80 | 0x30, 0x0a, 0x0000, 0x25, 0x24, 0x05},
2808ff1cf408SJean-Francois Moine /* 1 ICM108T (may respond on IdAdd == 0x83 - tested in vc032x_probe_sensor) */
2809235d0ff2SJean-Francois Moine 	{-1,		    0x80 | 0x20, 0x82, 0x0000, 0x24, 0x25, 0x01},
2810ff1cf408SJean-Francois Moine /* 2 PO2130 (may detect PO3130NC - tested in vc032x_probe_sensor)*/
2811ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x76, 0x00, 0x0000, 0x24, 0x25, 0x01},
2812ff1cf408SJean-Francois Moine /* 3 MI1310 */
2813ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x5d, 0x00, 0x0000, 0x24, 0x25, 0x01},
2814ff1cf408SJean-Francois Moine /* 4 MI360 - tested in vc032x_probe_sensor */
2815e18fd01eSJean-Francois Moine /*	{SENSOR_MI0360,	    0x80 | 0x5d, 0x00, 0x8243, 0x24, 0x25, 0x01}, */
2816ff1cf408SJean-Francois Moine /* 5 7131R */
2817235d0ff2SJean-Francois Moine 	{SENSOR_HV7131R,    0x80 | 0x11, 0x00, 0x0209, 0x24, 0x25, 0x01},
2818ff1cf408SJean-Francois Moine /* 6 OV7649 */
2819235d0ff2SJean-Francois Moine 	{-1,		    0x80 | 0x21, 0x0a, 0x0000, 0x21, 0x20, 0x05},
2820ff1cf408SJean-Francois Moine /* 7 PAS302BCW */
2821235d0ff2SJean-Francois Moine 	{-1,		    0x80 | 0x40, 0x00, 0x0000, 0x20, 0x22, 0x05},
2822ff1cf408SJean-Francois Moine /* 8 OV7660 */
2823235d0ff2SJean-Francois Moine 	{SENSOR_OV7660,     0x80 | 0x21, 0x0a, 0x7660, 0x26, 0x26, 0x05},
2824ff1cf408SJean-Francois Moine /* 9 PO3130NC - (tested in vc032x_probe_sensor) */
2825ff1cf408SJean-Francois Moine /*	{SENSOR_PO3130NC,   0x80 | 0x76, 0x00, 0x3130, 0x24, 0x25, 0x01}, */
2826ff1cf408SJean-Francois Moine /* 10 PO1030KC */
2827235d0ff2SJean-Francois Moine 	{-1,		    0x80 | 0x6e, 0x00, 0x0000, 0x24, 0x25, 0x01},
2828ff1cf408SJean-Francois Moine /* 11 MI1310_SOC */
2829ff1cf408SJean-Francois Moine 	{SENSOR_MI1310_SOC, 0x80 | 0x5d, 0x00, 0x143a, 0x24, 0x25, 0x01},
2830ff1cf408SJean-Francois Moine /* 12 OV9650 */
2831ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x30, 0x0a, 0x0000, 0x25, 0x24, 0x05},
2832ff1cf408SJean-Francois Moine /* 13 S5K532 */
2833235d0ff2SJean-Francois Moine 	{-1,		    0x80 | 0x11, 0x39, 0x0000, 0x24, 0x25, 0x01},
2834ff1cf408SJean-Francois Moine /* 14 MI360_SOC - ??? */
2835ff1cf408SJean-Francois Moine /* 15 PO1200N */
283688521535SJean-Francois Moine 	{SENSOR_PO1200,     0x80 | 0x5c, 0x00, 0x1200, 0x67, 0x67, 0x01},
2837ff1cf408SJean-Francois Moine /* 16 PO3030K */
2838ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x18, 0x00, 0x0000, 0x24, 0x25, 0x01},
2839ff1cf408SJean-Francois Moine /* 17 PO2030 */
2840235d0ff2SJean-Francois Moine 	{-1,		    0x80 | 0x6e, 0x00, 0x0000, 0x24, 0x25, 0x01},
2841ff1cf408SJean-Francois Moine /* ?? */
2842ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x56, 0x01, 0x0000, 0x64, 0x67, 0x01},
2843ff1cf408SJean-Francois Moine 	{SENSOR_MI1320,     0x80 | 0x48, 0x00, 0x148c, 0x64, 0x65, 0x01},
2844ff1cf408SJean-Francois Moine };
2845ff1cf408SJean-Francois Moine static const struct sensor_info vc0323_probe_data[] = {
2846ff1cf408SJean-Francois Moine /*      sensorId,	   I2cAdd,	IdAdd,  VpId,  m1,    m2,  op */
2847ff1cf408SJean-Francois Moine /* 0 OV9640 */
2848ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x30, 0x0a, 0x0000, 0x25, 0x24, 0x05},
2849ff1cf408SJean-Francois Moine /* 1 ICM108T (may respond on IdAdd == 0x83 - tested in vc032x_probe_sensor) */
2850ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x20, 0x82, 0x0000, 0x24, 0x25, 0x01},
2851ff1cf408SJean-Francois Moine /* 2 PO2130 (may detect PO3130NC - tested in vc032x_probe_sensor)*/
2852ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x76, 0x00, 0x0000, 0x24, 0x25, 0x01},
2853ff1cf408SJean-Francois Moine /* 3 MI1310 */
2854ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x5d, 0x00, 0x0000, 0x24, 0x25, 0x01},
2855ff1cf408SJean-Francois Moine /* 4 MI360 - tested in vc032x_probe_sensor */
2856ff1cf408SJean-Francois Moine /*	{SENSOR_MI0360,	    0x80 | 0x5d, 0x00, 0x8243, 0x24, 0x25, 0x01}, */
2857ff1cf408SJean-Francois Moine /* 5 7131R */
2858ff1cf408SJean-Francois Moine 	{SENSOR_HV7131R,    0x80 | 0x11, 0x00, 0x0209, 0x24, 0x25, 0x01},
2859ff1cf408SJean-Francois Moine /* 6 OV7649 */
2860ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x21, 0x0a, 0x0000, 0x21, 0x20, 0x05},
2861ff1cf408SJean-Francois Moine /* 7 PAS302BCW */
2862ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x40, 0x00, 0x0000, 0x20, 0x22, 0x05},
2863ff1cf408SJean-Francois Moine /* 8 OV7660 */
2864ff1cf408SJean-Francois Moine 	{SENSOR_OV7660,     0x80 | 0x21, 0x0a, 0x7660, 0x26, 0x26, 0x05},
2865ff1cf408SJean-Francois Moine /* 9 PO3130NC - (tested in vc032x_probe_sensor) */
2866ff1cf408SJean-Francois Moine /*	{SENSOR_PO3130NC,   0x80 | 0x76, 0x00, 0x3130, 0x24, 0x25, 0x01}, */
2867ff1cf408SJean-Francois Moine /* 10 PO1030KC */
2868ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x6e, 0x00, 0x0000, 0x24, 0x25, 0x01},
2869ff1cf408SJean-Francois Moine /* 11 MI1310_SOC */
2870ff1cf408SJean-Francois Moine 	{SENSOR_MI1310_SOC, 0x80 | 0x5d, 0x00, 0x143a, 0x24, 0x25, 0x01},
2871ff1cf408SJean-Francois Moine /* 12 OV9650 */
2872ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x30, 0x0a, 0x0000, 0x25, 0x24, 0x05},
2873ff1cf408SJean-Francois Moine /* 13 S5K532 */
2874ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x11, 0x39, 0x0000, 0x24, 0x25, 0x01},
2875ff1cf408SJean-Francois Moine /* 14 MI360_SOC - ??? */
2876ff1cf408SJean-Francois Moine /* 15 PO1200N */
2877ff1cf408SJean-Francois Moine 	{SENSOR_PO1200,     0x80 | 0x5c, 0x00, 0x1200, 0x67, 0x67, 0x01},
2878ff1cf408SJean-Francois Moine /* 16 ?? */
2879ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x2d, 0x00, 0x0000, 0x65, 0x67, 0x01},
2880ff1cf408SJean-Francois Moine /* 17 PO2030 */
2881ff1cf408SJean-Francois Moine 	{-1,		    0x80 | 0x6e, 0x00, 0x0000, 0x24, 0x25, 0x01},
2882ff1cf408SJean-Francois Moine /* ?? */
2883235d0ff2SJean-Francois Moine 	{-1,		    0x80 | 0x56, 0x01, 0x0000, 0x64, 0x67, 0x01},
2884db786a3fSJean-Francois Moine 	{SENSOR_MI1320_SOC, 0x80 | 0x48, 0x00, 0x148c, 0x64, 0x67, 0x01},
2885db786a3fSJean-Francois Moine /*fixme: not in the ms-win probe - may be found before? */
2886235d0ff2SJean-Francois Moine 	{SENSOR_OV7670,     0x80 | 0x21, 0x0a, 0x7673, 0x66, 0x67, 0x05},
28876a7eba24SJean-Francois Moine };
28886a7eba24SJean-Francois Moine 
2889739570bbSJean-Francois Moine /* read 'len' bytes in gspca_dev->usb_buf */
2890ef35d34fSJean-François Moine static void reg_r_i(struct gspca_dev *gspca_dev,
28918b605f18SJean-Francois Moine 		  u16 req,
28928b605f18SJean-Francois Moine 		  u16 index,
28938b605f18SJean-Francois Moine 		  u16 len)
28946a7eba24SJean-Francois Moine {
2895fe854ec0SJean-François Moine 	int ret;
2896fe854ec0SJean-François Moine 
2897fe854ec0SJean-François Moine 	if (gspca_dev->usb_err < 0)
2898fe854ec0SJean-François Moine 		return;
2899fe854ec0SJean-François Moine 	ret = usb_control_msg(gspca_dev->dev,
2900739570bbSJean-Francois Moine 			usb_rcvctrlpipe(gspca_dev->dev, 0),
29016a7eba24SJean-Francois Moine 			req,
29026a7eba24SJean-Francois Moine 			USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
29036a7eba24SJean-Francois Moine 			1,			/* value */
2904739570bbSJean-Francois Moine 			index, gspca_dev->usb_buf, len,
29056a7eba24SJean-Francois Moine 			500);
2906fe854ec0SJean-François Moine 	if (ret < 0) {
2907133a9fe9SJoe Perches 		pr_err("reg_r err %d\n", ret);
2908fe854ec0SJean-François Moine 		gspca_dev->usb_err = ret;
2909*4843a543SHans Verkuil 		/*
2910*4843a543SHans Verkuil 		 * Make sure the buffer is zeroed to avoid uninitialized
2911*4843a543SHans Verkuil 		 * values.
2912*4843a543SHans Verkuil 		 */
2913*4843a543SHans Verkuil 		memset(gspca_dev->usb_buf, 0, USB_BUF_SZ);
2914fe854ec0SJean-François Moine 	}
29156a7eba24SJean-Francois Moine }
2916ef35d34fSJean-François Moine static void reg_r(struct gspca_dev *gspca_dev,
2917ef35d34fSJean-François Moine 		  u16 req,
2918ef35d34fSJean-François Moine 		  u16 index,
2919ef35d34fSJean-François Moine 		  u16 len)
2920ef35d34fSJean-François Moine {
2921ef35d34fSJean-François Moine 	reg_r_i(gspca_dev, req, index, len);
2922ef35d34fSJean-François Moine 	if (gspca_dev->usb_err < 0)
2923ef35d34fSJean-François Moine 		return;
2924ef35d34fSJean-François Moine 	if (len == 1)
292537d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_USBI, "GET %02x 0001 %04x %02x\n",
292637d5efb0SJoe Perches 			  req, index,
2927ef35d34fSJean-François Moine 			  gspca_dev->usb_buf[0]);
2928ef35d34fSJean-François Moine 	else
292937d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_USBI, "GET %02x 0001 %04x %*ph\n",
293070aa3456SAndy Shevchenko 			  req, index, 3, gspca_dev->usb_buf);
2931ef35d34fSJean-François Moine }
29326a7eba24SJean-Francois Moine 
2933ef35d34fSJean-François Moine static void reg_w_i(struct gspca_dev *gspca_dev,
29348b605f18SJean-Francois Moine 			    u16 req,
29358b605f18SJean-Francois Moine 			    u16 value,
29368b605f18SJean-Francois Moine 			    u16 index)
29376a7eba24SJean-Francois Moine {
2938fe854ec0SJean-François Moine 	int ret;
2939fe854ec0SJean-François Moine 
2940fe854ec0SJean-François Moine 	if (gspca_dev->usb_err < 0)
2941fe854ec0SJean-François Moine 		return;
2942fe854ec0SJean-François Moine 	ret = usb_control_msg(gspca_dev->dev,
2943fe854ec0SJean-François Moine 			usb_sndctrlpipe(gspca_dev->dev, 0),
29446a7eba24SJean-Francois Moine 			req,
29456a7eba24SJean-Francois Moine 			USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
29466a7eba24SJean-Francois Moine 			value, index, NULL, 0,
29476a7eba24SJean-Francois Moine 			500);
2948fe854ec0SJean-François Moine 	if (ret < 0) {
2949133a9fe9SJoe Perches 		pr_err("reg_w err %d\n", ret);
2950fe854ec0SJean-François Moine 		gspca_dev->usb_err = ret;
2951fe854ec0SJean-François Moine 	}
2952fe854ec0SJean-François Moine }
2953fe854ec0SJean-François Moine static void reg_w(struct gspca_dev *gspca_dev,
2954fe854ec0SJean-François Moine 			    u16 req,
2955fe854ec0SJean-François Moine 			    u16 value,
2956fe854ec0SJean-François Moine 			    u16 index)
2957fe854ec0SJean-François Moine {
2958fe854ec0SJean-François Moine 	if (gspca_dev->usb_err < 0)
2959fe854ec0SJean-François Moine 		return;
296037d5efb0SJoe Perches 	gspca_dbg(gspca_dev, D_USBO, "SET %02x %04x %04x\n", req, value, index);
2961fe854ec0SJean-François Moine 	reg_w_i(gspca_dev, req, value, index);
29626a7eba24SJean-Francois Moine }
29636a7eba24SJean-Francois Moine 
296449796e40SJean-Francois Moine static u16 read_sensor_register(struct gspca_dev *gspca_dev,
296549796e40SJean-Francois Moine 				u16 address)
29666a7eba24SJean-Francois Moine {
2967235d0ff2SJean-Francois Moine 	u8 ldata, mdata, hdata;
29686a7eba24SJean-Francois Moine 	int retry = 50;
2969739570bbSJean-Francois Moine 
2970739570bbSJean-Francois Moine 	reg_r(gspca_dev, 0xa1, 0xb33f, 1);
2971739570bbSJean-Francois Moine 	if (!(gspca_dev->usb_buf[0] & 0x02)) {
2972133a9fe9SJoe Perches 		pr_err("I2c Bus Busy Wait %02x\n", gspca_dev->usb_buf[0]);
297349796e40SJean-Francois Moine 		return 0;
29746a7eba24SJean-Francois Moine 	}
2975fe854ec0SJean-François Moine 	reg_w(gspca_dev, 0xa0, address, 0xb33a);
2976fe854ec0SJean-François Moine 	reg_w(gspca_dev, 0xa0, 0x02, 0xb339);
29776a7eba24SJean-Francois Moine 
297849796e40SJean-Francois Moine 	do {
2979739570bbSJean-Francois Moine 		reg_r(gspca_dev, 0xa1, 0xb33b, 1);
2980235d0ff2SJean-Francois Moine 		if (gspca_dev->usb_buf[0] == 0x00)
2981235d0ff2SJean-Francois Moine 			break;
2982235d0ff2SJean-Francois Moine 		msleep(40);
2983235d0ff2SJean-Francois Moine 	} while (--retry >= 0);
298449796e40SJean-Francois Moine 
2985739570bbSJean-Francois Moine 	reg_r(gspca_dev, 0xa1, 0xb33e, 1);
2986e18fd01eSJean-Francois Moine 	ldata = gspca_dev->usb_buf[0];
2987739570bbSJean-Francois Moine 	reg_r(gspca_dev, 0xa1, 0xb33d, 1);
2988739570bbSJean-Francois Moine 	mdata = gspca_dev->usb_buf[0];
2989739570bbSJean-Francois Moine 	reg_r(gspca_dev, 0xa1, 0xb33c, 1);
2990e18fd01eSJean-Francois Moine 	hdata = gspca_dev->usb_buf[0];
299149796e40SJean-Francois Moine 	if (hdata != 0 && mdata != 0 && ldata != 0)
299237d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Read Sensor %02x%02x %02x\n",
29936a7eba24SJean-Francois Moine 			  hdata, mdata, ldata);
2994739570bbSJean-Francois Moine 	reg_r(gspca_dev, 0xa1, 0xb334, 1);
2995739570bbSJean-Francois Moine 	if (gspca_dev->usb_buf[0] == 0x02)
299649796e40SJean-Francois Moine 		return (hdata << 8) + mdata;
299749796e40SJean-Francois Moine 	return hdata;
29986a7eba24SJean-Francois Moine }
2999739570bbSJean-Francois Moine 
30006a7eba24SJean-Francois Moine static int vc032x_probe_sensor(struct gspca_dev *gspca_dev)
30016a7eba24SJean-Francois Moine {
30021852e75aSJean-Francois Moine 	struct sd *sd = (struct sd *) gspca_dev;
3003ff1cf408SJean-Francois Moine 	int i, n;
3004235d0ff2SJean-Francois Moine 	u16 value;
3005a5ae2062SJean-Francois Moine 	const struct sensor_info *ptsensor_info;
30066a7eba24SJean-Francois Moine 
30071852e75aSJean-Francois Moine /*fixme: should also check the other sensor (back mi1320_soc, front mc501cb)*/
3008e27188eeSJean-Francois Moine 	if (sd->flags & FL_SAMSUNG) {
3009fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0x01, 0xb301);
3010fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0x89, 0xf0ff, 0xffff);
3011fe854ec0SJean-François Moine 						/* select the back sensor */
30121852e75aSJean-Francois Moine 	}
30131852e75aSJean-Francois Moine 
3014739570bbSJean-Francois Moine 	reg_r(gspca_dev, 0xa1, 0xbfcf, 1);
301537d5efb0SJoe Perches 	gspca_dbg(gspca_dev, D_PROBE, "vc032%d check sensor header %02x\n",
3016ff1cf408SJean-Francois Moine 		  sd->bridge == BRIDGE_VC0321 ? 1 : 3, gspca_dev->usb_buf[0]);
3017ff1cf408SJean-Francois Moine 	if (sd->bridge == BRIDGE_VC0321) {
3018ff1cf408SJean-Francois Moine 		ptsensor_info = vc0321_probe_data;
3019ff1cf408SJean-Francois Moine 		n = ARRAY_SIZE(vc0321_probe_data);
3020ff1cf408SJean-Francois Moine 	} else {
3021ff1cf408SJean-Francois Moine 		ptsensor_info = vc0323_probe_data;
3022ff1cf408SJean-Francois Moine 		n = ARRAY_SIZE(vc0323_probe_data);
3023ff1cf408SJean-Francois Moine 	}
3024ff1cf408SJean-Francois Moine 	for (i = 0; i < n; i++) {
3025fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0x02, 0xb334);
3026fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, ptsensor_info->m1, 0xb300);
3027fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, ptsensor_info->m2, 0xb300);
3028fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0x01, 0xb308);
3029fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0x0c, 0xb309);
3030fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, ptsensor_info->I2cAdd, 0xb335);
3031fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, ptsensor_info->op, 0xb301);
303249796e40SJean-Francois Moine 		value = read_sensor_register(gspca_dev, ptsensor_info->IdAdd);
3033235d0ff2SJean-Francois Moine 		if (value == 0 && ptsensor_info->IdAdd == 0x82)
3034235d0ff2SJean-Francois Moine 			value = read_sensor_register(gspca_dev, 0x83);
3035235d0ff2SJean-Francois Moine 		if (value != 0) {
303637d5efb0SJoe Perches 			gspca_dbg(gspca_dev, D_PROBE, "Sensor ID %04x (%d)\n",
303737d5efb0SJoe Perches 				  value, i);
3038cbb0554fSJean-Francois Moine 			if (value == ptsensor_info->VpId)
30396a7eba24SJean-Francois Moine 				return ptsensor_info->sensorId;
3040cbb0554fSJean-Francois Moine 
3041235d0ff2SJean-Francois Moine 			switch (value) {
3042ff1cf408SJean-Francois Moine 			case 0x3130:
3043ff1cf408SJean-Francois Moine 				return SENSOR_PO3130NC;
3044235d0ff2SJean-Francois Moine 			case 0x7673:
3045235d0ff2SJean-Francois Moine 				return SENSOR_OV7670;
3046235d0ff2SJean-Francois Moine 			case 0x8243:
30478d3f6e35SJean-Francois Moine 				return SENSOR_MI0360;
30486a7eba24SJean-Francois Moine 			}
3049235d0ff2SJean-Francois Moine 		}
3050ff1cf408SJean-Francois Moine 		ptsensor_info++;
3051235d0ff2SJean-Francois Moine 	}
30526a7eba24SJean-Francois Moine 	return -1;
30536a7eba24SJean-Francois Moine }
30546a7eba24SJean-Francois Moine 
305549796e40SJean-Francois Moine static void i2c_write(struct gspca_dev *gspca_dev,
305633f5b07eSJean-Francois Moine 			u8 reg, const u8 *val,
305733f5b07eSJean-Francois Moine 			u8 size)		/* 1 or 2 */
30586a7eba24SJean-Francois Moine {
305949796e40SJean-Francois Moine 	int retry;
30606a7eba24SJean-Francois Moine 
3061ef35d34fSJean-François Moine 	if (gspca_dev->usb_err < 0)
3062ef35d34fSJean-François Moine 		return;
3063ef35d34fSJean-François Moine 	if (size == 1)
306437d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_USBO, "i2c_w %02x %02x\n", reg, *val);
3065ef35d34fSJean-François Moine 	else
306637d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_USBO, "i2c_w %02x %02x%02x\n",
306737d5efb0SJoe Perches 			  reg, *val, val[1]);
3068ef35d34fSJean-François Moine 	reg_r_i(gspca_dev, 0xa1, 0xb33f, 1);
306933f5b07eSJean-Francois Moine /*fixme:should check if (!(gspca_dev->usb_buf[0] & 0x02)) error*/
3070ef35d34fSJean-François Moine 	reg_w_i(gspca_dev, 0xa0, size, 0xb334);
3071ef35d34fSJean-François Moine 	reg_w_i(gspca_dev, 0xa0, reg, 0xb33a);
3072ef35d34fSJean-François Moine 	reg_w_i(gspca_dev, 0xa0, val[0], 0xb336);
307333f5b07eSJean-Francois Moine 	if (size > 1)
3074ef35d34fSJean-François Moine 		reg_w_i(gspca_dev, 0xa0, val[1], 0xb337);
3075ef35d34fSJean-François Moine 	reg_w_i(gspca_dev, 0xa0, 0x01, 0xb339);
307649796e40SJean-Francois Moine 	retry = 4;
307749796e40SJean-Francois Moine 	do {
3078ef35d34fSJean-François Moine 		reg_r_i(gspca_dev, 0xa1, 0xb33b, 1);
307949796e40SJean-Francois Moine 		if (gspca_dev->usb_buf[0] == 0)
308049796e40SJean-Francois Moine 			break;
308149796e40SJean-Francois Moine 		msleep(20);
308249796e40SJean-Francois Moine 	} while (--retry > 0);
308349796e40SJean-Francois Moine 	if (retry <= 0)
3084133a9fe9SJoe Perches 		pr_err("i2c_write timeout\n");
30856a7eba24SJean-Francois Moine }
30866a7eba24SJean-Francois Moine 
30876a7eba24SJean-Francois Moine static void put_tab_to_reg(struct gspca_dev *gspca_dev,
30888b605f18SJean-Francois Moine 			const u8 *tab, u8 tabsize, u16 addr)
30896a7eba24SJean-Francois Moine {
30906a7eba24SJean-Francois Moine 	int j;
30918b605f18SJean-Francois Moine 	u16 ad = addr;
30926a7eba24SJean-Francois Moine 
30936a7eba24SJean-Francois Moine 	for (j = 0; j < tabsize; j++)
3094fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, tab[j], ad++);
30956a7eba24SJean-Francois Moine }
30966a7eba24SJean-Francois Moine 
30976a7eba24SJean-Francois Moine static void usb_exchange(struct gspca_dev *gspca_dev,
30988b605f18SJean-Francois Moine 			const u8 data[][4])
30996a7eba24SJean-Francois Moine {
31006a7eba24SJean-Francois Moine 	int i = 0;
31016a7eba24SJean-Francois Moine 
31026a7eba24SJean-Francois Moine 	for (;;) {
31036a7eba24SJean-Francois Moine 		switch (data[i][3]) {
31046a7eba24SJean-Francois Moine 		default:
31056a7eba24SJean-Francois Moine 			return;
31066a7eba24SJean-Francois Moine 		case 0xcc:			/* normal write */
3107fe854ec0SJean-François Moine 			reg_w(gspca_dev, 0xa0, data[i][2],
310849796e40SJean-Francois Moine 					(data[i][0]) << 8 | data[i][1]);
31096a7eba24SJean-Francois Moine 			break;
31106a7eba24SJean-Francois Moine 		case 0xaa:			/* i2c op */
3111739570bbSJean-Francois Moine 			i2c_write(gspca_dev, data[i][1], &data[i][2], 1);
31126a7eba24SJean-Francois Moine 			break;
31136a7eba24SJean-Francois Moine 		case 0xbb:			/* i2c op */
3114739570bbSJean-Francois Moine 			i2c_write(gspca_dev, data[i][0], &data[i][1], 2);
31156a7eba24SJean-Francois Moine 			break;
31166a7eba24SJean-Francois Moine 		case 0xdd:
311783c94a18SJean-Francois Moine 			msleep(data[i][1] * 256 + data[i][2] + 10);
31186a7eba24SJean-Francois Moine 			break;
31196a7eba24SJean-Francois Moine 		}
31206a7eba24SJean-Francois Moine 		i++;
31216a7eba24SJean-Francois Moine 	}
31226a7eba24SJean-Francois Moine 	/*not reached*/
31236a7eba24SJean-Francois Moine }
31246a7eba24SJean-Francois Moine 
31256a7eba24SJean-Francois Moine 
31266a7eba24SJean-Francois Moine /* this function is called at probe time */
31276a7eba24SJean-Francois Moine static int sd_config(struct gspca_dev *gspca_dev,
31286a7eba24SJean-Francois Moine 			const struct usb_device_id *id)
31296a7eba24SJean-Francois Moine {
31306a7eba24SJean-Francois Moine 	struct sd *sd = (struct sd *) gspca_dev;
3131bb44f568SJean-François Moine 
3132bb44f568SJean-François Moine 	sd->bridge = id->driver_info >> 8;
3133bb44f568SJean-François Moine 	sd->flags = id->driver_info & 0xff;
3134bb44f568SJean-François Moine 
3135bb44f568SJean-François Moine 	if (id->idVendor == 0x046d &&
3136bb44f568SJean-François Moine 	    (id->idProduct == 0x0892 || id->idProduct == 0x0896))
3137bb44f568SJean-François Moine 		sd->sensor = SENSOR_POxxxx;	/* no probe */
3138bb44f568SJean-François Moine 
3139bb44f568SJean-François Moine 	return 0;
3140bb44f568SJean-François Moine }
3141bb44f568SJean-François Moine 
3142bb44f568SJean-François Moine /* this function is called at probe and resume time */
3143bb44f568SJean-François Moine static int sd_init(struct gspca_dev *gspca_dev)
3144bb44f568SJean-François Moine {
3145bb44f568SJean-François Moine 	struct sd *sd = (struct sd *) gspca_dev;
31466a7eba24SJean-Francois Moine 	struct cam *cam;
31476a7eba24SJean-Francois Moine 	int sensor;
31487e5f9059SJean-François Moine 	/* number of packets per ISOC message */
31497e5f9059SJean-François Moine 	static u8 npkt[NSENSORS] = {
31507e5f9059SJean-François Moine 		[SENSOR_HV7131R] =	64,
31517e5f9059SJean-François Moine 		[SENSOR_MI0360] =	32,
31527e5f9059SJean-François Moine 		[SENSOR_MI1310_SOC] =	32,
31537e5f9059SJean-François Moine 		[SENSOR_MI1320] =	64,
31547e5f9059SJean-François Moine 		[SENSOR_MI1320_SOC] =	128,
31557e5f9059SJean-François Moine 		[SENSOR_OV7660] =	32,
31567e5f9059SJean-François Moine 		[SENSOR_OV7670] =	64,
31577e5f9059SJean-François Moine 		[SENSOR_PO1200] =	128,
31587e5f9059SJean-François Moine 		[SENSOR_PO3130NC] =	128,
31597e5f9059SJean-François Moine 		[SENSOR_POxxxx] =	128,
316049cb6b04SJean-Francois Moine 	};
31616a7eba24SJean-Francois Moine 
3162bb44f568SJean-François Moine 	if (sd->sensor != SENSOR_POxxxx)
31636a7eba24SJean-Francois Moine 		sensor = vc032x_probe_sensor(gspca_dev);
3164bb44f568SJean-François Moine 	else
3165bb44f568SJean-François Moine 		sensor = sd->sensor;
3166bb44f568SJean-François Moine 
31676a7eba24SJean-Francois Moine 	switch (sensor) {
31686a7eba24SJean-Francois Moine 	case -1:
3169133a9fe9SJoe Perches 		pr_err("Unknown sensor...\n");
31706a7eba24SJean-Francois Moine 		return -EINVAL;
31716a7eba24SJean-Francois Moine 	case SENSOR_HV7131R:
317237d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Find Sensor HV7131R\n");
3173cbb0554fSJean-Francois Moine 		break;
3174cbb0554fSJean-Francois Moine 	case SENSOR_MI0360:
317537d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Find Sensor MI0360\n");
3176cbb0554fSJean-Francois Moine 		sd->bridge = BRIDGE_VC0323;
31776a7eba24SJean-Francois Moine 		break;
31786a7eba24SJean-Francois Moine 	case SENSOR_MI1310_SOC:
317937d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Find Sensor MI1310_SOC\n");
31806a7eba24SJean-Francois Moine 		break;
31816a7eba24SJean-Francois Moine 	case SENSOR_MI1320:
318237d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Find Sensor MI1320\n");
31836a7eba24SJean-Francois Moine 		break;
3184db786a3fSJean-Francois Moine 	case SENSOR_MI1320_SOC:
318537d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Find Sensor MI1320_SOC\n");
3186db786a3fSJean-Francois Moine 		break;
31876a7eba24SJean-Francois Moine 	case SENSOR_OV7660:
318837d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Find Sensor OV7660\n");
31896a7eba24SJean-Francois Moine 		break;
31906a7eba24SJean-Francois Moine 	case SENSOR_OV7670:
319137d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Find Sensor OV7670\n");
31926a7eba24SJean-Francois Moine 		break;
319388521535SJean-Francois Moine 	case SENSOR_PO1200:
319437d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Find Sensor PO1200\n");
319588521535SJean-Francois Moine 		break;
31966a7eba24SJean-Francois Moine 	case SENSOR_PO3130NC:
319737d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Find Sensor PO3130NC\n");
31986a7eba24SJean-Francois Moine 		break;
319983c94a18SJean-Francois Moine 	case SENSOR_POxxxx:
320037d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PROBE, "Sensor POxxxx\n");
320183c94a18SJean-Francois Moine 		break;
32026a7eba24SJean-Francois Moine 	}
3203cbb0554fSJean-Francois Moine 	sd->sensor = sensor;
3204cbb0554fSJean-Francois Moine 
3205bb44f568SJean-François Moine 	cam = &gspca_dev->cam;
3206cbb0554fSJean-Francois Moine 	if (sd->bridge == BRIDGE_VC0321) {
3207cbb0554fSJean-Francois Moine 		cam->cam_mode = vc0321_mode;
3208cbb0554fSJean-Francois Moine 		cam->nmodes = ARRAY_SIZE(vc0321_mode);
3209cbb0554fSJean-Francois Moine 	} else {
3210db786a3fSJean-Francois Moine 		switch (sensor) {
321158e2ded8SJean-Francois Moine 		case SENSOR_PO1200:
321288521535SJean-Francois Moine 			cam->cam_mode = svga_mode;
321388521535SJean-Francois Moine 			cam->nmodes = ARRAY_SIZE(svga_mode);
321458e2ded8SJean-Francois Moine 			break;
321558e2ded8SJean-Francois Moine 		case SENSOR_MI1310_SOC:
321658e2ded8SJean-Francois Moine 			cam->cam_mode = vc0323_mode;
3217111815efSJean-Francois Moine 			cam->nmodes = ARRAY_SIZE(vc0323_mode);
321858e2ded8SJean-Francois Moine 			break;
321958e2ded8SJean-Francois Moine 		case SENSOR_MI1320_SOC:
322058e2ded8SJean-Francois Moine 			cam->cam_mode = bi_mode;
322158e2ded8SJean-Francois Moine 			cam->nmodes = ARRAY_SIZE(bi_mode);
322258e2ded8SJean-Francois Moine 			break;
32235624c648SJean-François Moine 		case SENSOR_OV7670:
32245624c648SJean-François Moine 			cam->cam_mode = bi_mode;
32255624c648SJean-François Moine 			cam->nmodes = ARRAY_SIZE(bi_mode) - 1;
32265624c648SJean-François Moine 			break;
322758e2ded8SJean-Francois Moine 		default:
322858e2ded8SJean-Francois Moine 			cam->cam_mode = vc0323_mode;
322958e2ded8SJean-Francois Moine 			cam->nmodes = ARRAY_SIZE(vc0323_mode) - 1;
323058e2ded8SJean-Francois Moine 			break;
323188521535SJean-Francois Moine 		}
3232cbb0554fSJean-Francois Moine 	}
323349cb6b04SJean-Francois Moine 	cam->npkt = npkt[sd->sensor];
323483c94a18SJean-Francois Moine 
3235e27188eeSJean-Francois Moine 	if (sd->sensor == SENSOR_OV7670)
3236e27188eeSJean-Francois Moine 		sd->flags |= FL_HFLIP | FL_VFLIP;
323747a42b0bSJean-Francois Moine 
323876ed0fe7SJean-François Moine 	if (sd->bridge == BRIDGE_VC0321) {
323976ed0fe7SJean-François Moine 		reg_r(gspca_dev, 0x8a, 0, 3);
324076ed0fe7SJean-François Moine 		reg_w(gspca_dev, 0x87, 0x00, 0x0f0f);
324176ed0fe7SJean-François Moine 		reg_r(gspca_dev, 0x8b, 0, 3);
324276ed0fe7SJean-François Moine 		reg_w(gspca_dev, 0x88, 0x00, 0x0202);
324383c94a18SJean-Francois Moine 		if (sd->sensor == SENSOR_POxxxx) {
324483c94a18SJean-Francois Moine 			reg_r(gspca_dev, 0xa1, 0xb300, 1);
324583c94a18SJean-Francois Moine 			if (gspca_dev->usb_buf[0] != 0) {
3246fe854ec0SJean-François Moine 				reg_w(gspca_dev, 0xa0, 0x26, 0xb300);
3247fe854ec0SJean-François Moine 				reg_w(gspca_dev, 0xa0, 0x04, 0xb300);
324883c94a18SJean-Francois Moine 			}
32493d217c86SJean-François Moine 			reg_w(gspca_dev, 0xa0, 0x00, 0xb300);
325083c94a18SJean-Francois Moine 		}
325176ed0fe7SJean-François Moine 	}
3252fe854ec0SJean-François Moine 	return gspca_dev->usb_err;
32536a7eba24SJean-Francois Moine }
32546a7eba24SJean-Francois Moine 
3255930806cbSHans Verkuil static void setbrightness(struct gspca_dev *gspca_dev, s32 val)
325683c94a18SJean-Francois Moine {
325783c94a18SJean-Francois Moine 	u8 data;
325883c94a18SJean-Francois Moine 
3259930806cbSHans Verkuil 	data = val;
326083c94a18SJean-Francois Moine 	if (data >= 0x80)
326183c94a18SJean-Francois Moine 		data &= 0x7f;
326283c94a18SJean-Francois Moine 	else
326383c94a18SJean-Francois Moine 		data = 0xff ^ data;
326483c94a18SJean-Francois Moine 	i2c_write(gspca_dev, 0x98, &data, 1);
326583c94a18SJean-Francois Moine }
326683c94a18SJean-Francois Moine 
3267930806cbSHans Verkuil static void setcontrast(struct gspca_dev *gspca_dev, u8 val)
326883c94a18SJean-Francois Moine {
3269930806cbSHans Verkuil 	i2c_write(gspca_dev, 0x99, &val, 1);
327083c94a18SJean-Francois Moine }
327183c94a18SJean-Francois Moine 
3272930806cbSHans Verkuil static void setcolors(struct gspca_dev *gspca_dev, u8 val)
327383c94a18SJean-Francois Moine {
327483c94a18SJean-Francois Moine 	u8 data;
327583c94a18SJean-Francois Moine 
3276930806cbSHans Verkuil 	data = val - (val >> 3) - 1;
327783c94a18SJean-Francois Moine 	i2c_write(gspca_dev, 0x94, &data, 1);
3278930806cbSHans Verkuil 	i2c_write(gspca_dev, 0x95, &val, 1);
327983c94a18SJean-Francois Moine }
328083c94a18SJean-Francois Moine 
3281930806cbSHans Verkuil static void sethvflip(struct gspca_dev *gspca_dev, bool hflip, bool vflip)
32827dc7ad38SJean-Francois Moine {
32837dc7ad38SJean-Francois Moine 	struct sd *sd = (struct sd *) gspca_dev;
3284930806cbSHans Verkuil 	u8 data[2];
32857dc7ad38SJean-Francois Moine 
3286e27188eeSJean-Francois Moine 	if (sd->flags & FL_HFLIP)
3287bb2c818fSJean-Francois Moine 		hflip = !hflip;
3288e27188eeSJean-Francois Moine 	if (sd->flags & FL_VFLIP)
3289bb2c818fSJean-Francois Moine 		vflip = !vflip;
32907dc7ad38SJean-Francois Moine 	switch (sd->sensor) {
3291e27188eeSJean-Francois Moine 	case SENSOR_MI1310_SOC:
3292219f3027SJean-Francois Moine 	case SENSOR_MI1320:
3293e27188eeSJean-Francois Moine 	case SENSOR_MI1320_SOC:
3294e27188eeSJean-Francois Moine 		data[0] = data[1] = 0;		/* select page 0 */
3295e27188eeSJean-Francois Moine 		i2c_write(gspca_dev, 0xf0, data, 2);
3296e27188eeSJean-Francois Moine 		data[0] = sd->sensor == SENSOR_MI1310_SOC ? 0x03 : 0x01;
3297e27188eeSJean-Francois Moine 		data[1] = 0x02 * hflip
3298e27188eeSJean-Francois Moine 			| 0x01 * vflip;
3299e27188eeSJean-Francois Moine 		i2c_write(gspca_dev, 0x20, data, 2);
33007dc7ad38SJean-Francois Moine 		break;
3301e27188eeSJean-Francois Moine 	case SENSOR_OV7660:
33027dc7ad38SJean-Francois Moine 	case SENSOR_OV7670:
3303e27188eeSJean-Francois Moine 		data[0] = sd->sensor == SENSOR_OV7660 ? 0x01 : 0x07;
3304e27188eeSJean-Francois Moine 		data[0] |= OV7660_MVFP_MIRROR * hflip
3305e27188eeSJean-Francois Moine 			| OV7660_MVFP_VFLIP * vflip;
3306e27188eeSJean-Francois Moine 		i2c_write(gspca_dev, OV7660_REG_MVFP, data, 1);
33077dc7ad38SJean-Francois Moine 		break;
330847a42b0bSJean-Francois Moine 	case SENSOR_PO1200:
3309e27188eeSJean-Francois Moine 		data[0] = 0;
3310e27188eeSJean-Francois Moine 		i2c_write(gspca_dev, 0x03, data, 1);
3311e27188eeSJean-Francois Moine 		data[0] = 0x80 * hflip
3312e27188eeSJean-Francois Moine 			| 0x40 * vflip
331347a42b0bSJean-Francois Moine 			| 0x06;
3314e27188eeSJean-Francois Moine 		i2c_write(gspca_dev, 0x1e, data, 1);
3315e27188eeSJean-Francois Moine 		break;
33167dc7ad38SJean-Francois Moine 	}
33177dc7ad38SJean-Francois Moine }
33187dc7ad38SJean-Francois Moine 
3319930806cbSHans Verkuil static void setlightfreq(struct gspca_dev *gspca_dev, s32 val)
33206a7eba24SJean-Francois Moine {
33216a7eba24SJean-Francois Moine 	struct sd *sd = (struct sd *) gspca_dev;
33228b605f18SJean-Francois Moine 	static const u8 (*ov7660_freq_tb[3])[4] =
33236a7eba24SJean-Francois Moine 		{ov7660_NoFliker, ov7660_50HZ, ov7660_60HZ};
33246a7eba24SJean-Francois Moine 
33256a7eba24SJean-Francois Moine 	if (sd->sensor != SENSOR_OV7660)
33266a7eba24SJean-Francois Moine 		return;
3327930806cbSHans Verkuil 	usb_exchange(gspca_dev, ov7660_freq_tb[val]);
33286a7eba24SJean-Francois Moine }
33296a7eba24SJean-Francois Moine 
3330930806cbSHans Verkuil static void setsharpness(struct gspca_dev *gspca_dev, s32 val)
333147a42b0bSJean-Francois Moine {
333247a42b0bSJean-Francois Moine 	struct sd *sd = (struct sd *) gspca_dev;
33338b605f18SJean-Francois Moine 	u8 data;
333447a42b0bSJean-Francois Moine 
333583c94a18SJean-Francois Moine 	switch (sd->sensor) {
333683c94a18SJean-Francois Moine 	case SENSOR_PO1200:
333747a42b0bSJean-Francois Moine 		data = 0;
333847a42b0bSJean-Francois Moine 		i2c_write(gspca_dev, 0x03, &data, 1);
3339930806cbSHans Verkuil 		if (val < 0)
334083c94a18SJean-Francois Moine 			data = 0x6a;
334183c94a18SJean-Francois Moine 		else
3342930806cbSHans Verkuil 			data = 0xb5 + val * 3;
334347a42b0bSJean-Francois Moine 		i2c_write(gspca_dev, 0x61, &data, 1);
334483c94a18SJean-Francois Moine 		break;
334583c94a18SJean-Francois Moine 	case SENSOR_POxxxx:
3346930806cbSHans Verkuil 		if (val < 0)
334783c94a18SJean-Francois Moine 			data = 0x7e;	/* def = max */
334883c94a18SJean-Francois Moine 		else
3349930806cbSHans Verkuil 			data = 0x60 + val * 0x0f;
335083c94a18SJean-Francois Moine 		i2c_write(gspca_dev, 0x59, &data, 1);
335183c94a18SJean-Francois Moine 		break;
335283c94a18SJean-Francois Moine 	}
335347a42b0bSJean-Francois Moine }
3354930806cbSHans Verkuil static void setgain(struct gspca_dev *gspca_dev, u8 val)
3355486cb2d5SJean-François Moine {
3356930806cbSHans Verkuil 	i2c_write(gspca_dev, 0x15, &val, 1);
3357486cb2d5SJean-François Moine }
3358486cb2d5SJean-François Moine 
3359930806cbSHans Verkuil static void setexposure(struct gspca_dev *gspca_dev, s32 val)
3360486cb2d5SJean-François Moine {
3361486cb2d5SJean-François Moine 	u8 data;
3362486cb2d5SJean-François Moine 
3363930806cbSHans Verkuil 	data = val >> 8;
3364486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0x1a, &data, 1);
3365930806cbSHans Verkuil 	data = val;
3366486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0x1b, &data, 1);
3367486cb2d5SJean-François Moine }
3368486cb2d5SJean-François Moine 
3369930806cbSHans Verkuil static void setautogain(struct gspca_dev *gspca_dev, s32 val)
3370486cb2d5SJean-François Moine {
3371486cb2d5SJean-François Moine 	static const u8 data[2] = {0x28, 0x3c};
3372486cb2d5SJean-François Moine 
3373930806cbSHans Verkuil 	i2c_write(gspca_dev, 0xd1, &data[val], 1);
3374486cb2d5SJean-François Moine }
3375486cb2d5SJean-François Moine 
3376486cb2d5SJean-François Moine static void setgamma(struct gspca_dev *gspca_dev)
3377486cb2d5SJean-François Moine {
3378486cb2d5SJean-François Moine /*fixme:to do */
3379486cb2d5SJean-François Moine 	usb_exchange(gspca_dev, poxxxx_gamma);
3380486cb2d5SJean-François Moine }
3381486cb2d5SJean-François Moine 
3382930806cbSHans Verkuil static void setbacklight(struct gspca_dev *gspca_dev, s32 val)
3383486cb2d5SJean-François Moine {
3384486cb2d5SJean-François Moine 	u16 v;
3385486cb2d5SJean-François Moine 	u8 data;
3386486cb2d5SJean-François Moine 
3387930806cbSHans Verkuil 	data = (val << 4) | 0x0f;
3388486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0xaa, &data, 1);
3389930806cbSHans Verkuil 	v = 613 + 12 * val;
3390486cb2d5SJean-François Moine 	data = v >> 8;
3391486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0xc4, &data, 1);
3392486cb2d5SJean-François Moine 	data = v;
3393486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0xc5, &data, 1);
3394930806cbSHans Verkuil 	v = 1093 - 12 * val;
3395486cb2d5SJean-François Moine 	data = v >> 8;
3396486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0xc6, &data, 1);
3397486cb2d5SJean-François Moine 	data = v;
3398486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0xc7, &data, 1);
3399930806cbSHans Verkuil 	v = 342 + 9 * val;
3400486cb2d5SJean-François Moine 	data = v >> 8;
3401486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0xc8, &data, 1);
3402486cb2d5SJean-François Moine 	data = v;
3403486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0xc9, &data, 1);
3404930806cbSHans Verkuil 	v = 702 - 9 * val;
3405486cb2d5SJean-François Moine 	data = v >> 8;
3406486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0xca, &data, 1);
3407486cb2d5SJean-François Moine 	data = v;
3408486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0xcb, &data, 1);
3409486cb2d5SJean-François Moine }
3410486cb2d5SJean-François Moine 
3411486cb2d5SJean-François Moine static void setwb(struct gspca_dev *gspca_dev)
3412486cb2d5SJean-François Moine {
3413486cb2d5SJean-François Moine /*fixme:to do - valid when reg d1 = 0x1c - (reg16 + reg15 = 0xa3)*/
3414486cb2d5SJean-François Moine 	static const u8 data[2] = {0x00, 0x00};
3415486cb2d5SJean-François Moine 
3416486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0x16, &data[0], 1);
3417486cb2d5SJean-François Moine 	i2c_write(gspca_dev, 0x18, &data[1], 1);
3418486cb2d5SJean-François Moine }
341947a42b0bSJean-Francois Moine 
342072ab97ceSJean-Francois Moine static int sd_start(struct gspca_dev *gspca_dev)
34216a7eba24SJean-Francois Moine {
34226a7eba24SJean-Francois Moine 	struct sd *sd = (struct sd *) gspca_dev;
34238b605f18SJean-Francois Moine 	const u8 (*init)[4];
34248b605f18SJean-Francois Moine 	const u8 *GammaT = NULL;
34258b605f18SJean-Francois Moine 	const u8 *MatrixT = NULL;
34266a7eba24SJean-Francois Moine 	int mode;
342758e2ded8SJean-Francois Moine 	static const u8 (*mi1320_soc_init[])[4] = {
342858e2ded8SJean-Francois Moine 		mi1320_soc_InitSXGA,
342958e2ded8SJean-Francois Moine 		mi1320_soc_InitVGA,
343058e2ded8SJean-Francois Moine 		mi1320_soc_InitQVGA,
343158e2ded8SJean-Francois Moine 	};
34326a7eba24SJean-Francois Moine 
34331852e75aSJean-Francois Moine /*fixme: back sensor only*/
3434e27188eeSJean-Francois Moine 	if (sd->flags & FL_SAMSUNG) {
3435fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0x89, 0xf0ff, 0xffff);
3436fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa9, 0x8348, 0x000e);
3437fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa9, 0x0000, 0x001a);
34381852e75aSJean-Francois Moine 	}
34391852e75aSJean-Francois Moine 
34406a7eba24SJean-Francois Moine 	/* Assume start use the good resolution from gspca_dev->mode */
34416a7eba24SJean-Francois Moine 	if (sd->bridge == BRIDGE_VC0321) {
3442fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0xff, 0xbfec);
3443fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0xff, 0xbfed);
3444fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0xff, 0xbfee);
3445fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0xff, 0xbfef);
344658e2ded8SJean-Francois Moine 		sd->image_offset = 46;
344758e2ded8SJean-Francois Moine 	} else {
344858e2ded8SJean-Francois Moine 		if (gspca_dev->cam.cam_mode[gspca_dev->curr_mode].pixelformat
344958e2ded8SJean-Francois Moine 				== V4L2_PIX_FMT_JPEG)
345058e2ded8SJean-Francois Moine 			sd->image_offset = 0;
345158e2ded8SJean-Francois Moine 		else
345258e2ded8SJean-Francois Moine 			sd->image_offset = 32;
34536a7eba24SJean-Francois Moine 	}
34546a7eba24SJean-Francois Moine 
3455c2446b3eSJean-Francois Moine 	mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv;
34566a7eba24SJean-Francois Moine 	switch (sd->sensor) {
34576a7eba24SJean-Francois Moine 	case SENSOR_HV7131R:
34586a7eba24SJean-Francois Moine 		GammaT = hv7131r_gamma;
34596a7eba24SJean-Francois Moine 		MatrixT = hv7131r_matrix;
34606af4e7a1SJean-Francois Moine 		if (mode)
34616af4e7a1SJean-Francois Moine 			init = hv7131r_initQVGA_data;	/* 320x240 */
34626af4e7a1SJean-Francois Moine 		else
34636af4e7a1SJean-Francois Moine 			init = hv7131r_initVGA_data;	/* 640x480 */
34646a7eba24SJean-Francois Moine 		break;
34656a7eba24SJean-Francois Moine 	case SENSOR_OV7660:
34666a7eba24SJean-Francois Moine 		GammaT = ov7660_gamma;
34676a7eba24SJean-Francois Moine 		MatrixT = ov7660_matrix;
34686af4e7a1SJean-Francois Moine 		if (mode)
34696af4e7a1SJean-Francois Moine 			init = ov7660_initQVGA_data;	/* 320x240 */
34706af4e7a1SJean-Francois Moine 		else
34716af4e7a1SJean-Francois Moine 			init = ov7660_initVGA_data;	/* 640x480 */
34726a7eba24SJean-Francois Moine 		break;
3473cbb0554fSJean-Francois Moine 	case SENSOR_MI0360:
3474cbb0554fSJean-Francois Moine 		GammaT = mi1320_gamma;
3475cbb0554fSJean-Francois Moine 		MatrixT = mi0360_matrix;
34766af4e7a1SJean-Francois Moine 		if (mode)
34776af4e7a1SJean-Francois Moine 			init = mi0360_initQVGA_JPG;	/* 320x240 */
34786af4e7a1SJean-Francois Moine 		else
34796af4e7a1SJean-Francois Moine 			init = mi0360_initVGA_JPG;	/* 640x480 */
3480cbb0554fSJean-Francois Moine 		break;
34816a7eba24SJean-Francois Moine 	case SENSOR_MI1310_SOC:
3482a92e9064SJean-Francois Moine 		GammaT = mi1320_gamma;
3483f985c700SJean-Francois Moine 		MatrixT = mi1320_matrix;
34846af4e7a1SJean-Francois Moine 		switch (mode) {
34856af4e7a1SJean-Francois Moine 		case 1:
34866af4e7a1SJean-Francois Moine 			init = mi1310_socinitQVGA_JPG;	/* 320x240 */
34876af4e7a1SJean-Francois Moine 			break;
34886af4e7a1SJean-Francois Moine 		case 0:
34896af4e7a1SJean-Francois Moine 			init = mi1310_socinitVGA_JPG;	/* 640x480 */
34906af4e7a1SJean-Francois Moine 			break;
34916af4e7a1SJean-Francois Moine 		default:
3492db786a3fSJean-Francois Moine 			init = mi1310_soc_InitSXGA_JPG;	/* 1280x1024 */
34936af4e7a1SJean-Francois Moine 			break;
34946a7eba24SJean-Francois Moine 		}
34956a7eba24SJean-Francois Moine 		break;
34966a7eba24SJean-Francois Moine 	case SENSOR_MI1320:
34976a7eba24SJean-Francois Moine 		GammaT = mi1320_gamma;
34986a7eba24SJean-Francois Moine 		MatrixT = mi1320_matrix;
34996af4e7a1SJean-Francois Moine 		if (mode)
35006af4e7a1SJean-Francois Moine 			init = mi1320_initQVGA_data;	/* 320x240 */
35016af4e7a1SJean-Francois Moine 		else
35026af4e7a1SJean-Francois Moine 			init = mi1320_initVGA_data;	/* 640x480 */
35036a7eba24SJean-Francois Moine 		break;
3504db786a3fSJean-Francois Moine 	case SENSOR_MI1320_SOC:
3505db786a3fSJean-Francois Moine 		GammaT = mi1320_gamma;
3506db786a3fSJean-Francois Moine 		MatrixT = mi1320_matrix;
350758e2ded8SJean-Francois Moine 		init = mi1320_soc_init[mode];
3508db786a3fSJean-Francois Moine 		break;
35095624c648SJean-François Moine 	case SENSOR_OV7670:
35105624c648SJean-François Moine 		init = mode == 1 ? ov7670_InitVGA : ov7670_InitQVGA;
35115624c648SJean-François Moine 		break;
35126a7eba24SJean-Francois Moine 	case SENSOR_PO3130NC:
35136a7eba24SJean-Francois Moine 		GammaT = po3130_gamma;
35146a7eba24SJean-Francois Moine 		MatrixT = po3130_matrix;
35156af4e7a1SJean-Francois Moine 		if (mode)
35166af4e7a1SJean-Francois Moine 			init = po3130_initQVGA_data;	/* 320x240 */
35176af4e7a1SJean-Francois Moine 		else
35186af4e7a1SJean-Francois Moine 			init = po3130_initVGA_data;	/* 640x480 */
35196af4e7a1SJean-Francois Moine 		usb_exchange(gspca_dev, init);
35206af4e7a1SJean-Francois Moine 		init = po3130_rundata;
352188521535SJean-Francois Moine 		break;
352283c94a18SJean-Francois Moine 	case SENSOR_PO1200:
35236af4e7a1SJean-Francois Moine 		GammaT = po1200_gamma;
35246af4e7a1SJean-Francois Moine 		MatrixT = po1200_matrix;
35256af4e7a1SJean-Francois Moine 		init = po1200_initVGA_data;
35266af4e7a1SJean-Francois Moine 		break;
352783c94a18SJean-Francois Moine 	default:
352883c94a18SJean-Francois Moine /*	case SENSOR_POxxxx: */
352983c94a18SJean-Francois Moine 		usb_exchange(gspca_dev, poxxxx_init_common);
3530486cb2d5SJean-François Moine 		setgamma(gspca_dev);
3531486cb2d5SJean-François Moine 		usb_exchange(gspca_dev, poxxxx_init_start_3);
353283c94a18SJean-Francois Moine 		if (mode)
353383c94a18SJean-Francois Moine 			init = poxxxx_initQVGA;
353483c94a18SJean-Francois Moine 		else
353583c94a18SJean-Francois Moine 			init = poxxxx_initVGA;
353683c94a18SJean-Francois Moine 		usb_exchange(gspca_dev, init);
353783c94a18SJean-Francois Moine 		reg_r(gspca_dev, 0x8c, 0x0000, 3);
3538fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0,
353983c94a18SJean-Francois Moine 				gspca_dev->usb_buf[2] & 1 ? 0 : 1,
354083c94a18SJean-Francois Moine 				0xb35c);
354183c94a18SJean-Francois Moine 		msleep(300);
354283c94a18SJean-Francois Moine /*fixme: i2c read 04 and 05*/
354383c94a18SJean-Francois Moine 		init = poxxxx_init_end_1;
354483c94a18SJean-Francois Moine 		break;
35456a7eba24SJean-Francois Moine 	}
35466af4e7a1SJean-Francois Moine 	usb_exchange(gspca_dev, init);
35476a7eba24SJean-Francois Moine 	if (GammaT && MatrixT) {
35486a7eba24SJean-Francois Moine 		put_tab_to_reg(gspca_dev, GammaT, 17, 0xb84a);
35496a7eba24SJean-Francois Moine 		put_tab_to_reg(gspca_dev, GammaT, 17, 0xb85b);
35506a7eba24SJean-Francois Moine 		put_tab_to_reg(gspca_dev, GammaT, 17, 0xb86c);
35516a7eba24SJean-Francois Moine 		put_tab_to_reg(gspca_dev, MatrixT, 9, 0xb82c);
355249796e40SJean-Francois Moine 
3553ae310ee1SJean-Francois Moine 		switch (sd->sensor) {
3554ae310ee1SJean-Francois Moine 		case SENSOR_PO1200:
3555ae310ee1SJean-Francois Moine 		case SENSOR_HV7131R:
3556fe854ec0SJean-François Moine 			reg_w(gspca_dev, 0x89, 0x0400, 0x1415);
3557ae310ee1SJean-Francois Moine 			break;
3558ae310ee1SJean-Francois Moine 		case SENSOR_MI1310_SOC:
3559fe854ec0SJean-François Moine 			reg_w(gspca_dev, 0x89, 0x058c, 0x0000);
3560ae310ee1SJean-Francois Moine 			break;
3561ae310ee1SJean-Francois Moine 		}
3562ae310ee1SJean-Francois Moine 		msleep(100);
35636a7eba24SJean-Francois Moine 	}
35645624c648SJean-François Moine 	switch (sd->sensor) {
35655624c648SJean-François Moine 	case SENSOR_OV7670:
3566fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0x87, 0xffff, 0xffff);
3567fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0x88, 0xff00, 0xf0f1);
3568fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0x0000, 0xbfff);
35695624c648SJean-François Moine 		break;
35705624c648SJean-François Moine 	case SENSOR_POxxxx:
357183c94a18SJean-Francois Moine 		usb_exchange(gspca_dev, poxxxx_init_end_2);
3572486cb2d5SJean-François Moine 		setwb(gspca_dev);
3573486cb2d5SJean-François Moine 		msleep(80);		/* led on */
3574486cb2d5SJean-François Moine 		reg_w(gspca_dev, 0x89, 0xffff, 0xfdff);
35755624c648SJean-François Moine 		break;
357683c94a18SJean-Francois Moine 	}
3577fe854ec0SJean-François Moine 	return gspca_dev->usb_err;
35786a7eba24SJean-Francois Moine }
35796a7eba24SJean-Francois Moine 
35806a7eba24SJean-Francois Moine static void sd_stopN(struct gspca_dev *gspca_dev)
35816a7eba24SJean-Francois Moine {
35824041f6b3SAceLan Kao 	struct sd *sd = (struct sd *) gspca_dev;
35836a7eba24SJean-Francois Moine 
358483c94a18SJean-Francois Moine 	switch (sd->sensor) {
358583c94a18SJean-Francois Moine 	case SENSOR_MI1310_SOC:
3586fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0x89, 0x058c, 0x00ff);
358783c94a18SJean-Francois Moine 		break;
358883c94a18SJean-Francois Moine 	case SENSOR_POxxxx:
358983c94a18SJean-Francois Moine 		return;
359083c94a18SJean-Francois Moine 	default:
359183c94a18SJean-Francois Moine 		if (!(sd->flags & FL_SAMSUNG))
3592fe854ec0SJean-François Moine 			reg_w(gspca_dev, 0x89, 0xffff, 0xffff);
359383c94a18SJean-Francois Moine 		break;
359483c94a18SJean-Francois Moine 	}
3595fe854ec0SJean-François Moine 	reg_w(gspca_dev, 0xa0, 0x01, 0xb301);
3596fe854ec0SJean-François Moine 	reg_w(gspca_dev, 0xa0, 0x09, 0xb003);
35976a7eba24SJean-Francois Moine }
35986a7eba24SJean-Francois Moine 
359998522a7bSJean-Francois Moine /* called on streamoff with alt 0 and on disconnect */
36006a7eba24SJean-Francois Moine static void sd_stop0(struct gspca_dev *gspca_dev)
36016a7eba24SJean-Francois Moine {
36024041f6b3SAceLan Kao 	struct sd *sd = (struct sd *) gspca_dev;
36036a7eba24SJean-Francois Moine 
360498522a7bSJean-Francois Moine 	if (!gspca_dev->present)
360598522a7bSJean-Francois Moine 		return;
36068b605f18SJean-Francois Moine /*fixme: is this useful?*/
36074041f6b3SAceLan Kao 	if (sd->sensor == SENSOR_MI1310_SOC)
3608fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0x89, 0x058c, 0x00ff);
3609ba624ce4SJean-Francois Moine 	else if (!(sd->flags & FL_SAMSUNG))
3610fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0x89, 0xffff, 0xffff);
361183c94a18SJean-Francois Moine 
361283c94a18SJean-Francois Moine 	if (sd->sensor == SENSOR_POxxxx) {
3613fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0x26, 0xb300);
3614fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0x04, 0xb300);
3615fe854ec0SJean-François Moine 		reg_w(gspca_dev, 0xa0, 0x00, 0xb300);
361683c94a18SJean-Francois Moine 	}
36176a7eba24SJean-Francois Moine }
36186a7eba24SJean-Francois Moine 
36196a7eba24SJean-Francois Moine static void sd_pkt_scan(struct gspca_dev *gspca_dev,
36208b605f18SJean-Francois Moine 			u8 *data,			/* isoc packet */
36216a7eba24SJean-Francois Moine 			int len)			/* iso pkt length */
36226a7eba24SJean-Francois Moine {
36236a7eba24SJean-Francois Moine 	struct sd *sd = (struct sd *) gspca_dev;
36246a7eba24SJean-Francois Moine 
36256a7eba24SJean-Francois Moine 	if (data[0] == 0xff && data[1] == 0xd8) {
362637d5efb0SJoe Perches 		gspca_dbg(gspca_dev, D_PACK,
362737d5efb0SJoe Perches 			  "vc032x header packet found len %d\n", len);
362876dd272bSJean-Francois Moine 		gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
362958e2ded8SJean-Francois Moine 		data += sd->image_offset;
363058e2ded8SJean-Francois Moine 		len -= sd->image_offset;
363176dd272bSJean-Francois Moine 		gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
36326a7eba24SJean-Francois Moine 		return;
36336a7eba24SJean-Francois Moine 	}
3634d473a002SHans de Goede 
3635d473a002SHans de Goede 	/* The vc0321 sends some additional data after sending the complete
3636d473a002SHans de Goede 	 * frame, we ignore this. */
363776dd272bSJean-Francois Moine 	if (sd->bridge == BRIDGE_VC0321) {
3638b192ca98SJean-François Moine 		int size, l;
363976dd272bSJean-Francois Moine 
3640b192ca98SJean-François Moine 		l = gspca_dev->image_len;
36411f5965c4SHans Verkuil 		size = gspca_dev->pixfmt.sizeimage;
3642b192ca98SJean-François Moine 		if (len > size - l)
3643b192ca98SJean-François Moine 			len = size - l;
364476dd272bSJean-Francois Moine 	}
364576dd272bSJean-Francois Moine 	gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
36466a7eba24SJean-Francois Moine }
36476a7eba24SJean-Francois Moine 
3648930806cbSHans Verkuil static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
364983c94a18SJean-Francois Moine {
3650930806cbSHans Verkuil 	struct gspca_dev *gspca_dev =
3651930806cbSHans Verkuil 		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
365283c94a18SJean-Francois Moine 	struct sd *sd = (struct sd *)gspca_dev;
365383c94a18SJean-Francois Moine 
3654930806cbSHans Verkuil 	gspca_dev->usb_err = 0;
365583c94a18SJean-Francois Moine 
3656930806cbSHans Verkuil 	if (!gspca_dev->streaming && ctrl->id != V4L2_CID_POWER_LINE_FREQUENCY)
365783c94a18SJean-Francois Moine 		return 0;
365883c94a18SJean-Francois Moine 
3659930806cbSHans Verkuil 	switch (ctrl->id) {
3660930806cbSHans Verkuil 	case V4L2_CID_BRIGHTNESS:
3661930806cbSHans Verkuil 		setbrightness(gspca_dev, ctrl->val);
36626afd2aa8SJean-Francois Moine 		break;
3663930806cbSHans Verkuil 	case V4L2_CID_CONTRAST:
3664930806cbSHans Verkuil 		setcontrast(gspca_dev, ctrl->val);
3665930806cbSHans Verkuil 		break;
3666930806cbSHans Verkuil 	case V4L2_CID_SATURATION:
3667930806cbSHans Verkuil 		setcolors(gspca_dev, ctrl->val);
3668930806cbSHans Verkuil 		break;
3669930806cbSHans Verkuil 	case V4L2_CID_HFLIP:
3670930806cbSHans Verkuil 		sethvflip(gspca_dev, sd->hflip->val, sd->vflip->val);
3671930806cbSHans Verkuil 		break;
3672930806cbSHans Verkuil 	case V4L2_CID_SHARPNESS:
3673930806cbSHans Verkuil 		setsharpness(gspca_dev, ctrl->val);
3674930806cbSHans Verkuil 		break;
3675930806cbSHans Verkuil 	case V4L2_CID_AUTOGAIN:
3676930806cbSHans Verkuil 		setautogain(gspca_dev, ctrl->val);
3677930806cbSHans Verkuil 		break;
3678930806cbSHans Verkuil 	case V4L2_CID_GAIN:
3679930806cbSHans Verkuil 		setgain(gspca_dev, ctrl->val);
3680930806cbSHans Verkuil 		break;
3681930806cbSHans Verkuil 	case V4L2_CID_EXPOSURE:
3682930806cbSHans Verkuil 		setexposure(gspca_dev, ctrl->val);
3683930806cbSHans Verkuil 		break;
3684930806cbSHans Verkuil 	case V4L2_CID_BACKLIGHT_COMPENSATION:
3685930806cbSHans Verkuil 		setbacklight(gspca_dev, ctrl->val);
3686930806cbSHans Verkuil 		break;
3687930806cbSHans Verkuil 	case V4L2_CID_POWER_LINE_FREQUENCY:
3688930806cbSHans Verkuil 		setlightfreq(gspca_dev, ctrl->val);
3689930806cbSHans Verkuil 		break;
36906a7eba24SJean-Francois Moine 	}
3691930806cbSHans Verkuil 	return gspca_dev->usb_err;
3692930806cbSHans Verkuil }
3693930806cbSHans Verkuil 
3694930806cbSHans Verkuil static const struct v4l2_ctrl_ops sd_ctrl_ops = {
3695930806cbSHans Verkuil 	.s_ctrl = sd_s_ctrl,
3696930806cbSHans Verkuil };
3697930806cbSHans Verkuil 
3698930806cbSHans Verkuil static int sd_init_controls(struct gspca_dev *gspca_dev)
3699930806cbSHans Verkuil {
3700930806cbSHans Verkuil 	struct sd *sd = (struct sd *)gspca_dev;
3701930806cbSHans Verkuil 	struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
3702930806cbSHans Verkuil 	bool has_brightness = false;
3703930806cbSHans Verkuil 	bool has_contrast = false;
3704930806cbSHans Verkuil 	bool has_sat = false;
3705930806cbSHans Verkuil 	bool has_hvflip = false;
3706930806cbSHans Verkuil 	bool has_freq = false;
3707930806cbSHans Verkuil 	bool has_backlight = false;
3708930806cbSHans Verkuil 	bool has_exposure = false;
3709930806cbSHans Verkuil 	bool has_autogain = false;
3710930806cbSHans Verkuil 	bool has_gain = false;
3711930806cbSHans Verkuil 	bool has_sharpness = false;
3712930806cbSHans Verkuil 
3713930806cbSHans Verkuil 	switch (sd->sensor) {
3714930806cbSHans Verkuil 	case SENSOR_HV7131R:
3715930806cbSHans Verkuil 	case SENSOR_MI0360:
3716930806cbSHans Verkuil 	case SENSOR_PO3130NC:
3717930806cbSHans Verkuil 		break;
3718930806cbSHans Verkuil 	case SENSOR_MI1310_SOC:
3719930806cbSHans Verkuil 	case SENSOR_MI1320:
3720930806cbSHans Verkuil 	case SENSOR_MI1320_SOC:
3721930806cbSHans Verkuil 	case SENSOR_OV7660:
3722930806cbSHans Verkuil 		has_hvflip = true;
3723930806cbSHans Verkuil 		break;
3724930806cbSHans Verkuil 	case SENSOR_OV7670:
3725930806cbSHans Verkuil 		has_hvflip = has_freq = true;
3726930806cbSHans Verkuil 		break;
3727930806cbSHans Verkuil 	case SENSOR_PO1200:
3728930806cbSHans Verkuil 		has_hvflip = has_sharpness = true;
3729930806cbSHans Verkuil 		break;
3730930806cbSHans Verkuil 	case SENSOR_POxxxx:
3731930806cbSHans Verkuil 		has_brightness = has_contrast = has_sat = has_backlight =
3732930806cbSHans Verkuil 			has_exposure = has_autogain = has_gain =
3733930806cbSHans Verkuil 			has_sharpness = true;
3734930806cbSHans Verkuil 		break;
3735930806cbSHans Verkuil 	}
3736930806cbSHans Verkuil 
3737930806cbSHans Verkuil 	gspca_dev->vdev.ctrl_handler = hdl;
3738930806cbSHans Verkuil 	v4l2_ctrl_handler_init(hdl, 8);
3739930806cbSHans Verkuil 	if (has_brightness)
3740930806cbSHans Verkuil 		v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
3741930806cbSHans Verkuil 			V4L2_CID_BRIGHTNESS, 0, 255, 1, 128);
3742930806cbSHans Verkuil 	if (has_contrast)
3743930806cbSHans Verkuil 		v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
3744930806cbSHans Verkuil 			V4L2_CID_CONTRAST, 0, 255, 1, 127);
3745930806cbSHans Verkuil 	if (has_sat)
3746930806cbSHans Verkuil 		v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
3747930806cbSHans Verkuil 			V4L2_CID_SATURATION, 1, 127, 1, 63);
3748930806cbSHans Verkuil 	if (has_hvflip) {
3749930806cbSHans Verkuil 		sd->hflip = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
3750930806cbSHans Verkuil 			V4L2_CID_HFLIP, 0, 1, 1, 0);
3751930806cbSHans Verkuil 		sd->vflip = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
3752930806cbSHans Verkuil 			V4L2_CID_VFLIP, 0, 1, 1, 0);
3753930806cbSHans Verkuil 	}
3754930806cbSHans Verkuil 	if (has_sharpness)
3755930806cbSHans Verkuil 		v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
3756930806cbSHans Verkuil 			V4L2_CID_SHARPNESS, -1, 2, 1, -1);
3757930806cbSHans Verkuil 	if (has_freq)
3758930806cbSHans Verkuil 		v4l2_ctrl_new_std_menu(hdl, &sd_ctrl_ops,
3759930806cbSHans Verkuil 			V4L2_CID_POWER_LINE_FREQUENCY,
3760930806cbSHans Verkuil 			V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0,
3761930806cbSHans Verkuil 			V4L2_CID_POWER_LINE_FREQUENCY_50HZ);
3762930806cbSHans Verkuil 	if (has_autogain)
3763930806cbSHans Verkuil 		v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
3764930806cbSHans Verkuil 			V4L2_CID_AUTOGAIN, 0, 1, 1, 1);
3765930806cbSHans Verkuil 	if (has_gain)
3766930806cbSHans Verkuil 		v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
3767930806cbSHans Verkuil 			V4L2_CID_GAIN, 0, 78, 1, 0);
3768930806cbSHans Verkuil 	if (has_exposure)
3769930806cbSHans Verkuil 		v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
3770930806cbSHans Verkuil 			V4L2_CID_EXPOSURE, 0, 4095, 1, 450);
3771930806cbSHans Verkuil 	if (has_backlight)
3772930806cbSHans Verkuil 		v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
3773930806cbSHans Verkuil 			V4L2_CID_BACKLIGHT_COMPENSATION, 0, 15, 1, 15);
3774930806cbSHans Verkuil 
3775930806cbSHans Verkuil 	if (hdl->error) {
3776930806cbSHans Verkuil 		pr_err("Could not initialize controls\n");
3777930806cbSHans Verkuil 		return hdl->error;
3778930806cbSHans Verkuil 	}
3779930806cbSHans Verkuil 	if (sd->hflip)
3780930806cbSHans Verkuil 		v4l2_ctrl_cluster(2, &sd->hflip);
3781930806cbSHans Verkuil 	return 0;
37826a7eba24SJean-Francois Moine }
37836a7eba24SJean-Francois Moine 
37846a7eba24SJean-Francois Moine /* sub-driver description */
3785a5ae2062SJean-Francois Moine static const struct sd_desc sd_desc = {
37866a7eba24SJean-Francois Moine 	.name = MODULE_NAME,
3787930806cbSHans Verkuil 	.init_controls = sd_init_controls,
37886a7eba24SJean-Francois Moine 	.config = sd_config,
3789012d6b02SJean-Francois Moine 	.init = sd_init,
37906a7eba24SJean-Francois Moine 	.start = sd_start,
37916a7eba24SJean-Francois Moine 	.stopN = sd_stopN,
37926a7eba24SJean-Francois Moine 	.stop0 = sd_stop0,
37936a7eba24SJean-Francois Moine 	.pkt_scan = sd_pkt_scan,
37946a7eba24SJean-Francois Moine };
37956a7eba24SJean-Francois Moine 
37966a7eba24SJean-Francois Moine /* -- module initialisation -- */
37971852e75aSJean-Francois Moine #define BF(bridge, flags) \
37981852e75aSJean-Francois Moine 	.driver_info = (BRIDGE_ ## bridge << 8) \
37991852e75aSJean-Francois Moine 		| (flags)
380095c967c1SJean-François Moine static const struct usb_device_id device_table[] = {
3801e27188eeSJean-Francois Moine 	{USB_DEVICE(0x041e, 0x405b), BF(VC0323, FL_VFLIP)},
38021852e75aSJean-Francois Moine 	{USB_DEVICE(0x046d, 0x0892), BF(VC0321, 0)},
38031852e75aSJean-Francois Moine 	{USB_DEVICE(0x046d, 0x0896), BF(VC0321, 0)},
38041852e75aSJean-Francois Moine 	{USB_DEVICE(0x046d, 0x0897), BF(VC0321, 0)},
38051852e75aSJean-Francois Moine 	{USB_DEVICE(0x0ac8, 0x0321), BF(VC0321, 0)},
38061852e75aSJean-Francois Moine 	{USB_DEVICE(0x0ac8, 0x0323), BF(VC0323, 0)},
38071852e75aSJean-Francois Moine 	{USB_DEVICE(0x0ac8, 0x0328), BF(VC0321, 0)},
38081852e75aSJean-Francois Moine 	{USB_DEVICE(0x0ac8, 0xc001), BF(VC0321, 0)},
38091852e75aSJean-Francois Moine 	{USB_DEVICE(0x0ac8, 0xc002), BF(VC0321, 0)},
3810e27188eeSJean-Francois Moine 	{USB_DEVICE(0x0ac8, 0xc301), BF(VC0323, FL_SAMSUNG)},
38111852e75aSJean-Francois Moine 	{USB_DEVICE(0x15b8, 0x6001), BF(VC0323, 0)},
38121852e75aSJean-Francois Moine 	{USB_DEVICE(0x15b8, 0x6002), BF(VC0323, 0)},
38131852e75aSJean-Francois Moine 	{USB_DEVICE(0x17ef, 0x4802), BF(VC0323, 0)},
38146a7eba24SJean-Francois Moine 	{}
38156a7eba24SJean-Francois Moine };
38166a7eba24SJean-Francois Moine MODULE_DEVICE_TABLE(usb, device_table);
38176a7eba24SJean-Francois Moine 
38186a7eba24SJean-Francois Moine /* -- device connect -- */
38196a7eba24SJean-Francois Moine static int sd_probe(struct usb_interface *intf,
38206a7eba24SJean-Francois Moine 			const struct usb_device_id *id)
38216a7eba24SJean-Francois Moine {
38226a7eba24SJean-Francois Moine 	return gspca_dev_probe(intf, id, &sd_desc, sizeof(struct sd),
38236a7eba24SJean-Francois Moine 				THIS_MODULE);
38246a7eba24SJean-Francois Moine }
38256a7eba24SJean-Francois Moine 
38266a7eba24SJean-Francois Moine static struct usb_driver sd_driver = {
38276a7eba24SJean-Francois Moine 	.name = MODULE_NAME,
38286a7eba24SJean-Francois Moine 	.id_table = device_table,
38296a7eba24SJean-Francois Moine 	.probe = sd_probe,
38306a7eba24SJean-Francois Moine 	.disconnect = gspca_disconnect,
38316a709749SJean-Francois Moine #ifdef CONFIG_PM
38326a709749SJean-Francois Moine 	.suspend = gspca_suspend,
38336a709749SJean-Francois Moine 	.resume = gspca_resume,
38348bb58964SHans de Goede 	.reset_resume = gspca_resume,
38356a709749SJean-Francois Moine #endif
38366a7eba24SJean-Francois Moine };
38376a7eba24SJean-Francois Moine 
3838ecb3b2b3SGreg Kroah-Hartman module_usb_driver(sd_driver);
3839